Alexander (HH): Warum Java programmieren? Waurm meistgenutze Sprache?

Beitrag lesen

Moin Moin!

in unserer Schul-Ag gibt es immer wieder Diskussionen, welche Programmiersprachen man benutzen "sollte". Der Tiobe Index führt Java auf Platz 1. Programme wie Apache, OpenOffice oder Browserengines sind ja vemrutlich alle in C bzw. C++ oder objective C verfasst, oder?

Apache ist definitiv in C geschrieben, OpenOffice wenigstens teilweise, braucht für einige Funktionen allerdings eine Java Runtime. Firefox ist in C geschrieben, mit einer Schnittstelle zu Java (via Java-Plugin).

Was für einen Grund gibt es, mit Java zu programmieren und was für welche, das nicht mit Java zu machen?

Ein ganz klarer Grund in der Wirtschaft: Man kann sich für Java zertifizieren lassen. Nicht, dass so ein überteuertes Stück Papier irgendetwas über die Fähigkeiten aussagt, aber man hat halt seine Zeit in einem Java-Kurs abgesessen, und hey, es steht ZERTIIFKAT auf dem Papier, über dem eigenen Namen. Fast schon ein Diplom, nur schneller und nicht so teuer.

Java ist u.a. sehr streng mit Datentypen, das führt IMHO allerdings zu mehr Problemen, als es Wert ist. Am Ende ist man nur noch dabei, Daten wie blöd auf irgendetwas zu casten, damit nicht alles auseinander fällt und man die Typprüfungen letztlich aushebelt.

Außerdem ist bei Java (im Gegensatz z.B. zu Smalltalk) längst nicht alles ein Objekt oder eine Klasse, was weitere Probleme nach sich zieht.

Man tippt sich in Java entweder die Finger wund, oder man läßt Ko^H^HCode generieren. Beides ist nicht sonderlich schön. C++ hat, gerade bei grafischen Oberflächen, ähnliche Probleme.

Der Overhead der virtuellen Maschine, auf der Java läuft, ist angesichts von GHz-Prozessoren und RAM im GByte-Bereich nicht mehr sonderlich relevant -- es sei denn, man arbeitet mit Embedded Systems. Dort sind GHz und GByte längst nicht so reichlich vorhanden wie auf PCs.

Java hat ein Not-Invented-Here-Problem, muß alles immer wieder neu erfinden. Angefangen mit Makefiles.

Plattformunabhängigkeit ist mir schon klar,

Die ist eine Marketing-Illusion. Sicher, Hello World funktioniert tatsächlich cross-plattform ohne neu compilieren. Aber versuch mal eine Java-Anwendung zu schreiben, die über Plattformgrenzen hinweg ein Gerät an einer RS232-Schnittstelle oder gar an einem USB-Port steuern soll. Das endet oft damit, dass man eine betriebssystem- und architekturspezifische "Native Code"-Schnittstelle bastelt, darüber ein paar Lagen Wrapper wie Klopapier stapelt, und hofft, dass der üble Geruch durch die Wrapper ausreichend verdeckt wird.

Zu den Vorteilen von Java können die "Millionen Fliegen" sicher mehr schreiben als ich, mir steht Java einfach nur im Weg.

Ich habe von einem Informatikstudenten gehört, dass Java oder C als Alternative zu Auswahl stehen an der Uni, also ein von beiden _muss_ man lernen.

Mach Dich doch selbst schlau, statt dich auf Hörensagen zu verlassen. Generell solltest Du heutzutage MINDESTENS Java und C "können". Vor allem solltest Du die Stärken und Schwächen kennen. Vier bis fünf verschiedene Sprachen wirst Du in Zukunft mindestens brauchen, wenn Du in die Informatik gehen willst.

Mal sehen, was ich schon so alles in den Fingern hatte: Z80- und x86-Assembler, diverse BASICs inklusive VBA, LOGO, DOS-Batches, Unix-Shellscripte, Pascal, Delphi, C, C++, Perl, SQL in diversen Dialekten, FORTRAN, Java, HTML/XML (jaja, keine Programmiersprache!), Javascript, Lua, Opentext O-Script, seit 1,5 Jahren Blomesystem P-Code (ein fürchterlicher C-Kastrat) und seit Anfang des Jahres MUMPS ("Perl mit Lochkarten auf nackter Hardware"). Ein paar hab ich wohl noch vergessen, und in den nächsten zwei oder drei Jahren wird noch mindestens ein weiterer C-Kastrat dazu kommen, das steht jetzt schon fest. Und auf meiner Wunschliste steht noch mindestens Smalltalk, einfach nur, um mal wieder ein komplett anderes System zu benutzen. M4 und COBOL sollte ich auch mal lernen, nur um selbst zu erfahren, wie übei die beiden sind. Und Postscript, Python und Ruby wären auch noch auf der Liste.

C und Pascal sind essenziell wichtig, weil sehr viele andere Sprachen mehr oder weniger direkt von C (C++, C#, Objective C, Javascript, Java, C-Shell, O-Script, P-Code) und (leider) seltener Pascal (Delphi, Modula) abgeleitet sind. Shell-Scripte sollte man auch kennen, die bilden zusammen mit C und Teilen von Pascal die Grundlage für Perl, dessen entstellten Stiefbruder Igor, äh, PHP und den neuesten Sproß in der Familie, Ruby.

Um P-Code zu lernen habe ich so etwa 10 Minuten gebraucht, C ohne alle brauchbaren Funktionen und Konstrukte, dafür echter String-Datentyp. Bis auf ein paar Bugs im Compiler, im Editor und in der Doku nichts wirklich überraschendes -- bis auf die Tatsache, wie sehr man C verstümmeln und kastrieren kann, ohne dass Entwickler, die mit dem Kastrat arbeiten müssen, revoltieren.

Bei MUMPS hilft Dir aber weder C noch Pascal. Ansatzweise FORTRAN, Konzepte (nicht Konstrukte) aus Perl und XML, und vor allem viel Erfahrung mit anderen Sprachen. MUMPS ist ein recht kompaktes System, nach zwei Wochen habe ich es so ziemlich vollständig verstanden. Als Erstkontakt mit Software-Entwicklung ist MUMPS allerdings eine Katastrophe. 40 Jahre alter Code und vor allem ebenso alte schlechte Angewohnheiten, seit der PDP-7 über mehrere Plattformen mitgeschleppt und nie so wirklich ausgemistet.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".