I’ve been amusing myself recently by designing a programming language. Over the past few weeks, to explore some design ideas for it, I implemented a small traits system and a runtime-checked overloaded monad implementation in Scheme. For those interested in learning more about what I’ve been doing, I’ve just written up an article covering some of the detail.
May 8th, 2006
tonyg
Subtext is a demonstration of a novel model of computer programming, with interactive program modification and prototypes.
Continue Reading January 12th, 2006
mikeb
Some programming languages look like they were designed especially to secure their authors a place on LtU - sort of 15 minutes of fame for language mavens. That’s not the case with Io, although it does sport some neat features that are not common enough in today’s language universe (and it did make it to LtU, which is how i found out about it).
Continue Reading December 7th, 2005
Tom Berger
Take a look at this part of NetJam.ORG, in which Craig Latta builds a visual display of a running Smalltalk Image. Be sure to check out the movie of the first 50ms or so of a running image. Smalltalk gets all the cool toys.
October 17th, 2005
tonyg
This paper is hard going, but very rewarding. The author concentrates on two ways of transforming a formal, algebraic specification into an implementation, starting with very simple examples and working up to a pretty-printing library.
The reason this paper is worthwhile is that, by moving very slowly and by demonstrating the same theme over and over, each time using a slightly more complex example, the author allows the reader to develop a clear insight into the connection between the terms and the coterms of an algebra.
The two styles of implementation he explores are taking the terms of an algebra and building a datatype from them more-or-less directly, and taking the coterms (or contexts) of the algebra and using them as the core of the datatype instead. Equational reasoning from these starting points leads to dual implementations of the semantics of the specification.
The programs based on terms seem natural to me — reasoning with coterms is awkward at first — but coterm-based programs reify far more detail of the ongoing computation, in a way reminiscent of the design of a custom interpreter for a domain-specific language. To get access, from a term-based solution, to the information that is explicitly represented in a coterm-based solution, you would need to make use of reflective primitives in the host language.
It’s intriguing, the way reflection unexpectedly appears in the mirror-image of a data structure…
July 18th, 2005
tonyg