The first computer language I learnt (long, long ago)
was BASIC for the BBC model B computer. I didn't find computer
studies at school to be in the slightest way stimulating (all we
learnt was descriptions of hardware, a bit of word-processing and
the like, and bits of trivial programming that didn't keep my
interest for long) so I rather got out of the loop with computers
until I came to the Engineering
Department of Cambridge
University.
Here we were taught Pascal, which was OK, but
didn't really grab me for the kind of programming project I wanted
to do. With some help from some friends, I taught myself C (my
first programming projects used the infamous ncurses library - gak!)
and, shortly after that, Tcl/Tk. Later, in order to work on my
final year project in collaboration
with the Ecole des Mines, I learnt
C++. I enjoy object orientated programming very much; it's the
way I naturally program, even if I'm trying to use a language which
isn't set up to work like that.
Because I was looking for an easy way to design
GUIs, I started playing around
with Java. This was back in the days of Java 1.0, when Java wasn't
very powerful, but was easy and clean to program. I have
Java to thank for the fact that I ever bothered starting to indent
code properly, and for not just doing things with quick hacks.
When it came to writing a GUI-based program for the industrial
company interested in my PhD,
I originally planned to write a calculating engine in C++, with
a pre-processor and a post-processor written in Java, as I did not
want to have to mess around with Xlib programming, or even with
Motif/Lesstif. However, Java had moved on, and was no longer the
clean and pleasant language I remembered. The basic core was also
missing widgets I envisaged in my program, so when I discovered
a C++ GUI toolkit that was as easy to program as the Java 1.0 I
remembered so fondly, I jumped at the chance. This toolkit,
discussed in greater detail in my
GUI section is wxWindows.
For the moment, I can't see myself programming any major project
in anything other than C++ (with wxWindows for the GUI part if
appropriate). I will probably learn Perl, and maybe Python, at
some point in the future, but for the moment I'm pretty happy with
the choices I'm making and what I can do with them.