Pascal is for building pyramids -- imposing, breathtaking, static structures built by armies pushing heavy blocks into place. Lisp is for building organisms -- imposing, breathtaking, dynamic structures built by squads fitting fluctuating myriads of simpler organisms into place. [Alan Perlis, Foreword to SICP]
Eiffel (it has just occured to me) is for building towers (of course) -- imposing, breathtaking, static structures built by hundreds of employees riveting carefully crafted pieces of iron into place.
You can do a lot more with iron than you can with blocks (though if you want to build a breathtaking pyramid, you're probably as well sticking with blocks) but still at times you just can't do enough. It took me three years of writing code in Eiffel before I realised it just wasn't going to take me where I nedeed to go, which is depressing given that I already knew Smalltalk. In the end it was reading SICP that opened my eyes.
It's worth continuing the quote:
The organizing principles used are the same in both cases, except for one extraordinarily important difference: The discretionary exportable functionality entrusted to the individual Lisp programmer is more than an order of magnitude greater than that to be found within Pascal enterprises. [Alan Perlis, Foreword to SICP]
Discretionary exportable functionality is key — functionality such as the ability to compile and install code at run time, as I just mentioned. While non-Free licensing can get in the way a bit, it is only in languages like Lisp and Smalltalk that there is any hope of blurring the boundary between developer and user, and it is only when this is done that computers can hope to fulfill any significant fraction of their potential. This, of course, was one of the fundamental drivers for Smalltalk. Lisp supports it (in my interpretation) for the simple reason that, given that it is possible, it would be perverse to do otherwise.
There's a lot of perversity around.
Recent Comments