Python is now an approved language in Google's yearly Code Jam coding contest.
For a number of years, Google has run a yearly coding contest named Code Jam.
The smartest (young) programmers in the world compete against each other for prizes and fame.
There are 3 online rounds (September 5-6, September 14 and September 19). The
top 100 will be invited for the final coding showdown at Google New
York on October 27, 2006. All travel and accommodation expenses will
be covered by Google and there will be over $165,000 in cash and prizes.
What's most exciting for me is that this year, for the first time, Python is one
of the supported languages. (The others are C++, Java, C# and VB.NET.)
I'm hoping that at least some of the finalists will get that far by
exploiting Python's superior coding speed!
(Googlers, others involved in setting up the competition, and their families,
etc., etc., are not allowed to participate, as is customary in such things.)
I'm surprised that there is _any_ limits on the language that can be used in the CodeJam. If they're going to allow VB.Net, then it would seem that they could include other fine languages like Scheme, Ruby, Smalltalk, OCaml and Haskell. Really, it seems like you should be able to use whatever language you like.
> NOTE: All submissions have a maximum of 2 seconds of runtime > per test case. This limit is used in harder problems to > force submissions to be of a certain complexity. Because of > the inherent speed differences between Python and the other > offered languages is large, some problems may require extra > optimization or not be solvable using the Python language.
> I was pretty excited too, until I saw: > [Python disclaimer]
Yes, that's unfortunate. The time limit is because the kind of problems they tend to present have "lazy" solutions (like exhaustive search) as well as "smart" ones (where some mathematical analysis helps you to vastly reduce the complexity of the algorithm). The time limit is there to force you to come up with the smart algorithm. Now if all the problems were O(N) or even O(log N) that wouldn't be a problem for Python, but there are some problems (or so I've heard) where the best solution is still O(N**2), and then the compiled languages are in an obvious advantage. Your best bet is to know two languages -- Python for the O(log N) problems, and C++ or Java for the O(N**2) problems. Once we have winners we'll see how well this worked out.
(Sorry, even with IronPython vs. C#, C# has the advantage -- the compilation from Python to IL doesn't magically remove Python's dynamic typing, so it doesn't help enough -- Jim Hugunin has shown modest speedups compared to CPython, largely due to .NET's JIT, but generally not even 2x for realistic code.)
[I tried to reply to this yesterday but Artima hiccupped.]
[Rubyfan] > I'm surprised that there is _any_ limits on the language > that can be used in the CodeJam.
The contest is actually run for Google by a contracting company, TopCoder.
For each language to support they have to do some work, such as creating a 100% foolproof language-specific test framework, and of course experts to judge the submissions (most of it is automated, but you've got to catch cheats manually). They do this for other companies to, which is probably how C# and VB.net came into the mix.
Google specifically contracted TopCoder to support Python since that is the #3 language at Google (C++ and Java are #1 and #2). Ruby and the other languages you mention are barely on Google's radar, for various reasons such as not having to support too many languages that fit the same niche.
Another way to look at this: given Google's investment in Python (which started long before I joined!), Google is more interested in people with Python skills than people with Ruby skills, all else being equal.