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.
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.