Back in late March, I took the ‘Hello World': Programming languages quiz posted by a professor in the CS department. Other students had a wide range of scores, with a few perfect 20/20s sprinkled in. I got a 19/20, missing my first programming language: Logo. Oh the irony! The first time through the test, I assumed my score was due to a mix an enormous amount of time on Wikipedia, and a little bit of luck.
Yesterday afternoon, I retook the quiz and scored a 17/20. I missed Haskell, and I mixed up Fortran and Cobol. For Fortran and Cobol, I knew it was one or the other – they looked ‘classic’ to me – but I identified them backwards. I was writing the basic Haskell intro programs minutes before I took the quiz, but still didn’t recognize it on the test. Weird.
That made me ask, do I really understand the languages I can identify? Have I used them extensively, casually, or not at all? I needed to look more carefully at this.
I guessed that I had only used about 10 of these languages, and had used 5 of them in a non-trivial project, but I wasn’t sure. I went through the list of languages tested, and made a checklist. The results were a bit surprising to me.
Have I written ANYTHING in this language?
Guess: 10 / 20 Actual: 13 / 20
Going over the list, I discovered that I had written a trivial program in
Perl, Python, Ruby, Haskell, PHP, and Logo.
I figured I had written a little in roughly half the languages. As it turns out, I had used nearly two-thirds at one point or another. Logo is on the list: the specific dialect I used was LEGO/Logo when I was in elementary school.
Have I written a NON-TRIVIAL program in this language?
Guess: 5 / 20 Actual: 10/20
Going over the list again, I found that I had done a non-trivial projects in
This list was a little more exclusive. I had guessed that I used very few languages for real projects, but I was surprised at how many I really had used. I had used half of the languages on the test to solve problems that would be met with the scrutiny of a teacher, a boss, or actual work.
Logo was a tough choice to include. I counted it because it was the language I used in the Firefighting Robot contest. I spent a fairly large amount of time programming with it, though I’m sure it was trivial code by my standards today.
Where did I learn this language?
On my own: 9/20: C#, C++, Objective-C, Perl, Python, Ruby, Haskell, PHP, and Logo
Not learned at all: 7/20: Ada, Cobol, Fortran, Forth, Lisp, Pascal, and Scala.
In all fairness, I only “learned” Haskell today, and only wrote trivial programs in it.
However, I correctly identified 5 of the 8 languages I had never used on both attempts: Ada, Forth, Lisp, Pascal, and Scala.
What about languages not on the test?
I have played with a few languages not on the test. These include:
QBASIC, DarkBasic, Bash scripting, HTML, Processing, AppleScript, Assembly, Powershell, Batch scripting, VBScript, and probably several more I can’t remember. The two BASIC candidates and HTML were from my very early years of programming (grades 5-12?), Assembly was for a Computer Science class in college. PowerShell, VBScript, AppleScript, Bash, and Batch scripting were for various jobs at various times. Processing was for the fun of it.
It feels very strange to quantify my programming experience in this way, but hopefully it offers some insight into why I know what I know, and whether or not it’s worthwhile to know it.
–T N T C
When I was a kid, I almost always had a computer available. I played Mixed Up Mother Goose, Animal Quest, and tons of other games. Every once in a while, my mom took me to the Children’s Science Museum in West Hartford. For a little science hog like me, it was heaven. One day, I got to play with Legos connected to a computer. I knew how to use a computer from the one we had at home, but this was unique. I could type things in to make an actual LEGO toy do stuff! Lights flashed, motors whirred, and I was hooked. As it turned out, I was programming with LEGO/Logo.
I don’t remember how old I was when I first played with those LEGO lights and motors, but it was very early on. By 5th grade, I was entering the Firefighting Robot Contest at Trinity College, still using LEGO/Logo. My robot didn’t make it past the first hall, but I was ecstatic! When I put a candle in front of the light sensor, the fan spun! The robot could move! It could turn! It just…hadn’t turned where it was supposed to.
My fascination with computers kept getting stronger. My uncle taught me DOS commands, and I started using them to probe any computer I was on. I stumbled across QBASIC on one of these forays, and suddenly had a renewed fascination with programming. I started to teach myself to REALLY program (with a lot of help and encouragement from my family).
During middle-school, I got Lego Mindstorms to build more complex, free roaming robots. I helped teach QUEST teachers about Mindstorms so they could bring it to their students, and visited FIRST robotics competitions. In high-school, I took courses in Electronics, learning the fundamentals of circuitry, and first encountering assembly programming on a Zilog Z80. I took Cisco networking courses to understand how computers spoke to one another. I installed Linux and learned Perl.
In college, I have been honing those skills with courses in Java, Assembly, and C programming, networking, computer security, data structures, databases, and hundreds of other subjects. Now, finally nearing the completion of my bachelor’s degree at 26, I have been presented with a quiet reminder of my humble beginnings: programming in Logo to flash a lego stoplight.