My Favourite Programming Languages Through The Years
For a while now, I’ve been meaning to post something about programming languages I’ve learnt over the years, and how and why I switched to having new “favourite” languages. James Gosling’s latest blog entry reminded me me about why I wanted to do this. So here goes…
I’ve learnt a fair few programming languages over the years, to varying levels of expertise, including (in chronological order): BASIC, FORTRAN, C, Perl, C++, Visual Basic, Visual C++, Javascript, Java, CORBA, Python, PHP, and C#. And I’ve developed softwere to run on a variety of hardware/OS platforms, including: Sinclair ZX80; BBC Micro; VMS on DEC VAX; RISC OS on Acorn Archimedes; IRIX on Silicon Graphics; Windows; Mac OS; Linux on Intel; and Solaris on SPARC.
Even though my job hasn’t really been about cutting code for many years, I’ve always found it a good (and fun) intellectual exercise to learn new programming languages and maintain my software development skills. And aside from being fun, it’s invaluable to be able to communicate with developers from a position of understanding the issues they’re facing on a day to day basis. Right now, I’m trying to find the time to learn Ruby.
So what have been my favourites over the years - the languages I’ve really loved programming in? The list is much shorter than the list of languages I’ve actually learned to program in. In chronological order, the list goes: BBC BASIC, FORTRAN, C, and Java. The reason why each of these languages became my favourites over time is encapsulated in one word - freedom. That’s the reason James’s blog entry reminded to write this post - to quote him:
A lot of the time, the truth is actually that safety is freedom (e.g. a good safety harness and rope give you the freedom to climb a mountain).
The kind of software I’ve most enjoyed writing over the years has been software that tackles problems that are intellectually demanding. These require not only a deep understanding of software, but also deep domain-knowledge outside software, some of which is hard-won, taking years of education and research experience at the leading edge of fields to acquire. For example: modelling and simulation of protein and drug molecules; automated analysis of genetic sequence data; modelling and simulation of whole organ systems; large-scale multi-dimensional data analysis and visualistion; 3-D graphics programming; and extracting semantic meaning from unstructured data e.g. natural language understanding, and feature recognition in images.
Each language that became my “new” favourite did so because it gave me an increased sense of freedom to think about the problems I was trying to solve. With each new “favourite” language I found I had to keep less track in my head of the technical details of how different pieces of code interacted. Increasingly, I was able to build systems that were flexible; continuing to “just work” as the systems were changed over time. The kind of software I was able to write in C, I can’t even imagine being able to have written in FORTRAN. And the kind of software I have been able to write in Java, I couldn’t imagine being able to write in C.
I’m looking forward to learning Ruby. The driver of much of the interest in Ruby around the world is Ruby On Rails; which is a framework for developing web apps. What intrigues about it is the promise of being able to develop these type of systems fast. I’m hoping it will offer similar/enhanced levels of productivity compared to PHP - but be a better designed language. I’ve always felt - right back from when Perl/CGI was “hot” - that we haven’t got the process of developing web apps right. It’s just an unpleasant experience. Maybe Rails will be prove to be the best attempt so far. I have scheduled a little bit of time in the New Year for my first Ruby/RoR project. Nothing I’ve seen about Ruby so far has led me to believe it’ll become my new favourite language, but it looks like it will be a good addition to the toolbox. Watch this space…
Randal L. Schwartz wrote:
Before you abandon your friend Perl for Ruby, take a look at Catalyst, which is the Ruby-on-Rails equivalent for Perl. It’s not getting as much press only because it’s not “uber-new” so the bloggers ignore it.
Posted 20 Dec 2005 at 11:31 pm ¶
simon wrote:
Thanks for that Randal. There sure are a lot of these frameworks around - Java has a Rails clone called Trails.
I should say, I haven’t actually written a line of Perl for quite a few years now - unfortunately, it was never much of a friend of mine
I pretty much abandoned Perl as a programming language in 1997, when it simply could not cope with the kind of web apps we were developing at the time. This was actually the errr… “catalyst” for us getting into Java in a serious way (and it quickly became obvious that it could replace the C/C++ work we were doing, too). I know plenty of great folks who love Perl, by the way. It’s just not personally my favourite language.
So…. I would actually be dumping PHP for Ruby. I’m intrigued to see how I get on with Ruby - I have to say that the latest version of PHP - PHP 5 - is actually pretty good. Should I be embarassed to admit I don’t mind PHP these days? Not sure!
Posted 21 Dec 2005 at 12:17 am ¶
Brian Takita wrote:
I hope Rails works out for you. Ruby had its time coming. It just needed a killer app and Rails was that. There are some other nice projects to look out for, such as Rake for automation and Switchtower for deployment.
Posted 21 Dec 2005 at 9:04 am ¶