diff --git a/neopolimatrix/files/java.md b/neopolimatrix/files/java.md new file mode 100644 index 0000000..b99fb67 --- /dev/null +++ b/neopolimatrix/files/java.md @@ -0,0 +1,75 @@ +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. Prinziepiell 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 ;-) \ No newline at end of file