Slashdot Mirror


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."

111 comments

  1. My Java Bubble by fragmentate · · Score: 4, Insightful

    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.

    1. Re:My Java Bubble by sammy+baby · · Score: 4, Funny
      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.
    2. Re:My Java Bubble by adavies42 · · Score: 1

      In one of my favorite webcomics, 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.)

      --
      Media that can be recorded and distributed can be recorded and distributed.
      -kfg
    3. Re:My Java Bubble by TheRaven64 · · Score: 4, Interesting
      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.

      --
      I am TheRaven on Soylent News
    4. Re:My Java Bubble by Rei · · Score: 1

      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.

      --
      ... in Siberia, where Putin killed a fish with a speargun. He later claimed it was killed by Ukrainian separatists.
    5. Re:My Java Bubble by studboy · · Score: 1

      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!

    6. Re:My Java Bubble by brucehoult · · Score: 1

      >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).
    7. Re:My Java Bubble by Haeleth · · Score: 2, Insightful

      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

    8. Re:My Java Bubble by Rei · · Score: 1

      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 tornadoes in the US. ;)

      These "lets determine what language is best by looking at contest results!" discussions completely miss the fact that such a contest draws anything *but* a random sampling from the general programming population. There's a selection bias, and far too few entries for a little-used language like Dylan. If you want to test how good of a language Dylan is, you could:

        * Take a large group of programming-newbies who have never used Dylan or Language B, select from them at random to assign them to one of the two languages, and then give them multiple, highly varied tasks. Judge them in completion speed, code maintainability, and performance at the given task.

        * Same, except use programming experts who have never used Dylan or Language B instead of programming newbies.

        * Same as either of the above tests, but have the programmers use Dylan and Language B for a long period of time to become experienced with it before giving them their challenges.

      All of these possibilities could be done in a college setting, if the school saw it fit to evaluate how well their students learned in Dylan vs. some other language, and randomly assigned students to either the course line that used Dylan or the course line that used Language B. The only selection bias would be on who chose to attend that college.

      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, and even that, only after a significant number of contests have been completed by the participants.

      --
      ... in Siberia, where Putin killed a fish with a speargun. He later claimed it was killed by Ukrainian separatists.
    9. Re:My Java Bubble by brucehoult · · Score: 4, Interesting

      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.

    10. Re:My Java Bubble by Rei · · Score: 2, Insightful

      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 these kinds of challenges.

      Please understand the difference between "me and a couple friends" vs. "a sizable group of people with no correlation to each other, or to their programming skill levels." If you want commentary on the language, you need to take programmer skill out of the picture. You need a sizable sampling of Dylan entries, and you need to have the selection of Dylan not based on anything that would correlate to how good of a programmer the person is, or how the challenges correlate to what they've worked in (for example, if mechanical engineers who hate computers tend to program in Language A, and CS PhD-holders who've worked in industry for a decade tend to program in Language B, that would be a huge disadvantage to Language A; on the other hand, if the challenge was "write a piece of software that models fluid flows", Language A will suddenly get a ratings boost that has nothing to do with how good it is).

      --
      ... in Siberia, where Putin killed a fish with a speargun. He later claimed it was killed by Ukrainian separatists.
    11. Re:My Java Bubble by alegrepublic · · Score: 1

      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.

    12. Re:My Java Bubble by williamhb · · Score: 1

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

    13. Re:My Java Bubble by Anonymous Coward · · Score: 0

      Or running box dribble. Frog blast the vent core!

    14. Re:My Java Bubble by Anonymous Coward · · Score: 0

      The problem suits FP, but in what way does it FAVOR FP ?
      To me it seems, none.
      Can't we reverse the question and ask ourselves, in what way does FP help solving this problem ?

  2. API piggybacking... by irritating+environme · · Score: 4, Insightful

    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.
    1. Re:API piggybacking... by m50d · · Score: 1

      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.

      --
      I am trolling
    2. Re:API piggybacking... by Anonymous Coward · · Score: 0

      irritating environme wrote:
      >
      > 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


      Well, if you're talking about learning yet another imperative language (ie. c++, java, python, perl, etc...) then yes, learning the language itself shouldn't be a problem because the differences are (relatively speaking) mostly in syntax.

      However, try learning a different paradigm and it might be more of a challenge. Going from procedural to OO is a well known hurdle. However, going from imperative to functional is often even harder.

    3. Re:API piggybacking... by renoX · · Score: 1

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

    4. Re:API piggybacking... by mishagam · · Score: 1

      Eclipse is written on Java - and works not very fast, but Fast enough. But is doesn't use Swing or AWT.

    5. Re:API piggybacking... by renoX · · Score: 1

      "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?

    6. Re:API piggybacking... by mishagam · · Score: 1

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

    7. Re:API piggybacking... by be-fan · · Score: 1

      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 did Sun pull that off?

      --
      A deep unwavering belief is a sure sign you're missing something...
  3. Bobby by DysenteryInTheRanks · · Score: 5, Funny

    I have only one question for developers programming in Dylan: How does it feeeeeeeeel?

    1. Re:Bobby by Soko · · Score: 2, Funny

      To be on your pwn... With no direction $HOME...

      Soko

      --
      "Depression is merely anger without enthusiasm." - Anonymous
    2. Re:Bobby by Profane+MuthaFucka · · Score: 2, Funny

      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 "rolling" via package "stone" (perhaps you forgot to load "stone"?) at t.pl line 1.

      At least someone remembers Dylan.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    3. Re:Bobby by Matthaeus · · Score: 2, Interesting

      What version of perl are you using to get that error?

      And how many of the rest of you actually tried it out?

    4. Re:Bobby by gnalre · · Score: 1

      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

      --
      Choose your allies carefully, it is highly unlikely you will be held accountable for the actions of your enemies
    5. Re:Bobby by oblivion95 · · Score: 1

      I tried it. Didn't get any funny message. Switched back to Python.

    6. Re:Bobby by Anonymous Coward · · Score: 0
      I did but was dissaponted

      $ echo "like a rolling stone" | perl
      Can't locate object method "rolling" via package "stone" (perhaps you forgot to load "stone"?) at - line 1.
      $perl -v
      This is perl, v5.8.4 built for i486-linux

      maybe I will see the error once I get stoned, which i will do presently

  4. Programming by bulio · · Score: 2, Interesting

    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)

    1. Re:Programming by Anonymous Coward · · Score: 0

      Try TCL http://tcl.tk/"

    2. Re:Programming by MyLongNickName · · Score: 1

      It has nothing to do with the language.

      --
      See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
    3. Re:Programming by bulio · · Score: 2, Funny

      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).

    4. Re:Programming by Anonymous Coward · · Score: 0

      Variables? Haskell?

      New Haskell Bulio Edition. Now with variables, loops, and more!

    5. Re:Programming by Rac3r5 · · Score: 1

      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.

    6. Re:Programming by Radres · · Score: 4, Funny

      Don't bother learning; just send your desired programming task overseas.

    7. Re:Programming by j-cloth · · Score: 1

      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.

    8. Re:Programming by MrAnnoyanceToYou · · Score: 1

      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. 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. Try Squeak - I didn't learn it, and I'm not sure it's what you want, but I remember there being a fat Ask Slashdot around here somewhere or possibly here somewhere or even possibly going to learn the IBM way, in java while gaming

    9. Re:Programming by Vengie · · Score: 2, Funny

      Variables! Heathen! Loops? Sloth! Tail recursion? Vanity!

      --
      When in doubt, parenthesize. At the very least it will let some poor schmuck bounce on the % key in vi. (Larry Wall)
    10. Re:Programming by Anonymous Coward · · Score: 0

      You'll never learn how to code if you don't have something in mind that you WANT to program.

      Just sitting and reading books and typing trough tutorials will help you to understand the books and the tutorials but not what you do.

      Make sure you take a language that is open, etablished and widely used. When you know what you WANT to program get started by searching with google for small examples ("snippets") and get a clue from them.

      Don't start with progamming an Emulator or databases. A simple cmdline tool that extracts links from html pages does suffice for the beginning and you might find it handy for leeching porn (== motivation).

    11. Re:Programming by Radres · · Score: 1

      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"?

    12. Re:Programming by Anonymous Coward · · Score: 0

      Stick a broom handle up your ass! Only when you are truly gay will you know how to program.

    13. Re:Programming by TheRaven64 · · Score: 1

      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.

      --
      I am TheRaven on Soylent News
    14. Re:Programming by MrAnnoyanceToYou · · Score: 1

      Barely coherent because I was attempting to be helpful while talking out of my ass. I'm sorry, I just collected all the info I could offhand and threw it out there.

    15. Re:Programming by Anonymous Coward · · Score: 0

      Try JavaScript. It's small, easy to test, and there are tons of code samples available online.

    16. Re:Programming by Rei · · Score: 2, Informative

      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 overarching goal in mind, but choose *ridiculously easy* programs to start with. Start with "Hello World". Move on to some variable assignment and looping. Learn arrays, and work them in. Then, move on to things like simple sorting algorithms, lookup tables, etc. These may not be the most fun to write, but they'll get you comfortable with programming.

      When you want to start with things like graphics, again, *keep it easy* (again, a language like BASIC would be good - you don't want to be messing with GL or any window API functions at this point). A good starting graphics program is to make it snow, one single-pixel snowflake at a time, with the snow falling top to bottom and not sticking around. Then, steadily improve the program - have multiple flakes fall at once, have them blow randomly in the wind, use more than a pixel for them, have them accumulate at the bottom, etc. Fractals are also often good starting graphics programs. A neat iterative fractalline program involves taking any image, and XORing it with itself shifted a couple pixels in direction, the direction being determined by looping through preset directions that sum up to zero (example: [(-1,-1), (2,-1),(-1,2)]); you get strange ghostlike images resembling the original pop back up later as things fade to static.

      From thereon, you should start getting frustrated with the lack of power and performance that your starting language has. What language you move onto is, of course, a contentious issue; however, a general, *very rough* guideline is that you want languages like python and perl for writing programs that "get stuff done for you", while you want languages like C/C++ and Java for programs that "you run and interact with". This is, of course, an extreme overgeneralization, but there's some truth to it in practice.

      Don't get obsessed with "learning the language". Learn what you need from it. I'll put it this way - in college, I took one course on compilers and interpreters; everything in the course was done in 'scheme'. The first week was spent learning the language - one week, thats it. After that, we worked on the course material.

      When you have time, and you're already comfortable with what you do know, learn more. Things to especially focus on are things related with programming styles, reducing maintenance, and enhancing clarity - for example, if you learn what you need in C++, when you have a chance learn about templates, vectors, maps, the importance of const, etc.

      When you feel comfortable with your programming abilities, contribute to an extant project. Don't jump in and tell them how things should be, however - find out what *they* want done, and do it *their* way. Learning how to program in collaborative efforts is very important.

      --
      ... in Siberia, where Putin killed a fish with a speargun. He later claimed it was killed by Ukrainian separatists.
    17. Re:Programming by Surt · · Score: 1

      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 of the most difficult areas of programming, so if that is where you are getting stuck, don't be too surprised. Even 2d graphics requires a fair amount of math (mainly algebra, geometry), and 3d is just a nightmare unless your math skills (particularly linear algebra, geometry) are really sharp. If you want to learn graphics, you may want to learn/review those math subjects before diving into a graphics programming book.

      I've developed 2d and 3d games, so if you're really interested, feel free to write back, i'd be happy to try to answer your questions.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    18. Re:Programming by Ralp · · Score: 1

      Variables? Impatience! Loops? Laziness! Tail recursion? Hubris!

    19. Re:Programming by Sloppy · · Score: 1
      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.
      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    20. Re:Programming by kabz · · Score: 1

      1. Get hold of a copy of Excel.
      2. Hit record macro to generate VB
      3. Cut and paste recorded macro.
      4. ???
      5. Profit!

      --
      -- "It's not stalking if you're married!" My Wife.
    21. Re:Programming by Redwin · · Score: 1

      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 existing program helps a great deal. If you "Don't know where to start" then jumping into a program isn't always the best way to go!

      --
      Warning, comments may not have been passed by the sanity department of my brain.
    22. Re:Programming by metamatic · · Score: 1

      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 having a programmer's mind; I mean, I can't remember people's names for crap, which is far more embarrassing on a daily basis.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  5. ICFP by boomgopher · · Score: 0

    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.
  6. Re:ICFP by Anonymous Coward · · Score: 0

    Functional as in the language that makes a programmer more functional.

  7. Haskell stack problem revealed by Orrin+Bloquy · · Score: 1, Funny

    It keeps referring to me as "Mrs. Cleaver."

    --
    "Made up/misattributed quote that makes me look smart. I am on /. and I must look smart."
  8. Re:ICFP by The+Wookie · · Score: 4, Informative

    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.

  9. Re:ICFP by putko · · Score: 3, Informative

    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_s tone_your_children/dt21_18a.html
  10. Motivation by Acius · · Score: 2, Insightful

    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
    1. Re:Motivation by FhnuZoag · · Score: 1

      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.

    2. Re:Motivation by bulio · · Score: 1

      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.

    3. Re:Motivation by Acius · · Score: 1

      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 library.

      It might be smart to find a web-site that does tutorials for utter beginners (try googling "programming tutorial beginner" or similar), and do a tutorial in any language that looks easy. They're all pretty much the same in the way you think about things, the differences are more superficial. Once that's done, go dig up a tutorial on your topic of interest and go through that as well. If you work through enough tutorials, eventually the right bits are going to start clicking.

      Did I mention that a stubborn, obsessive personality is pretty much required here? Cause, you know, it really helps if you're a stubborn, obsessive type (It doesn't hurt to be lazy, egotistical, and impatient either).

      --
      Acius the unfamous
    4. Re:Motivation by gb506 · · Score: 3, Funny
      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.

    5. Re:Motivation by Anonymous Coward · · Score: 0
      Yeah, so I should just create a goal, and attempt to accomplish it?
      I wouldn't say "create" a goal, more like realize one. Is there something you do everyday you find tedious? Do you sift through some site everday to download or look at just a few things? Chances are you can program a solution to do the hard part of a tedious task you do on a computer everyday.

      Python, btw, is an excellent starting language. You can write in plain english and get a working program, for example:


      myList = [1,2,3,4]
      for everyItem in myList:
          print everyItem

    6. Re:Motivation by hgh · · Score: 1

      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. By doing a project, you'll inevitably have to learn the major parts of the language and encounter some of the tricky bits of the language you're learning and have to work around them. Typically, the fun part of programming is the first part of a project anyway. You set up a project, make some major strides, learn a few things, get bored and move on.

      My advice to the budding programmer: think of a project that sounds interesting, learn the basics of a language from a book, then do your best to implement the project. If it doesn't work out, scrap the project and try another. After each iteration you will have picked up a few things. Also, IRC is your friend in case you have questions.

  11. Re:ICFP by Peter+S.+Housel · · Score: 1

    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.

  12. Re:ICFP by Fahrenheit+450 · · Score: 2, Informative

    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-
  13. Functional Languages by Anonymous Coward · · Score: 0

    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

    1. Re:Functional Languages by Anonymous Coward · · Score: 0

      Lisp is not a pure functional language (not like Haskell anyway, whew).

      And the parens are really not a big deal, I wish people would get over it. Or at least come up with something of substance to criticize Lisp for.

  14. I can see literally see my house from here. by EmperorKagato · · Score: 1

    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.
    1. Re:I can see literally see my house from here. by Radres · · Score: 2, Funny

      "it seems like you're developing AI for an RPG."

      Awe, you sound like Clippy when you talk like that!

    2. Re:I can see literally see my house from here. by EmperorKagato · · Score: 1

      Microsoft Visual Studio Neo (2010) will have this feature.

      --
      ----- You know you have ego issues when you register a domain in your name.
  15. We need a combination Haskell-Dylan language by Anonymous Coward · · Score: 0

    I think a Haskell-Dylan language would go something like this:

    Woooooooaaaaaahhhh! Geeee Mrs. Cleeeaver! You are looking niiiiiice todaaay.

  16. what's icfp???? by Anonymous Coward · · Score: 0

    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?

    1. Re:what's icfp???? by Fahrenheit+450 · · Score: 1

      The ICFP is the International Conference on Functional Programming, and the ICFP programming contest is (not surprisingly) a programming contest held in conjunction with the ICFP (the contest specs are usually announced around June -- look for a story on slashdot next summer). However, despite the connection to the ICFP, the contest places no restriction on the languages you can use. Well, I assume they require that your language produce a result that they can run on their testing machines, but that's it.

      --
      -30-
    2. Re:what's icfp???? by Anonymous Coward · · Score: 0

      It seems like every time ICFP is mentioned, the story and the linked articles never say what ICFP stands for. And I never remember, since there aren't many stories about it. So every time, I have to go off searching. It must be a conspiracy.

  17. Programming-Up for yes, down for no. by Anonymous Coward · · Score: 0

    "It has nothing to do with the language."

    Yeah! I hear that one can learn programming through interpretive toggle switches.

  18. Malbolge by PunkFloyd · · Score: 1

    Did anyone use Malbolge as their language of choice? -pf

  19. Can't help myself by theskipper · · Score: 3, Funny

    Gosh Wally, Haskell gives me the creeps.

  20. How To Design Programs by GileadGreene · · Score: 2, Informative

    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).

  21. Try Q! by agg-1 · · Score: 2, Interesting

    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).

  22. Re:ICFP by WWWWolf · · Score: 1
    There have been "C" programs that won previously, I believe.

    Yeah. Shame there hasn't been an entry that won both the ICFP and IOCCC. =)

  23. No SCHEME? by ezweave · · Score: 1

    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))
    1. Re:No SCHEME? by The+Wookie · · Score: 4, Informative
      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
    2. Re:No SCHEME? by Anonymous Coward · · Score: 1, Funny

      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.

    3. Re:No SCHEME? by be-fan · · Score: 1

      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 after years of doing C/C++/Java work, not after seeing it for the first time in college and loving it ever since!

      --
      A deep unwavering belief is a sure sign you're missing something...
  24. Re:ICFP by Orrin+Bloquy · · Score: 0

    There's no love for us, these days. Beer?

    --
    "Made up/misattributed quote that makes me look smart. I am on /. and I must look smart."
  25. .NET - One API to Rule Them All by armentage · · Score: 1

    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).

    1. Re:.NET - One API to Rule Them All by Tony+Hoyle · · Score: 1

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

    2. Re:.NET - One API to Rule Them All by armentage · · Score: 1

      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 that the only viable implementation is on Win32 only ATM. But you miss my point - How do you use your C++ libraries in Perl without sitting down and writing tons of wrapper code? How do you use it in Java without writing JNI? C++/CLI is the answer. If you are using Perl.NET, Java.NET, C++.NET, you write the class once and its available to EVERY .NET compatible language, both in terms of interface and compiled code base. Compile it once (for a platform, meaning the OS & CPU) and you're good to go. No wrappers, no interop, no nothing. And given that things are headed more and more towards Linux/X86 and Win32/X86 as the only game, this will be a huge, huge thing.

  26. Syntax versus Logic by ari_j · · Score: 2, Insightful

    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.

    1. Re:Syntax versus Logic by Eivind+Eklund · · Score: 1
      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 next few years think languages are of no consequence whatsoever. Later in their careers, they think that both languages and algorithms are important.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    2. Re:Syntax versus Logic by ari_j · · Score: 1

      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.

    3. Re:Syntax versus Logic by Eivind+Eklund · · Score: 1
      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.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    4. Re:Syntax versus Logic by ari_j · · Score: 1

      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.

  27. Watch a game in action by gringer · · Score: 3, Informative

    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
  28. Open Dylan beta just released by doublec · · Score: 1

    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/

  29. contest is somewhat biased? by adrianmonk · · Score: 1

    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.

    1. Re:contest is somewhat biased? by juanescalante · · Score: 1

      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 problems that are common in AI programs. The question would be if the ICPF choses this kind of problems to try to make a point (when most top places in the contest are taken by programs written in functional languages) that the functional paradigm is useful for a large range of problems.

    2. Re:contest is somewhat biased? by Anonymous Coward · · Score: 0
      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.


      That's because with the exception of Haskell, there really is no other widely (and Haskell is not really used widely) used functional programming language (ML has mutable arrays, and most other some-what functional programming language either have mutable something or other or imperative control structures).

      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.


      Well, it seems you don't know those AI people well enough. I was a research assistant in an AI lab not too long ago, and am familiar with the field and who's doing what. I don't know anyone using functional programming for AI research. A few people use some sort of Lisp, primarily Common Lisp, but that's not a functional language (see what I wrote above). Most researchers today use Java either out of ignorance or the need to get students (since most universities concentrate on teaching Java nowadays, this time almost exclusively out of ignorance). There isn't a lot of good (or bad, or any kind for that matter) AI research going on right now, IMO, so it's understandable that AI tools are in the gutter.
    3. Re:contest is somewhat biased? by sydneyfong · · Score: 2, Insightful

      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 imperative language, and excluding them would be a lose-lose situation: the contest gets fewer contestants, and those who want to participate, couldn't.

      And for your last question, probably not. It seems that many slashdotters would prefer "real" problems in contests than "hypothetical" ones. But there are reasons why there aren't many of these "real" problems.

      First, "real" problems usually contain sub-problems that are tedious and a PITA to solve. (Think writing an OS like Linux - I've heard that making things work on a dozen different architectures and working around crappy hardware is a nightmare.) Besides, most people have enough of "real" problems to solve in their normal lives, may it be work or study. "hypothetical" problems tend to be fun, for the same reason people spend time playing MMORPG.

      Second, "real" problems tend to have quite a bit of economic value, and once you get to the situation where you can get people to attempt solving your "real" problems, you wouldn't want a dozen of developers working on the same thing (to illustrate, think about GNOME and KDE - there has been criticisms that effort is diverged and distracted with merely two projects, and to think of holding a competition where all contestants write the same fscking thing and duplicating the effort many many times?). And when you come to realize this point, there's a very fine line between a "real problem contest" and a bounty like those of Google, GNOME and other OSS projects.

      And really, if you want a contest of "real programming problems", just go out and find a good job, (or even start an OSS project and see whether somebody awards you with something ;-p), and try to achieve whatever you aim to be. If you really want a "contest" feel, you might want to take upon the motto of "He who dies with the most toys, wins" ;-p

      --
      Don't quote me on this.
    4. Re:contest is somewhat biased? by The+Cydonian · · Score: 1

      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.

  30. Mod Parent Funny by corngrower · · Score: 1

    Ward, don't you think Beaver is spending too much time on the computer?

  31. Re:ICFP by Anonymous Coward · · Score: 0

    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.

  32. Previous winning languages by Fahrenheit+450 · · Score: 2, Interesting

    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-
    1. Re:Previous winning languages by The+Cydonian · · Score: 1

      Ah, so you're saying it was the last two years that was in fact an exception to the rule? I stand corrected then.

  33. They Would Get More Entrants If... by Anonymous Coward · · Score: 0
    they designed a task that was convincingly worth pursuing. I nearly fell asleep reading the incredibly boring design specs. Perhaps something a little more applied? Or perhaps the problem maps into something else (a real-world problem) and using the real-world description would be much more motivating. As it is, it's just dull, dull, dull.

    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.

  34. MS hates Mono... by irritating+environme · · Score: 1

    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,390266 18,39265898,00.htm

    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.
  35. Small world by Massif · · Score: 1

    I actually know the guy who won first prize. Weird how small a world it is.