Eine Einführung und Tutorial für Common Lisp

Quelle: http://www.apl.jhu.edu/~hall/lisp.html (c) Marty Hall

An Introduction and Tutorial for Common Lisp [German]

Dieses Dokument bietet eine kleine Auswahl an Quellen und Referenzen zu Common Lisp. Ursprünglich wurde es für Studenten im Teilzeit MS-Programm in Computerwissenschaften an der John-Hopkins-Universität vorbereitet. Der größte Teil dieses Dokumentes wurde vor mindestens 10 Jahren geschrieben, da ich nun die meiste Zeit damit verbringe, mit Java und Ajax zu arbeiten. Nichtsdestotrotz, sendet bitte eure Korrekturen und Vorschläge an Marty Hall ([email protected]). Das Originaldokument ist auf http://www.apl.jhu.edu/~hall/lisp.html verfügbar. Beachtet auch die weißrussische Version dieses Tutorials, das von Paul Bukhovko übersetzt und von fatcow angeboten wird.

Bitte beachtet, dass einige Dokumente in PostScript geschrieben sind. Wenn euer Browser PostScript nicht anzeigen kann, so können sie dennoch gespeichert und ausgedruckt werden.

Inhaltsverzeichnis

Bücher zu Lisp

Dies sind einige meiner persönlichen Favoriten zu Lisp, AI-Programming und allgemeine AI-Texte. Ich kann alle davon aus persönlicher Erfahrung empfehlen! Klickt auf die Titel, um mehr Informationen zu erhalten oder die Bücher online zu bestellen.

  • Grundlegendes Common-Lisp-Programmieren
    • Kein AI-Blickwinkel: Mäßig rasant: ANSI Common Lisp by Paul Graham. Die beste Einführung zu Common Lisp als universelle Programmiersprache. Jedoch etwas schwierig für unerfahrene Programmierer.
    • AI-Blickwinkel: Lisp by Winston and Horn. Die klassischen AI-Applications in Lisp-Text.

Online Lisp References

  • HyperSpec. Eine HTML-Version der offiziellen ANSI-Specification für Common Lisp. Von Kent Pitman und Harlequin Inc. Kein Tutorial, sondern es definiert komplett jede Funktion, Variable und Konstruktion von Common Lisp.
    • Table of Contents- Inhaltsangabe
    • Highlights (alternate Table of Contents) – Höhepunkte (alternative Inhaltsangabe)
    • Master-Index.

Index aller Worte in Common Lisp (Variablen, Funktionsnamen, etc.)

  • Common Lisp: The Language (2nd Edition, HTML version). Dies war die offizielle Sprachdefinition vor dem Release der ANSI-Specification. Noch immer ist es eine nützliche Quelle.
    • Table of Contents- Inhaltsangabe
    • Index.
    • Intro/Overview – Einführung/Überblick
  • The draft ANSI specification for Common Lisp (PostScript by sections).Der Entwurf der ANSI-Specification für Common Lisp (PostScript in Sektionen) Für Onlinezugriff, benutzt den HyperSpec., aber die endgültige ANSI-Spec ist in PostScript nicht kostenfrei erhältlich.
  • Online-Guide zum CLOS MOP (Meta-Object-Protokoll)
  • How to access Common Lisp: The Reference from the local machine (Nur für apl.jhu.edu-Benutzer).
  • Benutzer-Guide for CLIM 2.0. User’s Guide ist von Harlequin. CLIM ist der Common Lisp Interface Manager, eine Grafikbibliothek, die von mehreren verschiedenen Anbietern unterstützt wird.
  • Eine kurze Bibliographie von Lisp-Quellen Auch in PostScript verfügbar.

Themen für LISP-Anfänger und fortgeschrittene Anfänger

  • Eine eine Seite lange Zusammenfassung der grundlegendsten Lisp-Konstruktionen (PostScript)
  • Einige Thumbnail-Zusammenfassungen. Die PostScript-Versionen sind eine Seite.
    • When to use or not use quote = Wann quote benutzt wird und wann nicht
    • cond, let, und let*. Auch erhältlich in PostScript mit kurzer loop-Info auf derselben Seite.
    • loop. Auch erhältlich in PostScript.
    • format, Lisp’s Antwort auf C’s fprintf. Auch erhältlich in PostScript.
    • Strukturen und defstruct-Syntax. Auch erhältlich in PostScript.
    • backquote (PostScript).
    • CLOS. Auch erhältlich in PostScript.
  • Very brief summary of how to interact with Lisp from within emacs. Sehr knappe Zusammenfassung, wie man mit Lisp aus emacs heraus interagiert. Seht die PostScript emacs Handouts (Schnelle Quellenliste und Intro) für mehr Details.
  • Etwas detailliertere Zusammenfassung , wie man mit Lisp aus Xemacs, GNU-Emacs, unter X-Windows oder von einfachen Terminals aus interagiert. Seht die PostScript-Emacs-Handouts (Schnelle Quellenliste und Intro) für mehr Details.
  • Noch kürzere Zusammenfassung, um vi für Lisp zu nutzen. Wie man Parens [Klammern] blinkt und Auto-Indentation durchführt.
  • Erfassung der Ergebnisse einer interaktiven Lisp-Session. Etwa: wie werden die Testergebnisse in der Datei gepeichert? Es gobt Lis-spezifische (dribble), UNIX-spezifische (script) und emac-spezifische Methoden. In allen Fällen wird die Benutzung des Show-Output-Makros es einfacher machen, die Testfälle zu sichern.
  • Die Abmachung, “*”s um globale Variablennamen in Lisp zu setzen.
  • Eine einfache Common-Lisp-Implementation der Hanoi-Tower.
  • Eine Common-Lisp-Implementation des N-Queens-Problems . Findet eine Lösung zum N-Queens-Problem für alle N4 oder größer.Die Lösung kann in Linearzeit gefunden werden (konstante Zeit pro Queen) obwohl das Ausdrucken des Boards O(N^2) viel Zeit kostet. Doch es ist keine Suche mit einbezogen. Wenn ihr einen Java-fähigen Browser habt, besucht http://www.apl.jhu.edu/~hall/NQueens.html um eine interaktive Version davon in Java zu sehen..
  • Ein sehr kurzes Beispiel, wie man die Common Lisp-Funktion sort benutzt,

Themen für mittelweit Fortgeschrittene/Fortgeschrittene Lisp-Programmierer

  • Eine Einführung in höherklassige Common-Lis-Funktionen. Höherklassige Funktionen sind  solche, die andere Funktionen als Argumente benutzen. Funktionen in Lisp herumwandern zu lassen ist eines seiner charakteristischen Merkmale. Auch erhältlich in PostScript.
  • Ein Makro genannt Show-Output, das euch eure Testfälle speichern lässt.. Show-Output zu benutzen ist nicht schwierig: ihr füllt nur Formblätter aus und jedes davon wird mit den Rückkehrwerten der Form  ausgedruckt. Es zu schreiben, erfordert allerdings ein grundlegendes Verständnis von Lisp-Macros.
  • Einige Tips zum Bewerten von Lisp-Codes (PostScript)
  • Ein Set simpler Timing/Metering-Funktionen in Common Lisp.
  • Zerstörerische Operationen und Listperformanced. Auch erhältlich in PostScript.
  • Eine Einführung zu Common Lisp-Makros. Macros sind Forms, die Lisp-Codes generieren. Auch erhältlich in PostScript.
  • Ein Guide zu gutem Lisp-Stil (Postscript). Aus Peter Norvigs and Kent Pittmans LUV-93-Tutorial.
  • Jeff Daltons Liste von Common-Lisp-Fallstricken. Die meisten sind für den fortgeschrittenen Benutzer.
  • VT100 Cursor-Kontrolle aus Lisp..
  • Eine kurze Ballade, gewidmet dem Wachstum von Programmen (von Ashwin Ram).

CLOS

CLOS ist das „Common Lisp Object System“, ein leistungsstarkes OOP-Package, das in Common Lisp eingebaut ist.

  • Eine Thumbnail-Zusammenfassung von CLOS. Auch erhältlich als einseitiges PostScript file.
  • CLOS-Einführung – Vortragsnotizen. Auch erhältlich in PostScript.
  • Gewöhnliche CLOS-Fehler (PostScript).
  • Einige Details zu defclass. Auch erhältlich in PostScript.
  • Einige Details zu defgeneric. Auch erhältlich in PostScript.
  • Ein vereinfachtes Interface defclass . Das Def-Class-Macro lässt euch schreiben:
(Def-Class Class (Parents)
  (Slot-1 Val-1)
  (Slot-2 Val-2)
  Slot-3)

and get the effect of

(defclass Class (Parents)
  ((Slot-1 :initform Val-1 :accessor Slot-1 :initarg :Slot-1)
   (Slot-2 :initform Val-2 :accessor Slot-2 :initarg :Slot-2)
   (Slot-3                 :accessor Slot-3 :initarg :Slot-3)))

Das Define-Class-Makro hat eine identische Syntax mit Def-Class, aber es fügt einen einzigartigen Nameslot hinzu und macht die Buchhaltung, um die Übersicht über Belegstellen zu behalten. Es unterstützt Instances, um Objekte der gegebenen Klasse zu erhalten, Direct-Instances, um Objekte der gegebenen Klasse (aber keiner Subklasse) zu erhalten und verschiedene andere Buchhaltungs-Prozeduren.

  • Optimizations in the Symbolics CLOS Implementations. [= Optimierungen in der Symbolischen CLOS-Implementation] A paper by D. Scott Cyphers and David Moon showing how CLOS could be implemented efficiently. Ein Aufsatz von D. Scott Cyphers und David Moon, der zeigt, wie CLOS effizient implementiert werden könnte.

Internet Lisp Resources

  • Ein freies Common Lisp für Windows. Dies ist eine Version des populären Allegro Common Lisp für Windows, mit einigen Beschränkungen wie einer limitierten Heapsize, keine Unterstützung fremder Anwendungen, kein compile-file, kein Disassembler, und keine Bildspeicherung. Nichtsdestotrotz ist compile erhältlich und Dateien werden kompiliert, wenn sie geladen werden (ihr könnt die kompilierte Version nur nicht auf Disk speichern). Abgesehen davon ist dies dieselbe Version wie ihre kostenpflichtigen Implementationen. Eine erstklassige Wahl für Studenten, die Windows-Rechner besitzen. Beinhaltet ist auch ein interaktives Tutorial. Diese Seite erlaubt auch, eine kostenfreie Evaluations-Kopie von Allegro CL für UNIX herunterzuladen. Beachtet auch die the Franz Web Site für weitere Informationen zu diesem angebot.
  • Ein anderes kostenfreies Common Lisp für Windows. Von Harlequin, Inc., Hersteller der UNIX LispWorks-Umgebung, dies ist eine beschränktere Implementation, die früher nur für den akademischen Gebrauch bestimmt war. Ohne Compiler.
  • Eine zeitlich limitierte Evaluationskopie von Macintosh Common Lisp 4.0 Von Digitool.
  • Pointers zu anderen kostenfreien Common Lisps, die im Netz für UNIX, VMS, DOS/Windows und Macintosh erhältlich sind. . Extrahiert aus Version 1.48 der FAQ for comp.lang.lisp. Schaut hier für die neuesten Einzelheiten.
  • Vortragsnotizen, Handouts und einige Übungen aus Marty Halls AI-Programmier-Klasse im Hopkins Teilzeit-MS-Programm in CS.
  • Die Vereinigung der Lisp-User [The Association of Lisp Users (ALU)]
  • Tulanes interaktives Lisp-Tutorial. Von Eduardo Villamil.
  • Texas A&M grundlegendes Lisp-Tutorial. Von Colin Allen und Maneesh Dhagat.
  • Die FAQ (Frequently Asked Questions)-Liste von comp.lang.lisp.
  • CMUs Archiv der Common Lisp Codes.
  • Lisp-Quellen-Seite von der WWW Virtual Library.
  • Quellcode von drei beliebten Common-Lisp-Texten.
    • Paul Graham’s ANSI Common Lisp.
    • Paul Graham’s On Lisp: Advanced Techniques for Common Lisp.
    • Peter Norvig’s Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp.
  • Ein erweiterbarer http-Server geschrieben in Common Lisp. Vom MIT AI Lab.
  • Ein kostenpflichtiger ANSI-CL-zu-C-Übersetzer und Lisp-in-C-Bibliothek
  • Die comp.lang.lisp Usenet-Newsgroup. Ihr werdet einen Newsreader wie nn oder gnus anstelle eines WWW-Browsers verwenden wollen, wenn ihr euch wirklich dafür anmeldet.
  • Sammlung von Stellenbeschreibungen für Lisp-verwandte Positionen. Die meisten dieser Joby sind von der Lisp-Jobs-Mailingliste von Mark Kantrowitz (sende “help” im body) oder der comp.lang.lisp-Usenet-Group. Diese Sammlung ist im UNIX-Mailbox-Format. Um sie genau durchzusehen, wollt ihr sie wahrscheinlich downloaden und mit euren beliebtesten Mailreader lesen. Beinhaltet sind auch AI-verwandte Jobs, die nicht notwendigerweise Lisp erwähnen, wenn sie in der größeren Gegend von Baltimore/Washington sind. For complete archives of the Lisp-Jobs and AI-Jobs mailing lists, see Für komplette Sammlungen von Lisp-Job- und AI-Job-Mailinglisten, beachte auch die Archive der MU.

Lisp-verwandte Aufsätze

  • A Brief History of Lisp. (PostScript)
  • The Evolution of Lisp Eine detaillierte Geschichte von Lisp, von der HOPL-II-Konferenz 1993 (ACM History of Programming Languages). (PDF)
  • Lisp: Good News, Bad News, How to Win Big. Von AI Expert. Auch erhältlich in PostScript.
  • Hall, Marty und James Mayfield, “Improving the Performance of AI Software: Payoffs and Pitfalls in Using Automatic Memoization,” Procedings of Sixth International Symposium on Artificial Intelligence, Monterrey, Mexico, September 1993. (PostScript). Der Quellcode ist hier erhältlich. Siehe den oberen Teil von Memoization.lisp für eine schnelle Beschreibung der hauptsächlichen User-Level-Funktionen.
  • Aufsatz von Ken Anderson mit Details zu numerischen Optimierungen in Lisp mit Vergleich zu C. Auf einem Algorithmus basierend, der als fannkuch bekannt ist.(PostScript)
  • Henry Bakers außergewöhnliche Sammlung von Lisp-verwandten Aufsätzen. Beachte, dass Netcom regelmäßig überladen ist, weswegen es einige Versuche kosten könnte, bis eine Verbindung steht.
  • Ein Abriss von Speicherbereinigungstechniken von Paul Wilson. Erscheinend in ACMs Computing Surveys. (PostScript)
  • Speicherbereinigungs-FAQ geführt von David Chase von Centerline.
  • GC -Aufsätze von Hans-J Boehm bei Xerox PARC:

The original of this document can be found at http://www.apl.jhu.edu/~hall/lisp.html.
1996-99 Marty Hall ([email protected]).

Comments are closed.