NIL (język programowania) - NIL (programming language)
Paradygmaty | Wieloparadygmat : funkcjonalny , proceduralny |
---|---|
Rodzina | Seplenienie |
Zaprojektowany przez | Jon L White |
Deweloperzy | Jon L White, Guy L. Steele Jr. , Richard P. Gabriel |
Po raz pierwszy pojawiły się | 1979 |
Dyscyplina typowania | dynamiczny , mocny |
Język implementacji | Montaż VAX |
Platforma | PDP-6 , PDP-10 |
OS | TOPS-10 , JEGO |
Wpływem | |
Lisp , Maclisp | |
Pod wpływem | |
Common Lisp , T |
New Implementation of LISP ( NIL ) to język programowania , dialekt języka Lisp , opracowany w Massachusetts Institute of Technology (MIT) w latach siedemdziesiątych XX wieku i mający być następcą języka Maclisp . Jest to implementacja 32-bitowa i była po części odpowiedzią na komputer VAX firmy Digital Equipment Corporation (DEC) . Projekt był kierowany przez Jona L White'a, a jego celem było utrzymanie kompatybilności z MacLisp podczas rozwiązywania wielu problemów.
Historia
Język Lisp został wynaleziony w 1958 roku przez Johna McCarthy'ego, kiedy był w Massachusetts Institute of Technology (MIT). Od samego początku Lisp był ściśle związany ze społecznością badawczą zajmującą się sztuczną inteligencją (AI) , zwłaszcza w systemach PDP-10 . Na 36-bitowy rozmiar słowa PDP-6 i PDP-10 wpłynęła użyteczność dwóch 18-bitowych wskaźników Lispa w jednym słowie: „Projekt PDP-6 rozpoczął się na początku 1963 roku jako maszyna 24-bitowa . W przypadku LISP-a, co było celem projektowym, urósł do 36 bitów ”. Lisp został wykorzystany jako implementacja języka programowania Micro Planner, który był podstawą słynnego systemu AI SHRDLU . Lisp, w szczególności Maclisp (nazwany tak, ponieważ pochodzi z projektu MAC projektu MIT) był również używany do implementacji systemu algebry komputerowej Macsyma . W latach 70., gdy badania nad sztuczną inteligencją zrodziły komercyjne odgałęzienia, wydajność istniejących systemów Lisp stała się coraz większym problemem.
Częściowo z powodu zbierania śmieci (Lisp używałby czyszczenia pamięci typu stop-and-copy ze swojej pojedynczej sterty do alokacji pamięci ), a częściowo z powodu reprezentacji struktur wewnętrznych, Lisp stał się trudny do uruchomienia na sprzęcie komputerowym z ograniczoną pamięcią dnia . Doprowadziło to do stworzenia maszyn Lisp : dedykowanego sprzętu do uruchamiania środowisk i programów Lisp. Alternatywą było użycie bardziej wydajnego sprzętu, który stawał się dostępny, zwłaszcza Digital Equipment Corporation (DEC) VAX .
NIL był implementacją Lispa opracowaną w MIT w połowie do późnych lat siedemdziesiątych XX wieku i miał być nowoczesnym następcą Maclisp, który był w stanie działać na podstawowym sprzęcie, w przeciwieństwie do Lisp Machine Lisp dla maszyn Lisp. „Pierwotnie zaprojektowany jako pierwszy nowoczesny dialekt Lisp na standardowym sprzęcie po opracowaniu Lisp maszyny Lisp w MIT, stał się jednym z głównych czynników wpływających na projekt Common Lisp”. (str. 63/294 z) Ponieważ użytkownicy programu Macsyma reprezentowali dużą potencjalną bazę użytkowników dla NIL, konieczne było, aby NIL był dużym, złożonym systemem, a szybkość byłaby konieczna. Na przykład szybkie bignum były wymagane do obsługi Macsymy, ponieważ NIL byłby niepowodzeniem w przypadku powolnych bignum. W konsekwencji NIL skończył z dużą bazą asemblera VAX . Te wymagania doprowadziły do bardzo agresywnej i złożonej strategii optymalizacji, która została zastosowana przedwcześnie, z negatywnym skutkiem na ostatecznym systemie.
Współbieżne z wysiłku, aby napisać zerowa, a grupa badawcza z Uniwersytetu Stanforda i Lawrence Livermore National Laboratory czele Richard P. Gabriel badali konstrukcję Lisp, aby uruchomić na S-1 Mark IIA superkomputera , S-1 Lisp . Ten Lisp nigdy nie był w pełni funkcjonalny, ale był polem testowym do implementacji zaawansowanych metod kompilatora w Lispie. Ostatecznie grupy S-1 i NIL zaczęły współpracować.
Chociaż nie udało się osiągnąć swoich celów jako używanego języka, NIL był ważny z kilku powodów. Najpierw zgromadzili Jona L. White'a, Guya L. Steele Jr. i Richarda P. Gabriela, którzy później zdefiniowali Common Lisp . Po drugie, Jonathan Rees pracował nad częścią projektu NIL podczas rocznej nieobecności na Uniwersytecie Yale . Po powrocie do Yale, został zatrudniony przez informatyki dziale napisać nowy Lisp, która stała się optymalizacja, kod natywny Schemat systemu o nazwie T . Po części NIL zrodził tę nazwę, ponieważ „T nie jest NIL”.
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2019 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2 (porzucone) | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Schemat | R5RS | R6RS | R7RS mały | |||||||||||
ZERO | ||||||||||||||
Franz Lisp | ||||||||||||||
Common Lisp | ||||||||||||||
Le Lisp | ||||||||||||||
T | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
Schemat PLT | Rakieta | |||||||||||||
GNU Guile | ||||||||||||||
Visual LISP | ||||||||||||||
Qi, QiII | Shen | |||||||||||||
Clojure | ||||||||||||||
Łuk | ||||||||||||||
LFE | ||||||||||||||
Hy |
cytaty
Geneza i ewentualna porażka tego rodzaju projektu jest zawsze wyraźnie widoczna (z perspektywy czasu) w dowodach wczesnych dyskusji. Jedna z kluczowych wskazówek zawsze ma formę: „ Wyrzucimy wszystkie stare skorupy , zaczniemy od nowa i po prostu Zrobimy wszystko dobrze”.
- Olin Shivers
Bibliografia
Bibliografia
- Brent T. Hailpern, Bruce L. Hitson. Podręcznik architektury S-1. Raport techniczny 161 (STAN-CS-79-715), Wydział Elektrotechniki Uniwersytetu Stanforda, styczeń 1979.
- G. Burke. Wprowadzenie do NIL. Laboratory for Computer Science, Massachusetts Institute of Technology, marzec 1983.
- GS Burke, GJ Carrette, CR Eliot. NIL Notes for Release 0.259, Laboratory for Computer Science, Massachusetts Institute of Technology, czerwiec 1983.
- GS Burke, GJ Carrette, CR Eliot. Podręcznik NIL. Raport MIT / LCS / TR-311, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, Massachusetts, 1983.
Dokumenty tożsamości
- Steven Correll. Architektura jednoprocesorowa S-1 (sma-4). Tom I, Rozdział 4, Raport roczny projektu S-1 1979, Lawrence Livermore Laboratory, Livermore, Kalifornia, 1979.
- Jon L. White. Zero: perspektywa. Proceedings of 1979 Macsyma Users 'Conference, Washington, DC, czerwiec 1979.
- Rodney A. Brooks, Richard P. Gabriel, Guy L. Steele Jr. S-1 Common Lisp Implementation. Materiały z sympozjum ACM z 1982 r. Na temat LISP i programowania funkcjonalnego, Pittsburgh, 1982, strony 108 - 113. ACM DL
- Rodney A. Brooks, Richard P. Gabriel, Guy L. Steele Jr. Optymalizujący kompilator dla LISP-a o zasięgu leksykalnym. Materiały z Sympozjum o budowie kompilatorów z 1982 r., Boston, czerwiec 1982 r., Strony 261–275. ACM DL
- Mark Smotherman. Superkomputer S-1 (1975–1988). Witryna sieci Web, ostatnia aktualizacja 24 kwietnia 2004 r. Http://www.cs.clemson.edu/~mark/s1.html