|
|
This item is for discussion of all things Lisp. Dating from 1958, Lisp is the second oldest language still in active use, predated only by FORTRAN. There have been many Lisp dialects over the years, but only four have any real following: Common Lisp: by far the largest, and in many ways the most complete dialect, Common Lisp emerged in the 1980s as a standard to unify the many research dialects of Lisp then in common usage. It has undergone something of a renaissance in the past few years. Scheme: Developed in 1975 by Gerald Sussman and Guy Steele at MIT, Scheme was originally designed as a vehicle for studying the then-new Actor model. Originally called "Schemer", the present name is an artifact of the six character filename length limit on MIT's Incompatible Timesharing System (ITS), which ran on the PDP-10 Sussman and Steele used for the development of Scheme. Though often thought of as a teaching language, because of its simplicity and small size, it's quite capable. The GNU project uses Scheme as the basis of their Guile interpreter, the official embedded extension language for GNU programs. Clojure: One of the new languages to emerge in the past few years that targets the Java virtual machine, Clojure is a modern dialect with a strong concurrency model and excellent Java interoperability support. Emacs Lisp: The emacs extension language. Not a particularly good Lisp, by Richard Stallman's own admission. Included just for the sheer amount of emacs Lisp code out there.
2 responses total.
The origins of some Lisp nomenclature.... LISP is short for LISt Processing, and indeed, the eponymous data structure in Lisp is fundamental. There are two basic operations for taking lists apart: one to take the first element in a list, usually called 'CAR' (called "first" in Clojure), the second to return the rest of the list, usually called 'CDR' (called "rest" in Clojure). These operations owe their names to early Lisp implementations on the 36-bit IBM 704, 7090, and 7094, which had operation codes for taking 15 bit values and storing them in a single 36-bit machine word (the other six bits were used as flags and the like). These fields were called the address and decrement fields, and there were instructions that took the 'Contents of Address Register' and 'Condents of Decrement Register.' The mnuemonics for these instructions eventually made their way into Lisp; it is with some sadness that one finds them missing from Clojure. Paul Graham has written extensively on Lisp and the things that make it unique. Among others, the notion of 'code as data'; that is, Lisp code is written as Lisp data (called forms, which are represented as nested lists). This allows for all sorts of neat manipulations to be performed on code, which leads to the notion of macros, but not in the sense of the C preprocessor: Lisp macros work on entire expressions, and are quite capable of destructuring code. Indeed, the whole of Lisp is available at compile-time during macro-expansion, leading to immense power. More of Graham's thoughts on what makes Lisp unique are here: http://www.paulgraham.com/icad.html I confess, Lisp is among my favorite programming languages.
wereeh is dadroc . ... spoeeking of lisp ...
Response not possible - You must register and login before posting.
|
|
- Backtalk version 1.3.30 - Copyright 1996-2006, Jan Wolter and Steve Weiss