Levi's Lisp Log

Thoughts and links relating to Lisp and computer theory

Context-Oriented Lisp

Thanks to the extensive metaprogramming facilities in Common Lisp, it is often used as an experimental testbed for new programming paradigms. Recently, Pascal Costanza and Robert Hirschfeld have come up with a new form of program structuring called Context-Oriented Programming.

Roughly, the idea is to create different "layers" in the software that expose different portions of objects' interfaces. This allows for changes in behavior based on context rather than just the traditional mechanisms of subtyping and composition. I'd explain further myself, but Bill Clementson has created a tutorial based on the example in Costanza and Hirschfeld's paper that does a better job than I could.

If you'd like to try it out, the ContextL extension to Common Lisp can be found at the Closer Project site, along with additional information about ContextL and Common Lisp's Meta-Object Protocol, which made ContextL possible.

# Posted by: Levi at 1:39 PM on Tuesday, September 13, 2005
   Comments: (0) Categories: Lisp Language-design OOP

MJD on Typing

I've recently had discussions with people on IRC where I've claimed that C is a flawed language. I think that's a pretty reasonable thing to say, and one of the primary flaws as far as I'm concerned is the type system. I don't dismiss the idea of static typing as fundamentally flawed, only the particular implementation in the C language family. I just came across a talk by M-J Dominus that illustrates my point far better than I managed to.

# Posted by: Levi at 11:48 AM on Monday, August 29, 2005
   Comments: (0) Categories: C Language-design

Programming Language Theory Library

I just hit the jackpot for online freely-available programming language theory texts. Check out PLT Online for a pretty hefty list of textbooks, lecture notes, tutorials, and other information online about programming language theory.

# Posted by: Levi at 10:21 PM on Friday, August 12, 2005
   Comments: (0) Categories: Language-design

The Internet Was Not an Accident

Ryan Tomayko has written a thought-provoking essay based upon Tim Berners-Lee's Axioms of Web Architecture about the design principles that have made the internet a success and the often very contrary design principles that businesses are trying to impose on it and the rest of the software world.

Although there is still room to debate the meaning of the principles themselves, they have undoubtedly met great success in the real world. Businesses who are successful at leveraging the internet are also, not surprisingly, employing these principles. Hopefully, other businesses will catch on to this and stop fighting against the current.

I think that adoption of these principles by the business community (who is, after all, a huge consumer of software) will have a definite effect on the design of future programming languages and software systems. Again, hopefully this will be a significant change for the better.

# Posted by: Levi at 5:30 PM on Thursday, July 21, 2005
   Comments: (0) Categories: Language-design

Economics of Programming Languages

Although I'm usually more interested in the theoretical aspects of programming languages, this article on the economics of programming languages looks at them from a more practical viewpoint. It discusses what attracts people to a language, and what issues a language designer aiming to create a practical, widely-used language should consider.

# Posted by: Levi at 11:42 PM on Tuesday, July 19, 2005
   Comments: (0) Categories: Language-Design