Hacker News new | ask | show | jobs
by DanielStraight 5540 days ago
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.

1 comments

Ironically, this response is VERY similar to the confusing verbosity of most programming languages. :) In Python, you would just say:

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.)