75 lines
3.7 KiB
Markdown
75 lines
3.7 KiB
Markdown
Die Dümmste Programmiersprache der Welt - Java.
|
|
===============================================
|
|
|
|
Into
|
|
----
|
|
Java lässt sich am besten an Minecraft erklären, um die Sprachfeatures zu
|
|
verstehen. Die elementaren Features von Minecraft sind:
|
|
|
|
- es ist langsam(performace)
|
|
- es stürzt ab(fehler zur laufzeit)
|
|
- es lässt sich gar nicht erst starten
|
|
|
|
Diese drei Freatures sind nicht Problem von Minecraft, sondern elementare
|
|
Sprachfeatures. Im folgenden soll das anhand von fundierteren Beispielen
|
|
erörtert und bestätigt werden.
|
|
|
|
Performace
|
|
----------
|
|
Wenn du mit einem Java-Jünger über die Performace sprichst, dann wird er dir
|
|
sagen: Java ist "prinzipiell" genauso schnell wie C - wenn nicht schneller.
|
|
Hier kannst du das Gespräch abbrechen, da dieser Satz dem Sprecher absolute
|
|
Ahnungslosigkeit nachweist. Prinzipiell gilt bezüglich der Performance:
|
|
|
|
Assembler > C > C++ > Alle anderen Sinnvollen Sprachen > Java
|
|
|
|
Dabei gilt allerdings nicht per se, dass Assembler schneller ist - es besteht
|
|
nur die Möglichkeit mit Assembler(lesbarer Maschinencode) die schnellsten
|
|
Programme zu schreiben. Die höheren Sprachen wie C und C++ erlauben für den
|
|
Menschen besser lesbaren Code zu schreiben. Dafür wird an möglicher Performance
|
|
eingebüßt. Assembler, C und C++ arbeiten dabei direkt auf unserer
|
|
Prozessorarchitektur und bilden diese ab. Das ist sinnvoll!
|
|
|
|
Java geht da ein etwas anderen Weg. Um den zu verstehen muss erstmal ein wenig
|
|
ausgeholt werden: Unsere Prozessorarchitektur ist vereinheitlicht unter dem
|
|
Standart x86 (und die Zahl steht dabei für das Jahr - lol) bzw x64 (doppelt so
|
|
großer Speicher, selbe Architektur). Nun hat sich leider aus monetären Gründen
|
|
drei verschiedene Betriebsysteme entwickelt, die nicht kompatibel untereinander
|
|
sind, aber alle auf der selben Hardware laufen. Genau hier setzt Java an.
|
|
Java ist ein Programm, dass es für diese drei Betriebsysteme jeweils gibt.
|
|
Dieses Programm erstellt dann eine virtuelle Maschiene, die mit den
|
|
Java-Befehlen umgehen kann. Ziel des ganzen ist es wieder Kompatibilität
|
|
zwischen den Betriebsystemen herzustellen (ein Programm kann auf allen drei
|
|
ausgeführt werden) - die per se vorhanden ist, da die Hardware ja die gleiche
|
|
ist. Schon hier ist die Retardedness von Java zu erkennen. Und jedem sollte klar
|
|
sein, dass wenn ich auf einer Maschine eine virtuelle Maschine ausführe, dass
|
|
das auf keinen Fall schnell(er) von statten gehen kann, als wenn ich es direkt
|
|
auf der Maschine ausführe.
|
|
|
|
OOP
|
|
---
|
|
OOP (Objekt orientiertes Programmieren) wird in Java groß geschrieben. Dabei
|
|
haben die Entwickler vergessen, dass das nur ein Hilfsmittel ist, dass in den
|
|
seltesten Fällen sinnvoll einsetzbar ist. Alles in Java ist ein Objekt
|
|
- das lustige dabei - alles erbt vom selben Objekt (genannt "Object").
|
|
Das führt aber zwangsläufig dazu, dass OOP in Java gar nicht mehr möglich ist -
|
|
betrachte folgendes Beispiel:
|
|
|
|
a type Apfel erbt von Object
|
|
b type Banane erbt von Object
|
|
|
|
Vergleiche a mit b -> Oh beides ist ein Object... lol
|
|
Mache a zu b -> Das geht - da beide Objects sind - und da haben wir den schönen
|
|
Äpfel = Bananen.
|
|
|
|
Warum sollte man zwei absolut unterschiedliche Objekte von einem gemeinsammen
|
|
erben lassen? Das ist dumm! Und das schöne - in Java wird das erzwungen ;-)
|
|
(Jeder der schonmal eine clone() oder copy() Funktion für ein Objekt geschrieben
|
|
hat wird schnell festgestellt haben, dass das keine Sprache ist die ein
|
|
denkender Mensch freiwillig einsetzen würde)
|
|
|
|
Neben den verirrungen innerhalb von OOP ist es generell nciht sonderlich
|
|
sinnvoll viele Objekte anzulegen - die kosten Speicherplatz - und wer Minecraft
|
|
gespielt hat kennt das Problem - Ram = Voll = Always. Selbiges für den Server;
|
|
warum sollte eine Klötzchenwelt 2-4gb ram auf dem Server verbrauchen?
|
|
Es gibt dafür nur einen Grund - Java ;-) |