ICFP 2005 Programming Contest Results
Fahrenheit 450 writes "The results of the The Eighth Annual ICFP Programming Contest are in, and it looks like this was the year for Haskell and Dylan, with Haskell programs taking first & third prizes, and Dylan claiming second prize and the coveted Judges' prize. This year's contest was a simulated game of cops and robbers, with a twist to the rules thrown in after the participants had submitted their initial entries. Step through the transcripts of the contests or just download the PDF version of the presentation slides and tell us all how you could have wiped the floor with the winners using your carefully crafted COBOL or awk submission."
It's amazing how many programming languages there are. I would never have thought that Haskell and Dylan would have even placed.
I've been in a Java bubble for far too long. Time to burst that bubble and look into things like Ruby, Python, etc. I know they're not new languages, but it seems like once you get buried in Java, Perl, C, or PHP it's hard to escape.
On the other hand, my mind is like a FIFO -- in order to learn another language, I have to forget one.
My ZooLoo
That's why many newer languages piggyback on the Java api set (Jython and their ilk), since the real bother isn't learning the core language features, it's learning the gigantic libraries that accompany them:
- UNIX-derived C libraries
- C++ template libraries
- unending Perl libraries
Java offers a quick-and-dirty crossplatform API for these languages that handles most of what they need, if they can wrangle their language semantics and don't mind the larger memory footprint and bytecode.
Also, if they can compile to bytecode, that helps automagically close some of the interpreted vs. compiled performance gap due to the hotspot compilers and java interpreters.
Go go java hate mail!
Hey, I'm just your average shit and piss factory.
I have only one question for developers programming in Dylan: How does it feeeeeeeeel?
Pretty awesome, I wish I could program. Problem is, everytime I attempt to learn a language, I can learn the basics (Variables, print, etc.) then I get lost when it comes to actually writing anyhting at all. I need to find a decent language to try that is easy. (Besides ruby and python, tried em)
I don't think a programmer of an OOP language like Java would be that involved with ICFP (International Conference on Functional Programming)
Your hybrid is not saving the environment. Its purpose is to make you feel good about buying something.
Functional as in the language that makes a programmer more functional.
It keeps referring to me as "Mrs. Cleaver."
"Made up/misattributed quote that makes me look smart. I am on
There was no requirement to program in a functional programming language. One guy wrote his cop & robber as shell scripts, although it failed in both rounds.
You can use imperative languages too. That's the neat thing about the tournament -- given a choice, most of the folks choose languages that offer more expressivity than the typical imperative language.
There have been "C" programs that won previously, I believe.
http://www.thebricktestament.com/the_law/when_to_
I find it's more about motivation than picking a language or how hard it is. If you've got some mental image of "I want to write Quake!" (or hopefully something a hair less ambitious), then it gives you both a reason and a direction for what you're trying to learn. Then you can obsessively search the web for tutorials on the different bits and pieces you think you'll need until you have a fairly decent subset of the skills needed to reach your dream. Learning the language is a free side effect.
Acius the unfamous
While the contest is associated with the functional programming contest, they don't require that contestants use a functional language. Plus, the contest start and end are announced on slashdot every year. So there's no reason why a Java programmer wouldn't get involved with the ICFP contest, and indeed there were several Java entries this year.
The ICFP contest accepts submissions written in any language. In this year's contest, there were 34 C++ entries (the most of any language), 20 Python, 19 Java, 10 C, and 9 Perl entries -- of the "functional" languages, there were 21 OCaml entries, 16 Haskell, and a mishmash of "others" like Dylan, Erlang, scheme, etc.
-30-
are more than Lots of Irritating Single Parenthesis? Something tells me to be a judge for a functional programming contest requires more patience than editing the /. reply mail
I missed out on this and I live in the same neighborhood?! :(
I shall now set my sights on UoC Computer Science department. Taking a look at the documentation of the rules provided by the site, it seems like you're developing AI for an RPG. I would love to try to host a league myself with similar AI development contests.
----- You know you have ego issues when you register a domain in your name.
I think a Haskell-Dylan language would go something like this:
Woooooooaaaaaahhhh! Geeee Mrs. Cleeeaver! You are looking niiiiiice todaaay.
looked at the pages. everywhere it is ICFP. what is ICFP? This does not seem to be a broad programming competition. Does it exclude imperative languages?
"It has nothing to do with the language."
Yeah! I hear that one can learn programming through interpretive toggle switches.
Did anyone use Malbolge as their language of choice? -pf
Gosh Wally, Haskell gives me the creeps.
As others have said, the problem is not languages. However, rather than offering vague suggestions about "motivation" or "picking a goal", I have some concrete advice: try taking a look at How to Design Programs. It's textbook by some of the best minds in CS education, and its goal is to teach you how to break down and structure problems, and create programs which solve those problems - not just to teach you a language. It'll teach you to think like a programmer. Which, quite frankly, sounds like what you need. Better yet, it's freely available online (so you can easily give it a testdrive), although I'd recommend picking up the print version if you decide you like what they have to say (for the sake of readability if nothing else).
Shameless plug: Those of you who like Erlang might also wish to give Q a try. http://q-lang.sf.net/ Pattern matching is at the heart of the interpreter, as the language is based on general term rewriting instead of the lambda calculus. Fairly pragmatic language as well (interpreted, dynamically typed). Comes with a system interface, XML/XSLT support, Apache module, OpenGL interface, modules for doing computer music and multimedia stuff etc. Q still has still to prove itself on something like the ICFP programming contest, but it's quite usable already (IMHO).
Yeah. Shame there hasn't been an entry that won both the ICFP and IOCCC. =)
The Scheme people hold a contest and no one solves the problem in Scheme?
Dr Scheme... LISP... ah paren city! Takes me back to being a CS undergrad.
There's no love for us, these days. Beer?
"Made up/misattributed quote that makes me look smart. I am on
This is precisely why I love MSFT's .NET idea. Define a standard way for languages to expose library functionality and a common call convention - then call that functionality indepentent of what language your code is written in, or what code the library is written in.
The .NET runtime-library is comparable to Java's, but also has the advantage of being able to seamlessly talk to all existing COM libraries.
C/C++ on the other hand are an utter joke. On Linux/Unix, at my firm we have 9-12 variations of G++, Intel C++, HP/UX C++ all trying to co-exist together, none of which are binary compatible. ALl code has to be compiled by the compiler you're using for your project, because nothing is binary compatible (C++ never defined an official name mangingling standard). .NET, this all goes away, and it was designed to do this from the start. JAVA was a good starting point, but it was never meant to be a universal inter-language platform. It was meant to be THE language, and thus isn't ultimate answer (sadly, Sun sued Microsoft when they tried to expose COM to Java, rather than trying to make the Interop layer a Sun/Java standard that they could own).
What you are failing to do is not learn how to program, or learn a language. What you are failing to do is understand how to think logically and then turn your thoughts into code. Every language is the same - pick one and learn how to write algorithms instead of just lines of code.
Here is a graphical simulation of a game that was played. The red guy is the robber, and the blue guys are the cops. There's a key available if you want a better idea of what's going on.
Ask me about repetitive DNA
For those interested in exploring Dylan, the Gwydion Dylan group have recently released 'Open Dylan'. This was once a commercial Dylan development environment and has been open sourced. The Gwydion Dylan maintaners have been working on making it available. They also have the Gwydion Dylan open source compiler which makes for two very strong open source Dylan implementations: http://www.gwydiondylan.org/
I don't want to sound all anti- functional programming, because I'm not, but I am wondering something about this contest. By allowing both functional and imperative languages, it seems they are in some sense comparing the fitness of not just the programmers but the programming languages. Are they doing this in purpose? Are they trying to back up the claim the functional programming languages are "more expressive" than imperative languages because functional languages tend to win the contest, and the contest is partly about the programs being able to stand up to change? The way they describe the contest, it does sound like that is part of the goal.
If so, then they are biasing the outcome a little bit. How? By making the subject matter of the contest an artificial intelligence problem. The reason is this: I've known a lot of AI people, and AI people tend to use functional programming languages. Thus, the people who are qualified to address the problem, and whose entries are most likely to win, are going to submit entries coded in functional languages.
In fact, I looked through previous years' contests, and in most cases the goal was very AI-ish. In one case, the goal was to implement a ray tracer driven by a language called GML, but it seems like in that case, half the work was parsing the language.
So basically, my question is whether the ICFP is picking tasks that are repesentative of real programming problems. They seemed to lean strongly towards AI problems.
Ward, don't you think Beaver is spending too much time on the computer?
putko wrote:
>
> There have been "C" programs that won previously, I believe.
I believe a C++ program won the last ICFP. However he did it using a cluster of powerful machines to brute-force the answer, which the (IMO defective) rules of the last ICFP contest allowed. If that contest had been more about programming skill and the suitability of a given language for the task instead of an opportunity to throw a lot of hardware at the problem, I wonder if that C++ guy would have still won.
2004:
Judges prize: OCaml
Lightning division winner: Java, C++, Perl, and m4
Main division: (1st) Haskell, (2nd) Haskell and C++
2003:
Judges prize: C++ and Dylan
Lightning division winner: OCaml
Main division: (1st) C++, (2nd) C++, (3rd) OCaml
2002:
Judges prize: Python
Main division: (1st) OCaml, (2nd) C
2001:
Judges prize: Erlang
Main division: (1st) Haskell, (2nd) Dylan, (3rd) OCaml/C (a tie between two teams)
2000:
Judges prize: SML
Main division: (1st) OCaml, (2nd) OCaml, (3rd) Haskell, (4th) Mercury
1999:
Judges prize: Haskell
Main division: (1st) OCaml, (2nd) Haskell
1998:
Judges prize: J
Main division: (1st) Cilk, (2nd) OCaml
-30-
When you ask people to actually write code, it pays to have a problem worth solving. I'm not convinced the given problem was worth solving [and I don't think it's my responsibility to determine whether it is or not - I think it's theirs to convince others].
I know this sounds jaded, but all in all, I think the only reason anyone won was because they were willing enough (or stupid enough) to bother doing the work. And this means that only people familiar with ICFP would be interested in the contest. So, in the end, it doesn't amount to a hill of beans.
Unfortunately, dotNET and COM don't exactly match the cross-platform ideal, and seeing how Mono was treated by MS at the latest MS Developer Conference, MS isn't concerned about increasing or maintaining dotNET's presence on other platforms.
6 18,39265898,00.htm
http://uk.builder.com/programming/windows/0,39026
So dotNET is GREAT for MS people.
Java may have been THE language, but with JRuby, Jython, Groovy, and others, it no longer is, and since Groovy is now a JSR, this practice has Sun's religious approval.
Hey, I'm just your average shit and piss factory.
I actually know the guy who won first prize. Weird how small a world it is.