prompter: Hallo there, 

I have been interested into learning how to program, but I can’t seem to pick a language. 
Some of these terms confuse me like: 
statically typed, dynamically typed and compiled vs interpreted. 

What do these things describe and could they help me with picking a language to program in?

assistant: There are two types of programming languages -- interpreted and compiled.

Compiled programming language is compiled with a compiler that translates the source code (usually) into assembly. Assembly is a low-level language that the processor can execute. There are various types of processors that require different kinds of instructions and so compiled programs usually have to be compiled for every processor separately. There are many compiled langauges with the most widely known being C++ (sometimes stylized as CPP) or Rust.

Interpreted programming language on the other hand is run by interpreter which inteprets the instructions in the source file and translates them to processor instructions during runtime (while the script is running) this degrades the performance as there is a intermidiary step required before the code execution. The main benefit is that interpreted programming languages are cross platform by default. Python is at the forefront of interpreted langagues.

Statistically typed languages allow a variable to hold only one type of value (string, integer, floating point number,...). This is mostly related to compiled languages as those have to manage memory allocation and other related things.

Dynamically typed languages allow variables to change the type during runtime.

There is also a third type, which is in the middle of compiled x interpreted languages which are languages such as Java. Java has a JVM (Java Virtual Machine) which executes the java bytecode. This allows Java to be faster then interpreted languages as the compilation process happens before execution (by program distributor or developer/...) but cross platform as the JVM is the same for all platforms and only the underlying program structure of the JVM changes depending on the processor.

For the first programming language i would recommend Python.

prompter: Why is a Python good choice for first programming language?

assistant: Python is a great language for beginners because it's easy to learn and use. It also has plenty of libraries and frameworks that make development faster and easier. It also has a significantly large user base and there is several places to get help and education for it.

Choosing the first language is a process that should be considered with some other languages as well, such as Javascript, Rust and some modern basic variations.

assistant: Python is good as first programming language to learn due to simple syntax, many learning resources, popularity and vast amount of libraries which can help in creating projects.

assistant: Hello!
There are many different programming languages that are held in high regard or dismissed for many different reasons, but if you are starting out, it's best to focus on just a few key points. There are languages specifically designed to be accessible for newcomers, visual programming languages that work with graphical interfaces and drag & drop-elements to build code, and extremely popular languages with such a large degree of freely available documentation and sample code, that most problems have already been solved and can be easily copied into your own code. All those three approaches are great ways for people unfamiliar with coding to write their first programs.

Alternatively, if you have some specific goal in mind, I can give you some suggestions based on your needs. Are you interested in coding professionally, or just as a hobby? Do you want to program games or get into machine learning? Perhaps there's a particular platform you want to make applications for?

prompter: That's interesting and good feedback, but I was hoping for more details on the types and compiler options.
Can you explain those, using what you know about my skill level, in a way I can grasp and retain?

prompter: I'd like to make video games for smartphones. What available choices are for that?

assistant: In lay mans terms:
A statically type language requires you to define the type for each variable.
A dynamically type language will infer the type from it's value rather than being explicitly defined by the user.

A dynamically typed language would be best for a beginner. It will allow you the freedom to learn the basics of programming without worrying too much about specific data types.

prompter: I have been told I NEED to read Structure and Interpretation of Computer Programs (SICP) to be any good as a programmer, is that true?

assistant: No single book will make you a good programmer, but hard work and dedication will. 

As you are new to programming, I would recommend you start by getting familiar with the basics of any programming language that interests and try make some programs with it. You can choose a book to help you in the learning process, but in the end nothing beats experience in writing and trying out actual code. Do what actually interests you. Wether thats reading books about programming or trying to create a video game. 

In my opinion, the book you asked about is not suitable for a beginner, as it was originally published over 30 years ago and technology has changed a lot since then. 
Additionally, the examples in SICP are written in the LISP programming language, which is rarely used anymore. You will probably have an easier time with a more popular language like Python, Javascript or C#.

Here are some beginner friendly books I would recommend instead:
-  Code: The Hidden Language of Computer Hardware and Software
-  Unity in Action: Multiplatform Game Development in C# with Unity 5
-  Automate the Boring Stuff with Python: Practical Programming for Total Beginners 

Keep in mind that nowadays, there are many free online resources to learn programming. Some great examples are:
- https://www.khanacademy.org
- https://www.codecademy.com/
- https://www.freecodecamp.org/

Due to the digital nature of programming, having a website where you can interactively try things out, can make learning easier and more fun. 

Remember that programming is a practical task and it is easy to get bogged down in the theory. Try to actually get your hands dirty quickly and you will find that you can make your first simple ideas come to life in no time.

assistant: No, you do not need to read any specific texts to become a good programmer. Reading books, such as Structure and Interpretation of Computer Programs, can be useful, but it is by no means necessary. Practicing your programming skills by writing actual programs is generally going to be more useful.

assistant: There are many ways to become proficient at programming, while reading books to study code is definitely a method that can work for some, it's almost always most beneficial to get experience by starting to code and learn to make mistakes. The mistakes you make will be more valuable than what any text book can offer as programming technologies always continue to evolve.

assistant: No, that's a book about Lisp and is mostly a 4chan meme. It's a reasonably good book, but things you NEED to do to become any good as a programmer are to practice for thousands of hours, and to continually broaden your skills. The best practical advice here is to pick up something that is widely used, has a shallow learning curve, a lot of useful libraries that you can use to make things you actually care about. If you really care about writing Emacs scripts on your Gentoo box then maybe SICP is for you, but otherwise it might be best to start with Python, for ease of use, or JavaScript due to the number of places you can use it.