From: Ted Dennison <dennison@telepath.com>
Subject: Thoughts on the recent ICFP contest
Date: Thu, 12 Sep 2002 02:35:10 GMT
Date: 2002-09-12T02:35:10+00:00 [thread overview]
Message-ID: <3D7FFD66.9030805@telepath.com> (raw)
I was reading over the results of this year's ICFP programming contest
(http://icfpcontest.cse.ogi.edu/ ) last week.
For those allergic to following links, this year's project was to build
a simple virtual robot that moves crates around and interacts with other
robots in a way that maximizes its own score. Entrants had the recent
long weekend (long in the US anyway) to complete their entries, at which
time they'd compete against each other's entries to see how they score.
This is *very* similar to an AI class project I did as an undergrad (in
Lisp), so I'm somewhat familiar with the issues involved with doing this.
One thing I started wondering is what libraries would have been needed
to have been available for someone to complete this project
competitively in Ada. After reading over the web pages of some of the
contestants (http://icfpcontest.cse.ogi.edu/links.html ) and a bit of
thought, I came up with the following things that would have helped an
Ada implementation get into the lightning round (submitted <24 hours
after the requirements were posted):
(1) An inference engine.
(2) High-level socket bindings.
(3) A generic implementation of Dijkstra's Algorithm
(1) would be useful for the actual robot decision-making process.
We already have it in a preliminary form, with my CLIPS bindings
(http://www.telepath.com/~dennison/Ted/AdaClips/AdaClips.html )
(3) (http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS210/dijkstra.html )
would have saved someone lots of time here, but is probably not
something that would be general-use enough to find laying around in a
reusable package library somewhere. I could be wrong though...
That leaves me with (2), which is both generally useful, and not
available right now (at least not outside of Claw). I'm thinking the
best way to do this in the context of Ada would be to implement it as a
stream, with the various sockopt function codes implemented as
primitives on it. I'm curious if anyone else thinks something like this
ought to be available.
Another thought I had was that for a general-purpose socket stream to be
really useful in many applications, you'd also need some way to tell it
to transmit an entire buffer at once, rather than one component at a
time (although you might want that in a lot of situations too). The best
idea I came up with is a new type that users can convert their objects
to (via some kind of pointer magic-perhaps), which has its 'Write and
'Read implemented to write the whole defined length of the buffer at
once. This would be quite useful with *any* stream too, not just with
socket streams. Since this is a speed optimization, copying the buffer
would be missing the point. Therefore, it would probably be implemented
as a simple addres and length (or pointer if the type is generic).
Anyway, I'm curious what other Ada folks think about all this.
next reply other threads:[~2002-09-12 2:35 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-12 2:35 Ted Dennison [this message]
2002-09-12 3:11 ` Thoughts on the recent ICFP contest tmoran
2002-09-12 14:23 ` Wes Groleau
2002-09-12 16:43 ` Ted Dennison
2002-09-12 16:53 ` David C. Hoos
2002-09-16 20:41 ` Wes Groleau
2002-09-17 3:21 ` Ted Dennison
2002-09-12 19:15 ` tmoran
2002-09-12 16:32 ` Ted Dennison
2002-09-12 19:15 ` tmoran
2002-09-13 1:45 ` Ted Dennison
2002-09-13 15:46 ` Warren W. Gay VE3WWG
2002-09-17 10:36 ` Jacob Sparre Andersen
2002-09-17 12:55 ` Ted Dennison
2002-09-17 14:41 ` Jacob Sparre Andersen
2002-09-17 10:56 ` Preben Randhol
2002-09-17 12:38 ` Ted Dennison
2002-09-18 0:31 ` tmoran
2002-09-18 7:15 ` Samuel Tardieu
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox