Black Hole Theory of Design

30th of December 2007

Lisp is a Black Hole: if you try to design something that's not Lisp, but like Lisp, you'll find that the gravitational forces on the design will suck it into the Black Hole, and it will become Lisp

Guy Steele

Das ganze stammt aus James Goslings Gedanken über Closures in Java 6: Black Hole Theory of Design (sure, pretty old 2006-09).

Interessant finde ich auch folgende Aussage: "I have somewhat mixed feelings about closures: they are pretty complicated" und weiter unten im Text "When inner classes were designed, we wanted to avoid the complexity of closures.".

Irgendwie schon witzig so etwas zu lesen: Innere Klassen in Java haben eine geringere Komplexität als Closures! Mir scheint da geht so einiges durcheinander. Kein Wunder, dass Java kaum Fortschritte macht.

Gut, closures sind in einer Programmiersprache wie Java vielleicht eher unkonventionell, aber was soll an diesem Konzept bitte schwierig sein? Vielleicht "schwierig" zu implementieren (box it baby), aber spielt das wirklich eine Rolle? Dafür sind Gosling und Co schließlich da (soll sich doch Gosling den SBCL compiler anschauen, da stecken hunderte gute Ideen zur Kompilierung von Closures drin ;p).

Nachtrag: Mir stellt sich allerdings schon die Frage, wie ein Konzept wie Closures in die Sprache Java passen könnte. Alleine, also ohne andere Nettigkeiten wie z.B. higher order functions würde das meiner Meinung wenig Spaß machen. Ausserdem ist Java einfach eine Mainstream-Sprache, die möglichst Vielen gefallen soll. Man stelle sich nur vor, Hugo-Heinz-Meier-von-nebenan verwendet ausgiebig Closures im Rechenkern der x-ten Finanzsoftware. Nein das ginge nicht. Chaos und Unverständnis wären vorprogrammiert. Lieber nicht.

Noch ein Nachtrag: Hier eine Präsentation (ppt) mit dem Titel "The Closure Controversy" von Joshua Bloch, Chief Java Architect bei Google. Eine Google-Suche nach The Closure Controversy zeigt, dass sich damit schon einige 'beschäftigt' haben.

Nachtrag (2008-01-04): Hier noch etwas von Tim Bray (Sun M.) und Bruce Eckel Java: Evolutionary Dead End.


Page 1 of 1 pages