2015-04-01 20:51:04 +02:00

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 ;-)