I’m convinced that if I start typing I will come up with something to say. It’s happening–it’s really happening. I can see the document getting longer keystroke by keystroke.
What can I talk about here? How about some of my favorite programming languages.
Python is my very favorite programming language. It is elegant in its simplicity and I consider it the easiest language to read that I know of. Heck, it’s practically pseudo-code. Python does a nice job of conforming to the way I think and “staying out of my way,” so that I can focus on the functionality I want to code and not on the language itself. It makes sense to me that MIT has chosen Python as the language for its introductory computer science classes.
Ruby, surprisingly, is a close runner-up to Python. I say “surprisingly” because a lot of dyed-in-the-wool Python programmers consider Ruby a vastly inferior language. Not me, though. I like a lot of things about Ruby. For example, its consistency: everything is an object. I also like the numerous ways Ruby gives you to make your code shorter while for the most part avoiding the ridiculously terse readability pitfalls of Perl. For example, built-in support for regular expressions and blocks (an elegant solution to the problem of making callbacks simple). One of my (minor) gripes with Ruby, though, is its inefficiency. In my experience with Python and Ruby programming, Python definitely has the edge.
I consider C and Java to be two of the best-designed lower-level languages. I like them both. I admit to being a C++ programmer too, and often making heavy use of the Standard Template Library. I don’t love C++, but I can get it to do what I need to get done.
What didn’t make it onto my list? JavaScript is alright but has a few too many quirks for my taste. Its lack of a good built-in module management scheme is one of its principal weaknesses. The designers of JavaScript didn’t do a bad job, they were just in a bit of a hurry. Too bad Netscape didn’t decide to adopt Python instead of creating a new language. So many valiant attempts have been made to overcome the weaknesses of JavaScript that it’s hard to say what JavaScript tools and frameworks will be at the head of the pack in a few years. Certainly RoR’s adoption of CoffeeScript gives CoffeeScript a huge automatic popularity boost.
Two other languages that I’m not particularly fond of are Perl and Lisp. Perl can look too much like line noise for my taste. Lisp’s simplicity is nice, but it doesn’t think like I think.