NIL (linguaggio di programmazione) - NIL (programming language)
| Paradigmi | Multiparadigma : funzionale , procedurale |
|---|---|
| Famiglia | Lisp |
| Progettato da | Jon L White |
| Sviluppatori | Jon L White, Guy L. Steele Jr. , Richard P. Gabriel |
| Apparso per la prima volta | 1979 |
| Disciplina di battitura | dinamico , forte |
| Linguaggio di implementazione | Assemblaggio VAX |
| piattaforma | PDP-6 , PDP-10 |
| OS | TOPS-10 , ITS |
| Influenzato da | |
| Lisp , Maclisp | |
| Influenzato | |
| Lisp comune , T | |
La nuova implementazione di LISP ( NIL ) è un linguaggio di programmazione , un dialetto del linguaggio Lisp , sviluppato presso il Massachusetts Institute of Technology (MIT) negli anni '70 e destinato a essere il successore del linguaggio Maclisp . È un'implementazione a 32 bit ed è stata in parte una risposta al computer VAX della Digital Equipment Corporation (DEC) . Il progetto era diretto da Jon L White, con l'obiettivo dichiarato di mantenere la compatibilità con MacLisp risolvendo molti dei suoi problemi.
Storia
Il linguaggio Lisp è stato inventato nel 1958 da John McCarthy mentre era al Massachusetts Institute of Technology (MIT). Fin dal suo inizio, Lisp era strettamente connesso con la comunità di ricerca sull'intelligenza artificiale (AI) , in particolare sui sistemi PDP-10 . La dimensione della parola a 36 bit del PDP-6 e del PDP-10 è stata influenzata dall'utilità di avere due puntatori Lisp a 18 bit in una parola: "Il progetto PDP-6 è iniziato all'inizio del 1963, come una macchina a 24 bit . È cresciuto a 36 bit per LISP, un obiettivo di progettazione ". Lisp è stato utilizzato come implementazione del linguaggio di programmazione Micro Planner che è stato il fondamento del famoso sistema di intelligenza artificiale SHRDLU . Lisp, in particolare Maclisp (così chiamato perché originato dal progetto MAC del MIT) è stato utilizzato anche per implementare il sistema di computer algebra Macsyma . Negli anni '70, quando la ricerca sull'IA ha generato propaggini commerciali, le prestazioni dei sistemi Lisp esistenti sono diventate un problema crescente.
In parte a causa della garbage collection (Lisp userebbe la garbage collection stop-and-copy del suo singolo heap per l'allocazione della memoria ) e in parte a causa della sua rappresentazione delle strutture interne, Lisp divenne difficile da eseguire sull'hardware del computer di riserva limitato alla memoria del giorno . Ciò ha portato alla creazione di macchine Lisp : hardware dedicato per l'esecuzione di ambienti e programmi Lisp. Un'alternativa era utilizzare l'hardware più potente che stava diventando disponibile, in particolare il VAX della Digital Equipment Corporation (DEC) .
NIL era un'implementazione di Lisp sviluppata al MIT tra la metà e la fine degli anni '70 e intendeva essere un moderno successore di Maclisp in grado di funzionare su hardware di serie, a differenza del Lisp Machine Lisp per le macchine Lisp. "Progettato originariamente come il primo dialetto Lisp moderno su hardware di serie dopo lo sviluppo della macchina Lisp Lisp al MIT, è diventato una delle principali influenze sulla progettazione di Common Lisp." (pag. 63/294 di) Poiché gli utenti del programma Macsyma rappresentavano una vasta base di utenti potenziali per NIL, era necessario che NIL fosse un sistema ampio e complesso e quella velocità sarebbe stata un imperativo. Ad esempio, i bignum ad alta velocità erano un requisito per supportare Macsyma, poiché NIL sarebbe stato un fallimento con i bignum lenti. Di conseguenza, NIL si è ritrovato con un'ampia base di linguaggio assembly VAX . Questi requisiti hanno portato ad una strategia di ottimizzazione molto aggressiva e complessa che è stata applicata prematuramente, con risultati negativi sul sistema finale.
In concomitanza con lo sforzo di scrivere NIL, un gruppo di ricerca presso la Stanford University e il Lawrence Livermore National Laboratory guidato da Richard P. Gabriel stavano studiando il progetto di un Lisp da eseguire sul supercomputer S-1 Mark IIA , S-1 Lisp . Quel Lisp non è mai stato completamente funzionale, ma è stato un banco di prova per l'implementazione di metodi avanzati del compilatore in un Lisp. Alla fine i gruppi S-1 e NIL hanno iniziato a collaborare.
Sebbene non riuscisse a raggiungere i suoi obiettivi come lingua usata, NIL era importante in diversi modi. In primo luogo, ha riunito Jon L. White, Guy L. Steele Jr. e Richard P. Gabriel, che in seguito avrebbero definito Common Lisp . In secondo luogo, Jonathan Rees ha lavorato a una parte del progetto NIL durante un anno lontano dalla Yale University . Al ritorno a Yale, è stato assunto dal informatica reparto di scrivere un nuovo Lisp, che divenne l'ottimizzazione, codice nativo Scheme sistema denominato T . In parte, NIL ha generato questo nome, poiché "T non è NIL".
| 1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2019 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LISP 1, 1.5, LISP 2 (abbandonato) | ||||||||||||||
| Maclisp | ||||||||||||||
| Interlisp | ||||||||||||||
| Lisp Machine Lisp | ||||||||||||||
| schema | R5RS | R6RS | R7RS piccolo | |||||||||||
| NULLA | ||||||||||||||
| Franz Lisp | ||||||||||||||
| Common Lisp | ||||||||||||||
| Le Lisp | ||||||||||||||
| T | ||||||||||||||
| Chez Scheme | ||||||||||||||
| Emacs Lisp | ||||||||||||||
| AutoLISP | ||||||||||||||
| PicoLisp | ||||||||||||||
| EuLisp | ||||||||||||||
| ISLISP | ||||||||||||||
| OpenLisp | ||||||||||||||
| Schema PLT | Racchetta | |||||||||||||
| GNU Guile | ||||||||||||||
| Visual LISP | ||||||||||||||
| Qi, QiII | Shen | |||||||||||||
| Clojure | ||||||||||||||
| Arco | ||||||||||||||
| LFE | ||||||||||||||
| Hy | ||||||||||||||
Citazioni
La genesi e l'eventuale fallimento di questo tipo di progetto è sempre chiaramente visibile (col senno di poi) negli shibboleth delle prime discussioni. Una frase chiave di suggerimento è sempre qualcosa della forma: "Getteremo via tutto il vecchio cruft , ricominceremo da capo e faremo le cose bene".
- Olin Shivers
Riferimenti
Bibliografia
- Brent T. Hailpern, Bruce L. Hitson. Manuale di architettura S-1. Technical Report 161 (STAN-CS-79-715), Department of Electrical Engineering, Stanford University, gennaio 1979.
- G. Burke. Introduzione a NIL. Laboratorio di informatica, Massachusetts Institute of Technology, marzo 1983.
- GS Burke, GJ Carrette, CR Eliot. Note NIL per la versione 0.259, Laboratory for Computer Science, Massachusetts Institute of Technology, giugno 1983.
- GS Burke, GJ Carrette, CR Eliot. Manuale di riferimento NIL. Rapporto MIT / LCS / TR-311, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, Massachusetts, 1983.
Documenti
- Steven Correll. Architettura uniprocessore S-1 (sma-4). Volume I, Capitolo 4, The S-1 Project 1979 Annual Report, Lawrence Livermore Laboratory, Livermore, California, 1979.
- Jon L. White. Nil: una prospettiva. Atti del 1979 Macsyma Users 'Conference, Washington, DC, giugno 1979.
- Rodney A. Brooks, Richard P. Gabriel, Guy L. Steele Jr. S-1 Common Lisp Implementation. Atti del simposio ACM del 1982 su LISP e programmazione funzionale, Pittsburgh, 1982, pagine 108 - 113. ACM DL
- Rodney A. Brooks, Richard P. Gabriel, Guy L. Steele Jr. Un compilatore ottimizzante per un LISP con ambito lessicale. Atti del Simposio sulla costruzione di compilatori del 1982, Boston, giugno 1982, pagine 261-275. ACM DL
- Mark Smotherman. Supercomputer S-1 (1975-1988). Sito Web, ultimo aggiornamento 24 aprile 2004. http://www.cs.clemson.edu/~mark/s1.html