List of Programming Languages I Have Used

I have been reminiscing about the programming language I have used as a student, as a software engineer, and hobbyist. The list is actually surprisingly long, come to think of it. I think it serves as a useful reminder for students interested in working as a programmer that you are very unlikely to be able to go through your career with skills in just a handful of languages, less alone one. I am also purposefully skipping languages that can not be considered full-fledged programming languages. I am also lumping all variations of a language as one language, more or less. Here’s the list of languages I can remember writing at least one line of code in, roughly in the order that I started using them:

Basic
I started with Basic on a friend’s Commodore Vic 20, and then on my own Commodore 64. I used some Basic version on PCs, Visual Basic in a student project and later in small Microsoft Access projects at work.
Pascal *
I used Pascal in high school, where it was taught as an optional class, and programmed a simple game with it.
Fortran *
My university was big on mathematical information processing, and given that I also started as a physics major, the university saw fit to teach me Fortran. I can’t remember ever using it for anything outside those classes, though. I came pretty close when I was working on NIMBUS, which was an online multiobjective optimization package researched and developed at University of Jyväskylä.
C
The first language taught in the first computer science class. I have used it both professionally and personally and still continue to use it today although not very often.
C++
The second language taught in the university. C++ was my main programming language from 1996 to 2003 both professionally and personally. I rarely write C++ these days.
Perl
I learned Perl on my own when I created an online exam enrollment system for my university. I was too lazy to walk from the computer science lab on the first floor to the third floor where the exam enrollment drop box was so I decided to write the system for my faculty ;) Perl was my main scripting language until 2003.
shell
I have used mostly tcsh and bash shells, and while I originally just wrote little custom .bashrc etc. files, shell scripting has since become if not daily, at least a weekly occurrence.
Assembly *
We had one class at the university that many people dreaded, and that was the class where you had to learn a little bit of Assembly language. I have never had the need to write Assembly since then, but it would have been useful being able to read it occasionally. This is one language I might actually need to invest some time in the future, I think.
Javascript
I learned this on my own to add some dynamic content on my web pages. I was among the first 10 people in my university to have homepages, and I actually ended up giving some advice to the staff member(s) who were running the webservers. I have since used it on many websites.
LPC
I learned LPC on my own after I became one of the coders for Regenesis, a BSX-MUD. Regenesis was probably among the first graphical networked games, a precursor to MMORPGs.
SQL
Learned in school, used a little bit at work, but I definitely need to get better at it.
Prolog *
Learned while I was an exchange student at the University of Kent at Canterbury. It was a fascinating language, but I could not wrap my head around how to actually use it (I did badly in my assignments).
Lisp
I have only used the lisp in Emacs and XEmacs to modify some of the beavior of (X)Emacs. Another language that I might need to invest some more into.
Mathematica
I had a summer job while I was studing at the university to program questions with answer checking for an online intro math class for the Tampere Technical University. I am still blown away by how they had hooked up Mathematica to the web server backend. Haven’t used it since.
Tcl
When Bugzilla was first shipped, it contained a little bit of Tcl that I had to modify when installing Bugzilla for Citec.
XSLT
Not sure if I should call this a programming language, but Wikipedia lists some other XML languages so what the heck. Mostly dealt with XSLT when an engineer in my group was working on adding P3P support to Netscape and Mozilla browsers.
Python
My first touch with Python was actually before 2000 when a fellow student raved about it, but as soon as I heard about forced indentation, I walked away (bad experience with Fortran…) Too bad. I wonder how things would have turned out if I had stayed and drank the coolaid then. Next touch was at Netscape, when a colleague raved about it. I actually ended up modifying a little Python program – flawfinder – while at Netscape. But it wasn’t until I started at OSAF back in 2003 when I really had to start using Python. I guess I fell in love with the language in the first two weeks :)
Java
I did my first Java programming by fixing two bugs in the PyDev plugin to Eclipse. When Google Android came out I created Caltroid to learn about the API and Java.
Groovy
At SpikeSource I decided to base my work on Hyperic, where the UI plugins can be written in Groovy.
PHP
When I started experimenting with ads, there was one case where the ad code was provided in PHP, but I wanted to alternate between two different ad sources, so I had to learn enough PHP to do that. Quite likely I will need to learn more, as I am thinking about creating a theme for my blog since I can’t seem to find a theme that I like. Incidentally, if you know of nice 2 or 3 column liquid or fluid layout WordPress themes where the main content is on the left, let me know…

* Used only in school.

I listed 20 languages above. A little more than half were required as part of doing my day job. And this does not even list languages that I have had to read but not write, or configuration mini-languages, or XML languages (apart from XSLT), … I don’t expect to stop learning new programming languages any time soon.

Update: I forgot HyperTalk, which I used a little bit on my Macintosh SE/30. I learned it around the same time I learned Fortran and C.

Similar Posts:

    None Found