31 agosto, 2019

Notarelle storiche sul Lisp - 8


Continuo da qui l'esplorazione dagli inizi del Lisp. Continuo con History of Lisp di John McCarthy, sono arrivato a From LISP 1 to LISP 1.5, qui a p.10.

Salta fuori molto presto che ci sono cose da migliorare o cambiare, troppo difficile (per me) farne il riassunto. C'è anche una confessione divertente di JMC, inizialmente pensa che il lexical scope sia un bug e che Steve Russell correggerà presto. Sì fatto, anche per Algol 60, bravo Steve!

eval è ottimo come interprete ma il compilatore deve ancora arrivare: [t]he first attempt at a compiler was made by Robert Brayton, but was unsuccessful. The first successful LISP compiler was programmed by Timothy Hart and Michael Levin. It was written in LISP and was claimed to be the first compiler written in the language to be compiled.

Quelli che hanno fatto l'impresa: [m]any people participated in the initial development of LISP, and I haven’t been able to remember all their contributions and must settle, at this writing, for a list of names. I can remember Paul Abrahams, Robert Brayton, Daniel Edwards, Patrick Fischer, Phyllis Fox, Saul Goldberg, Timothy Hart, Louis Hodes, Michael Levin, David Luckham, Klim Maling, Marvin Minsky, David Park, Nathaniel Rochester of IBM, and Steve Russell.

Poi si passa Beyond LISP 1.5. As a programming language LISP had many limitations. Some of the most evident in the early 1960s were ultra-slow numerical computation, inability to represent objects by blocks of registers and garbage collect the blocks, and lack of a good system for input-output of symbolic expressions in conventional notations. All these problems and others were to be fixed in LISP 2. In the meantime, we had to settle for LISP 1.5 developed at M.I.T. which corrected only the most glaring deficiencies.

The LISP 2 project was a collaboration of Systems Development Corporation and Information International Inc., and was initially planned for the Q32 computer, which was built by IBM for military purposes and which had a 48 bit word and 18 bit addresses, i.e., it was better than the IBM 7090 for an ambitious project. Unfortunately, the Q32 at SDC was never equipped with more than 48K words of this memory. When it became clear that the Q32 had too little memory, it was decided to develop the language for the IBM 360/67 and the Digital Equipment PDP-6. [...] The
project proved more expensive than expected, the collaboration proved more difficult than expected, and so LISP 2 was dropped
[...] this was regrettable, because much more money has since been spent to develop LISPs with fewer features. However, it was not then known that the dominant machine for AI research would be the PDP-10, a successor of the PDP-6.

The existence of an interpreter and the absence of declarations makes it particularly natural to use LISP in a time-sharing environment. It is convenient to define functions, test them, and re-edit them without ever leaving the LISP interpreter. A demonstration of LISP in a prototype time-sharing environment on the IBM 704 was made in 1960 (or 1961). (Nel corso di una dimostrazione importante partì GC scrivendo (at ten characters per second) “THE GARBAGE COLLECTOR HAS BEEN CALLED. SOME INTER-
ESTING STATISTICS ARE AS FOLLOWS:
” and on and on and on. The garbage collector was quite new at the time, we were rather proud of it and curious about it, and our normal output was on a line printer, so it printed a full page every time it was called giving how many words were marked and how many were collected and the size of list space, etc. During a previous rehearsal, the garbage collector hadn’t been called, but we had not refreshed the LISP core image, so we ran out of free storage during the demonstration.
Nothing had ever been said about a garbage collector, and I could only imagine the reaction of the audience. We were already behind time on a tight schedule, it was clear that typing out the garbage collector message would take all the remaining time allocated to the demonstration, and both the lecturer and the audience were incapacitated by laughter. I think some of them thought we were victims of a practical joker).


L. Peter Deutsch implemented the first interactive LISP on the PDP-1 computer in 1963, but the PDP-1 had too small a memory for serious symbolic computation.

Perso: quando ho iniziato a pasticciare con il Lisp (illo tempore) l'interprete interattivo, quello che oggi si chiama REPL, era quello che mi affascinava; vero che c'era anche con il Basic ma frequentavo molto meno.

The most important implementations of LISP proved to be those for the PDP-6 computer and its successor the PDP-10 made by the Digital Equipment Corporation of Maynard, Massachusetts. In fact, the half word instructions and the stack instructions of these machines were developed with LISP’s requirements in mind. The early development of LISP at M.I.T. for this line of machines and its subsequent development of INTERLISP (nee BBN LISP) and MACLISP also contributed to making these machines the machines of choice for artificial intelligence research. The IBM 704 LISP was extended to the IBM 7090 and later led to LISPs for the IBM 360 and 370.

Sempre sul personale: i DEC, prima PDP e poi VAX, erano le macchine sognate da tutti (tranne i commerciali); purtoppo gli utenti sono poi risultati rivali di Unix, a parte i PCisti.

[T]he LISP 1.5 Programmer’s Manual by McCarthy, Levin, et. al. in 1962 was published by M.I.T. Press. After the publication of (McCarthy and Levin 1962), many LISP implementations were made for numerous computers. However, in contrast to the situation with most widely used programming languages, no organization has ever attempted to propagate LISP, and there has never been an attempt at agreeing on a standardization.

JMC conclude con LISP is now the second oldest programming language in present widespread use (after FORTRAN and not counting APT, which isn’t used for programming per se). It owes its longevity to two facts. First, its core occupies some kind of local optimum in the space of programming languages given that static friction discourages purely notational changes. Recursive use of conditional expressions, representation of symbolic information externally by lists and internally by list structure, and representation of program in the same way will probably have a very long life. Second, LISP still has operational features unmatched by other language that make it a convenient vehicle for higher level systems for symbolic computation and for artificial intelligence. These include its run-time system that give good access to the features of the host machine and its operating system, its list structure internal language that makes it a good target for compiling from yet higher level languages, its compatibility with systems that produce binary or assembly level program, and the availability of its interpreter as a command language for driving other programs.
LISP will become obsolete when someone makes a more comprehensive language that dominates LISP practically and also gives a clear mathematical semantics to a more comprehensive set of features.


Ancora vero oggi quando il documento ha ben 40 anni; c'è stata un'evoluzione del LISP che ha generato discendenti, p.es. Scheme e Racket. Ha influenzato altri linguaggi, ne sono nati tanti altri, anche concorrenti del LISP, p.es. o funzionali. Continua --secondo qualcuno-- a esserci anche il FORTRAN, anche lui presente nei periodici RedMonk Programming Language Rankings in buona posizione.

OK, pausa ma continuo, siamo ancora agli inizi.
🔴

Nessun commento:

Posta un commento