The Worst Programming Language

Yesterday, while reading my RSS feeds, a post came across titled, “Perl is the most hated programming language“.  The article was referencing a Stack Overflow report that was characterized as saying: “Perl, the Old Spice of programming languages, is the most disliked by a significant margin, reports Stack Overflow. Delphi, used by children to write viruses for adults, and Visual Basic, used by adults to write games for children, are running neck-and-neck for second place. Trailing far behind are PHP, for people who still don’t care about security, and Objective-C, for people who still don’t realize they work for Apple. Coffeescript, a language designed to make Javascript more annoying, takes sixth spot; Ruby, very briefly popular among people who wanted to write web apps without actually doing any work, lurks in seventh.”

Now them’s fighting words.

I also took a look at a discussion on the subject over on Slashdot, where the comments were equally derogatory towards Perl, as well as a number of other languages. It is a amazing the hatred cluelessness out there. This is a discussion that has been going on forever about what is the most hated, the worst, the ugliest, the … programming language. I know. I’m a Compusaur — I’ve been programming since the mid-1970s, cutting my teeth on languages like BASIC, FORTRAN IV, and APL, and I’ve used even older language. I’m also — and I can say this with absolute confidence — the person who has been programming in Perl the longest with the exception of Larry, it’s author. I’m Perl’s Paternal Godparent; Larry, Mark, Jon, and I were carpooling to SDC when he wrote the first version of Perl, and I’m the person who was doing combo Perl-QMenu scripts to support the BLACKER program. I’m the one who knows that Perl would not exist without the TCSEC (Orange Book), so don’t say the NSA hasn’t given you anything.  I wrote the first version of the history section in the Camel book, fuggahdsake.

But back to the question at hand: Whenever anyone tells you that something is the worst or the most hated, you must learn context. You think Perl is bad for readability? Try reading APL or LISP, and remember that COBOL was designed to be readable.  Different languages and different editors are good for different things. Almost everything has strengths and weaknesses.

Perl is best at what it was originally designed to do: Text manipulation and report generation. It is great for easy text parsing scripts thanks to regular expressions and associative arrays, and implementing state machine parsing tools isn’t complicated. I have a large tool that at its heart is perl; it is perl that helps me generate the California Highway pages. But is perl the best language for system administration (which is what the Stack Overflow folks do)? No.

I’ve worked with loads and loads of languages, from Algol to Zed (well, I’ve looked at a little Zed — it is a formal methods language like Ina-Jo or Gypsy). I’ve written large programs in Algol 68C and PL/I (actually, both PL/C and PL/I (X)). I’ve worked in BASIC (especially RSTS/E Basic, which was a model for some Perl syntax), Fortran IV and 77 and WATFIV, COBOL, C, Ada, and APL. I’ve even done some LISP and SNOBOL, as well as MINITAB. To me, the language I had the most is Excel Spreadsheet Macro Languages, for I’ve seen difficult to find errors in that language to devastate organizations.

But most of the “kids” responding to that poll grew up in a different era. They learn Java and C++ and drink the Object Oriented Kool-Aide. They deal with PHP and Python and hosts of other new scripting languages, and complain about the old — without realizing that the newer languages are building upon the foundations of the previous ones, correcting the mistakes for a new generation.

In reality, the programming language you hate the most is the one that you’re unfamiliar with, that someone wrote bad code in, with no comments, that you have to maintain. Just as you can write easy to maintain code in any language (including APL — but in APL you can write it in one line), you can write garbage in any language.

All it takes is talent.

Share