Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

ICFP 2005 Programming Contest Results 111

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."
This discussion has been archived. No new comments can be posted.

ICFP 2005 Programming Contest Results

Comments Filter:
  • My Java Bubble (Score:4, Insightful)

    by fragmentate ( 908035 ) <jdspilled.gmail@com> on Tuesday September 27, 2005 @02:56PM (#13661023) Journal
    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.
    • by irritating environme ( 529534 ) on Tuesday September 27, 2005 @03:00PM (#13661058)
      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!
      • Java's API is horrible for GUIs. Learn a good general-purpose, crossplatform toolkit with bindings to multiple languages, such as Qt or to a lesser extent Wx.
      • 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+
        • .NET is fine if you're running on Windows. If you're cross platform either Java (if your app isn't performance critical) or C/C++ (if it is) are far better choices.

          I have a large project that runs from the same source on Windows,Linux,Solaris,AIX,HPUX,OSX,Tru64 and even iSeries. Well written C/C++ is *very* portable.

          • I work in a similar environment. Gigantic libraries written in C++ that take hours to build and have all sorts of peculurarities on the various implementations of C++ out there. When you have many developers all using the same code base who REFUSE to use the same compilers, you begin to see where C++ can be a pain. And BTW, there is MONO on UNIX as a free cross platform implementation of .NET. I don't think there is anything about the .NET Common Language Interface that ties you to Windows other than th
        • 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.

          http://uk.builder.com/programming/windows/0,39026 6 18,39265898,00.htm [builder.com]

          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 app
      • > 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.

        For servers yes, but for clients/GUI apps?
        I've yet to see Java apps which can start fast and feel fast, which is necessary for (good) clients/GUI apps.

        Even the administration tools of Solaris9 which were rewritten in Java by Sun suck (very slow), so if *Sun* is not able to make fast Java GUI app..
        • Eclipse is written on Java - and works not very fast, but Fast enough. But is doesn't use Swing or AWT.
          • "Fast enough" with how many GB of memory?

            AFAIK Eclipse has the reputation to be a memory hog, does-it start in less than 2s?
            • I run Eclipse OK on win ME with 128 MB. (Some time ago) I look now - it takes about the same memory as FireFox - about 100 MB - and starts in about the same time, may be little slower, I would say about 4 seconds (Eclipse 3.1) - it also very rarely hangs, and you can do everything inside it (more than in Visual Studio), so you have no reason to close it often..
        • You know, that's a very interesting thing for me. How in god's name did Sun manage to make Swing apps so bloody slow? Compare something like NetBeans and OpenDylan. The former is written in Java, a relatively simple, statically-typed language with a large team working on the compiler. The latter is written in Dylan, a very powerful, dynamically typed language, with a small development team working on the compiler. Yet, the Open Dylan IDE feels exactly like a native MFC app, while NetBeans is glacial. How di
    • by sammy baby ( 14909 ) on Tuesday September 27, 2005 @03:01PM (#13661068) Journal
      On the other hand, my mind is like a FIFO -- in order to learn another language, I have to forget one.

      If the one you forget is English, you'll know you've hit burn out.
      • In one of my favorite webcomics [suburbanjungle.com], one of the characters is a programmer who talks only in code, because he's forgotten English. (Or at least, he did until quite recently. Whether he'll stay cured is unknown.)
      • not quite.... "Profanity is the one language all programmers know best." If you stub your toe and are at a loss for words, then you've hit burn out!

    • Re:My Java Bubble (Score:5, Interesting)

      by TheRaven64 ( 641858 ) on Tuesday September 27, 2005 @03:21PM (#13661270) Journal
      I'm not a huge Haskell advocate - it was my first introduction to functional programming, and it made me hate FP for a few years. More recently I've started using Erlang, and it's a joy to use - a functional language designed by pragmatists rather than theoreticians. It also has the best syntax I have yet seen for handling distributed programming - process creation (local and remote) and message passing are built into the language.

      As someone who liked prolog, one of my favourite parts is the pattern matching. This can be done on any data type, including binaries (bit fields), so you can have a function for parsing a datagram, and a different definition for each packet-header - and all you need to do is define the part that is constant in the function header then the remainder of the processing in the body, and write a different body for each packet type.

      • Try Q! (Score:2, Interesting)

        by agg-1 ( 916902 )
        Shameless plug: Those of you who like Erlang might also wish to give Q a try. http://q-lang.sf.net/ [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 progra
    • I would never have thought that Haskeel and Dylan would have even placed

      A good language does not a good programmer make.
      A bad language does not a bad programmer make.

      Not that the language is irrelevant, mind you, but with this few entrants, I wouldn't go looking for correlations.
      • >I would never have thought that Haskeel and Dylan would have even placed

        Not that the language is irrelevant, mind you, but with this few entrants, I wouldn't go looking for correlations.

        161 entries isn't small.

        And bear in mind that this isn't the first time Dylan has done well. In addition this Judges' Prize *and* 2nd place this year, Dylan programs got the Judges' Prize in 2003 and 2nd place in 2001 (losing to Haskell that time as well).

        • And how many total programmers are using Dylan in this contest? :)

          Just because there's a couple good Dylan programmers out there participating in some contests doesn't mean that programming in Dylan somehow works better. Even if it were a statistically significant number of entries (which it's not), the effect does not prove causation. Just like Baptists don't *actually* cause tornadoes despite having a strong correlation between the percentage of the population that is Baptists and the frequency of torna
          • Re:My Java Bubble (Score:5, Interesting)

            by brucehoult ( 148138 ) on Tuesday September 27, 2005 @06:22PM (#13662837)
            And how many total programmers are using Dylan in this contest? :)

            Not many. Just us. Unfortunately most people have not yet heard of the Dylan programming language.

            Otherwise, you'll have severe selection bias - especially in contests with such a small number of Dylan users, but even if there were more. Really, contests like this are pretty useless for language evaluation - only individual-evaluation

            I guess I'll have to take that as a compliment :-)

            I agree that contests such as this can't prove that some language is superior to others since, yes, it is possible (though very unlikely!!) that I and my friends are all super-geniuses who could do equally well using Brainfuck or INTERCAL.

            What it does prove though is that there is nothing seriously wrong with Dylan that would prevent you from using it to write a complex program very quickly, in a situation requiring high performance and absolute correctness. I don't know if you read the rules, but if a program ever crashed, or took more than 5 seconds to respond to the server, or responded with an illegal message then it was instantly out of the entire contest. That's what happened to the vast majority of C and C++ and Java programs, and that is what always happens to them.

            and even that, only after a significant number of contests have been completed by the participants.

            How many is significant? A Dylan entry has won prizes in each of 2001, 2003 and now 2005, despite there being only one Dylan entry each year up against hundreds of entries in other languages.

            You can choose to think that my friends and I are geniuses, or you can think that maybem, just maybe, there's something worth investigating in this Dylan thing.
            • Re:My Java Bubble (Score:3, Insightful)

              by Rei ( 128717 )
              possible that I and my friends

              *Exactly*

              You just perfectly demonstrated selection bias. From a random sampling of the world's programmers, what are the odds that both you *and* your friends would be selected?

              despite there being only one Dylan entry each year

              *Exactly* - you're doing a good job summing up my points in your post. With how many total Dylan programmers? You and how many friends? This points to the much more likely conclusion, that you and your friends are good programmers when it comes to th
            • Sorry, but you are not geniuses, just discriminating hackers. Oops, I think that's the
              Haskell guys. You are just an extremely cool bunch of re-hackers.
            • Of course since the first line of the rules includes the statement functional programming has taken over the world and so humans live in an almost unimaginable luxury, it's hardly suprising to find that the competition problem and rules do indeed suit a functional programming solution, and lo-and-behold the functional programming languages do rather well...
    • Re:My Java Bubble (Score:2, Insightful)

      by Haeleth ( 414428 )
      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.


      Given the context in which you're deciding to look outside your box, don't you think Haskell or Dylan might be more appropriate languages to look into? :P
  • Bobby (Score:5, Funny)

    by DysenteryInTheRanks ( 902824 ) on Tuesday September 27, 2005 @03:03PM (#13661080) Homepage
    I have only one question for developers programming in Dylan: How does it feeeeeeeeel?
    • Re:Bobby (Score:3, Funny)

      by Soko ( 17987 )
      To be on your pwn... With no direction $HOME...

      Soko
      • I'll try bash.
        $ like a rolling stone
        -bash: like: command not found


        Hmmm, that don't work. How about gcc.
        gcc t.c
        t.c:1: error: syntax error before 'a'


        Oh, it must be c++
        g++ t.c
        t.c:1: error: 'like' does not name a type


        Um, python?
        python t.py
        File "t.py", line 1
        like a rolling stone
        ^
        SyntaxError: invalid syntax


        No good. What else can I try? Wait, PERL!

        perl t.pl
        I love that song, but I can't locate object method
    • Weird thing is, I only 5 minutes ago watched the Scorcese documentry on Mr Zimmerman.

      2 hours ago I would not of even understood the joke.

      Funny old world
  • Programming (Score:2, Interesting)

    by bulio ( 884542 )
    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)
    • It has nothing to do with the language.
    • by bulio ( 884542 )
      oh, I know, Its just that I wish programming in general could be a bit simpler to learn (I've read books, tutorials, the whole thing).
      • Re:Programming (Score:3, Informative)

        by Rei ( 128717 )
        The language isn't the important thing, although you should of course start with an easy language (like BASIC - **not** Visual Basic, or anything like that, mind you. Also, if you do use BASIC, try to use a version of it that has true subroutine calls). Don't worry about the capabilities or performance of the language - your only concern at this point should be how *simple* it is for a beginner. You have to learn the basics of programming first; don't worry about a do-it-all language.

        Second, have a grand
      • 1. Get hold of a copy of Excel.
        2. Hit record macro to generate VB
        3. Cut and paste recorded macro.
        4. ???
        5. Profit!
    • Motivation (Score:2, Insightful)

      by Acius ( 828840 )
      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.
      • In my opinion, the easiest and best way to learn to code well isn't by starting a grand project that you'll probably go a quarter-way-though, and then stop, dejected at the lack of progress. No, the best way is by tinkering with projects that other people have already worked on, figuring out how they work, and adding your own additions. I recommend you look around at some of the FOSS games on the net, and browse their sources for a bit.
        • I disagree; in fact, I think the opposite is true. Working on other's people code I find to be one of the more difficult things to do as a programmer. It's hard to grok the subtleties that one person may put into his or her code, and a beginner may feel discouraged if the additions he or she adds never work, or the beginner simply never figures out what's going on. Unfortunately, documentation isn't one of the strengths of FOSS.

          Working on your own projects from scratch is a great way to learn how to code
      • Yeah, so I should just create a goal, and attempt to accomplish it? I have tried that once before (in ruby), but it ended up with everyone telling me to learn the language first :-/ I'll try it again though. Perhaps in Python, or something that doesn't need to be compiled.
        • Yeah, well the learning the language bit is still important ;-). If you can find someone who's patient enough to point you in the right direction when you ask the really dumb questions, that helps. The thing is that programming languages aren't really very complicated. There are just a few basic ideas (variables, function calls, loops, conditional execution, compound data structures, pointers/references, expressions ... did I miss anything?), and the rest is just having a good reference for the standard lib
      • by gb506 ( 738638 )
        I find it's more about motivation than picking a language or how hard it is.

        By the looks of our IT dept, exercise and laundry must require a lot more motivation than leaning a programming language... Nyuk, nyuk, nyuk.

    • Hmm...

      in that case u might wanna try starting with C++.
      Just get a good book. I use C++ the complete reference by Herbert Schildt.

      When I was learning to program, I would do the examples that the book showed me, but I would always try to improve and make my own programs based on the knowledge I have in the language. In doing so, u gain valuable exp, which helps u become a better programmer.
    • by Radres ( 776901 ) on Tuesday September 27, 2005 @03:20PM (#13661263)
      Don't bother learning; just send your desired programming task overseas.
    • It's tough to learn a language without a goal. Pick a project (even if it's already been done) pick a language and make your own version.
      Learn PHP by making a photo gallery. Make a java version of your favourite board game. Create a perl spider that goes out and downloads pictures from websites that contain the words Natalie Portman and Hot Grits.
    • Basic and Pascal are easy to learn in because that's what they were designed for. Yes, they are quite limited, but they're what I learned and now I'm smrkt enough to... post... on... Slashdot............... Erm. Hrm.

      Hey, there's this language out there DESIGNED to be easy for people to learn. Erm.... Think it was Squeak. [squeak.org] Try finding out something about that....

      And I'd say Java was easier to learn than Basic or Pascal. Just download Eclipse, unzip it, and start..... erm. Welllll..... No.
      • I know that you are trying to be helpful, but your post reads as though it were written by a man in the depths of an ether binge. "Erm. Hrm. Well... No...". Why did you bother writing that out, changing your mind, and then not erasing and correcting what you wrote originally instead of just hitting "Submit"?
      • While your post barely passed as coherent, I do agree with your suggestion to try Squeak (or any other Smalltalk dialect). Smalltalk is a really nice language to use, and it's only a small jump from Smalltalk to Objective-C (you lose blocks and garbage collection, and gain functions and pointers). Objective-C is not an ideal first language, but it is one of the nicer languages available for real work.
    • Assuming you've learned the basics: variables, printing, and logic then you are most likely stuck on either program organization (in which case you might want to try to read a book on object oriented programming methodology), or on the complexities of learning an external interface for a specific task (ie learning how to program graphics, given the example you gave in another post of wanting to program quake), in which case, you'd want to read some book on that specific subject.

      Graphics in particular is one
    • 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 [htdp.org]. 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 n
    • by ari_j ( 90255 )
      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.
      • This is, to state it plainly, totally bogus. Sure, being able to think in algorithms is important. However, it is far from being everything. Different languages allow you to express algorithms more and less directly, with more and less chances of error.

        In my experience, programmers (including myself) often to go through three phases. First, for the first few years, they think that languages are supremely important, and know quite few languages. Then, they learn to think in algorithms, and for the nex

        • I think that getting to the third phase you listed as soon as possible is the key. But really, how much good does it do you to know the syntax of a language when you don't know to make that syntax accomplish anything? That's why people learn a language and drop it like this guy said he had done a few times - they never accomplish anything with it.
          • I agree. In end, we should do both the craft and the science. And the process around them, interacting with the users and the other people. Combining all of this is probably going to remain tricky (especially so when one is not in control of the process...)

            Eivind.

            • I think of it along these lines...you can know all the words and all the rules of grammar in the English language, but it takes something on top of that to be a good poet.
    • then I get lost when it comes to actually writing anyhting at all.
      Then don't try .. yet. Instead of writing code, read someone else's code and then modify it. Modifying existing code is an excellent way for newbies to learn to program.
      • Instead of writing code, read someone else's code and then modify it. Modifying existing code is an excellent way for newbies to learn to program.

        Provided it is simple enough to understand of course. :-) I agree that modifying existing code can help understand a language, however I've found that tutorials on how to do specific things, like loops, arrays etc are more useful in the initial stages of learning a language. Once you get a feel for how to do the basic structures in a language then modifying an exi
    • If you couldn't hack Ruby, then maybe programming just isn't for you. I say that because it's the most effortless and easy to learn programming language I've ever encountered.

      For the record, I've written in BASIC, C, Pascal, Modula-2, Lisp, Scheme, ML, FORTRAN, 6502 Z80 and 68000 assembler, Smalltalk, C++, Objective-C, Perl, AppleScript, Hypertalk, and Java (in no particular order, and probably forgetting some). They're all a much bigger PITA than Ruby.

      I don't think there's any shame attached to simply not
  • It keeps referring to me as "Mrs. Cleaver."
  • 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.
  • Did anyone use Malbolge as their language of choice? -pf
  • by theskipper ( 461997 ) on Tuesday September 27, 2005 @04:22PM (#13661937)
    Gosh Wally, Haskell gives me the creeps.
  • 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.

    (begin (display "l33t 5ch3m3 h4Xor!") (newline))
    • Re:No SCHEME? (Score:5, Informative)

      by The Wookie ( 31006 ) on Tuesday September 27, 2005 @08:27PM (#13663496)
      They don't have complete per-language statistics. I grabbed all the team descriptions and massaged the data a bit to get a complete list. I merged Moscow ML, SML and SML/NJ. There was one entry that listed Scheme as the language. Ironically, the Dylan Hackers appear to be the only team to have used Dylan. I am one of the 21 ocaml people (O Caml, My Caml). My robber screwed up while bribing a cop in the twisted round and didn't get to the playoffs. These statistics are just for the main implementation language:
      34 c++
      21 ocaml
      20 python
      18 java
      16 haskell
      10 perl
      10 c
      6 lisp
      5 sml
      4 c#
      3 ruby
      2 freepascal
      1 visual basic .net
      1 swi-prolog
      1 shellskript
      1 setl
      1 scheme
      1 refal+
      1 nemerle
      1 modula-3
      1 mercury
      1 javascript
      1 erlang
      1 eiffel
      1 dylan
      • by Anonymous Coward
        Ironically, the Dylan Hackers appear to be the only team to have used Dylan.

        Now, it'd be really ironic if the Dylan Hackers were the only term not to use Dylan.
    • Professors are doing an enormous disservice to the Lisp community by teaching Scheme in undergrad CS. It just creates legions of CS people who instinctively associate Lisp with all the pain of learning the fundamentals of computer science. Not only that, but they expose them to the language at a time when they haven't done enough real programming to be able to form a decent opinion of what is useful and what is not useful. I don't find it at all surprising that most Lisp programmers you meet came to it afte
  • by gringer ( 252588 ) on Tuesday September 27, 2005 @05:40PM (#13662585)
    Here [uchicago.edu] 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 [plt-scheme.org] available if you want a better idea of what's going on.
  • 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/ [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 conte

    • Real programming problems and AI problems are not mutually exclusive (I know you didn't necessarily mean that), and if most AI people favor functional languages, my guess is that it is for a good reason. A couple of years ago, when I was taking a (very basic) AI course, one of the assignments was required to be written in Scheme and I remember it was particularly useful for parsing lists and trees.

      So, I may be wrong, but I think functional languages are clearly better suited for solving some of the proble
    • Look at it in another way. Apparently from the name of the contest they focus mainly on functional programming languages. It is therefore natural that they would be inclined to pick AI-ish problems that are more suitable for functional programming. I believe it wasn't a (conscious) intention that they allowed other languages in the contest for the purpose of tilting the playing ground to their (functional programming) favor. If you think about it, ICFP problems might be fun even for those who prefer an impe
    • This year's an exception in that a "true" functional programming language won the competition. Last year's was C++, and if I'm not wrong, so was 2003's.
      • 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
  • I actually know the guy who won first prize. Weird how small a world it is.

A committee takes root and grows, it flowers, wilts and dies, scattering the seed from which other committees will bloom. -- Parkinson

Working...