Google Code Jam 2011 Language Popularity
go-hero.net
go-hero.net
I answered all the questions using python and was surprised to see the majority of the top coders (you know, the guys who solved everything in ~30 minutes) use C++ and Java. I had the impression that the difference in python's runtime would be made up for how much more succinctly you can code in it and by all the syntactic sugar... but I guess not. In fact, I noticed some of the top guys have various built in libraries to help them reduce their time spent on input handling and various solver interfaces. The auto generated code from those libraries dwarves the actual solution code in size.
They'd have solved these kinds of questions for years, and have ready templates for parsing the input and output.
Verboseness is indicative of the abstractions that are exposed, and that being at a lower level than necessary is the problem because you don't just have to deal with the problem at hand, but also the holes in languages.
With years of practice in a similar area, many people would have their own libraries to abstract those language shortcomings.
In general, the verbosity because of the bad abstraction levels is always a problem, because different people using it will have their own versions to patch them up.
Used Haskell, PostScript, Python, Prolog, Perl, J, Brainfuck, C, each once for one problem.
I went with python instead because I assumed I'd need to squeeze as much efficiency as possible out of my programs.
For this round, these fears were completely unwarranted. All of the problems, except the second, were trivially O(n). (#2 wasn't worth optimizing, but it was possible)
Does anyone have experience with the next round? Is speed still not really an issue?
[|("PostScript", (1, [|1.0; 1.0; 1.0|]));
("Brainfuck", (2, [|1.0; 1.0; 1.0|]));
("Golfscript", (2, [|1.0; 1.0; 1.0|]));
("COBOL", (1, [|1.0; 1.0; 1.0|]));
("Octave", (3, [|1.0; 1.0; 0.6666666667|]));
("Shell", (5, [|1.0; 1.0; 0.6|]));
("dc", (2, [|1.0; 1.0; 0.5|]));
("sed", (2, [|1.0; 1.0; 0.5|]));
("R", (2, [|1.0; 1.0; 0.5|]));
("OCaml", (21, [|1.0; 1.0; 0.380952381|]));
("F#", (17, [|1.0; 0.8235294118; 0.3529411765|]));
("D", (6, [|1.0; 0.5; 0.3333333333|]));
("Prolog", (3, [|1.0; 1.0; 0.3333333333|]));
("J", (3, [|1.0; 0.6666666667; 0.3333333333|]));
("Clojure", (17, [|1.0; 0.9411764706; 0.2941176471|]));
("Haskell", (118, [|1.0; 0.906779661; 0.2457627119|]));
("C++", (5700, [|1.0; 0.9080701754; 0.2022807018|]));
("ActionScript", (5, [|1.0; 0.8; 0.2|]));
("Lua", (12, [|1.0; 0.75; 0.1666666667|]));
("Pascal", (111, [|1.0; 0.8738738739; 0.1621621622|]));
("Python", (1658, [|1.0; 0.8805790109; 0.1447527141|]));
("Ruby", (259, [|1.0; 0.8918918919; 0.1351351351|]));
("Lisp", (26, [|1.0; 0.8076923077; 0.1153846154|]));
("C", (671, [|1.0; 0.8032786885; 0.1117734724|]));
("Java", (2652, [|1.0; 0.8465309201; 0.1052036199|]));
("C#", (710, [|1.0; 0.8309859155; 0.0985915493|]));
("Perl", (155, [|1.0; 0.8258064516; 0.09677419355|]));
("MATLAB", (11, [|1.0; 0.8181818182; 0.09090909091|]));
("Scala", (35, [|1.0; 0.8; 0.08571428571|]));
("Groovy", (13, [|1.0; 1.0; 0.07692307692|]));
("Javascript", (30, [|1.0; 0.6666666667; 0.06666666667|]));
("GO", (16, [|1.0; 0.8125; 0.0625|]));
("PHP", (166, [|1.0; 0.765060241; 0.05421686747|]));
("Visual Basic", (32, [|1.0; 0.78125; 0.03125|]));
("Assembly", (1, [|1.0; 1.0|]));
("AWK", (3, [|1.0; 1.0|]));
("WRAPL", (1, [|1.0; 1.0|]));
("Standard ML", (2, [|1.0; 1.0|]));
("Objective-C", (6, [|1.0; 1.0|]));
("TCL", (3, [|1.0; 1.0|]));
("Mercury", (1, [|1.0; 1.0|]));
("Befunge", (1, [|1.0; 1.0|]));
("Fortran", (2, [|1.0; 1.0|]));
("Factor", (2, [|1.0; 1.0|]));
("CMake", (1, [|1.0; 1.0|]));
("LOLCODE", (1, [|1.0; 1.0|]));
("LOGO", (1, [|1.0; 1.0|]));
("Boo", (1, [|1.0; 1.0|]));
("Erlang", (5, [|1.0; 0.8|]));
("Scheme", (7, [|1.0; 0.5714285714|]))|]
[1] str |> Array.map (fun s -> let spl = s.Split('\t')
(spl.[0] , let scspl = spl.[spl.Length - 1].Split('/') in
scspl.[0], scspl |> Array.map (fun sc -> float sc / float scspl.[0] )))
|> Array.sortBy(fun (_,(_,sc)) -> if sc.Length = 3 then -sc.[2] else 1./sc.[1]) PostScript 1 1.0 1.0 1.0
Brainfuck 2 1.0 1.0 1.0
Golfscript 2 1.0 1.0 1.0
COBOL 1 1.0 1.0 1.0
Octave 3 1.0 1.0 0.6666666667
Shell 5 1.0 1.0 0.6
dc 2 1.0 1.0 0.5
sed 2 1.0 1.0 0.5
R 2 1.0 1.0 0.5
OCaml 21 1.0 1.0 0.380952381
F# 17 1.0 0.8235294118 0.3529411765
D 6 1.0 0.5 0.3333333333
Prolog 3 1.0 1.0 0.3333333333
J 3 1.0 0.6666666667 0.3333333333
Clojure 17 1.0 0.9411764706 0.2941176471
Haskell 118 1.0 0.906779661 0.2457627119
C++ 5700 1.0 0.9080701754 0.2022807018
ActionScript 5 1.0 0.8 0.2
Lua 12 1.0 0.75 0.1666666667
Pascal 111 1.0 0.8738738739 0.1621621622
Python 1658 1.0 0.8805790109 0.1447527141
Ruby 259 1.0 0.8918918919 0.1351351351
Lisp 26 1.0 0.8076923077 0.1153846154
C 671 1.0 0.8032786885 0.1117734724
Java 2652 1.0 0.8465309201 0.1052036199
C# 710 1.0 0.8309859155 0.0985915493
Perl 155 1.0 0.8258064516 0.09677419355
MATLAB 11 1.0 0.8181818182 0.09090909091
Scala 35 1.0 0.8 0.08571428571
Groovy 13 1.0 1.0 0.07692307692
Javascript 30 1.0 0.6666666667 0.06666666667
GO 16 1.0 0.8125 0.0625
PHP 166 1.0 0.765060241 0.05421686747
Visual Basic 32 1.0 0.78125 0.03125
Assembly 1 1.0 1.0
AWK 3 1.0 1.0
WRAPL 1 1.0 1.0
Standard ML 2 1.0 1.0
Objective-C 6 1.0 1.0
TCL 3 1.0 1.0
Mercury 1 1.0 1.0
Befunge 1 1.0 1.0
Fortran 2 1.0 1.0
Factor 2 1.0 1.0
CMake 1 1.0 1.0
LOLCODE 1 1.0 1.0
LOGO 1 1.0 1.0
Boo 1 1.0 1.0
Erlang 5 1.0 0.8
Scheme 7 1.0 0.5714285714As for the top scorer, I can't help but wonder if that skill even translates well to the real world?
These are of course, the standard industry choices these days. Except there is a huge bias for C++, as for most competitors, that is a standard language.