What about the top ten solutions?
[edit for formatting]
Popularity in industry seemed to be a big factor, with Java, C++, C# and Python making up most of the entries in the top 100.
Speed wasn't that important: Python made up 20% of the top 100.
New and exciting languages I'd expect the sort of people who enter programming contests for fun to like were underrepresented. Only 6 people used Go, and 4 used Scala.
Unless I'm mistaken, the contest was limited to supported languages. F#, Clojure, Lua and Scheme don't appear because they weren't supported, not because nobody wanted to use them.
I program in Java at work because it's what my team understands and it's what the rest of the application is written in. But if I need to do some exploratory programming or build tools to increase my personal productivity, I turn to Clojure first. It's much more productive because I can test each little piece at the REPL and it takes so much less code than it does to do the same things in Java (even when it is just invoking methods on Java objects).
If I need to, it is then a straight forward step to expand the code out into its verbose Java form.
I'm not familiar with how the contest was implemented, but I would assume that if C# was supported, then any .Net language would work. It should be trivial to build a C# wrapper for your F# code, if the interface you must support can be implemented in all those other languages.
That said there were quite some initial problems getting some languages working since they were running on a very old Ubuntu.
In the article, speedy execution can be taken to mean the speed/ease with which you translate you idea into code and not the speed at which the resulting code runs
I wonder if the Python programmers recoded their bottlenecks in C or C++. Would the rules of the contest allow that?
From the article's description of how far ahead Melis was (2nd paragraph), you could say Java was king of "a race for second place".
Given that people have argued that the absence of Lisp winners from such competitions is evidence against Lisp's greatness (I'm going by memory here and don't have time to dredge up the record), it seems relevant to point out when it does happen.
a) given that people has made bad arguments before
b) it "seems relevant" to make bad arguments in the opposite direction now
Obviously the OP is relevant for other, better reasons than this, but that's what my comment meant.
A: "Lisp sucks. If it didn't, we'd see it winning contests or something"
B: "But it has been used to win a contest. Besides, you're really bad at making an argument"
I'm not trying to disagree with the OP in general (you can't fight bad logic with more bad logic) but just pointing out that correcting someone's facts can be easier (and with this datum point, possible).
Edit: I like the upvote, but an explanation would be better.
Of course the program could be rewritten into qbasic. It is getting your ideas and thoughts into a form that is not a compromise to the language which matters.
From the article: "Lisp doesn’t get in my way as much as other languages."
(Or, rather, that language alone doesn't guarantee success, but that would be too rational and boring for an online forum).
For that to be true, more than a quarter would have to be in the bottom 25th percentile. (In fact, it still points to lisp being better than average).
The bottom 25th percentile of the competition is relegated to submissions that didn't run.
There was a bug (still is, I believe) in the lisp 'starter pack,' which caused the client to crash (It sent garbage to the server or something). So even the default Java starter submission would beat it.
Given the number of people who submitted once and walked away, I wouldn't read too much into it anyway.
Just because computers obey the law of excluded middle does not mean we should.
Programming languages are like basketball shoes. You need a minimum feature set to play safely (ankle support, good traction, comfortable arches, etc). But buying a Nike Zoom Kobe will not make you the next Kobe Bryant. So what's the minimum feature set for a good programming language? I don't know. C appears to be good enough, while assembly is not.
That said, Kobe Bryant could probably beat me at basketball wearing a pair of cowboy boots. Likewise for programmer skill vs. task vs. language appropriateness.
You can apply the core concept -- refusing to expend computation effort when the result of that effort is guaranteed to not be used -- to any number of other methods and approaches in Machine Learning and AI.
They changed the education system, and no longer used the one they had around 1900. Unfortunately.
I'd argue that their education system's just fine.
a. really in appreciation of Hungary for all of its contributions to mathematics and the mathematical sciences.
b. I wished to hint that if the author wanted, the same article could've been about Hungary instead of lisp. Instead of asking "what makes lisp so great at this kind of stuff?" the question could've been "what makes Hungary so great at this kind of stuff?", with a badge saying "Made in Hungary". We always focus on the things we want to focus on as causes don't we?
Lisp doesn’t get in my way as much as other languages. After getting hooked I learned to value the interactive development environment, the object system, etc.. What’s good about Lisp is rapid development and speedy execution.
This might be a small effect, and you can have good programmers in every language, but if he was just as familiar with Java as he was with Lisp, could he have accomplished the same results in the same time with Java? How would the code look?
Anyway, cheers to Waterloo for putting this on again!
Cargo cultism at its finest
After seeing Gábor’s performance, many participants commented that they would be taking a new look at the 50 year old language. “Bocsimako is the proof that Lisp is best for AI algorithms,” quipped one player.
Gabor Melis is a seriously smart guy, and probably would have kicked ass in any language.
I'm going to pull out that phrase next time someone says 'Java/C# is good for Enterprise', or 'C++ is good for video games', or 'C is good for systems programming'.
Cargo cultism indeed.
1) "X is good for Y" is very much not the same thing as "X is best for Y"
2) One person having great success at something is not a pattern, and doesn't usually prove a general rule (I'm hedging with 'usually' - I can't think of a counter example but I expect someone else will :-). Common usage, while not a guarantee, is at least a good indicator of fitness - if Java were better for systems programming than C, it's likely (though of course not certain) that we would be saying 'Java is best for systems programming', and have some basis for that claim beyond the success of one person who has already demonstrated competence in the same general area (i.e. the contests previous competition wins).
The headline might better have been "Experienced programmer uses Lisp to win Google AI contest". Correlation vs causation - he didn't win because he knew Lisp, but he did use Lisp in his winning solution, and you can understand that without taking a position on Lisp itself; there are shades of fanboism in some of the comments on this thread.
2.) Lisp has been in use in AI, since before the birth of AI. It is still used in AI, and there has been plenty of success with it. There is plenty of 'constant conjunction' (to borrow the causative definition from Hume), associated with Lisp and AI.
Acting as if his use of Lisp couldn't have given him an advantage in an AI contest is pretty much the ultimate lisp denial-ism.
That the language is Lisp isn't important. The important consideration is that he ascribed the success of the entry to the language without any evidence linking the two.
he must be excited. until google puts out non-trivial problem sets and offers non-trivial prizes i'll save my upvotes and cycles.
I looked around but couldn't find any obvious place to find the source for the bots used.