Monday, October 29, 2007

The future of gaming?

This is a great slide deck on what goes into making a modern game with a roadmap for future success. It talks a bit about how languages and programming techniques can be used to reduce errors and exploit the parallelism of future machines:

http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt

Saturday, October 20, 2007

Delimited continuations in Operating Systems

The stated purpose of this goal is to talk about something that might seem fairly obvious to most operating system writers: that operating systems are full of continuations. Ok, if you're an operating system geek you probably wouldn't call it this, you'd probably be thinking "setjmp" and "longjmp". Taking a look at this from a functional point of view with continuations is pretty interesting. Unfortunately this paper doesnt really talk about this subject as much as it promises! Instead they have a shallow introduction and then talk a little bit about their implementation of a tiny file server type operating system that uses continuations. Fortunately, this part is more interesting than it might seem. It shows how easily you can implement a transactional system using a pure language that provides familiar cursor/open/read/read type operations. Their whole implementation (available online) is 1000 lines of haskell.
The paper:
http://okmij.org/ftp/papers/context-OS.pdf
The site:
http://okmij.org/ftp/Computation/Continuations.html#context-OS

Thursday, October 11, 2007

Total functional programming

Did you know you can write real programs in a language that isn't turing complete and has decidable properties? Turing complete languages have this pesky "halting problem" issue which is undecidable. Languages that aren't Turing complete aren't general enough to do anything useful. Or so you thought!

Read all about Total Functional Programming in this paper by Turner.

Using Z

OK, this one's a book, and not a paper...

The Z-notation is a formal notation for specifying programs. There's a free book online: Using Z

You might like this book even if you're not interested in writing specs for programs. Why? This book has one of the more readble and approachable introductions to predicate calculus, sets, functions and relations that I've seen.

Welcome back and a quick paper

It's been a long time since my last post. My apologies. I've been down the rabbit hole, reading all sorts of papers on functional programming, math, logic, type systems, proof systems, etc. Hopefully I'll get a chance to post about some of the more interesting ones here soon, but now is not the time. Instead I leave you with a single paper:

A tutorial on the expresiveness of fold by Graham Hutton.

This paper is a tutorial on the "fold" function (sometimes know as "reduce") which abstracts certain kinds of loops (or a certain kind of recursion).