4th ICFP Programming Contest Announced
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.
content when the participants can use any language? Why not just a "programming" contest?
- 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 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.
- 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 GCCWhat'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.
-- Ed Avis ed@membled.com
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.
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
Clearly, Unlambda 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.
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
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
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.
- 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.Got Rhinos?
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.
illegitimii non ingravare
Here is a useful description.
illegitimii non ingravare
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!
--
dman123 forever!
Filtering out the -1s and 0s since 1999.
Did you read the the tasks from the last three years? All of them had a speed element to them.
JFMILLER
Strive to make your client happy, not necessarly give them what they ask for
the BBspot Slashdot Story Generator.
BlackNova Traders
I suggest you have a look at Malbolge. Just for the hell of it.
"If you think education is expensive, try ignorance" - Derek Bok
This contest is performed over the internet. Read the page. The prize is free registration for the conference.
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.
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.
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.
Sure they do. Check out the ASCE/AISC bridge building competition. Here is a pdf of the rules
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.
Anonymous posts are filtered.
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.
Well, what is it?
Speed of completion is not important. ... now that computers are running life-support systems and the like, there is no room for error.
;-) 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.
You're fired.
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.
Ich werde nie wieder denken
I bet the winning program will be coded in befunge
"A door is what a dog is perpetually on the wrong side of" - Ogden Nash
Another oppurtunity for Ocaml to SHINE!
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
Wroot
Check out topcoder. 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.
http://www.twistedmatrix.com/users/jh.twistd/pytho n/moin.cgi/IcfpPythonTeam
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.
For the winning program to have been written in Brainfuck.