Second Annual ICFP Programming Contest
PsionV writes "The second annual ICFP Programming Contest begins September 2nd. For those of you who didn't participate in this last year, this is a contest where competitors enter programs written in any language which then compete tournament style against each other in a processing intensive task to possibly win money, books, bragging rights, and more. "
Hey, my post has been censored!
I thought even censored posts can be read by those interested, but apparantly not in my case.
What do you mean I'm abusive? Yes, my post contains euphemized four-letter words, but that's nothing compared to the slashdot posts. In particular, my post is not a brainless babble like many other posts are.
I wouldn't suprised if my post would be censored or offensive on somewhereelse. But I wrote it for Slashdot. Slashdot being slashdot, I think I deserve a public note why my post is censored out of sight! If you start to censor people who doesn't agree with you or who doesn't like hemos or robs, you should make such policy explicit.
Xah
, xah@best.com
, http://www.best.com/~xah/PageTwo_dir/more.html
This contest definitely does reflect practical job skill. The team that won last year was composed of a number of individuals who do research on the kinds of probems reflected in the contest, no wonder they won. Additionally, The contest is set up as a functional programming contest. One of the main goals of functional programming languages is to be able to rapidly implement complex algorithms, and to develop prototpes as fast as possible. The contest is a way of testing how well functional programming languages, as well as others, are at this task.
Yeah, that PsionV guy needs the shit beat out of him. I'll be he's an arrogant dick who spends all his time on IRC bragging about how good he is.
And I bet he takes over programming sites, runs them like a dictator, and then gives up on them. And then complains about the new people who run them.
Let's string the fnord bastard up!
Thank you to DragonHawk or whoever that put my censored post back. (refering to the parent message of this thread)
Now I can post with better confidence and more repect for slashdot runners.
(don't take my posts *TOO* serious. Afterall, we all enjoy a bit flames here and there on slashdot.)
An earlier poster (DrGoon) asked why I post as anonymous yet disclose my webpage url. I do not wish to have an 'account' on slashdot yet I'm not "anonymous coward". You see, this is a fault of slashdot's false dichomy, but well... if slashdot isn't the podium of cheesy balls and sophomores, where would the fun be? (^_^)
Xah
xah@best.com
http://www.best.com/~xah/PageTwo_dir/more.html
"GNU is Not stupid Unix"
That's a damn good point. I retract my statement. :)
Are these guys running beowulf or something? What I would like to know is can I use pthreads, e.g. make my program multithreaded? If I could then this competition really would be cool. Program in C++, who needs perl anyway?
Err, why do you call that a curry whereas it's actually a closure? And that denomination has been in use for quite some time now ...
Why? You don't think there's more (a whole hell of a lot more) to good programming than performance?
Well in this competition, perl is still allowed as far as a can tell. It didn't at all trash the competition last year. Hell, even my own Python entry did much better than Perl ones :-).
Yes, though it's usually not until I'm looking at my own code over someone else's shoulder. Is similar to how I don't notice just how messy my apartment is until someone steps in the doorway. "...it's not normally like this...really...I've just been too busy cleaning/coding lately..."
The pousse game might have been invented specifically for the contest ; anyway, none of the top performers had implemented it before.
Well, there was also exactly one Python/C++ entry (mine :-), and it didn't do too bad. Don't forget that developpement speed matter, as much as speed, and this is where Python, Perl, Lisp, Smalltalk shine, and Caml, and functional languages shine a bit less. For instance I coded the core move generation in C++, and interfaced painlessly it with Python: I had a huge performance penalty, but on the other hand I was able to implement alpha-beta and iterative deepening with move pre-sorting, which I wouldn't have time to write (and debug!) en C++. The result is that my slow but somewhat clever entry has beaten brute force C entries.
im sure ill be using c, but if i get to the last 2 hours and dont have anythign to submit yet, then ill just write a simple little perl script to get the job done.
But the problem probably won't be solved by a perl script written in two hours. More, in the pousse contest it would have been very useful, to have a first prototype to play with, to understand how the game should be played. If the problem has something fuzzy what requires good heuristics, then speed isn't important alone.
Yes but you forget that at the same time, the contest is development time-bound, and that it is much faster for a experimented Perl developper to code in Perl than in C.
Unless they ask you to write a simulation of a black hole, with 1e-5 error precision and as fast as possible. In that case you need to be very well booked up about relativity, gravity, and numerical integration schemes.
Functional programming languages have many real world applications. Companies such as Erickson rely heavily on functional programming languages. Functional programming languages are also widely used for rapid prototyping. I suggest you browse through a text on functional programming, or programming languages in general, almost all recent ones contain at least some information on the uses of functional programming. Additionally texts on software engineering often discuss the use of functional programming languages in the development cycle. If you're too lazy to trek on down to a library, you could also find answers in the newsgroup: comp.lang.functional. Your questions arise repeatedly there.
Do anybody have the URL? I lost it in a nutscape crash.
Haskell is a lazy, pure functional language. It kicks ass.
I wish the people who ran the contest at least required that the entered programs be written in a functional style. 24 C entries in a supposedly functional programming contest? The winning group did use a pretty cool parallel dialect of C, but it was certainly not functional.
> "Functional" programming looks like a subset > of object-oriented programming. . . I think it is more the other way around--the OO is a subset of functional programming using closures. Honestly, I believe it depends on what you learned first. Depending on the implementation, a functional programming language can have some pretty amazing features that exist generally clumsily in more mainstream programming languages (am I the only one who's noticed that using function pointers in C is a pain in the a**).
Not necessarily. Last year an entry written in "J" (a derivative from APL) won the judge prize. Look at the source code of their entry, you'll find the reason.
After some time, you don't see at all all the parenthesis. No more than you see the '{' and ';' everywhere in 'C' code. And I suspect that there is amount of syntax clutter for C is greater than 50% of the Scheme syntaxic clutter, and probably the syntax clutter of Scheme is comparable to the syntax clutter of Perl. Just do this: count the useless characters in the same program written in both languages. Filtering out those is just a matter of training.
Perl was a little obtuse initially, but not a difficult language to learn.
The problem with Perl is that what is obtuse is not only syntaxical. If you have to put '$' before any variable, it would be ok, but there are '%', '@', depending on what you do. There is semantic clutter.
im sorry, but what is meant by a functional language? C uses functions, right? is that not what is meant by a functional language. hmm, i guess not.
please help set me straight on this.
Performance was central to last year's contest, for writing a game-playing algorithm. Read the writeups of last year's: the winning team had to do a great deal of damn clever stuff to get that first place. They called on a lot of resources that it would be hard to beat them without.
--
Xenu loves you!
Perl won't win because I'd guess performance will almost certainly be important, and while Perl is easily fast enough for a variety of real-world tasks (where networks and disks become the bottleneck above a particular performance anyway) it's not designed to win contests like this, where the winning entry will almost certainly be CPU-bound in some central computing core.
--
Xenu loves you!
...what last year's problem was? Just curious as to what to expect.
Steve
Need to re-read/A> it?
:-)
Cheers,
Ben
My usual seat in the cluetrain is at A HREF="http://pub4.ezboard.com/biwethey.ht
Perl won't win unless somebody does something very elegant using it, and I'd be surprised if a more elegant solution did not come from a team using something more appropriate. Style counts in this contest. However, as last year proves, if performance and experience of the task are significant factors, functional languages aren't guaranteed a win either.
BTW, why use an "Anonymous Coward" post and then include your URL? I took a quick look, and you've got a very nice web site. Anybody interested in computational mathematics should have a gander.
Don't feel at a disadvantage.. just because some one is in college doesn't necessarily mean they can code better than you.
If you think you are at a disadvantage, well then, you are, if only because you think you are.
Personnally, I'm going to give it my damndest. I don't know what language I'm going to use yet though.
Does anyone remember the programming contest sponsored by some west-coast university that banned Perl? Apparently, using Perl, a student completely thrashed the competition; therefore, Perl is now a no-no.
Yes, there is more to good programming than performance. However, this is a *contest*. It does not reflect practical job skill. It simply challenges you to solve an arbitrary problem. If you wish to avoid that, do not enter. :-)
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
If you were this abusive then, I do not doubt in the least that he skipped right over your mail.
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
Perl is very dynamic, in terms of runtime data storage, execution, etc. Thus, it does well at things that change frequently or are largely undefined at design time.
It makes text/string manipulation very easy. A good deal of what computers do is string processing of some kind.
It uses C-like syntax, and C is very familar to a lot of people already.
It integrates with the POSIX (UNIX) environment very well. Perl is ideal for "gluing" separate, unrelated tools together.
Perl is extremely portable. If you are looking to implement something that will run on as many platforms as possible, Perl is a good choice.
There are a lot of already-written Perl "modules" which are freely available. It is often easier to piece together several Perl modules then to solve a problem from scratch. In particular, there are a lot of web- and database-related modules.
Perl is faster then most interpreted langauges, and there are a number of optimizations which can make it even faster for specific cases (caching compiled Perl scripts in the Apache web server being the popular one).
:-)
:-)
This is not to say Perl is the perfect language. Far from it. The lack of imposed structure and data types is not always a Good Thing. Like anything else, you need to evaluate the available tools, and choose the best one for the task at hand.
As far as learning it does, I think a lot of that is the way it is taught. A lot of books ("Programming Perl" especially) introduce a lot of the Perl "tricks" right away. These "tricks" are useful in contests, one-liners, and write-only code, but for professional projects, they are to be avoided. Again, the lack of imposed structure is not always a Good Thing.
All IMHO, YMMV, etc.
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
Okay, I have to ask, and this isn't a flame, but what do people see in Scheme? Perl was a little obtuse initially, but not a difficult language to learn. Scheme just makes my brain hurt -- the syntax is ++ugly and I just can't seem to wrap my head around it.
I wonder if this year's contest will be on another 4 processor machine. I think something like that makes it a bit unfair to those of us running little budget Linux boxes. I've never programmed for such a beautiful set of hardware and even if I learned something like Cilk (which looks rather nice and simple), I'd have to find somebody w/ a bigassed powerful machine to test any of the code on. I suppose it's time to recruit from PLUG (Philadelphia Linux User's Group).
hmmm, I wonder if a team of 50 would be too big to effectively manage...
When you do head of to school, you'll probably end up taking a class using a book called "Introduction to Algorithms" written by Cormen, Leiserson an Rivest. Just so you understand where I'm going, Leiserson was on the team ("Cilk Pousse") that won the contest last year.
I'd say that you're not the only one with a disadvantage
-NooM
Re: only allow functional languages.
It's probably still better this way since it gives a good idea of where optimizing functional compilers stand against "the competition." Although the Cilk team one, that second place spot held by a team which used OCaml is a pretty strong statement for the progress of recent compilers for functional languages.
If other languages were not allowed, someone could easily say "well, I could have written something far better in C." Considering that an OCaml entry beat out all entries written in "pure C", and was only second to a multithreaded version of the language, the outcome is more relevant.
-NooM
Isn't PERL the Practical Extraction and Report Language? :-)
Yes... it's also the Pathologically Eclectic Rubbish Lister, now you know why SlashDot is written in Perl
My own experience with perl is that it is one of the least restrictive languages I know of. This means that its easy to throw something togethor fast, but I avoid it like the plague simply because my code always looks like it was run over by a lawnmower when I'm through with it. But then what do I know, I'm still in love with scheme ;).
-Jon Schaab
I don't believe that any of last year's entries were straight out pre-written. Even the guys who had code written to play games like chess had to make non-trivial changes to get their programs to play Pousse well enough to be competitive.
:)
For this year's contest, we have again tried our best to come up with a problem that won't give some teams a competitive advantage over others.
Hopefully everyone will be equally challenged
I just hope they can seperate student submissions some how. I feel at a big disadvantage having not gone to college yet and taking Comp Sci classes.
This is a really cool idea.. i didnt know of the competition last year (had i, i would have registered then too :) )
i look forward to getting totally thromped at the hands of some actually competant coders, but eh, whachagonnado
tchort
Am I the only programmer out there who is secretly embarassed by each and every line he writes? -----
wonder how long a basic program would last? I'm betting that such an entry (I'm halfway considering entering one) would be instantly disqualified just on general principle =)
-Lx?
This is one of the better contests that I have seen. It not only awards for correctness, but creativity.
Indeed... I agree. If only I could program, heck, I'd enter the thing!
All I can say is, "Carry on! Carry on!"
Insert mind here.
taken from the page about last year's competition:
/. will up that number this year.
>Here are some broad statistics for the primary language used by the various teams:
> 24 C dialects: C, C++, Cilk
> 12 ML variants (SML/NJ, Moscow ML, OCaml, >OLabel)
> 3 Scheme
> 3 Haskell
> 3 Perl
> 1 J
> 1 Mercury
> 1 Icon
looks like there was barely enough perl representation to give it a good chance. but doesnt that also say something about it? perl really isnt designed for tasks like this.
im sure ill be using c, but if i get to the last 2 hours and dont have anythign to submit yet, then ill just write a simple little perl script to get the job done.
also, apparently there were only 48 entries last year. maybe getting some exposure here on
Isn't PERL the Practical Extraction and Report Language?
I'd imagine it's good for exactly what it is used for...text manipulation, database/network interaction, data extraction, etc.
It's 10 PM. Do you know if you're un-American?
This is one of the better contests that I have seen. It not only awards for correctness, but creativity. If you get into a small team with some creative peolple you could win and not even be the fastest. Also, contests like this help promote CS amoung peolple who normally do not think of themselves as programmers.
---- aut viam inveniam aut faciam
there are a lot of ways to optimize a program...
are they going for speed? size?
if they are going for speed, it is certain that
perl wont win- its interpreted fergodsake...
or for size...
so why do people use perl anyway?
its certainly not an EASY language
to learn...
so all you perl fanatics, whats it good
for?
"some people have too much freedom" - george dubya bush, facist, err republican presidential hopeful and domain name squ
javascript sounds like a great language with which to submit a gag program. Put it in a little webpage and everything.
"There is nothing more intimidating than an idiotic smile worn by a manifest non-idiot." --unknown
So you mean nobody, prior to this contest, had implemented a program to play Pousse? I suppose it's an obscure enough game that it would be possible, I just would've expected nearly every game to have a least some sort of program playing it by now...
However, it seems the contest ran quite well, so I'll stop complaining =) Good luck on this year's.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I have a strange feeling that there will be somebody out there that has some pre-written code for whatever the challenge will be, that will only need slight modification. For example, last year's contest was playing pousse, and I'd be surprised if no pousse implementations had ever been written before. That'd leave the rest of us at a slight disadvantage.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Last year a program had to respond within 30 seconds. If your algorithm is fast enough to respond easily within a time limit then performance is not much of an issue. Performance does matter if you and your program have to make an effort to respond within the time limit.
Hmmm... I don't like the sound of that.
Geeky modern art T-shirts