Maclisp- Maclisp

Maclisp
Paradigmen Multiparadigma : funktional , prozedural , reflexiv , meta
Familie Lispeln
Entworfen von Richard Greenblatt
Jon L. White
Entwickler MIT : Projekt MAC
Erstmals erschienen Juli 1966 ; Vor 55 Jahren ( 1966-07 )
Schreibdisziplin dynamisch , stark
Implementierungssprache Assemblersprache , PL/I
Plattform PDP-6 , PDP-10
Betriebssystem Inkompatibles Timesharing-System , TOPS-10 , TOPS-20 , Multics
Dateinamenerweiterungen .lisp , .fasl
Beeinflusst von
Lispeln 1,5
Beeinflusst
Gemeinsame Lisp

Maclisp (oder MACLISP , manchmal auch MacLisp oder MacLISP genannt ) ist eine Programmiersprache , ein Dialekt der Sprache Lisp . Es entstand Ende der 1960er Jahre im Projekt MAC des Massachusetts Institute of Technology (MIT), von dem es sein Präfix ableitete, und basierte auf Lisp 1.5. Richard Greenblatt war der Hauptentwickler der ursprünglichen Codebasis für die PDP-6 ; Jon L. White war für die spätere Wartung und Entwicklung verantwortlich. Der Name Maclisp wurde in den frühen 1970er Jahren verwendet, um ihn von anderen Gabeln von PDP-6 Lisp, insbesondere BBN Lisp, zu unterscheiden .

Geschichte

Maclisp ist ein Nachkomme von Lisp 1.5 . Maclisp weicht von Lisp 1.5 ab, indem eine Wertezelle verwendet wird , um auf die dynamischen Werte von Variablen zuzugreifen und sie zu speichern ; Lisp 1.5 verwendete eine lineare Suche in einer Assoziationsliste, um den Wert einer Variablen zu bestimmen. Die Maclisp-Variablenauswertung ist schneller, hat aber eine andere Variablensemantik. Maclisp setzte auch Lesemakros ein, um die Ein- und Ausgabe lesbarer zu machen , die als Eingabe/Ausgabe (I/O) bezeichnet wird. Anstatt (QUOTE A)einzugeben, könnte man auch eingeben 'A, um denselben s-Ausdruck zu erhalten . Obwohl beide Implementierungen Funktionen in die Eigenschaftsliste aufnehmen, verwendet Maclisp eine andere Syntax zum Definieren von Funktionen. Maclisp verfügt auch über eine Load-on-Demand-Funktion.

Maclisp begann auf den Computern PDP-6 und PDP-10 der Digital Equipment Corporation, auf denen das inkompatible Timesharing-System (ITS) ausgeführt wurde; später wurde es auf alle anderen PDP-10-Betriebssysteme portiert, zum Beispiel Timesharing / Total Operating System , TOPS-10 und TOPS-20 . Die ursprüngliche Implementierung war in Assemblersprache , aber eine spätere Implementierung auf Multics verwendete PL/I . Maclisp entwickelte sich im Laufe seines Lebens beträchtlich. Es wurden wichtige Funktionen hinzugefügt, die in anderen Sprachsystemen normalerweise den Hauptversionsnummern entsprechen.

Maclisp wurde verwendet, um das Macsyma Computeralgebra System (CAS) oder Symbolische Algebra Programm zu implementieren . Die Entwicklung von Macsyma führte auch zu mehreren Funktionen in Maclisp. Das SHRDLU Blocks-World-Programm wurde in Maclisp geschrieben, und so war die Sprache in den frühen 1980er Jahren in der Forschungsgemeinschaft der künstlichen Intelligenz (KI) weit verbreitet . Es wurde auch verwendet, um andere Programmiersprachen wie Planner und Scheme zu implementieren . Multics Maclisp wurde verwendet, um den ersten auf Lisp basierenden Emacs zu implementieren .

Maclisp war eine einflussreiche Lisp-Implementierung, wird aber nicht mehr aktiv gepflegt. Es läuft jetzt auf PDP-10- Emulatoren und kann zum Experimentieren mit frühen KI-Programmen verwendet werden.

Eigenschaften

Maclisp begann mit einer kleinen, festen Anzahl von Datentypen : cons cell, atom (später als symbol bezeichnet ), integer und float number . Spätere Ergänzungen umfassten: Arrays , die nie erstklassige Datentypen waren; Ganzzahlen mit beliebiger Genauigkeit (Bignums); Saiten ; und Tupel . Alle Objekte (außer inums) wurden als Zeiger implementiert , und ihr Datentyp wurde durch den Speicherblock bestimmt, auf den es zeigte, mit einem Sonderfall für kleine Zahlen (inums).

Programme könnten interpretiert oder kompiliert werden . Das kompilierte Verhalten war das gleiche wie interpretiert, außer dass lokale Variablen im kompilierten Code standardmäßig lexikalisch waren, es sei denn, SPECIAL deklariert wurde, und für Inline-Operationen wie CAR und CDR wurde keine Fehlerprüfung durchgeführt. Der Ncomplr-Compiler (Mitte der 1970er Jahre) führte eine schnelle numerische Unterstützung für Lisp-Sprachen ein, indem er Maschinencode (Anweisungen) für die Arithmetik generierte, anstatt interpretative Routinen aufzurufen, die auf Datentyp abfertigten. Dies machte die Lisp-Arithmetik für Skalaroperationen mit Fortran vergleichbar (obwohl die Fortran-Array- und Schleifenimplementierung viel schneller blieb).

Die ursprüngliche Version war durch die 18-Bit- Wortspeicheradresse des PDP-10 begrenzt, und es wurde erheblicher Aufwand betrieben, um die Implementierung schlank und einfach zu halten. Multics Maclisp hatte einen weitaus größeren Adressraum, war aber teuer in der Nutzung. Als die Speicher- und Rechenleistung des PDP-10 überschritten wurde, wurde die Lisp Machine erfunden: Lisp Machine Lisp ist der direkte Nachkomme von Maclisp. Mehrere andere Lisp- Dialekte wurden ebenfalls verwendet, und die Notwendigkeit, die Gemeinschaft zu vereinen, führte zur modernen Common Lisp- Sprache.

Name

Maclisp wurde nach Project MAC benannt und hat nichts mit Apples Macintosh (Mac) Computer zu tun, der um Jahrzehnte älter ist. Die verschiedenen Lisp-Systeme für den Macintosh haben keine besondere Ähnlichkeit mit Maclisp.

Verweise

Externe Links