Maclisp - Maclisp
| Paradigmata | Multi-paradigma : funkční , procedurální , reflexní , meta |
|---|---|
| Rodina | Lisp |
| Navrhl |
Richard Greenblatt Jon L. White |
| Vývojář | MIT : Projekt MAC |
| Poprvé se objevil | Červenec 1966 |
| Kázeň při psaní | dynamický , silný |
| Implementační jazyk | Jazyk montáže , PL/I |
| Plošina | PDP-6 , PDP-10 |
| OS | Nekompatibilní systém sdílení času , TOPS-10 , TOPS-20 , Multics |
| Rozšíření názvu souboru | .lisp , .fasl |
| Ovlivněn | |
| Lisp 1,5 | |
| Ovlivněn | |
| Lisp | |
Maclisp (nebo MACLISP , někdy stylizovaný MacLisp nebo MacLISP ) je programovací jazyk , dialekt jazyka Lisp . Vznikl na projektu MAC Massachusetts Institute of Technology (MIT) Project (z něhož odvozoval svou předponu) na konci šedesátých let minulého století a byl založen na Lisp 1.5. Richard Greenblatt byl hlavním vývojářem původní kódové základny pro PDP-6 ; Jon L. White byl zodpovědný za jeho pozdější údržbu a vývoj. Název Maclisp se začal používat na začátku 70. let, aby se odlišil od ostatních vidlic PDP-6 Lisp, zejména BBN Lisp .
Dějiny
Maclisp je potomkem Lisp 1.5 . Maclisp se odchyluje od Lisp 1.5 pomocí buňky hodnot pro přístup a ukládání dynamických hodnot proměnných ; Lisp 1.5 použil lineární vyhledávání seznamu přidružení k určení hodnoty proměnné. Vyhodnocení proměnné Maclisp je rychlejší, ale má odlišnou sémantiku proměnných. Maclisp také používal čtecí makra pro lepší čitelnost vstupu a výstupu , nazývaných vstup/výstup (I/O). Místo zadávání (QUOTE A)lze zadat 'Astejný výraz s . Ačkoli obě implementace zařazují funkce na seznam vlastností, Maclisp používá k definování funkcí odlišnou syntaxi. Maclisp má také funkci load-on-demand.
Maclisp začínal na počítačích Digital Equipment Corporation PDP-6 a PDP-10 se systémem Incompatible Timesharing System (ITS); později byl přenesen do všech ostatních operačních systémů PDP-10, například Timesharing / Total Operating System , TOPS-10 a TOPS-20 . Původní implementace byla v jazyce sestavení , ale pozdější implementace na Multics používala PL/I . Maclisp se za dobu své existence značně rozvinul. Byly přidány hlavní funkce, které v jiných jazykových systémech obvykle odpovídají číslům hlavních vydání.
Maclisp byl použit k implementaci systému počítačové algebry Macsyma (CAS) nebo programu symbolické algebry. Vývoj Macsymy také vedl k několika funkcím v Maclispu. Program blokového světa SHRDLU byl napsán v Maclispu, a proto byl jazyk ve výzkumné komunitě umělé inteligence (AI) široce používán počátkem 80. let minulého století. To bylo také používáno k implementaci dalších programovacích jazyků, jako je Planner a Scheme . Multics Maclisp byl použit k implementaci prvního Emacsu založeného na Lispu .
Maclisp byl vlivnou implementací Lispu, ale již není aktivně udržován. Nyní běží na emulátorech PDP-10 a lze jej použít k experimentování s ranými programy AI.
| 1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LISP 1, 1,5, LISP 2 (opuštěný) | ||||||||||||||
| Maclisp | ||||||||||||||
| Interlisp | ||||||||||||||
| MDL (programovací jazyk) | ||||||||||||||
| Lisp Machine Lisp | ||||||||||||||
| Systém | R5RS | R6RS | R7RS malý | |||||||||||
| NULA | ||||||||||||||
| ZIL (Zork Implementation Language) | ||||||||||||||
| Franz Lisp | ||||||||||||||
| Lisp | ||||||||||||||
| Le Lisp | ||||||||||||||
| T | ||||||||||||||
| Chezovo schéma | ||||||||||||||
| Emacs Lisp | ||||||||||||||
| AutoLISP | ||||||||||||||
| PicoLisp | ||||||||||||||
| EuLisp | ||||||||||||||
| ISLISP | ||||||||||||||
| OpenLisp | ||||||||||||||
| Schéma PLT | Raketa | |||||||||||||
| GNU Guile | ||||||||||||||
| Vizuální LISP | ||||||||||||||
| Clojure | ||||||||||||||
| Oblouk | ||||||||||||||
| LFE | ||||||||||||||
| Hy | ||||||||||||||
Charakteristika
Maclisp začínal malým, pevným počtem datových typů : buňka proti , atom (později nazývaný symbol ), celé číslo a číslo s plovoucí desetinnou čárkou . Pozdější přírůstky zahrnovaly: pole , která nikdy nebyla prvotřídními datovými typy; celá čísla libovolné přesnosti (bignumy); struny ; a n -tice . Všechny objekty (kromě inums) byly implementovány jako ukazatele a jejich datový typ byl určen blokem paměti, do kterého ukazoval, se zvláštním případem pro malá čísla (inums).
Programy lze interpretovat nebo kompilovat . Zkompilované chování bylo stejné jako interpretované, kromě toho, že místní proměnné byly ve zkompilovaném kódu ve výchozím nastavení lexikální, pokud nebyly deklarovány jako ZVLÁŠTNÍ, a pro vložené operace, jako jsou CAR a CDR, nebyla provedena žádná kontrola chyb. Kompilátor Ncomplr (polovina 70. let) zavedl rychlou numerickou podporu jazyků Lisp, generující strojový kód (instrukce) pro aritmetiku, nikoli volání interpretačních rutin, které byly odesílány na datový typ. Díky tomu byla Lisp aritmetika rychlostí srovnatelná s Fortranem pro skalární operace (ačkoli implementace pole a smyčky Fortran zůstala mnohem rychlejší).
Původní verze byla omezena 18bitovou adresou paměti paměti PDP-10 a bylo vynaloženo značné úsilí, aby byla implementace štíhlá a jednoduchá. Multics Maclisp měl mnohem větší adresní prostor, ale jeho použití bylo nákladné. Pokud je v paměti a zpracování síla PDP-10 byla překročena, Lisp stroj byl vynalezen: Lisp stroj Lisp je přímý potomek Maclisp. Bylo také používáno několik dalších dialektů Lispu a potřeba sjednotit komunitu vyústila v moderní jazyk Common Lisp .
název
Maclisp byl pojmenován pro Project MAC a nesouvisí s počítačem Apple Macintosh (Mac), který předchází desítky let. Různé systémy Lisp pro Macintosh nemají žádnou zvláštní podobnost s Maclispem.
Reference
externí odkazy
-
http://www.softwarepreservation.org/projects/LISP/maclisp_family/ obsahuje bibliografii Maclispu.
- John L. White. Prozatímní uživatelská příručka LISP. Artificial Intelligence Memo No. 190, Project MAC, Massachusetts Institute of Technology, březen 1970, 87 stran. ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-190.pdf uvádí „MACLISP“ označuje implementaci PDP/6 programovacího jazyka LISP používaného ve skupině Artificial Intelligence Group projektu MAC . "
- „V letech 1973 a 1974 vedl David A. Moon snahu implementovat MacLisp na Honeywell 6180 pod Multics. Jako součást tohoto projektu napsal první skutečně komplexní referenční manuál pro Maclisp, který se stal známým jako„ Moonual “. " [Steele a Gabriel 1993]
- Jon L. White [JONL], Eric Rosen [ECR], Richard M. Stallman [RMS], Guy L. Steele Jr. [GLS], Howard I. Cannon [HIC], Bob Kerns [RWK]. Zprávy LISP. Poznámky k verzi MacLisp.
- Jon L. White. LISP: Program je Data: Historický pohled na MacLISP. Sborník z konference uživatelů MACSYMA z roku 1977. Vědecko -technická informační kancelář NASA (Washington, DC, červenec 1977), strany 181–189. PDF
- McCarthy, John ; Abrahams, Paul W .; Edwards, Daniel J .; Hart, Timothy P .; Levin, Michael I. (1985) [1962]. Příručka programátora LISP 1.5 (2. vydání). Stiskněte MIT . ISBN 0-262-13011-4.
- Měsíc, David (1974). Maclisp Reference Manual (PDF) .
- Revidovaný Maclisp manuál (1983) od Kenta Pitmana
- Kompilátor Multics MACLISP (1977) od Bernarda Greenberga