Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Programming IT Technology

4th ICFP Programming Contest Announced 46

gdon writes: "So you are the best and fastest coder in town? Take a chance to exhibit your skills and maybe win a prize at the 4th ICFP programming contest at the International Conference on Functional Programming. The programming challenge task will be published on July 26, 2001 at 15:00 UTC and program submission ends 72 hours later." Check out the previous contests: 1998, 1999, or 2000.
This discussion has been archived. No new comments can be posted.

4th ICFP Programming Contest Announced

Comments Filter:
  • content when the participants can use any language? Why not just a "programming" contest?
  • by Anonymous Coward
    • gcc 2.96 is actually more standards compliant than any other version of gcc released at the time Red Hat made this decision (3.0 is even more compliant, but not as stable) yet). It may not be "standards compliant" as in "what most others are shipping", but 2.96 is almost fully ISO C99 and ISO C++ 98 compliant, unlike any previous version of gcc.
    • gcc 2.96 has more complete support for C++. Older versions of gcc could handle only a very limited subset of C++. Earlier versions of g++ often had problems with templates and other valid C++ constructs.
    • gcc 2.96 generates better, more optimized code.
    • gcc 2.96 supports all architectures Red Hat is currently supporting, including ia64. No other compiler can do this. Having to maintain different compilers for every different architecture is a development (find a bug, then fix it 4 times), QA and support nightmare.
    • The binary incompatibility issues are not as bad as some people and companies make you believe. First of all, they affect dynamically linked C++ code only. If you don't use C++, you aren't affected. If you use C++ and link statically, you aren't affected. If you don't mind depending on a current glibc, you might also want to link statically to c++ libraries while linking dynamically to glibc and other C libraries you're using: g++ -o test test.cc -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic (Thanks to Pavel Roskin [mailto] for pointing this out) Second, the same issues appear with every major release of gcc so far. gcc 2.7.x C++ is not binary compatible with gcc 2.8.x. gcc 2.8.x C++ is not binary compatible with egcs 1.0.x. egcs 1.0.x C++ is not binary compatible with egcs 1.1.x. egcs 1.1.x C++ is not binary compatible with gcc 2.95. gcc 2.95 C++ is not binary compatible with gcc 3.0. Besides, it can easily be circumvented. Either link statically, or simply distribute libstdc++ with your program and install it if necessary. Since it has a different soname, it can coexist with other libstdc++ versions without causing any problems. Red Hat Linux 7 also happens to be the first Linux distributions using the current version of glibc, 2.2.x. This update is not binary compatible with older distributions either (unless you update glibc - there's nothing that prevents you from updating libstdc++ at the same time), so complaining about gcc's new C++ ABI breaking binary compatibility is pointless. If you want to distribute something binary-only, link it statically and it will run everywhere. Someone has to be the first to take a step like this. If nobody dared to make a change because nobody else is doing it, we'd all still be using gcc 1.0, COBOL or ALGOL. No wait, all of those were new at some point...
    • Most of gcc 2.96's perceived "bugs" are actually broken code that older gccs accepted because they were not standards compliant - or, using an alternative term to express the same thing, buggy. A C or C++ compiler that doesn't speak the standardized C language is a bug, not a feature. In the initial version of gcc 2.96, there were a couple of other bugs. All known ones have been fixed in the version from updates - and the version that is in the current beta version of Red Hat Linux. The bugs in the initial version don't make the whole compiler broken, though. There has never been a 100% bug free compiler, or any other 100% bug free non-trivial program. The current version can be downloaded here [linux-easy.com].
    • gcc 3.0, the current "stable" release (released quite some time after Red Hat released gcc 2.96-RH), fixes some problems, but introduces many others - for example, gcc 3.0 can't compile KDE 2.2 beta 1 correctly. Until the first set of 3.0 updates is released, I still claim 2.96 is the best compiler yet.
    Trolling for GCC
  • What's the point?
  • The ICFP organizers didn't want to work out a foolproof definition of 'functional', so they just decided that any language counts as a functional language. Then if OCaml, Haskell or Scheme win the competition it actually means something, since they were competing against imperative languages too.
  • Oh gawd.

    No. Malbolge is nothing but marketing hype! Nothing! The Media has this tendency to latch on to any shiny object that comes along and hype it as the Next Big Thing until the suits begin to start asking for it ("to keep up with jonescorp") and academics (who are hopelessly out of touch with reality) start recommending it be added to curriculums so they can appear cutting-edge, and before long the shiny object in question has been implanted firmly as an established part of the programming field without ANYONE having stopped to ask "is this really suitible?". No, they just assume that if everyone else is saying it's good, then it MUST be good, not realizing they are taking part in a self-fufilling prophesy. This is EXACTLY what has happened with Malbolge, and were it not for a few highly slanted magazine articles when the language was in development, Malbolge would have immediately sunk into complete obscurity next to .NET, BCPL, the sun NC, and "andrej the giant has a posse" stickers-- WHERE IT BELONGS.

    Malborge should not even be considered in the current context. It isn't turing complete, and even worse it doesn't have call/cc! How dare you suggest using such a thing. Now get lost.

  • by mcc ( 14761 ) <amcclure@purdue.edu> on Thursday July 05, 2001 @12:57PM (#106116) Homepage
    Fools, fools, all fools! Just because you can write self-modifying code and then pretend the executed code is an anonymous subroutine does NOT mean that the language is functional, or that what you do in it is functional programming! BRAINFUCK IS NOT FUNCTIONAL PROGAMMING. NEITHER IS BEFUNGE. You can argue them as such, but the languages do not address the concepts of functional programming in a PURE enough manner for them to be agreeable to the truly unreasonable!

    Clearly, Unlambda [eleves.ens.fr] is the only reasonable representative for this competition from the field of performance art programming. I hope to see at least one submission to this ICFP thing written in Unlambda, and i am certain that if any Unlambda programs are submitted they will trounce any competition written in Brainfuck, Befunge, INTERCAL, or perl.

    Onwards, my brethren! Let us crush all who espouse the false paths of named variables and iterative memory usage! CHURCH NUMERALS ARE THE ONLY WAY TO FIND ENLIGHTENMENT! THE ONLY!

    Sorry. I've got something of a headache.

  • In fact, some C programs have done quite well in previous years -- they just haven't managed to win.

    What about Cilk Pousse [mit.edu]? It looks pretty much like C to me... And they won the ICFP contest '98.

  • And little did I know his monstrosety would grow...
  • gcc-2.96 is the default version that ships with Redhat 7.1. If you don't like the default, tough cookies.
  • http://www.topcoder.com
  • $1000 for 3 days works out to a salary of $67k (assuming 200 working days in the year).. that's no chicken feed
  • It's pretty hard to write such a complex project in 72 hours without having very well-organised, readable, and manageable-amongst-a-team code.

    Many Open Source projects get by on awful code because the developers can sit there for months trying to figure out how so-and-so works before being able to write their patch and submit it.
  • Well, this is an international competition; you americans may not be so hot on it, but we Kiwis are :)

    As a high school coder, I made $4/hr (when translated into US dollars). A salary of US$25,000 puts you in the "rich" sector of the population.
  • by zpengo ( 99887 ) on Thursday July 05, 2001 @11:40AM (#106124) Homepage
    ...an automated "Microsoft Watchdog" script comprised of 42 lines of Perl. Whenever Microsoft blinks, the code generates:
    • An ominous headline
    • A set of unverified trivia.
    • A conspiracy theory
    • A mention of Linux
    • A mention of Microsoft's feelings toward Open Source
    • A sarcastic closing remark.
    The script even begins populating the discussion with lengthy posts from the same account both extolling the virtues of and deriding Microsoft.
  • You can submit statically linked executables, so you don't need to worry about what compilers they have installed (if you really want to use C++ for something like this!).
  • Why it is so useful to learn one. You can use the concepts in other languages with profit, e.g. write a smart, recursive function and avoid a bunch of assignments. I always get a smile seeing *tips for avoiding recursion*, *dangerous recursive functions* and such like. With power comes responsibility.
  • by rodentia ( 102779 ) on Thursday July 05, 2001 @12:07PM (#106127)
    Here [nott.ac.uk] is a useful description.
  • Don't forget the automated OpenSpel spell checker and myDegrammarizer (patent pending) to make sure a good number of the posts have misspellings and poor grammar.

    I think those two products were already combined into a product called "GrammerSpeeler" because grammar has got to be the most misspelled word on /.

    As far as the patent, it was issued long ago as "a micro-computer program to enable the user to alter electronic documents."

    dman123 forever!

  • Did you read the the tasks from the last three years? All of them had a speed element to them.
  • Speed of completion is not important.
    In the real world, it is.
    Moreover, contests like these are disastrously counter-productive in the coder's quest to have his profession recognized as a legitimate field of engineering.
    Engineering is about doing the most with the smallest amount of resources. Time is just another resource.
    Do Mechanical Engineers have contests to see who can design a bridge the fastest? NO! Because if that bridge falls down, it people die. Likewise, now that computers are running life-support systems and the like, there is no room for error.
    I can tell you that the first contest entries to be eliminated will be the ones that crash or give the wrong result on any of the input sets. There is no room for error in this contest either. And that's one of the reasons why functional languages usually do so well. Most C programmers cannot write a bug-free program in 3 days (except maybe for hello world). Some Caml programmers can.
  • I suggest you have a look at Malbolge. Just for the hell of it.
  • This contest is performed over the internet. Read the page. The prize is free registration for the conference.
  • by brucehoult ( 148138 ) on Thursday July 05, 2001 @01:22PM (#106134)
    This contest is actually a great counterpoint to things like the Great Programming Language Shootout which was discussed on /. a couple of days ago.

    Some people there were complaining that the benchmarks were trivial and artificial and unrealistic, and lamented that it was impossible to get people to write real programs for a benchmark.

    I think that's exactly what the ICFP contest is.

    They use quite real tasks. Last year the task was to write a ray tracer with a build in programming language for building the scene models and implementing procedural textures. In 72 hours!

    The resulting programs were generally several thousand lines of code, and the really interesting thing is that at least for the top entries (and I think for our Dylan entry as well :-), it is actually very interesting and high quality code.

    The entries are not judged on the aesthetics of the code itself, but perhaps they should be. Or, perhaps, keping the code clean is the key to allowing a team of people to all work on the same code for 72 hours and complete a quite significant task in that time.

  • by brucehoult ( 148138 ) on Thursday July 05, 2001 @03:06PM (#106135)
    content when the participants can use any language? Why not just a "programming" contest?

    Because it is run in conjunction with the International Conference on Functional Programming.

    Yes, these are people who believe that functional languages are better, and they fully expect functional languages to win.

    But from what I've seen from the past contests, the contest tasks are not inherently biased towards functional languages, and good programmers could well win using C or C++ etc. Or, at least, they could if they could manage to write fast and bug-free code quickly enough in those languages. In fact, some C programs have done quite well in previous years -- they just haven't managed to win.

    Maybe that's only because the best C/C++ programmers haven't entered the contest in the past. Or maybe functional languages really are superior.

    There's only one way to find out. Gentlemen, start your compilers!

  • by brucehoult ( 148138 ) on Thursday July 05, 2001 @01:10PM (#106136)
    Those lam0rs have gcc-2.96 installed. Do they honestly expect me to install gcc-2.96 to test my program?

    You don't have to use their gcc. They actually encourage you to submit a statically-linked binary, rather than build on their machine.

    I encourage people to enter this contest. It's fun! Last year I put together a small team using Dylan and we had a ball even if we didn't win.

    After being /.ed last year there were around 800 teams registered, but only about 5% of them actually submitted an entry. I think that's a pretty poor showing from the /. crowd.

    • Speed of completion is not important

    I think most people would have to disagree there. What we would probably agree on is that speed of completion often takes precedence over correctness, and that is unfortunate. Speed of completion is very important in all fields of engineering.

    • Do Mechanical Engineers have contests to see who can design a bridge the fastest? NO!

    Sure they do. Check out the ASCE/AISC bridge building competition. Here is a pdf of the rules [alaska.edu]

    Still, I would have to agree that there is a problem with the field of programming being recognized as a legitimate field. Who knows, perhaps the downturn will further this advance.
  • If you can't admire people that strive for excellence in a single field you've got some serious issues.

    It's those unbalanced individuals that are shoving the world from present to future. Keep in mind that you can admire without emulating. If a 24 hour continuous hack isn't your thing, don't do it. Such things appeal to a particular sort of person. Regardless of their weight or sex life, I like these sorts of people because they can concentrate and get things done. Simple things, but worth a little praise.
  • by dstone ( 191334 ) on Thursday July 05, 2001 @01:01PM (#106140) Homepage
    Speed of completion is not important. ... now that computers are running life-support systems and the like, there is no room for error.

    You're fired. ;-) Seriously, speed of completion is always one of the three possible priorities of any software project (or hardware or general engineering project)... 1) time, 2) features, 3) quality. Pick two of the three that are important in any given project or task and then you've got something you can "manage" in the true sense of the word. You're right that life-support systems should not care much about the "time" aspect of development. But time is more critical than "features" in some cases and it's more important than "quality" in some cases.

    Every project's requirements (part of the discipline of engineering is recognizing this) will dictate priorities. A couple of examples in these terms might be...

    Creating life-support software? Great, make sure it has all the necessary features and it's of "perfect" quality. If it ships late, that's probably fine.

    Creating a baseball video game? Great, make sure it's done in time for opening day of the new season to maximize fan demand and competitive advantage (you're up against 6 other similar products that will ship near the same date), and if it's released for a console (ie, a million units will ship on CD-ROM or catridge with no update ability), make sure it's also of near-perfect quality. Leave out features if necessary to get it out by the hard deadline date.

    Open-source examples are left as an exercise to the reader... But remember that if your product's main target is initially developers, bug count isn't a show-stopper, so publishing a bug database and acknowledging that quality will have to catch up later can be quite acceptable.
  • Why in the world would you want to idolize anyone, regardless of how much code they write or how much they weigh? You're missing the point.
  • by Rosco P. Coltrane ( 209368 ) on Thursday July 05, 2001 @11:41AM (#106142)
    I bet the winning program will be coded in befunge [catseye.mb.ca]
  • I don't think that's a useful description.

    The mark of a declarative language (the set of which contains the pure subsets of functional languages) is that it respects referential transparency. That is, code of the form

    -- use x as a name for the value of
    -- expression e when evaluating M
    let x = e in M

    has the same meaning as

    -- substitute expression e for free
    -- occurrences of x in expression M

    Imperative languages are not referentially transparent because they depend upon destructive assignment. This means the substitution property doesn't hold because the value associated with a variable name changes as the program evolves.

  • Another oppurtunity for Ocaml to SHINE!
  • gcc 2.96 has more complete support for C++. Older versions of gcc could handle only a very limited subset of C++. Earlier versions of g++ often had problems with templates and other valid C++ constructs.
    Look, I'm a heavy C++ user. I use templates and OOP a lot. Almost all ANSI C++ features that I needed are in gcc-2.95.2. The only exception is string streams. So what if gcc-2.96 implemented it? It segfaulted while compiling something older versions compiled successfully!!! I submitted a bug report and hopefully it was fixed.

    Choosing a version of gcc in their distro is up to Redhat, but WHY, WHY would you use a development version of gcc in a frigging programming contest?


    P.S. BTW, doesn't anyone else feel that they are cheap? $1000 isn't even worth the time, let alone the honor.

  • Beware, sometimes these contests boost up a programmers ego way beyond what it should be! Do we want the same thing to happen as what is done with sports currently? Do we want to idolize some guy who can code 500 lines/hr, but is overweight and has no sex life? Sorry for the generalization, but I find it hard to admire people who strive for extremes in any area rather than endeavor to acheive a balanced life.
    Another point of view is that it's better to be GOD at one thing than mediocre at several. I feel that speed programming is a great thing that can give you some rush. I just don't like their setup. A piece of advice to organizers:

    Have less than 8 hour contests. I'm not losing sleep over something like this.

    Fix your compiler version

    Find sponsors to offer people prizes that are less insulting in their value


  • $1000 for 3 days works out to a salary of $67k (assuming 200 working days in the year).. that's no chicken feed

    How about a team of high-class programmers (who understand math, physics and algorithms) working days and nights for 72 hours? I don't think so. Besides, this is a prize. Not everyone will get it. $67K a year is good high school coder makes working regular hours.


  • by BigOneBitey ( 300676 ) on Thursday July 05, 2001 @11:51AM (#106148)

    Check out topcoder [topcoder.com]. They host frequent online Java programming competitions.

    Someone has won $100,000 through their collegiate tournament.

  • The script even begins populating the discussion with lengthy posts from the same account both extolling the virtues of and deriding Microsoft Don't forget the automated OpenSpel spell checker and myDegrammarizer (patent pending) to make sure a good number of the posts have misspellings and poor grammar.
  • Well I suspect that a team using a ML dialect will win because they will have so many teams entering, but I'll be rooting for the Dylan entry.
  • Speed of completion is almost always important in real life... because time is money. Programs written in functional programming languages (using the term broadly to include Lisp, Dylan too) not only can be written faster, they are more likely to have the "stability, elegance, and beauty" qualities which you mention.
  • Because the entries written in functional programming languages always win. ;-)
  • A (modifiable) page to attempt to set up a Python team is:

    http://www.twistedmatrix.com/users/jh.twistd/pytho n/moin.cgi/IcfpPythonTeam [twistedmatrix.com]

  • If so, count me out! ;-)
    • Imagination is more important than knowledge.
  • by Violet Null ( 452694 ) on Thursday July 05, 2001 @11:44AM (#106155)
    A prize of unlimited bragging rights. Finally, something _worthy_!

    Of course, first prize also includes:

    Peer recognition: Finally, the contest judges agree to state at least once during the presentation of the awards that the winning team's programming language is "the programming tool of choice for discriminating hackers."

    Which I daresay will cause a fight to break out, much like this brawl [segfault.org].
  • by Violet Null ( 452694 ) on Thursday July 05, 2001 @11:47AM (#106156)
    For the winning program to have been written in Brainfuck [catseye.mb.ca].

Things are not as simple as they seems at first. - Edward Thorp