Ich bezweifle, CLOS würde als eine Krücke für alte Gewohnheiten dienen, fand ich es ziemlich anders als der OO-Stil in C++/Java/Python, und sehr interessant. Ich verstehe nicht alle Details, aber ich würde Peter Seibels Practical Common Lisp empfehlen. Wenn Sie On Lisp ohne viel Mühe lesen, sollten Sie in the chapters introducing CLOS in PCL tauchen können. Außerdem würde ich seine Google Tech Talk empfehlen, die Java und Common Lisp vergleicht.
Hier noch ein paar Empfehlungen dies eine vollwertige Antwort zu geben:
mit der Einführung Zustand und Veränderlichkeit
Der klassische Text Structure and Interpretation of Computer Programs deckt schon einige Beispiele in Kapitel 3 von Aufbau modularer Systeme mit Verschlüssen (und befasst sich mit Fragen). Kapitel 2 enthält einige generische und daten-/typspezifische Programme, die hilfreich sein können, um das CLOS-Lernen zu motivieren. Dieses Buch braucht wirklich keine Einführung, es ist eine gewaltige Arbeit und ich lese es seit dem Frühling nur langsam. Sehr empfehlenswert, wenn Sie sich für Scheme interessieren.
Während SICP ein großes Buch, es ist nicht ohne Mängel: Ein wirklich interessanter Blick auf diese ist der Aufsatz "The Structure and Interpretation of the Computer Science Curriculum", die auf einige Kritik an SICP erarbeitet und wird von den Autoren von geschrieben How to Design Programs (Ich habe HTDP nicht gelesen, aber ich habe gehört, dass es sehr gut ist). Während dieser Aufsatz Sie nicht spezifisch beibringen wird, was Sie suchen - das Vergleichen der Funktions- und OO-Programmierung - ist es wirklich wirklich interessant. Ihr Erstsemesterkurs beginnt mit einem ersten Semester Einführung in funktionale Programmierung mit Scheme (ich denke, PLT/Racket) und ist gefolgt von einem Semester der OO-Programmierung mit C++ oder Java ... zumindest ist das der Kurs, den sie in dem Aufsatz beschreiben.
Diese Folien von Peter Norvig adressieren einige der Design-Muster gemeinsam in der OO-Programmierung und zeigen, warum sie funktionale Sprachen wie Scheme und Lisp fehlen oder unnötig in dynamischen,: http://norvig.com/design-patterns/
ich vorsichtig das Buch empfehlen von die gleichen Autoren wie die Little Schemer Bücher: Ein wenig Java, ein paar Muster. Ich kann nicht mit Sicherheit sagen, ob dies ein wirklich gutes Buch ist oder nicht, es war unglaublich seltsam und es gibt einige wirklich schlechte Satzentscheidungen (Kursiv, Serifen, variable Breite, Hochschrift gehört nicht in einen Text zur Programmierung) , aber es könnte interessant sein, einen Blick darauf zu werfen. Sie können es wahrscheinlich sowieso billig finden. Nehmen Sie diese Empfehlung nicht ernst. Ich denke, es wäre besser, sich an die Scheme-Texte zu halten.
p.s. Ich muss einem Kommentar widersprechen, der besagt, dass die funktionale Programmierung bei der OO-Programmierung nicht so kompliziert ist, ich denke, das ist eine grobe Fehlstellung. Funktionale Programmierung in ihrer ganzen Breite ist wirklich verblüffend. Wenn man über Map/Filter/Reduce und First-Class-Funktionen hinausgeht und sich andere Dinge im Funktionsbereich wie Faul Evaluation, Vermeidung von Nebenwirkungen und Mutationen sowie die starken, statisch getippten Sprachen ansieht, wird es ziemlich interessant, und ist sicherlich genauso kompliziert wie traditionelle OO Programmierung. Ich habe gerade erst an der Oberfläche gekratzt, aber eine Menge neuer Ideen entdeckt. Programmierung ist ein kompliziertes Geschäft, ob OO oder funktional.
Ich glaube nicht, dass Sie so etwas finden werden. Wenn die meisten Menschen eine neue Sprache lernen, versuchen sie, sie aus der Perspektive dieser Sprache zu lernen, nicht aus einer anderen Sprache. Außerdem ist OOP viel komplizierter als funktional. Check out * The Little Schemer * oder * SICP * –
Ich bezweifle, CLOS würde als eine Krücke für alte Gewohnheiten dienen, fand ich es ziemlich anders als der OO-Stil in C++/Java/Python, und sehr interessant. Ich verstehe nicht alle Details, aber ich würde Peter Seibels _Practical Common Lisp_ empfehlen. Wenn Sie _On Lisp_ ohne große Probleme lesen, sollten Sie in der Lage sein, [die Kapitel, die CLOS in PCL vorstellen] (http://gigamonkeys.com/book/object-reorientation-generic-functions.html) zu tauchen. Außerdem würde ich seinen [Google Tech Talk] (http://www.youtube.com/watch?v=VeAdryYZ7ak) empfehlen, der Java und Common Lisp vergleicht. – spacemanaki
@Rafe Wenn Sie meinen Beitrag lesen, dass das Lernen von Scheme aus seiner eigenen Perspektive, ohne meine OO Gedankenmuster zu portieren, genau das ist, was ich versuche zu tun. Ich hoffe, diesen Prozess zu starten, indem ich Beispiele von OO- und Scheme-Lösungen für dasselbe Problem sehe, besonders wenn sie sehr unterschiedlich aussehen. – SuperElectric