Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Lisp machines were always meant as workstations for programmers rather than office users

Lisp Machine were initially developed inhouse (MIT, Xerox, BBN, ...) as workstations for AI software development. They were also used for early non-AI stuff, since they were object-oriented, had a GUI and were hardware extensible.

The commercialization by Xerox, Symbolics, LMI, TI, and some others did also address developers initially - but at some point in time the machines were also deployed in machine rooms in production as servers or as systems for 'end users'. That happened once interesting software was developed and need to deploy - remember that the early stuff was all financed by the military and they also deployed some of the stuff which got developed - some really fancy stuff like battle simulation systems, where the Lisp Machine created and maintained virtual worlds for training soldiers.

For example Symbolics sold a whole range of machines and software to graphics&animation. A lot of the early computer graphics you saw on TV were done on Symbolics machines. The users then were graphics artists, animators, 3d graphics experts, ... Thus the user interfaces and the machines themselves needed to be made end-user friendly. A bunch of the machines were deployed in production. For example Swissair used a software running on TI explorers to optimize the sales of flight tickets - it was interfaced to their booking software running on mainframes. It was extremely difficult to port that software away from the TI Explorer and for many years they bought all remaining used TI Explorers all around the globe to keep their system running - long after TI has exited that business. There are a bunch of other users of Lisp machines who were not programmers - for example in military.

It was also thought that Lisp Machines could run as embedded systems in weapon systems (autonomous submarines, cruise missiles, ...), onboard a space station, and in other settings - that was then not really happening. But for example AT&T Lucent had a Symbolics designed Lisp Machine board for a rack-mounted installation and they were switching nodes in a telephony network switch. Thus the operating system of that Lisp Machine was stripped down for use in embedded systems (called Minima).



Good info here but Lisp has not historically been "object oriented." The CLOS (Common Lisp Object System) was added later as an abstraction layer over more fundamental Lisp concepts.

One of the most beautiful things about Lisp is that has neither modules, objects, routines, callbacks, variable types, or any of the other cruft of more recent languages. (It is the second oldest computer language.) But -- it can provide all of those things if the programmer wants them.


> Lisp has not historically been "object oriented."

Historically Lisp was among the first object-oriented languages in the mid 70s. It was also the first standardized object-oriented language (in 1994).

The original Lisp was used for object-oriented modeling in the 60s - way before objects were identified as a programming paradigm. Objects were defined as symbols with property lists. Property lists were pairs of keys and values (sounds familiar?). Early Lisp papers also used the idea of classes and more.

> was added later as an abstraction layer over more fundamental Lisp concepts

No, CLOS was added as a new programming paradigm into the first Common Lisp variant - similar how one would add a Prolog-like language to Lisp. CLOS was also a third or fourth generation system. It was based on earlier object-oriented extensions to Lisp Lisp: LOOPS, Common LOOPS, Flavors, New Flavors, some more primitiv Class system, ...

Lisp did not include many/most of the CLOS abstractions, but Lisp enables to implement and integrate them seamlessly.


It depends on what you mean by "object-oriented".

A Lisp with no formal OOP system still has objects: conses, strings, symbols. These are nicely abstracted: they are defined by operations which construct, access and otherwise manipulate them. These entities have an identity (which we can test with eq) and carry a type. They can move around freely in the program.

There is genericity without OOP: features like car working not only on a cons cell, but also on the nil object. Or length calculating the length of a vector, string or list.

All of this stands in contrast to a procedural paradigm in which there are just storage locations operated on by code, having whatever type the code believes them to have. (Algol 68, Fortran 66, C).


I think OOPS as a paradigm is pretty well defined without my laying it out. The facts are that Lisp did not have OOPS at the beginning but it's easy to add, and that's one of the greatest strengths of Lisp as a programming language. You can build any programming concepts from modern languages that you want -- but you aren't constrained by any of them.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: