Suche gutes/umfangreiches LISP Tutorial, wenns geht auf deutsch, wenn nicht dann halt englisch



  • Hallo.

    Ich bin gerade auf der Suche nach einem GUTEN und UMFANGREICHEN LISP Tutorial.
    Wenns geht sollte es auf deutsch sein, geht aber auch auf englisch.

    Ich habe bisher ein LISP Tutorial gelesen, welches aber recht kurz war.

    Kennt da jemand was passendes?

    Danke im voraus.

    MfG, MöchtegernLISP-Progger

    ------------------------------------------------------------------------
    Ich kann mir um Himmels Willen nicht vorstellen, wo und vor allem WARUM man LISP einsetzen sollte, aber trotzdem ist die Sprache recht interessant.

    Vor allem erkenne ich den Zusammenhang zwischen LISP und KI-Programmierung nicht. Aber Ich habe erst angefangen LISP zu erlernen.









  • thx @ all, schau ich mir gleich mal an.



  • Hallo,

    es gibt ein interaktives (deutsch) Lisp-Tutorial der Uni-Trier:
    http://apsymac33.uni-trier.de:8080/Lisp-Kurs

    Da ist auch ein Online-Lisp-Interpreter dabei etc.
    Sehr empfehlenswert fuer den Anfang.



  • Eine Frage, weil hier gerade nur Lisp-Tutorials zu Common Lisp gepostet werden.
    Ist Common Lisp _der_ Lispdialekt den man unbedingt lernen sollte?
    Was ist mit Scheme? Wann Scheme, wann Commom Lisp?
    Danke!



  • Scheme ist kein Lisp Dialekt. Scheme sieht Lisp zwar ähnlich, ist aber in entscheidenden Punkten anders.

    Common Lisp ist einfach der aktuellste, modernste und standardisierteste (ANSI Standard) Lisp Dialekt. Es existieren eine Menge Bücher, Tutorials, Tools und IDEs dafür.

    Ob man Lisp oder Scheme nehmen sollte, muss man für sich persönlich entscheiden. Objektiv kann man das nicht festlegen, man kann höchstens einen Seiten langen Flamewar starten.



  • lispler schrieb:

    Eine Frage, weil hier gerade nur Lisp-Tutorials zu Common Lisp gepostet werden.
    Ist Common Lisp _der_ Lispdialekt den man unbedingt lernen sollte?
    Was ist mit Scheme? Wann Scheme, wann Commom Lisp?
    Danke!

    Es haengt davon ab, wozu du Lisp einsetzen moechtest. Ich versuche mal, die beiden Sprachen etwas zu beschreiben:

    Common Lisp ist eine ernsthafte Programmiersprache, in der man ernsthafte Programme schreiben kann. Leider ist die Standardbibliothek sehr gross und mit vielen Inkosistenzen versetzt.

    Scheme dagegen ist sehr leichtgewichtig und klein (der R5RS ist kuerzer als das Inhaltsverzeichnis von Guy Steele's Lisp Referenz CLTL (!!)). Die Standardbibliothek ist minimal gehalten. Die Sprache entstammt dem akademischen Umfeld und nicht der Industrie (wie CL). Scheme hat Continuations (ein sehr nettes Spielzeug), CL nicht.
    In der Praxis sieht es aber so aus, dass viele Scheme-Implementierungen mit einigen Erweiterungen kommen (fuer OOP, Webentwicklung, GUIs etc.).

    Trotzdem wuerde ich dir eher zu CL raten, auch wenn es im Gegensatz zu Scheme haesslich ist.



  • kingruedi schrieb:

    Scheme ist kein Lisp Dialekt.

    Warum ist Scheme kein Lisp-Dialekt? Scheme ist nicht Common Lisp, aber ein Lisp ist es doch auf alle Faelle. Wenn man Scheme den Status eines Lisp-Dialekts aberkennt, muesste man dies auch fuer Emacs-Lisp, Lush, newLisp, Dylan u.a. tun.
    Bitte versteh diesen Einwand nicht als kritisierend, mich interessiert nur deine Einschaetzung.



  • @Doktor Prokt
    hmm, nach dem ich von eingfleischten Schemern "schläge" erhalten habe, als ich meinte Scheme ist ein Lisp Dialekt, erhalte ich nun welche, weil ich es nicht sage 🙂

    Es gibt eben schon stärkere unterschiede zwischen Scheme und den Lisp-Dialekten die ich kenne. Zum einen wird der variablen- und funktions-namespace nicht mehr getrennt. Funktionsdefinitionen erfolgen nur über lambda etc. Meinetwegen kann man es aber auch als Lisp-Dialekt bezeichnen.

    Wie du schon sagtest würde ich als Programmiersprache eher zu Common Lisp raten. Scheme hat viele Dinge nicht standardisiert, wie OOP. So endet man oft mit Interpreter eigenen Erweiterungen. Scheme ist aber zum einbetten ideal (siehe zB Guile). Im Grunde muss man das aber selbst mit sich ausmachen.



  • Hallo

    Lisp ist nicht nur eine Programmiersprache, sondern ein Programmier*prinzip* ("alles ist eine Liste"), das von einer Familie von Sprachen realisiert wird.
    Ähnlich wie das Programmierprinzip "alles speichert auf dem Stack" von den
    Programmiersprachen Forth und Postscript realisiert wird.

    Um zu prüfen, ob Scheme ein Lisp-Dialekt ist, kann man es daher eigentlich
    nicht mit modernen Lisp-Dialekten oder CLOS vergleichen, sondern muß McCarthys Ur-Lisp als Vergleich heranziehen.
    Demzufolge ist Scheme ein Lisp-Dialekt.

    Um zu prüfen, ob eine Sprache X zur C-Sprachfamilie gehört, würde man ja auch nicht
    X mit C++0x oder D vergleichen, sondern mit K&R's C.

    Grüße



  • Ich denke nicht, dass man die Frage so leicht beantworten kann. Immerhin gibt es ja Unterschiede in fundamentalen Bereichen zwischen Lisp und Scheme. Aber mir ist es eigentlich egal. Gibt eben Schemer die sagen es sei kein Lisp. Aber wenn ihr das nicht so machen wollt, dann bitte.



  • Diese Klassifizierungen sind wohl recht uneindeutig. Nach Hobbyprogrammierers Definition ist Dylan kein Lisp, weil Daten nicht als Listen repraesentiert werden, aber es gibt viele Dylan-Programmierer, die behaupten, es sei ein Lisp.

    Dass Hobbyprogrammierer Verbindungen zwischen Scheme und 'Lisp' nur ueber ein Ur-Lisp von McCarthy sieht, kann ich nicht nachvollziehen. So benutzte Lisp 1.5 fuer Programme zB noch M-Expressions, die mit Scheme ueberhaupt nichts zu tun haben. Dazu kommt noch, dass Scheme das erste Lisp .. aehh .. die erste Lisp aehnliche Programmiersprache war, die den dynamic scope eingefuehrt hat.



  • Hallo,

    @Doktor Prokt:

    Zugegebenermaßen, man *kann* drüber streiten. Aber ich denke, im Großen und
    Ganzen und mit etwas Abstand betrachtet ist Scheme ein Lisp-Abkömmling.

    Daß man Scheme und Lisp *nur* über Ur-Lisp vergleichen kann, habe ich nicht
    geschrieben. Ich schrieb, daß man nicht sagen kann "CLOS und Scheme sind sich
    gar nicht mehr ähnlich, also ist Scheme kein Lisp", sondern daß man die
    zugrundeliegenden Prinzipien ins Kalkül ziehen muß, und die erkennt man bei Lisp nun mal am besten am Ur-Lisp.

    Aber mal was Anderes, zum selben Thema:

    Wieso gibt es eigentlich DAS Ruby, DAS Python, DAS C++, aber nicht DAS Scheme ?
    Wenn ich den aktuellen Ruby-Interpreter haben will gehe ich zu rubylang org und
    erhalte dort für aktuelle Plattformen eine (und nur eine) Programmiersprache,
    die letztendlich von einer Person definiert wird. Ähnlich für Python und
    python org.

    Wohin muß ich gehen, wenn ich DAS Scheme haben will ? Gibt es überhaupt eine
    definitive Implementation, mit Bibliotheken für GUI,regexp und alles Andere,
    was so für heutige Projekte notwendig ist, für verschiedene Plattformen ?

    Wie kann ich sicher gehen, das Scheme zu verwenden, das auch von den meisten
    anderen verwendet wird und auch in ein paar Jahren noch gepflegt und weiterentwickelt wird, so wie das bei anderen aktuellen Sprachen ist ?

    Ich würde schon mal gerne Scheme im Rahmen eines kleinen Projektes
    verwenden, aber solange die obigen Fragen nicht geklärt sind, geht es
    nur leider nicht.

    Grüße



  • Hobbyprogrammierer schrieb:

    Hallo,
    Wieso gibt es eigentlich DAS Ruby, DAS Python, DAS C++, aber nicht DAS Scheme ?

    Ruby und Python werden durch eine Implementierung definiert, Scheme hingegen durch eine Spezifikation (den Revised Report), den jeder implementieren kann, der will.

    Wenn du dich auf eine Scheme-Implementierung spezialisierst (PLT-Scheme und chicken sind ganz nett), stellt dies ja keinen Unterschied zur Benutzung von Ruby oder Python dar, weil du dieses spezielle Scheme als eine neue Sprache ansehen kannst, die wiederum durch eine Implementierung definiert wird 😉

    Es gibt zudem noch die SRFI (Scheme Requests for Implementation). Das ist eine Menge von Bibliotheken, die viele Scheme-Umgebungen (teilweise) implementieren. Das gibt deinen Scheme-Anwendungen zumindest einen Hauch von Portabilitaet.

    Uebrigens: Es gibt nicht DAS C++. C++ ist durch einen ANSI-Standard definiert und es gibt verschiedene Implementierungen (GNU, Borland, Microsoft etc.).

    Gruss,
    Christian



  • Hallo

    danke für den Hinweis auf PLT und chicken Scheme. Werde das mal ausprobieren,
    bisher habe ich siod und elk Scheme ausprobiert.
    Aber, wie gesagt, ich bin
    mir sehr unsicher in der Frage, ob ich damit Scheme-Programme werde schreiben
    können, die auch noch auf dem nächsten Computer, mit anderen OS oder anderen
    Scheme-Interpretern zusammen funktionieren.
    Scheme scheint wirklich eine hübsche Sprache zu sein.

    Grüße


Anmelden zum Antworten