lunar hat geschrieben:Tja, da googled man nach "Scheme" und der vierte Treffer führt gleich mal zu Scheme - Geißel der Menschheit.
Ganz ehrlich, man kann Scheme einiges anhängen, aber das was der da schreibt ist kompletter FUD. Scheme ist definitiv einer der übersichtlichsten Lisp-Dialekte die es gibt, R5RS war ausreichend kurz um ihn mal eben im Zug durchzulesen.
Weiterhin: Scheme ist langsam. Das ist totaler Blödsinn. Eine Sprache ist nicht per-se langsam oder schnell. Die Implementierung machts. Mit PLT gibt es zwar eine tolle Implementierung (mit einem JIT und mehreren GCs), aber sie ist nicht schnell, womöglich aber vergleichbar mit Python. Wenn man was schnelleres will kann man Chicken oder Gambit nehmen - man könnte sich sogar auf das was Stalin bietet beschränken, dann bekommt man recht schnellen Code raus. Punkt 3 wird überfällig, wenn man sich mal Bigloo anschaut. In welchen Code möchtest du denn dein Scheme-Zeug kompilieren? Native? Klar. CIL? Sicher. JVM? Natürlich.
Das eine Programmiersprache korrekter als eine andere überhaupt sein kann, das können wir ruhig ins Land der Träume verweisen. Das Scheme mehr Funktionen hat als andere Programiersprachen hat das ist wahl. Aber es hat Sprachlich mehr drauf. Nehmen wir mal exakte Zahlen, Funktionen höherer Ordnung, Continuations. Klar, kann man sich in C irgendwie hinhacken, aber da beide Sprachen Turingvollständig sind, ist das ein blödsinniges Argument. Scheme vorzuwerfen dass es nicht Objektorientiert sei, ist wie einem Apfel vorzuwerfen dass es keine Birne ist. Scheme hat eine Menge OO-Libs, mit TinyTalk gibt es womöglich etwas brauchbares. OOP muss in Scheme aber nicht sein. CL hat hingegen mit CLOS eines der ausgeklügeltsten Objektsysteme überhaupt.
Das Scheme keine Typen hat ist ebenso quatsch, Scheme ist wie Python stark dynamisch typisiert. Scheme kennt durchaus Atome oder Symbole. Aber wie wir in Python wissen, garantiert Typisierung auch keine korrekten Programme und die Typisierung in C kann sich etwa mit der von Haskell nicht wirklich messen.
Das man syntaktisch korrekten und semantisch falschen Code schreiben kann ist auch keine Neuerung. Ich erwarte bei dem Punkt doch wenigstens die Nennung einer Sprache bei der das so ist. In C(++) hat man neben semantischen Problemen auch noch Memory Corruption. Ooops.
Schweres debuggen: get an editor. Debuggen im Interpreter ist definitiv einfacher als kompilierte Sachen zu debuggen. PLT hat einen schönen Stepper und zeigt auch schön geklammerte Blöcke. Für CL gibt es mit SLIME eine der erstaunlichsten Entwicklungsumgebungen die es jemals gab. Bei Problemen kann man in CL die Ausführung verlassen, den Code durchsehen und weiterlaufen lassen. Siehe Maxima.
Also das war eine der unfundiertesten Kritiken die jemals geschrieben worden sind. Wenn man statt Scheme irgendeine andere Sprache eingesetzt hat, würden die Argumente etwa genauso stimmen.