|
I would divide languages into these categories: Practical and beginner-friendly: C# (if you're a Windows person), Python, Ruby Technical and foundational (start here if you don't mind studying for 5 years before you produce anything practical): C, Lisp (using SICP) Interesting but not beginner-friendly or foundational (play with these when you get bored): Erlang, Go, JavaScript, ML, Scala, Smalltalk Haskell falls somewhere in between the last two groups. It's very technical, and it's foundational for functional programming, but it doesn't transition to other languages as well as C or Lisp might, and it doesn't have as much support as C and Lisp. The last group is languages that are not especially interesting, beginner-friendly or foundational. That group consists of: C++ (complicated), Delphi/Pascal (little community support), Java (crufty, limiting), Perl (nightmarish syntax), PHP (jumbled mess which allows, but does everything possible to discourage, good code), Visual Basic (basically just C# with "simpler" syntax and less community support) Any languages not mentioned are probably either far too obscure or outdated for you to even think about now. I welcome disagreement on this categorization. PS: I didn't forget Objective C, I've just never used it so I didn't know where to put it. Probably "interesting but not beginner-friendly." PPS: There is a category which includes languages from all of the above categories. That category is "Likely to get you a job." It includes C, C++, C#, Java, JavaScript, Objective C, PHP, Python, and Ruby. |
Python
(NOTE: I do appreciate the thoughtful and detailed response. I was mainly illustrating a point for Python as an excellent programming language for novices.)