As faculty members in Computer Science and Engineering we often
discuss the pros and cons of languages and which ones we should
teach. The Tiobe
software index shows us how the popularity of certain languages
ebbs and flows. I think it is clear that it does not really matter
which specific language you learn first or second, what matters is that
you learn how to think clearly. And that you learn how to learn new
languages.
As a demonstration, I thought I'd take a trip back memory lane and
list the languages I learned (and forgotten) while still in
school:
- BASIC -
Freshman year in high school I took a summer class on Basic
programming using the old Tandy PET (I also had the Atari
2600 basic programming cartridge, but it kinda
sucked). Next year, my new Apple IIe had basic built in. I should also
mention that back then it was common for high schools to teach Basic
programming, Power Point and Excel did not yet exist.
- 6052 Assembly
language - Of course, I wanted to write games and the only way to
get any kind of animation in the Apple IIe was to progran in
assembly.
- APL - I only worked with this extremely strange language for two weeks.
- Pascal
- Somehow I got a hold of a copy of a Pascal compiler for the Apple
IIe. I was surprised to learn that you could write programs without
line numbers and GOTO/jmp statements.
- Scheme
- I used it in my freshman year at college. Scheme is the simplest
language I have seen. It is beautiful.
- CLU -
In college we had to do our software projects using CLU. It is a pre-cursor to
object-oriented languages.
- Emacs Lisp -
I learned it for a summer job. This rss feed will be turned into
HTML automatically by an Emacs Lisp function I wrote.
- C -
Learned it for an OS class in graduate school.
- Lisp - thesis work.
- Tcl/tk - thesis work.
- C++ - thesis work.
- Java - I wanted to write some applets, for fun.
Those are just the major programming languages I encountered while
still a student (pre 1998), I also learned bits and pieces of
countless scripting languages (awk, sed, bash) or special purpose
languages (latex, um-prs, sql). The point is,
my experience is not
uncommon. A good computer scientist or software engineer
will learn at least one new language every year or so. After a while,
one notices how they are all not that different but how each one
teaches us something about the way we think, the way we solve
problems. Writing software is about how we think, and how we translate
these thoughts to meet the capabilities of the machine at our
fingertips.
Thus, there is no need to get too hung up on which programming
language you should learn first. If you choose software as a career,
you will likely learn over 100 languages over your lifetime. I can
only imagine what we will be using 10 years from today!
If you also have fun writing programs then maybe you would like to try
to solve some of my
programming
questions.