Like a surprisingly large portion of the people who program everyday, I am not a formally trained programmer. I was a French major and ended up with a doctorate in French literature from the Université Sorbonne Nouvelle-Paris 3. I happend to have some trouble with footnotes in Word and ended up deciding to write my disseration in LaTeX, then realized that Emacs with AucTeX was the best way to write LaTeX, and then that Linux was the best platform for running both LaTeX and Emacs. (Yes, I started with MikTeX and WinEdt on Windows 95, then moved up to ntemacs.)
I had a Makefile to compile my thesis, Perl scripts (and BibTeX of course) to generate my bibliography. By then it was too late : my mind had beens sucked into the machinery.
My first language was Perl. Everyone likes to make fun of Perl, line
noise jokes, etc., but Perl has a lot of strengths. Remember that Ruby
is called Ruby because Perl was called… “pearl”. Despite its flaws,
Perl – at least what Perl with
use strict; and regular reading of
the Perl Monks – Perl, remains vastly
superior, architecturally, structurally, to the language that succeded
it, the unfortunate PHP. You can do a lot of gnarly things in Perl,
but you can also do some clean functional programming.
Mark Dominus’ Higher Order Perl was a huge eye-opener for me. It is really an amazing book, especially for someone like me. Ironically, that book was my first step away from Perl. Because after being exposed to all those functional techniques and abstractions, you start to say: “why not do that in a language that was made for functional programing?” This is where Common Lisp comes in.
As an /autodidacte/, I felt I needed to learn something more substantive, that I was missing some CS power, and that Perl was not a serious enough language. I really didn’t want to learn C, but I did dream of compiling stuff… Python and Ruby were just getting started, and seemed too close to Perl to me, especially as far as how the runtime, non-compiling works.
A few key Paul Graham articles and I was on my way.