Poll: Which programming languages have you mastered, and how many ?

7 points by jacquesm ↗ HN
According to http://www.99-bottles-of-beer.net/ there are 1304 different programming languages and variations!

I'm not going to try to find out how many options the poll system allows you to place.

DSLs have been removed, as well as duplicates.

Microcode, VHDL and Verilog are strictly on the boundary between hardware and software, but I still feel they are 'programming'.

27 comments

[ 0.38 ms ] story [ 91.6 ms ] thread
I'd like to argue for the inclusion of SQL to this list.
I was thinking about that but then again, SQL really is about as domain specific as it gets, then you'd have to put every other DSL in there as well... tricky choice.

The languages above are all 'stand alone', not application specific, in other words you could conceivably program anything in them, that's a little hard to do in SQL.

Using stored procedures it is turing complete, but I still doubt anybody ever wrote an application completely in SQL.

I have some horror stories I could share with you... I've rewritten more than one application where the entirety of the application was originally written in SQL (HTML presentation included) and then just emitted when the SQL was called.

I'd also argue that SQL isn't as much a DSL as I think you suggest, it's the de facto choice when programming on the data layer for any RDBMS (sure, the implementations may vary slightly, but if you're writing SQL that's often your only choice for a language at the DB level).

Ouch. Ok, I'll take that evidence, SQL goes in. It will show at the bottom though, I can't insert it in the right spot.

I feel your pain btw. That must be quite the mess.

Ugh. That's as bad as some of the programs I've re-written to leverage SQL. Way too many resultset/for loop combos that took hours to run in Java or C# that turned into seconds with a little set-based thinking.
heh, which SQL? they're all different :-/

I wouldn't consider someone a SQL "master" unless they had worked extensively with several dialects and could compare the differences between them.

They are all close enough to similar. It's kind of like the difference between Scheme and Common Lisp.

PL/SQL and T-SQL are different, but not so different as to require a new way of thinking, for example.

Of course, I've worked with lots of dialects of SQL fairly extensively, so I may be over-simplifying.

How would one decide on having mastered a programming language? http://norvig.com/21-days.html suggests it cannot be done in a short span of time.
Let's say if you dared to take on a short time high pay job with your reputation at stake on delivering ?
Or rule of thumb, you can write a significant amount of code in the language:

(a) without reference to the web or your reference books.

(b) with a minimum amount of syntax errors

> without reference to the web or your reference books.

That's one of my main gripes with Java. Without an IDE you are essentially blind. The language itself is reasonably easy, but before you really grok those libraries takes forever.

And I really do not like IDEs, but when working in Java I almost have to.

The library and API's are just enormous.

They are and I agree it takes forever .. but that is mastering, maybe not 10 years but +- 10 000 lines of code before you master it.

Java is not a beautiful language! I find the language libraries quite verbose and difficult to memorize. Brevity is a virtue. If one is to master a language the first thing you should do (I know it might sound heretical!) is to start a small collection of wrappers and generic routines with shorter names that are easier to memorize.

A good example of such a 'wrapper', but from JavaScript is jQuery, which to a great extend is a wrapper around the DOM. At the expense of the code John Resig managed to minimize the API.

      $().css()

      not document.getElementById() etc...

It does take time though!
I would say you can't have mastered a language without significant knowledge of its standard library (if any).
I tend to disagree with this sentiment. I believe that one has master a language when they know every construct of a language. e.g. Messaging, Delegates, Currying, Pointer, Anonymous functions, OO, Public / Private, Mix-in / Interface, ad nasium). Knowing the libraries is irrelevant to the fact of knowing the language and the deep recesses of dark magic you can call upon if needed.

Libraries are nothing more than reading an API to get needed functionality without writing it yourself (not disparaging them, that is the point of reuse). That being said you should have picked up some basic library knowledge on your way to fully comprehending a language.

Lets take Java for example, I know guys that know every API of the JDK, JEE, Commons, et. al. They can glue together any enterprise app that you throw at them with JDBC, Struts JPA, and on and on) but they are by no means masters of Java.

As well when I did AI work for the simulation industry, I knew guys that did not know a lick of the libraries (hyperbole) but understood anonymous classes, listeners, command chains, threading and could work magic with their code. When I first moved to doing enterprise apps. I wrote my code as I did when I was doing AI and I was asked to stop writing it that manner because it was unreadable by the other developers. They had literally never seen an inline declared anonymous class used as method reference to emulate a delegate or function pointer.

Anyway long story short, one group clearly new the breadth of the libraries more thoroughly. But the other group could solve problems more efficiently. It depends where you place the concept of mastering a language. Clearly my opinion is that it is the latter.

Oberon. Because I have implemented it several times.

I am not even close to mastering anything else. 16bit x86 assembly maybe, but that too is sketchy now.

Nit: you put "perl" in the list. Nobody ever masters perl, you just get less confused and sucky at it ;)
At the current count 4 people disagree with you :) I wasn't one of them.
They're all liars. ;)

I actually happen to love perl and have written 10's of thousands of lines of perl. I just do not always claim to know why it works :)

Honestly, I think that's true with all programming languages.
I'm going to have to complain about the absence of Smalltalk on this list. But for the sake of my reputation, I am not going to complain about the fact that VB is not in the list.
Aye, that's a genuine oversight, apologies. Smalltalk added.

VB = BASIC, which is there.

There are many other structured basics besides visual basic (GFA Basic, BBC Basic and a whole slew of others).

I spent most of the '70s programming in 18-bit assembler [pdp-15 clones] - where should that go?
I figure right between '16' and '32' bit ?

Neat! I hacked about a bit on a sperry-univac 1100 series mainframe, similar sentiment, only twice as wide.

Where is Ocaml on that list? or ML in general. You can't leave out my favorite language!
I'd like to see Lua on your list, even if I can't claim to have mastered it yet.

Do APL derivatives (J, K, APL2, A+, ..) count as APL?