Welche Meinung hast Du zu Linus Torvalds Aussage, dass Java eine schreckliche Programmiersprache ist?
Torvalds hasst Objektorientierung. Darum hasst er objektorientierte Programmiersprachen. Die Begründung zieht in meinen Augen nicht, denn auch in C programmiert man immer wieder objektorientiert. Sprachen zu hassen, weil sie einen dabei unterstützen ist - meiner Meinung nach - eher albern.
Linus Torvalds hat eine recht forsche Art seine Überzeugungen zu vermitteln und tut das in der Regel auch nicht vorsichtig abwägend, sondern mit Hilfe eines Vorschlaghammers. Zugute halten muss man Herrn Torvalds, dass er mit seiner Radikalität nunmal nebenher auch die größte Revolution in der IT der letzten 20 Jahre ausgelöst hat. Trotzdem ist seine Form der Radikalität nicht die Antwort auf alle Fragen.
Schlussendlich liegt er unter’m Strich aber - wenn auch mit fragwürdiger Begründung richtig.
Java ist eine schreckliche Programmiersprache, weil sie einem Objektorientierung aufdrängt, auch dann, wenn man sie nicht braucht; weil sie einem Exceptions aufdrängt, auch dann, wenn man sie nicht braucht und Ausnahmen (Exception) sollte man eigentlich nur ausnahmsweise brauchen und nicht durchgehend, so dass der korrekte Fall zur Ausnahme wird. Weil sie eine Virtual Maschine benötigt, da die Maschine für die sie entwickelt wurde, hat nie gebaut wurde und um das zu kaschieren erklärt man Portablität zum Feature. Portablität war nicht das Entwicklungsziel. Und vor allem: Java ist nicht portabel, oftmals nichtmals zu sich selbst in neuerer Version.
Hingegen wüsste ich kein Produkt, was portabler ist als Linux, geschrieben in C und eben nicht in Java.
Weil Java semantisch schwach ist; weil es unnötig ausgebremst wird; weil es für sehr viele Zwecke vollkommen ungeignet ist; weil es als Lehrsprache benutzt wird, aber den Schülern ein virtuelles Verständnis unterjubelt; weil es selbst von vielen professionellen Entwicklern mit diesem virtuellen Verständnis betrachtet und benutzt wird und weil vieles von diesem Verständnis nicht nur virtuell falsch ist, wie beispielsweise der Glaube, dass Mehrfachvererbung das Böse überhaupt wäre. Ich habe mal Diamanten mit Interfaces gebaut. Geht auch. Man warf bei Java nützliche Features weg, um die Mängel zu erhalten. Nicht umsonst wird Java auch scherzeshalber C++-- genannt.
Java ist vom Design der Sprache her eine absolute Missgeburt, was dadurch verschlimmert wird, dass die Kenntnisse, die erforderlich waren, um den Unsinn zu verhindern, zur Entstehung von Java bereits alle bekannt waren. Java ist kein evolutionäres Experiment, was fehlgeschlagen ist, sondern ein DNA-Cocktail von Sprachen, der wissend als Missgeburt umgesetzt wurde, weil man kritiklos sich der Objektorientierung verschrieben hat.
In der Zeit des OOP-Hype hat man vergessen, die Frage zu stellen, ob OOP für ein zu Problem überhaupt eine sinnvolle Lösung darstellt. Java war eine überstürzte Antwort darauf: OOP ist die Antwort für alle Probleme oder man macht es falsch. Und das ist Blödsinn. Auch in modernen Java gilt es heute, OOP möglichst zu vermeiden, was in einer Sprache die einem OOP aufdrängt unhandlich ist. Das kennzeichnet man über final und static. Und so kommt man dann wieder bei statischer statt objektorientierter Programmierung an, hat Mehraufwand und weniger Möglichkeiten.
Dafür bekommt man ein großes Framework mitgeliefert. Davon ist die eine Hälfte depreciated, die andere Hälfte für mein Programm überflüssig. Ich muss also alles mitschleppen, was mir Sicherheitstechnisch um die Ohren fliegen kann, selbst wenn ich es nicht brauche und um zu verhindern, dass die Software plötzlich nicht mehr funktioniert, weil der Benutzer eine neuere Java Version installiert hat, muss ich die Version, auf der ich getestet habe mitliefern. Meine Version wird dann nicht mehr aktualisiert, womit die Sicherheitslöcher, die vorhanden sind, dann auch nach dem Update der StandardVM erhalten bleiben.
Java ist nicht schrecklich, weil sie OOP unterstützt, sondern wegen so ziemlich allem anderen.