So you want to learn programming?
Pick a starting language. For beginners, there are generally two recommended "programming families" that you can choose to start learning:
-Dynamically typed/interpreted programming languages, such as: Python, Perl, Ruby
-Statically typed/compiled programming languages, such as: C, C++, C#
These are amongst the most popular languages in use worldwide, including 4 from the top 5. Both approaches are perfectly fine, and well-documented.
-Dynamically typed programming may be a bit more flexible, convenient, and forgiving. It is more popular in academia.
-Statically typed programming is a bit more suited for making general applications. It is more popular in industries.
Cannot decide? Flip a coin.
If you choose statically typed/compiled programming, you may want to start with C, then pick up C++. C is very well documented, and teaches many universal programming concepts. C++ is based on C, and adds new concepts. Sources:
For C:
The C Programming Language (K&R)
C Primer Plus (Prata)
cprogramming.com/tutorial/c-tutorial.html
learn-c.org/
For C++:
learncpp.com/
cplusplus.com/doc/tutorial/
cprogramming.com/tutorial/c -tutorial.html
en.cppreference.com/
isocpp.org/faq
If you choose dynamically typed/interpreted programming, you may want to start with Python. It is very easy to pick up. Here are some good sources:
learnpython.org/
codecademy.com/en/tracks/python
>BUT I WANT MORE SOURCES!
Read: wiki.installgentoo.com/index.php/Programming_resources
>BUT I WANNA START WITH [language x] INSTEAD!
Sure, if you like. But the languages above are considered good for beginners.
>BUT I WANNA MAKE A COOL WEBSITE!
Learn HTML, CSS, and Javascript.
>BUT I WANNA MAKE iPHONE GAMES!
Learn Objective C and/or Swift.
>BUT I WANNA MAKE ANDROID GAMES!
Learn Java.
>BUT I WANNA MAKE PC GAMES!
Learn patience.