Schmeme vs Common lisp ?
-
Was ist an scheme so toll???
-
Common Lisp wurde mit dem Gedanken entworfen die bestehenden Lisp-Dialekte zu vereinen. Scheme dagegen wurde neu entworfen. Daher ist Scheme kleiner und aufgeräumter. Aber Scheme hat dafür eine wesentlich kleinere Standardbibliothek. Die Common Lisp-Implementierungen sind dafür aber besser, so weit ich weiß. Scheme scheint eher eine Sprache für Lehre und Forschung zu sein (ist eine ziemlich gute Sprache um in die Programmierung einzusteigen).
-
Scheme ist einfach schöner.
Weitgehend auch klarer. CL ist ein Lisp-2, manche (wie ich) würden das nicht konsequent objektorientert nennen. Und dann noch bla bla bla.
Abelson & Sussman schrieb:
Lisp changes. The Scheme dialect used in this text has evolved from the original Lisp and differs from the latter in several important ways, including static scoping for variable binding and permitting functions to yield functions as values. In its semantic structure Scheme is as closely akin to Algol 60 as to early Lisps.
-
Common Lisp ist genauso wie C und C++ ISO Standard. Scheme IMO nicht
-
Common Lisp (im folgenden CL) besitzt einen riesigen Sprachumfang mit vielen Inkonsistenzen und Redundanzen. Zum Beispiel sind das Paket- und Symbolsystem von CL veraltet und sorgen fuer viele Unklarheiten bei Anfaengern.
Scheme ist dagegen eher von minimalistischer Natur. Es gibt standardmaessig weniger Sprachkonstrukte und die Sprache wirkt dadurch insgesamt "schoener" und sauber. Mit Scheme selbst kannst du aber nicht wirklich viel machen. Scheme beschreibt aber nur den innersten Kern einer Sprache. Die meisten Implementierungen verfuegen ueber Bibliotheken, sodass etwas mehr Funktionalitaet zur Verfuegung steht.
Wenn dein Interesse an Lisp rein theoretisch bedingt ist, wuerde ich zu Scheme raten. Moechtest du allerdings eine reale Anwendung entwickeln, wuerde ich eher CL nehmen.
Zu Gunsten von CL ist noch zu erwaehnen, dass Scheme nur hygienische Makros kennt, die weniger maechtig als die Makros in CL sind.
CL besitzt hingegen keine Continuations.
-
Mit Scheme selbst kannst du aber nicht wirklich viel machen.
Für eine Scriptsprache für GIMP hat's gereicht...

-
Doktor Prokt schrieb:
Wenn dein Interesse an Lisp rein theoretisch bedingt ist, wuerde ich zu Scheme raten. Moechtest du allerdings eine reale Anwendung entwickeln, wuerde ich eher CL nehmen.
Warum sollte Scheme vorziehen, wenn man sich für die Theorie von Lisp interessiert? Wenn es sowas überhaupt gibt, dann sind das die Sachen die ursprünglich in Lisp gewachsen sind, also im wesentlichen Code=Data, symbolische Berechnungen usw.
Die theoretisch interessante Seite an Scheme seh ich etwa bei den Continuations, das hat aber mit Lisp überhaupt nichts zu tun.
Ich kenne mich aber zugegeben auch nicht wirklich mit Scheme aus.
-
Warum sollte Scheme vorziehen, wenn man sich für die Theorie von Lisp interessiert?
Das hängt davon ab, was ihr unter "Theorie von Lisp" versteht. Ein (standardkonformer) Scheme-Interpreter ist rasch realisiert, für CL würde ich etwas mehr Zeit veranschlagen.
Das macht es einfach, mit der Interpretation von Scheme herumzuspielen, ohne Teilmengen von CL definieren zu müssen. Siehe zB SICP Abschnitt "metalinguistic abstraction". Aber das ginge eigentlich auch mit CL. Siehe zB auch dieses TLisp; er hätte auch einfach einen Scheme-Interpreter schreiben können, um sich die eigene Standardisierung zu ersparen. Daran sieht man schon, dass es eingentlich um eine Geschmacksfrage geht.
Warum sage ich, daß Scheme schöner ist?
Ich bastle hin und wieder an meinem Lisp-Interpreter herum. Als ich damit begonnen habe, war ich kein Lisp-Guru (und bin heute noch weit davon entfernt). Mein Interpreter sollte ursprünglich in die TLisp-Richtung gehen, allerdings habe ich das meiste aus dem Bauch heraus entschieden, ohne mich um den CL-Standard zu scheren (ist ja auch mein Lisp). Die Leute auf comp.lang.lisp haben mich dann darauf hingewiesen, daß ich nahezu 1:1 Scheme neu erfunden habe. Deshalb halte ich es für klarer.Das schönste an Lisp haben die beiden aber gemeinsam: für den durchschnittlichen C-ler dürften sie so exotisch sein, dass nicht einmal ein Sprachen-Flame aufkeimt.

-
Bashar schrieb:
Warum sollte Scheme vorziehen, wenn man sich für die Theorie von Lisp interessiert?
Den Begriff "Theorie von Lisp" habe ich nicht verwendet.
Die Bereiche, die du kurz genannt hast wie Aequivalenz von Code und Data, Verschwimmen von Lauf- und Compilezeit, Interpreterbau, Listenverarbeitung (:)) etc. lassen sich besser mit Scheme untersuchen, da dem Interessenten dort eine konsistentere Sprachschnittstelle angeboten wird als bei CL. Du nanntest auch "symbolische Berechnungen": Gerade hier kann Scheme doch mit einem sehr einfach zu verwendenen Symbolen glaenzen und der Anwender kann sich besser auf das Problem konzentrieren als bei einer Implementierung von Symbolen komplexen Umfangs wie bei CL.Die theoretisch interessante Seite an Scheme seh ich etwa bei den Continuations, das hat aber mit Lisp überhaupt nichts zu tun.
Dennoch lassen sich oben genannte Bereiche gut mit Scheme untersuchen. Das Vorhandensein von Continuations ist natuerlich ein zusaetzliches Bonbon, auch wenn zum Studieren dieser Scheme nicht unbedingt notwendig ist: Factor, Perl, Ruby, SML u.a. besitzen ebenfalls Continuations.
cheopz schrieb:
Ich bastle hin und wieder an meinem Lisp-Interpreter herum.
Ist der in einem Lisp oder einer anderen Sprache geschrieben?
-
(habe meinen Namen um 1 erniedrigt)
Ist der in einem Lisp oder einer anderen Sprache geschrieben?
Den hab ich mit Python gemacht. Da konnte ich mir den Garbage Collector ausborgen. Allerdings habe ich ein experimentelles kompiliertes C-Modul, das die Sache mit den Linked Lists wesentlich beschleunigen würde (wenn's fertig wäre -- mir fehlt noch ein GC). Vielleicht gelingt es mir noch dieses Frühjahr, einen der jüngsten Scheme-Standards umzusetzen.