Levi's Lisp Log

Thoughts and links relating to Lisp and computer theory

Info

Levi is a Computer Science student with interests in programming language theory and other software topics. More info about him can be found at his main page.

This blog is an exercise in Lisp programming, a repository for information related to programming languages, and an effort to keep up-to-date with web and blogging technology.

Categories

Links

Syndicate

RSS

Prototype-Based Object Systems

Most well-known object-oriented programming languages have a concept of class, which defines a set of shared information for a group of objects. In these languages, every object is an instance of at least one class, and inheritance is defined between the classes. There is, however, an alternate way to define shared data and inheritance among objects: Prototype-based object systems. These languages use prototypical objects instead of classes to determine shared traits, which allows for some interesting flexibility that is not commonly found in class-based systems. Some examples of prototype-based languages are Self, Javascript, and Io.

# Posted by: Levi at 9:44 PM on Monday, June 6, 2005
   Comments: (0) Categories: OOP

Iterators a Sign of Weakness

I'm currently taking a Java class in school. It's a pretty basic class, but I have a new perspective on it now that I'm familiar with a larger range of languages. When we discussed anonymous inner classes, I immediately recognized them as closures. I was anxious to find just what you could accomplish with them, so I did a bit of research online. First, I found a wiki page describing an implementation of Smalltalk-like code blocks in Java. These are cool, but syntactically awkward in Java. Via that page, I found a very interesting essay regarding Iterator objects, and how they are a sign of a weakness in a language. Finally, I came across a Koan regarding the similarity of objects and closures.

# Posted by: Levi at 1:45 PM on Friday, May 27, 2005
   Comments: (0) Categories: Java Smalltalk Lisp

Composable Memory Transactions

I've been doing a little bit of research into different ways of handling atomic operations on data in the face of concurrent threads of execution. The standard mutex/semaphore model is fraught with opportunities for programmer error and is difficult to reason about. It also becomes very unwieldy when composition of atomic operations is necessary. A possible solution is to use transactional memory and optimistic synchronization instead of mutexes. There's a good description of how this works in the paper Composable Memory Transactions. There's also an implementation of Optimistic Concurrency in Scheme48.

# Posted by: Levi at 4:26 PM on Monday, May 16, 2005
   Comments: (0) Categories: Concurrency

Pocket AI

Just about everyone has played the game of '20 Questions', but have you played it with a small plastic sphere? Originally a DOS neural-net program passed between friends via floppy disk, the AI has been training online since 1995. The neural-net has since been trimmed to its most popular objects and most useful connections and programmed into a small 8-bit chip. You can now buy the chip inside a plastic ball that is uncannily good at guessing your objects.

# Posted by: Levi at 2:22 PM on Tuesday, May 10, 2005
   Comments: (0) Categories: AI

RSS Feed

I've now got an RSS feed of the front page. I also upgraded to a new version of sbcl and switched to the serve-event Araneida handler instead of the threaded version in hope of getting the crashing to stop. My fingers are crossed.

# Posted by: Levi at 01:13 AM on Tuesday, May 10, 2005
   Comments: (0) Categories: Blog