How many programming languages do you know?

I had a lecturer in university who claimed to have taught something in the region of 15 languages. I was wondering recently about how many languages I know and how to count them, given that there are many languages out there that are similar.

Do C and C++ count as different? I think most people would say yes. They are sufficiently different that fluency and idiom in either one does not translate to fluency and idiom in the other.

Do Common Lisp and Scheme count as different? Again, I’d say yes, but for different reasons. I think it’s likely that people who know either one would be fluent in the other; they just wouldn’t like it so much. And they would definitely think it different (but probably for quite technical reasons, e.g. a Lisp2 vs a Lisp1).

What about languages that only differ slightly in syntax, e.g. do F# and ML count as different? Well I’m not fluent in either so I’m a poor judge, but it seems to be getting a little harder to make the case for separation. At least, if we discount matters of libraries and just consider the core languages.

Do HTML and SQL count as languages? I’m going to say yes even though they’re not Turing complete.

Is it sensible to make a distinction between different assembly languages? I’m inclined to say yes in some cases, no in others. Obviously Intel and ARM are very different. On the other hand, if you can read one RISC assembly language, you can probably get by reading most. And when it comes to assembly, reading is usually a more important skill than writing.

Anyway, to me it probably makes sense to rank language fluency on a 1-6 scale:

  1. Haven’t heard of the language or know only its name
  2. Have heard of the language; know which family it belongs to, what it’s suited to
  3. Have installed the language and/or tools; written an example program or altered an existing one
  4. Have written original programs to solve small but non-trivial problems
  5. Have written medium-sized projects
  6. Have worked on large scale projects; have used it professionally and/or in collaboration with others

So in theory one can take this scale, figure out one’s score for every PL out there, and sum to get the overall score. But given the sheer number of languages out there, I think it makes sense to consider just one’s top ten. Unlike my lecturer, I haven’t used ten languages to write large scale projects, so I won’t be scoring a 60. On the other hand, scoring 1 for any language on the top ten would be quite a poor show.

I’d imagine a typical score for a working programmer’s top ten would be close to 45: a couple of 6s, a couple of 5s, several 4s, and the remainder 3s. For me it would be: 6 (C++), 6 (C), 5 (Common Lisp), 5 (BASIC), 4 (Haskell), 4 (PHP), 4 (Javascript), 4 (SQL), and take your pick of 3s (Perl, Python, Bourne shell, C#, Ruby, Lua, …).

In conclusion: go learn a new language! It’s fun!

1 comment

  1. 7. Have written or maintained one or more implementations of the language.

    I happen to like both Common Lisp and Scheme and I don’t consider them to be very different.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.