106 comments

[ 4.8 ms ] story [ 207 ms ] thread
somewhere in the upper 70s it starts being undefined... Confused Delphi with Pascal, and then missed Pascal m(

Interesting though :D

cool idea. but add a submit button, or listen for enter key. right now clicking on the language of choice doesnt always work.
I thought that too, but it turns out I was confusing two Lisp dialects. At least on Chrome, as soon as you type the correct name, it continues to the next language.
It automatically advances when you get the answer right. If it's not advancing, you're probably entering the wrong language (even if you think you're right; there are a lot of similar looking, but obscure languages in there). I agree that it would be nicer if the author made it more obvious as to how it worked though.
ah, I see. that's why it never worked, apparently I guessed most of them wrong ;)
Doesn't work for me on Linuxmint. Can't submit for some reason?
I m on Mint and it works.LMDE though. Chrome.
Same here on Chrome on OSX. Can click "forfeit", but I don't see a "submit" button, and hitting enter doesn't do anything.
The app clears as soon as it's right. If you are not getting it... Well, there are things that look like Lisp, C or Forth and aren't :/
Running Chrome on OSX, too.

If the input text is correct, it is automatically submitted and you move on to the next language sample. If you haven't typed the correct answer, nothing happens and you can either keep guessing or forfeit.

Edit: Darn, was beat to it.

It auto-submits when you type the right language.
I feel this could do with an Easy/Medium/Hard option. I've been programming for about 30 years and I can honestly say I've never heard of Falcon or Piet.
My guess for Falcon was Eagle, and my guess for Piet was Mondrian... I'm getting there! :)
I used Falcon for a very short time about a year and a half ago yet I got it wrong...

OT: Falcon is actually a pretty interesting little language.

Great, what I need right now is not to get into another language... Seriously though, thanks for the tip, it does look pretty interesting.
The Lisps sure aren't easy
I wish I could just type "Lisp" and get half credit.
Depends where you are coming from, for me they were the easiest!
Score: 30/52 (57.69%)

Damn, I thought I was good at this.

edit: 46/77 I guess, after 75 it's only undefined (so my score should probably be 46/75)

"That" is a form that doesnt work on ipad ;) please add a submit button, thanks
Works for me on ipad
Please accept the answer "SML" for "Standard ML" as well.
I guessed SML & Ocaml on an option. No dice. Had to forfeit a good score.. it was F#

;-)

40/75 (53.33%)

Wow, there are so many languages I still need to try.... I'm proud I got ones like Piet, Io, and Racket, though.

It seems most people score around 50%, did anyone get a really high score?

I like it that you can clearly see several "streams" of syntax. That does make it hard to find the correct C family.

I worked with one person who I think could probably get a pretty high score. He was always talking about crazy esoteric languages that I'd never heard of - but then again, he was working on his own programming language in his spare time. So language enthusiasts or compiler writers would probably score better.
I thought this was going to be a tool where you paste in some code and it tells you which programming languages it could be written in.

It would be interesting to see how much code you need to be able to accurately identify the language.

I second that. I'd also love to see a tool which would allow you to provide a binary and tell you what built it.
TrID[1] has a number of definitions for various executable files, but it's designed for general-purpose file format identification. PEiD[2] is built specifically for identifying packers, compilers, etc. for PE files, and should therefore be able to identify a far wider array of them (the site claims it detects over 600 PE signatures), but I've never done any checking myself, and the project unfortunately seems to be discontinued.

[1] http://mark0.net/soft-trid-e.html [2] http://www.peid.info/

(comment deleted)
Besides certain languages with special keywords, the easiest way would be to send it through syntax checkers iteratively. You could probably have generic "C-style" and "common lisp style" types of checks, then you would have to actually look at api commands. The latter method would be rather problematic.
This is basically what highlight.js does indeed :-)
Maybe there's another page where you can submit the samples and this is the presentation/identification ;-)
I felt terrible each time I didn't recognise a language I'd used. Makefiles, Delphi and Batch files, to name three.
Heh. I've never used Delphi and I got that one. Thank goodness for learning Pascal in high school, I guess. (And reading somewhere that Delphi is related.)

I missed Erlang, even though I have a copy of Programming Erlang somewhere. Guess it didn't take.

I tried guessing Pascal and Modula and a few more for Delphi. I was thinking to myself "what other languages look like Pascal" and in the end gave up. Felt really dumb then when it turned out to be Delphi.

The other one where this happened was F#. I tried OCaml and Snandard ML and was thinking "this HAS to be OCaml..." and again, felt silly for not thinking of F#.

I got Standard ML confused with F#, then when I saw F# I got it right. When I restarted the thing, hoping to get a better score, I thought it was Standard ML... gave up, and found out it was F#.

Boy am I smart.

I missed a lot of easy ones too. At some point you get bored and just click Forfeit without paying too much attention.
And I felt sick that I got as high as 25% of them. I think it is better to know just a few of them very well. However the ones I use everyday I got immediately ...

What is interesting is so many languages look like C or Lisp or ML or its variants.

21/75. It returns undefined after 75.
"Oh, you can identify 33 programming languages at a glance? Aren't you clever."
Ah I hit a bug where the page didnt redraw, I thought they were making a joke saying all languages are the same u__u;

Languages never saw before :

seed7, whenever.

Happy to see my friend COBOL too.

I got it too, the same code for 5 languages I've never heard about, one after another. I felt ignorant, until it told me it's also valid racket :).

    int main(){
       for(int i = 99; i > 0; i--){
          write(i + " bottles of beer on the wall, " + i + " bottles of beer.\n");
          write("Take one down and pass it around, " + (i-1) + " bottles of beer on the wall.\n\n");
        }
        write("No more bottles of beer on the wall, no more bottles of beer.\n");
        write("Go to the store and buy some more, 99 bottles of beer on the wall.\n");
    }
lol, but Racket being so DSL friendly I would have doubted myself.

My 5 bugged languages were : scala, groovy, Dart, they're all not too unrelated.

Well, if you

    #define write(x) {};
it's even valid C :)
So I've been doing relatively well, up to 12 and score of 75% - but then I hit TI-BASIC. After I chose it right, the number on the left progressed, but nothing changed in the language itself. After that, kept clicking Forfeit and counter on the left increases (as score naturally goes down), but nothing was displayed where language sample should be. I am on latest Safari on Mac. I CAN HAZ BUG FIXZ, PLZ? But seriously, tons of crazy languages out there - I wonder if it is because we each want to have our own? I know I put together one or two myself, over the years :)
Same happened to me at "Bash". Chrome 18 stable, OS X.
Author here. Sorry for nipping your adventure short, but I caught sight of how fast the logs were scrolling, noted the HN referrer, and decided it'd probably be best to stop requesting the next code block from the server and just store everything client-side. With almost 10k uniques in ~16 hours, I imagine I've gone well over the 750 free dyno hours with this one. Oops...
Awesome work, either way! Very impressive collection of language samples. It would make great post to tell us how you put this together, especially where these code samples were from and anything else of interest. Kudos!
How I wish I could say I speak 70+ programming languages, but alas, they're all from Rosetta Code.[1] I would like to show a variety of "tasks", as the site calls them, but scraping seems like it would be a pain, so I went with the most interesting problem with a solid number of samples. As for the architecture, it's pretty much just a Ruby hash from language to code, and then a bit of CoffeeScript to glue everything together.

[1] http://rosettacode.org/wiki/99_Bottles_of_Beer

Should be case-insensitive. I put 'awk'.
I sure missed a lot of those, but at least I got Intercal right. That's probably a bad thing, now that I think about it.
It'd be fun to see the complete list of languages. I was clicking 'Forfeit' to see if Mercury was included.
You can see the list of languages in .js file stored in `langs` variable: http://wtpl.heroku.com/js/engine.js
What with that link just sitting there out in the open, I want to clarify that it's transpiled CoffeeScript and that the original[1] is far more sane.

[1] http://wtpl.heroku.com/js/engine.coffee

"transpiled" is not a word found in any dictionary I know.
Language constantly evolves, and I reckon there's certainly enough room for "transpile" somewhere in that process. CS -> JS isn't quite translation (much of it stays the same) and it's hardly compilation (but that seems to be the accepted term), so I feel "transpile" is perfectly suited.
Lisp, Clojure, Racket, Scheme! Every time I saw a Lisp dialect...
Please, if you show me a list of things, let me use my arrowkeys. Also, can you finish more gracefully than giving my undefined?
That is annoying. Also irritating is the fact that the quiz seems to stop accepting answers after a couple of questions for me; in both Chrome and Firefox so far. I want so desperately to get a score!

Edit: Actually, it just turns out (after reading the source) that in some cases it just won't accept the answer if it's wrong. I did the honourable thing and selected "Forfeit", allowing me to continue :)

I know auto-accepting only the correct answer is a pretty unorthodox way to do it, but I initially took to making this to familiarize myself with the various syntaxes, and it's the approach I tend to opt for when teaching myself things by rote (notably the Japanese kana and one to ten in all sorts of spoken languages) and it seems to work pretty well. Something about pressing Enter or a "submit" button breaks the neural flow for me; I tend to recall things much more effectively when I become a "constant input stream", for lack of a better phrase. Apologies if it doesn't quite suit you.
It was more the cases where I was wrong, rather than right. Some feedback indicating that the form could not be submitted, and one needed to press "forfeit", would have been appreciated, if only because it is not the way web forms work.

It's a small thing (and I did like it once I realised how it worked) but when doing things in an unusual way a little bit more guidance is required at first.

Enjoyed the quiz!

But "undefined" is such a beautiful terminus; what lies beyond the horizon is entirely up to your imagination. : )

Also, I opted for Tab completion instead of arrow keys; it's much faster and far less finicky to implement robustly.

Score: 75/75 (100.00%)

Looking at the source in a programming challenge is still winning, right?