Maclisp - Maclisp
Paradigmata | Multi-paradigma: funkční, procesní, reflexní, meta |
---|---|
Rodina | Lisp |
Navrhl | Richard Greenblatt Jon L. White |
Vývojář | MIT: Projekt MAC |
Poprvé se objevil | Červenec 1966 |
Psací disciplína | dynamický, silný |
Jazyk implementace | Montážní jazyk, PL / I. |
Plošina | PDP-6, PDP-10 |
OS | Nekompatibilní systém sdílení času, TOPS-10, TOPS-20, Multics |
Přípony názvu souboru | .lisp, .fasl |
Ovlivněno | |
Lisp 1.5 | |
Ovlivněno | |
Společný Lisp |
Maclisp (nebo MACLISP, někdy stylizovaný MacLisp nebo MacLISP) je programovací jazyk, a dialekt jazyka Lisp. Vznikl v Massachusetts Institute of Technology (MIT) Projekt MAC[1] (ze kterého odvodil předponu) na konci 60. let a byl založen na Lisp 1.5.[2] Richard Greenblatt byl hlavním vývojářem původního codebase pro PDP-6;[1] Jon L. White byl zodpovědný za jeho pozdější údržbu a vývoj. Název Maclisp začal být používán na začátku 70. let, aby se odlišil od ostatních vidličky PDP-6 Lisp, zejména BBN Lisp.
Dějiny
Maclisp je potomkem Lisp 1.5.[3] Maclisp se odchyluje od Lispu 1,5 pomocí a buňka hodnoty pro přístup a uložení dynamických hodnot proměnné;[4] Lisp 1.5 použil k určení hodnoty proměnné lineární hledání seznamu přidružení.[5] Vyhodnocení proměnné Maclisp je rychlejší, ale má odlišnou sémantiku proměnných. Maclisp také použil čtecí makra, aby byl čitelnější vstup a výstup, nazývané vstup výstup (I / O). Místo vstupu (Citát A)
, jeden mohl vstoupit 'A
získat totéž s-výraz. Ačkoli obě implementace uvádějí funkce na seznam vlastností, Maclisp používá k definování funkcí jinou syntaxi.[6] Maclisp má také funkci načítání na vyžádání.[7]
Maclisp začal Digital Equipment Corporation PDP-6 a PDP-10 počítače se systémem Nekompatibilní systém sdílení času (SVÉ); později to bylo přeneseno na všechny ostatní operační systémy PDP-10, například Timesharing / celkový operační systém, TOPS-10 a TOPS-20. Původní implementace byla v montážní jazyk, ale pozdější implementace Multics použitý PL / I.. Maclisp se během svého života značně vyvinul. Hlavní rysy[který? ] byly přidány, které by v jiných jazykových systémech obvykle odpovídaly velkým číslům vydání.[pochybný ]
Maclisp byl použit k implementaci Macsyma počítačový algebraický systém (CAS) nebo symbolický algebraický program. Vývoj Macsymy také přinesl několik funkcí[který? ] v Maclispu. The SHRDLU program block-world byl napsán v Maclispu, a proto byl jazyk v umělá inteligence (AI) výzkumná komunita počátkem 80. let. To bylo také používáno k implementaci dalších programovacích jazyků, jako je Plánovač a Systém. Multics Maclisp byl použit k implementaci první založené na Lisp Emacs.
Maclisp byl vlivnou implementací Lispu, ale již není aktivně udržován. Nyní běží na PDP-10 emulátory a lze je použít k experimentování s časný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 | ||||||||||||||
Lisp stroj Lisp | ||||||||||||||
Systém | R5RS | R6RS | R7RS malý | |||||||||||
NULA | ||||||||||||||
Franz Lisp | ||||||||||||||
Společný Lisp | ||||||||||||||
Le Lisp | ||||||||||||||
T | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
Schéma PLT | Raketa | |||||||||||||
GNU Guile | ||||||||||||||
Vizuální LISP | ||||||||||||||
Clojure | ||||||||||||||
Oblouk | ||||||||||||||
LFE | ||||||||||||||
Hy |
Vlastnosti
Maclisp začal malým, pevným počtem typy dat: nevýhody buňka, atom (později nazvaný symbol), celé číslo, a číslo s plovoucí desetinnou čárkou. Pozdější doplňky zahrnovaly: pole, které nikdy nebyly prvotřídními datovými typy; celá čísla s libovolnou přesností (bignum); 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 směřoval, se zvláštním případem pro malá čísla (inums).
Programy mohou být interpretován nebo sestaven. Zkompilované chování bylo stejné jako interpretované, kromě toho, že lokální proměnné byly standardně v kompilovaném kódu lexikální, pokud nebyly deklarovány SPECIÁLNĚ,[8] a nebyla provedena kontrola chyb pro inline operace, jako je CAR a CDR. Překladač Ncomplr (polovina sedmdesátých let) zavedl rychlou numerickou podporu jazyků Lisp a generoval je strojový kód (pokyny) spíše pro aritmetiku než pro volání interpretačních rutin, které byly odeslány na datovém typu. Díky tomu byla Lispova aritmetika srovnatelná s rychlostí Fortran pro skalární operace (ačkoli implementace pole a smyčky Fortran zůstala mnohem rychlejší).
Původní verze byla omezena 18bitovým slovem adresa paměti PDP-10 a bylo vynaloženo značné úsilí na udržení štíhlé a jednoduché implementace. Multics Maclisp měl mnohem větší adresní prostor, ale jeho použití bylo nákladné. Když paměť a výpočetní výkon PDP-10 byly překročeny, Stroj Lisp byl vynalezen: Lisp stroj Lisp je přímým potomkem Maclispu. Několik dalších Lisp dialekty byly také používány a potřeba sjednotit komunitu vyústila v moderní Společný Lisp Jazyk.
název
Maclisp byl pojmenován pro Projekt MAC a nesouvisí s Apple Macintosh (Mac) počítač, kterému předchází desítky let. Různé systémy Lisp pro Macintosh nemají žádnou zvláštní podobnost s Maclispem.[9]
Reference
- ^ A b Levy, Steven (1984). Hackeři: Hrdinové počítačové revoluce. Doubleday. ISBN 0-385-19195-2.
- ^ Zpráva o pokroku projektu MAC IV: červenec 1966 až červenec 1967 (PDF) (Zpráva). n.d. p. 19.
Jazykem vyšší úrovně používaným pro většinu laboratorních programů vize je systém PDP-6 LISP. Tento systém je založen hlavně na programovacím jazyce LISP 1.5, ale byl rozsáhle upraven mnoha způsoby. Patří mezi ně mnoho nových funkcí a služeb, včetně zařízení pro propojení s programy napsanými v jiných jazycích.
- ^ Měsíc 1974, str. 1
- ^ Měsíc 1974, str. 47
- ^ Lisp 1,5 str. 13, vyhodnocení atomu
E
v prostředíA
je hotovo s(cdr (assoc e a))
. To zahrnuje lineární prohledávání seznamu přidruženíA
. Podrobnější popis s globálními konstantami a chybami je uveden na str. 71; před prohledáním seznamu přidružení provede lineární prohledání seznamu vlastností. - ^ Maclisp používá
defun
; Lisp 1.5 používádefinovat
. - ^ Měsíc 1974, str. 107; the
autoload
vlastnictví. - ^ Pitman, Kent (16. prosince 2007). „Revidovaný manuál Maclisp (The Pitmanual), nedělní ranní vydání“. maclisp.info. Deklarace HyperMeta, Inc. a překladač, koncept „Proměnné“. Citováno 20. října 2018.
Pokud byla proměnná, která má být vázána, prohlášena za speciální, vazba je kompilována jako kód, který napodobuje způsob, jakým tlumočník váže proměnné.
- ^ Pitman, Kent (16. prosince 2007). „Revidovaný manuál Maclisp (The Pitmanual), nedělní ranní vydání“. maclisp.info. HyperMeta Inc. str. 1 FAQ q1. Citováno 20. října 2018.
Projekt MAC neměl nic společného s Apple „Mac“. A MACLISP také ne.
externí odkazy
- http://www.softwarepreservation.org/projects/LISP/maclisp_family/ obsahuje bibliografii Maclisp.
- John L. White. Prozatímní uživatelská příručka LISP. Memorandum o umělé inteligenci č. 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 programovacího jazyka LISP PDP / 6 používaného ve skupině umělé inteligence projektu MAC.“
- „V letech 1973 a 1974 David A. Moon vedl snahu implementovat MacLisp na Honeywell 6180 pod Multics. V rámci tohoto projektu napsal první skutečně komplexní referenční příručku pro Maclisp, která se stala známou 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]. Novinky LISP. Poznámky k verzi MacLisp.
- Jon L. White. LISP: Program is Data: A Historical Perspective on MacLISP. Sborník konference uživatelů MACSYMA z roku 1977. Vědecká a technická informační kancelář NASA (Washington, D.C., červenec 1977), strany 181-189. PDF
- McCarthy, Johne; Abrahams, Paul W .; Edwards, Daniel J .; Hart, Timothy P .; Levin, Michael I. (1985) [1962]. Příručka programátora LISP 1.5 (2. vyd.). MIT Stiskněte. ISBN 0-262-13011-4.CS1 maint: ref = harv (odkaz)
- Měsíc, Davide (1974). Referenční příručka Maclisp (PDF).CS1 maint: ref = harv (odkaz)
- Revidovaný Maclisp manuál (1983) Kent Pitman
- Kompilátor Multics MACLISP (1977) Bernard Greenberg