I don't know if anyone is actually reading this thread for advice on programming, but here's my take:
There are many programming languages that may be suitable for beginners, depending on your interests. For example, C requires a lot of attention to detail but
could work as a first programming language if you have a certain kind of nuts-and-bolts mentality (basically, you could find C very interesting or tedious and boring, depending on what you find interesting). Or there may be a programming language that is obviously suitable for some specific kind of programming (e.g. Javascript if you're especially interested in running code in web browsers). Otherwise picking one of the high-level language like Python is a good place to start.
There are less mainstream languages -- like Lisp, Smalltalk, and the ML/Haskell family of languages -- that can expose you to very different ways to think about programming and could also be good choices as a first languages. Some of the ones I've mentioned have tutorials and even entire books that are freely available online:
- Lisp is an extremely powerful dynamic language with powerful metaprogramming capabilities (capabilities for programmatically generating and manipulating code). You can get a good general introduction to Lisp by reading the book Practical Common Lisp, which the author has made freely available online on his website: http://gigamonkeys.com/book/.
- If you're more theoretically/mathematically oriented, you might like Structure and Interpretation of Computer Programs, which uses Scheme (a variant of Lisp intended for teaching and research). Someone created a PDF version, which you can find at https://github.com/sarabander/sicp-pdf.
- Smalltalk is a dynamic, pure object-oriented programming language that emphasises an interactive, image-based approach to programming. (I.e., the normal way to develop in Smalltalk is to start an interactive, usually graphical Smalltalk system like Squeak or Pharo, and then use its tools to inspect, modify, or create classes or run test code.) One introduction I've found is Pharo by example, available here: http://files.pharo.org/books/updated-pharo-by-example/.
- Haskell is a statically-typed, compiled language that emphasises a functional programming style (you express a program as the composition of functions that deterministically map arguments to return values, with no side effects) and a type-inference system (the compiler figures out many of the datatypes of your program automatically). I'm not sure this is the language most people would find most interesting to start with, but there's a book on it here: http://learnyouahaskell.com/.
By contrast I don't recommend the C++/Java/C# family of languages, especially for beginners, and I recommend avoiding them if possible (admittedly, you may be forced to use them in certain circumstances, e.g. you may need to use Java if you want to write some kinds of Android app).
Here's a talk by Rob Pike where he explains the problems with these languages,
especially for casual/personal programming, among his reasons for co-developing the Go language:
(Summary: basically they're tedious, repetitive, verbose, and boring.)
You may also want to spend some time browsing Yossi Kreinin's "C++ Frequently Questioned Answers" (
http://yosefk.com/c fqa/index.html) before deciding you want to invest a portion of your life learning the intricacies and quirks of C++.