Isaac as a Perl lover

Every programmer has a favorite programming language. Knowing more than a dozen of programming language does not mean I'm any different. Whenever I need to code something not so trivial, the first language I think of is usually Perl. That doesn't mean I don't know other language well, actually I write C++ and Java very well, and I like the idea of Python and Haskell a lot. But if you ask me what language is my choice, I'm not hesitate to tell others that it is Perl, even though it is not the most popular language of the world.

Why Perl? Were it not the write-only language that only system admins use? I used to think that way, too. But no more. A lot of Perl code in the world is not very readable, the Perl obfuscated code contest entries are much worse than that of the corresponding entries written in C. But that's not to say you cannot write very nice Perl code. It is just the reflection that Perl is too easy, a lot of people untrained about writing good code write a lot of Perl.

Indeed, Perl provides a lot of facilities for programmers to write code that are very short, very efficient, very easy to understand and exactly represents the thoughts of the programmer. Some examples:

Yes there are weird things: the way to make up a class is definitely not the nicest way a language can have, the way that parentheses affects the precedence of function call is a big trap, lack of properly prototyped functions forces programmers to look at the types of their arguments manually, having to say "use strict" everywhere is a bit of annoyance, etc, etc. Also, its (lack of?) efficiency at times forces you to use a different language. But every language has their problems: C++ get you to think about variable ownership all too often (and usually at a far too strange time); Java's checked exception get in the way whenever you implement anything large (not to mention that it's library is bulky and tedious to use); Lisp makes it all too clear that human beings are not good at counting, especially at things as subtle as just an opening and a closing parentheses; Haskell reminds people in the world that programmers are not in general mathematicians; you get type errors way too often in Python; etc. The most important criteria in a good language, however, is the expressiveness of the language: how accurately you can represent your idea about how the computer should work for you. For this, Perl is definitely unsurpassed.