“It’s not true that life is one damn thing after another,” wrote the American poet Edna St. Vincent Millay, “it is one damn thing over and over.” Her statement is simply a newer version of the French expression “Plus ça change, c’est la meme chose”, which is approximated in the English “The more things change, the more they stay the same”. In turn, that French expression echoes a sentiment that dates at least as far back as the biblical book of Ecclesiates: “What has been will be again, what has been done will be done again; there is nothing new under the sun.” Even the idea of history repeating itself has a history of repeating itself!
That’s the essence of the keynote at the 2010 RailsConf conference given by Robert C. “Uncle Bob” Martin, whom I like to think of as “the programming world’s adult supervision”. If you’ve got some time to spare – perhaps while you’re having lunch – watch the video above, because it’ll give you a better sense of the history of programming languages and some educated guesses as to where they’re heading. Once you strip away the syntactic sugar, argues Uncle Bob, our programming languages essentially boil down to three things: sequence, selection and iteration, and every construct within those languages is some combination of them. In the keynote, Uncle Bob explains this essence and considers the implications, in classic “Uncle Bob” style, which includes, of all things, a drum solo at the beginning.
In 1991, Guido van Rossum released his Python scripting language to the public.
This video will take you through the history of the project, compressed into a fraction of the time.
You will see the names of developers fade in and out of prominence, while the files they work on swirl around them.
Red files are core code. Blue files are documents. Yellow files are modules. The histogram on the bottom tracks the size and time of commits. When a person makes a commit, their name stands out. The files they commit also stand out. Files grow in size every time they are committed. Files and people gradually fade when there is no activity.
Whether you think of it as “Practical Extraction and Report Language” or “Pathologically Eclectic Rubbish Lister” (that’s my choice), we internet app developers owe a lot to Perl. It may have started as a little language that let its creator Larry Wall automate administrative tasks, but in the 1990s, its strong text-manipulation capabilities made it well-suited for producing dynamic web applications. Its success in this arena earned it the sobriquet “The Duct Tape of the Internet” and it led the wave of “scripting languages” — of which my current language of choice, Ruby, is a member — which function as the “P” in the LAMP stack. I think of Perl in the way I think of all those music lessons I had to take as a kid: it drives me crazy, but I wouldn’t be where I am without it.
December 18, 1987 is generally regarded as the day that Larry Wall first released Perl via the newsgroup comp.sources.misc. Here’s an excerpt from Larry’s description of the language, taken from his manpage:
Perl is a interpreted language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It’s also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal). It combines (in the author’s opinion, anyway) some of the best features of C, sed, awk, and sh, so people familiar with those languages should have little difficulty with it. (Language historians will also note some vestiges of csh, Pascal, and even BASIC-PLUS.) Expression syntax corresponds quite closely to C expression syntax. If you have a problem that would ordinarily use sed or awk or sh, but it exceeds their capabilities or must run a little faster, and you don’t want to write the silly thing in C, then perl may be for you. There are also translators to turn your sed and awk scripts into perl scripts.
Happy 20th birthday, Perl, and thank you Larry Wall (even though your language often made me want to hurl my machine out the window)!