JAVA'S COVER
OriginalApril 2001
Dieser Essay entstand aus Gesprächen, die ich mit mehreren anderen Programmierern darüber geführt habe, warum Java verdächtig roch. Es ist keine Kritik an Java! Es ist eine Fallstudie über den Radar eines Hackers.
Im Laufe der Zeit entwickeln Hacker ein Gespür für gute (und schlechte) Technologie. Ich dachte, es könnte interessant sein, zu versuchen, aufzuschreiben, was Java für mich verdächtig erscheinen ließ.
Einige Leute, die dies gelesen haben, halten es für einen interessanten Versuch, über etwas zu schreiben, über das noch nie zuvor geschrieben wurde. Andere sagen, ich werde Ärger bekommen, weil ich scheinbar über Dinge schreibe, die ich nicht verstehe. Nur für den Fall, dass es etwas nützt, möchte ich klarstellen, dass ich hier nicht über Java schreibe (das ich nie benutzt habe), sondern über den Radar eines Hackers (über den ich viel nachgedacht habe).
Der Aphorismus "Man kann ein Buch nicht nach seinem Einband beurteilen" entstand in der Zeit, als Bücher in schlichten Pappdeckeln verkauft wurden, die von jedem Käufer nach seinem Geschmack gebunden wurden. In diesen Tagen konnte man ein Buch nicht nach seinem Einband beurteilen. Aber der Verlagswesen hat sich seitdem weiterentwickelt: Heutige Verlage arbeiten hart daran, den Einband zu etwas zu machen, an dem man ein Buch erkennen kann.
Ich verbringe viel Zeit in Buchhandlungen und habe das Gefühl, dass ich inzwischen gelernt habe, alles zu verstehen, was Verlage mir über ein Buch sagen wollen, und vielleicht noch etwas mehr. Die Zeit, die ich nicht in Buchhandlungen verbracht habe, habe ich meist vor Computern verbracht, und ich habe das Gefühl, dass ich gelernt habe, Technologie bis zu einem gewissen Grad auch nach ihrem Einband zu beurteilen. Es mag nur Glück sein, aber ich habe mich vor einigen Technologien gerettet, die sich als echte Stinker herausstellten.
Bisher scheint mir Java wie ein Stinker. Ich habe noch nie ein Java- Programm geschrieben, nie mehr als in Referenzbücher darüber geschaut, aber ich habe eine Ahnung, dass es keine sehr erfolgreiche Sprache sein wird. Ich könnte mich irren; Vorhersagen über Technologie sind ein gefährliches Geschäft. Aber für das, was es wert ist, als eine Art Zeitkapsel, hier ist, warum mir Java nicht gefällt:
-
Es wurde so energisch gehypt. Echte Standards müssen nicht gefördert werden. Niemand musste C, oder Unix, oder HTML fördern. Ein echter Standard ist in der Regel bereits etabliert, wenn die meisten Leute davon hören. Auf dem Hacker-Radar-Bildschirm ist Perl so groß wie Java, oder größer, allein aufgrund seiner eigenen Vorzüge.
-
Es ist auf ein niedriges Niveau ausgerichtet. Im ursprünglichen Java-Whitepaper, sagt Gosling explizit, dass Java so konzipiert wurde, dass es nicht zu schwierig für Programmierer ist, die mit C vertraut sind. Es wurde entwickelt, um ein weiteres C++ zu sein: C plus ein paar Ideen, die aus fortschrittlicheren Sprachen übernommen wurden. Wie die Schöpfer von Sitcoms oder Junk Food oder Pauschalreisen waren sich die Designer von Java bewusst, dass sie ein Produkt für Leute entwarfen, die nicht so intelligent sind wie sie. Historisch gesehen waren Sprachen, die für andere Leute entwickelt wurden, schlecht: Cobol, PL/I, Pascal, Ada, C++. Die guten Sprachen waren die, die für ihre eigenen Schöpfer entwickelt wurden: C, Perl, Smalltalk, Lisp.
-
Es hat Hintergedanken. Jemand sagte einmal, dass die Welt ein besserer Ort wäre, wenn die Leute nur Bücher schreiben würden, weil sie etwas zu sagen hätten, anstatt weil sie ein Buch schreiben wollten. In ähnlicher Weise ist der Grund, warum wir ständig von Java hören, nicht, weil es etwas über Programmiersprachen zu sagen hat. Wir hören von Java als Teil eines Plans von Sun, Microsoft zu untergraben.
-
Niemand liebt es. C, Perl, Python, Smalltalk und Lisp-Programmierer lieben ihre Sprachen. Ich habe noch nie jemanden sagen hören, dass er Java liebt.
-
Die Leute sind gezwungen, es zu benutzen. Viele der Leute, die ich kenne und die Java benutzen, benutzen es, weil sie das Gefühl haben, dass sie es müssen. Entweder ist es etwas, das sie tun mussten, um finanziert zu werden, oder etwas, von dem sie dachten, dass Kunden es wollen würden, oder etwas, das ihnen von der Geschäftsleitung gesagt wurde. Das sind intelligente Leute; wenn die Technologie gut wäre, hätten sie sie freiwillig benutzt.
-
Es hat zu viele Köche. Die besten Programmiersprachen wurden von kleinen Gruppen entwickelt. Java scheint von einem Komitee geleitet zu werden. Wenn es sich als eine gute Sprache herausstellt, wird es das erste Mal in der Geschichte sein, dass ein Komitee eine gute Sprache entworfen hat.
-
Es ist bürokratisch. Von dem, was ich über Java weiß, gibt es scheinbar viele Protokolle für die Ausführung von Dingen. Wirklich gute Sprachen sind nicht so. Sie lassen dich tun, was du willst, und gehen dir aus dem Weg.
-
Es ist pseudo-hip. Sun tut jetzt so, als wäre Java eine Graswurzel-, Open-Source-Sprachen-Initiative wie Perl oder Python. Diese hier wird zufällig von einem riesigen Unternehmen kontrolliert. So wird die Sprache wahrscheinlich die gleiche langweilige Klunzigkeit haben wie alles andere, das aus einem großen Unternehmen kommt.
-
Es ist für große Organisationen konzipiert. Große Organisationen haben andere Ziele als Hacker. Sie wollen Sprachen, die (angeblich) geeignet sind für den Einsatz durch große Teams von mittelmäßigen Programmierern - Sprachen mit Funktionen, die, wie die Geschwindigkeitsbegrenzer in U-Haul- LKWs, verhindern, dass Narren zu viel Schaden anrichten. Hacker mögen keine Sprache, die auf sie herabblickt. Hacker wollen einfach nur Macht. Historisch gesehen haben Sprachen, die für große Organisationen (PL/I, Ada) entwickelt wurden, verloren, während Hacker-Sprachen (C, Perl) gewonnen haben. Der Grund: Der heutige jugendliche Hacker ist der CTO von morgen.
-
Die falschen Leute mögen es. Die Programmierer, die ich am meisten bewundere, sind im Großen und Ganzen nicht von Java begeistert. Wer mag Java? Anzüge, die keine Sprache von der anderen unterscheiden können, aber wissen, dass sie ständig in der Presse von Java hören; Programmierer in großen Unternehmen, die erstaunt sind, dass es etwas gibt, das noch besser ist als C++; und Plug-and-Chug-Studenten, die bereit sind, alles zu mögen, was ihnen einen Job verschaffen könnte (wird das in der Prüfung drankommen?). Die Meinungen dieser Leute ändern sich mit jedem Wind.
-
Sein Daddy ist in einer Zwickmühle. Suns Geschäftsmodell wird an zwei Fronten untergraben. Günstige Intel-Prozessoren, vom gleichen Typ, der in Desktop-Rechnern verwendet wird, sind jetzt mehr als schnell genug für Server. Und FreeBSD scheint mindestens so gut ein Betriebssystem für Server zu sein wie Solaris. Suns Werbung impliziert, dass man Sun-Server für industrielle Hochleistungsanwendungen benötigt. Wenn das stimmen würde, wäre Yahoo der Erste in der Schlange, um Suns zu kaufen; aber als ich dort arbeitete, waren die Server alle Intel-Boxen, die FreeBSD ausführten. Das verheißt nichts Gutes für Suns Zukunft. Wenn Sun in Schwierigkeiten gerät, könnten sie Java mit sich in den Abgrund ziehen.
-
Das DoD mag es. Das Verteidigungsministerium ermutigt Entwickler, Java zu verwenden. Das erscheint mir als das verdammteste Zeichen von allen. Das Verteidigungsministerium leistet eine gute (wenn auch teure) Arbeit bei der Verteidigung des Landes, aber sie lieben Pläne und Verfahren und Protokolle. Ihre Kultur ist das Gegenteil der Hacker-Kultur; bei Fragen der Software werden sie eher falsch liegen. Das letzte Mal, als das DoD eine Programmiersprache wirklich mochte, war es Ada.
Denken Sie daran, dies ist keine Kritik an Java, sondern eine Kritik an seinem Einband. Ich kenne Java nicht gut genug, um es zu mögen oder nicht zu mögen. Dies ist nur eine Erklärung, warum ich nicht finde, dass ich es lernen möchte.
Es mag unüberlegt erscheinen, eine Sprache zu verwerfen, bevor man überhaupt versucht hat, Programme in ihr zu schreiben. Aber das müssen alle Programmierer tun. Es gibt zu viele Technologien da draußen, um sie alle zu lernen. Man muss lernen, nach äußeren Zeichen zu beurteilen, welche sich lohnen. Ich habe auch unüberlegt Cobol, Ada, Visual Basic, den IBM AS400, VRML, ISO 9000, das SET-Protokoll, VMS, Novell Netware und CORBA, unter anderem, verworfen. Sie rochen einfach falsch.
Es könnte sein, dass ich im Fall von Java falsch liege. Es könnte sein, dass eine Sprache, die von einem großen Unternehmen gefördert wird, um ein anderes zu untergraben, die von einem Komitee für ein "Mainstream"-Publikum entworfen wurde, die in den Himmel gehypt wird, und die vom DoD geliebt wird, zufällig eine saubere, schöne, leistungsstarke Sprache ist, die ich gerne programmieren würde. Es könnte sein, aber es scheint sehr unwahrscheinlich.