Wednesday, May 14, 2008

New job

This blog is probably going to be more of a Twitter-like stream of consciousness rather than a considered, pondered assessment and evaluation of my situation (i.e. it's like every other blog).

Started new job as Build/release engineer for commercial organisation. (Spelled with an 's' immediately tells you which country. Job title immediately tells you the city and the organisation.) I'm a Perl programmer. Been one since 1990.

I spent 15 years prior to 1990 writing C code and then this new 'dynamic scripting' language Perl came along and said 'let me take care of the garbage (i.e. memory management) and you take care of the interesting part (i.e. writing code)'. Suddenly 90% of my coding time was freed. Oh, and Perl also let me forget about the intricacies of awk, sed, grep, join, cut, bash/csh/tcsh/ksh/sh (sure I occasionally use them but never for anything complicated). Suddenly one ring ruled them all.

Over the years since then I've looked long and hard at a lot of languages including VB, Java, C++, Smalltalk, Eiffel, Python, Ruby, Erlang, Haskell (the list goes on and on). All of them have attractive aspects. I remember reading once that each language is designed to solve a particular problem. (Maybe in that sense all programming languages are Domain-specific languages.) Fortran (Formula Translator) and COBOL (COmmon Business-Oriented Language) were early examples of this. Perl was invented supposedly because Larry Wall was too lazy to learn how to use all the Unix utilities and too impatient to wait for them even when he could get them to link together to process his report data.

Steve Yegge's talk on Dynamic Languages seems to confirm my own experience. It's just too hard to switch languages these days. In my case the Perl CPAN has over 10,000 downloadable plugin modules. It takes a lot of time to sift through 10,000 modules to find the ones which I am comfortable with. I can learn the syntax of a language in a couple of days but how long does it take to understand the subtleties of the Schwartzian Transform and why one would use it? Each language has such 'deep learning' aspects and they take a long time to grok.

I omitted JavaScript from my list above because I am finding I get more and more enjoyment from writing JS each day. JQuery has got to be something akin to manna from heaven.

Yegge's comments about Java compilers and language support tools effectively running the program and looking inside to see what it actually does rather than trust to the static declarations gives me great hope that a Perl programmer somewhere (won't be me: see blog title) will finally bite the bullet and run with the fact that only Perl can truly understand a Perl script and start writing IDEs and refactoring tools which are actually useful.

No comments: