Scheme Space Invaders

This re-make of the classic arcade game “space invaders” is based on the version available on the well known arcade emulator called mame. It is made to look as close as possible to the original arcade game.
This game was made for fun, but also in the context of my master’s thesis at the university of Montreal under the supervision of Marc Feeley. The aim behind writing video games in scheme is to try to demonstrate not only that it is possible to write games in scheme, but that such games would have smaller developpement time, better code, less bugs, etc…
Thus space invaders is only the first step into my thesis and more games will be comming up later! I would like also to note that the version 1.0 is only a draft. Much ugly things can be found in the code and I will still continue the developpement of this game further by ameliorating the way the code is structured and modify parts of it’s basic architecture to experiment different design ideas. This is what’s beautifull about scheme, isn’t it? I tried to comment the code so that it should be understandable by interested schemers.
I hope you can enjoy this game as well as I enjoyed developping it!
David St-Hilaire
sthilaid@iro.umontreal.ca

(via stevebook)

A Favorite Passage on Programming

Like Geoff, I find the following passage from HTDP to be one of the most inspirational pieces I have ever read about programming.

Yet programming is more than just a vocational skill. Indeed, good programming is a fun activity, a creative outlet, and a way to express abstract ideas in a tangible form. And designing programs teaches a variety of skills that are important in all kinds of professions: critical reading, analytical thinking, creative synthesis, and attention to detail.

We therefore believe that the study of program design deserves the same central role in general education as mathematics and English. Or, put more succinctly,

everyone should learn how to design programs.

On one hand, program design teaches the same analytical skills as mathematics. But, unlike mathematics, working with programs is an active approach to learning. Interacting with software provides immediate feedback and thus leads to exploration, experimentation, and self-evaluation. Furthermore, designing programs produces useful and fun things, which vastly increases the sense of accomplishment when compared to drill exercises in mathematics. On the other hand, program design teaches the same analytical reading and writing skills as English. Even the smallest programming tasks are formulated as word problems. Without critical reading skills, a student cannot design programs that match the specification. Conversely, good program design methods force a student to articulate thoughts about programs in proper English.

Paralell Programming with PLT Scheme

Via plt-dev:

I’m pleased to announce the initial release of parallel futures, a construct for fine-grained parallelism in PLT. Roughly speaking, a programmer passes a thunk to ‘future’ and it gets run in parallel. That “roughly” holds a few gotchas, partly because we’re just getting started and partly due to the technique we’re using. See the documentation for more details:
http://pre.plt-scheme.org/docs/html/futures/