Was mich bei dem ganzen Virtuelle-Maschine-Gerede immer wieder wundert: warum gucken diese Leute nicht mal vor ihrer Implementierung von solchen Sachen da, wo wirklich schon lange mit virtuellen Maschinen gearbeitet wird? Ich mein, Smalltalk hat schon seit Existenz eine virtuelle Maschine und seit den mittleren 80ern einen hocheffizienten Garbage-Collector sowie eine ganze Reihe erweiterter Features. Genause Common Lisp Implementierungen - viele benutzen intern transportablen Code auf Basis von virtuellen Maschinen. Da gibt es auch entsprechende Erfahrungen mit Closures und Continuations. Ist doch nicht so als ob diese Themen so fürchterlich neu wären - im Gegenteil, es sind ziemlich alte Hüte.
Aber statt dort zu gucken, wo es nicht nur funktionierende Implementierungen gibt, sondern auch gleich den vollen Source zwecks Studium dazu, wühlt man lieber in eigenen Sachen rum und bezieht sich allenfalls auf die JVM oder die .NET CLR - zwei der armseligsten Implementierungen von virtuellen Maschinen, die existieren (unter anderem weil deren Designer genau den gleichen Fehler machen und meinen sie wüssten alles besser und bräuchten nicht auf den Code und die Ideen alter Hacker gucken).
Besonders lächerlich ist wirklich diese Continuations und Closure Debatte. Beides sind essentielle Features von Scheme und in allen Scheme-Implementierungen adressiert, denn ohne würde nix funktionieren. Und viele von denen haben hocheffiziente Implementierungen für virtuelle Maschinen oder reale CPUs.
Leute, guckt euch bitte an was andere schon vor Jahrzehnten gemacht haben, bevor ihr meint die tolle neue Idee zu haben. Oder wundert euch nicht allzusehr wenn ihr bei denen die diese alten Systeme kennen nicht wirklich ernst genommen werdet ...
Bei Squawks of the Parrot gibts den Originalartikel.