Thursday, December 22, 2005

I just have a quick addition to my previous post "Lisp from the ground up".

I think one of the defining features of a Lisp processor is not so much consing or any specific command, but rather the general ability to perform operations on the program code. If a strength of Lisp is the ability to operate on the parse tree of the program, then there will need to be instructions that can change the underlying code of a program.

From my MIPS microprocessor class, I recall that there are two sections of memory for a processor: the code memory and the data memory. The code memory contains instructions (pointed to by an instruction pointer), and these instructions operate on the data and the registers. For example, you can read a certain piece or data, or you can make the instruction pointer register jump to a new address. However, there were no facilities (that I recall) to change the instruction code itself. I would consider this to be a central ability of a "Lisp processor".

Further addtion:
To put into perspective how powerful this could be, let's make an analogy to DNA. Right now, any genetic mutations we experience are a result of random, low-probability events. Imagine what might happen if (at will) we could reprogram our DNA. It could be very dangerous---we could wind up changing an individual into a new species, or worse, killing ourselves in the process. Or, we could just change our hair color. Regardless, we would have more power to make changes. In a silly way, I imagine being more like a shapeshifter/changeling from Star Trek. If we do this with processors, we can probably pack a lot more punch per transistor.


Post a Comment

<< Home