archives

SimCity Source Code Released

Connecting this item to the official topic of LtU may be a bit of a challenge, but this announcement is simply too cool not to post,

...my good friend Don Hopkins got a lot of work done on the finishing touches on releasing the original SimCity source code under the GNU General Public Library (GPL).

Should be a nice code base to play with.

what is GVScript?

Seems to be something of a Director-style language from what little I saw in one of the videos. Any Squeak or 2nd Lifers know about it?

ACM Classic Books Series

Paul McJones alerts us that the ACM posted PDF versions of some books in its Classic Books Series, which are available to anyone who creates a free ACM Web Account.

Among the currently available books, LtU readers are likely to be particularly interested in Hoare and Jones's Essays in computing science, Adele Goldberg and David Robson's Smalltalk-80: the language and its implementation, and Dahl, Dijkstra, and Hoare's Structured programming.

Long time readers will also know that I highly recommend Papert's Mindstorms: children, computers, and powerful ideas to anyone interested with the effect computers might have on education. Papert's Logo remains to this day the best children oriented programming language, but even if you disagree with me about this, his book is a must read.

Treetop: Packrat Parser Generator for Ruby

Hey LtU. I learned about parsing expression grammars on this site, so I wanted to share what I've done with them. Treetop combines the fact that PEGs are closed under composition with Ruby's mixin semantics, equating grammars with modules that can include one another and override each other's rules with access to the `super` keyword. I think a lot of the ideas within it have been invented in parallel within some other frameworks in the year I have been writing it, but I nonetheless think it offers an expressive set of features in a usable package.

Flower: a new way to write web services

Flower is a new kind of user programmable web service, especially well suited for applications which process, store, and query XML data sets. Clients of a flower web service interactively modify and extend the code the server runs. This is is the ordinary way to build new flower applications. Flower is a true web operating system in the sense that it forms a self-contained, web-addressable computing environment.

It will be a bit of a grab bag and a longer than average post but I'd like point out some aspects of Flower that might be of interest to PLT'ers.

The Flower "kernel" and Flower language interpreter were designed and first prototyped as a program running on the XQVM virtual machine that I posted about on LtU earlier. The current implementation is a "hand-compiled" XQVM program.

The web service frameworks that are popular today typically combine two languages: a database query language, and a general purpose programming language. Familiar combinations are of Ruby, Python, PHP, Perl, or Java with SQL. These combinations suffer from the famous "impedence mismatch" between database data and run-time data. The impedence mismatch is often compounded when clients expect yet a third data model such as XML.

Flower lives in the XML world, from top to bottom. It uses an XML database. It uses the XQuery language to express server-side computation. And it uses a very slender general purpose language (implemented in 100s of lines of code) for the sequencing of side effects. This approach appears, so far, to be vastly more parsimonious than any other yet tried, in no small part because it suffers far less from the "impedence mismatch" problems.

Flower may also be interesting because of the nature of the tiny language it uses to sequence side effects. Programs are written in a continuation passing style, with the unusual addition that programs can not only capture but also directly construct their continuations from constiuent parts. This ability to construct a continuation affords Flower with, amnog other things, a hook for introducing syntactic abstractions. It isn't precisely an Actors language or a Lisp but those are the best comparisons I've found so far.

I'm curious what LtU'ers think. I'm particularly interested in learning how to better and more concisely present what is "interesting" about Flower.