NIL (język programowania) - NIL (programming language)

Zero
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 ; 41 lat temu ( 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”.

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