Ich bin gerade dabei für die Uni etwas mit Java zu entwickeln, und mir kommt es so vor als ob Java überhaupt noch nie etwas von kompilieren und Laufzeitersparnis gehört hat. Es wird beim "kompilieren" oder wie auch immer das bei Java heißt nicht einmal überprüft ob aufgerufenen Methoden auch tatsächlich existieren, egal ob es sich dabei um Konstruktoren oder dem Templates in gewisserweise sehr ähnlichen Generics handelt. Die IDE und der "Kompiler" melden keine Fehler und dann zur Laufzeit kommt eine tolle NoSuchMethodError-Exception. Bei einer Funktion die man oft verwendet wird man das ja wohl recht schnell bemerken, ich möchte jedoch nicht wissen wie das ist wenn eine gewisse Methode nur ganz selten aufgerufen wird; Sicherlich ein Debugalbtraum.
Und wenn wir schon bei den Generics sind. Irgendwie habe ich bis jetzt noch keine Möglichkeit gefunden eine Spezialisierung für einen bestimmten Templateparameter zu schreiben. Irgendwie scheint es so als ob Generics nur für Container vom Typ T gedacht sind.
Also mit Java hat man es nicht einfach, man kommt sich vor als hätte man eine Zwangsjacke an und muss C++-Programmierer um Ihre Freiheit beneiden.
So jetzt habe ich meinen Frust etwas abgelassen und kann wieder weiter pfuschen gehen
Der Java - Hass - Thread
Der Java - Hass - Thread
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Der Java - Hass - Thread
Das ist nicht wirklich erforderlich, denn es folgt noch ein zweiter Compilerlauf, der das eher berücksichtigen kann. Ansonsten sind Java-Programme ein lockerer Verbund von Klassen.Kerli hat geschrieben:Ich bin gerade dabei für die Uni etwas mit Java zu entwickeln, und mir kommt es so vor als ob Java überhaupt noch nie etwas von kompilieren und Laufzeitersparnis gehört hat.
Konstruktoren müssen ja nicht zwangsweise existieren.Kerli hat geschrieben:Es wird beim "kompilieren" oder wie auch immer das bei Java heißt nicht einmal überprüft ob aufgerufenen Methoden auch tatsächlich existieren, egal ob es sich dabei um Konstruktoren oder dem Templates in gewisserweise sehr ähnlichen Generics handelt.
Templates und Generics sind nicht ähnlich! Die Möglichkeiten, die Generics bieten, kann man mit Templates nicht abbilden, aber nachbilden. Umgekehrt geht das nicht.
Nein, von Java gewünschtes Verhalten. 2000 oder 2001 bewarb Sun auf ihrer Website die These, dass Exceptions besser als Compilerfehler sind. Das haben die aber wohl inzwischen aufgegeben.Kerli hat geschrieben:Die IDE und der "Kompiler" melden keine Fehler und dann zur Laufzeit kommt eine tolle NoSuchMethodError-Exception. Bei einer Funktion die man oft verwendet wird man das ja wohl recht schnell bemerken, ich möchte jedoch nicht wissen wie das ist wenn eine gewisse Methode nur ganz selten aufgerufen wird; Sicherlich ein Debugalbtraum.
So ist es. Es widerspricht dem Konzept von Generics, dass es Spezialisierungen gibt, da ein Generic generischer Code für alle Klassen gilt, ein Template aber ein Muster ist, wie eine Klasse erzeugt wird. Erzeugst Du mit einem Template eine bestimmte Klasse, kannst Du so Spezialisierungen unterbringen, weil dann auch ein anderer Code erzeugt wird. Bei einem Generic wird aber grundsätzlich der gleiche Code verwendet.Kerli hat geschrieben:Und wenn wir schon bei den Generics sind. Irgendwie habe ich bis jetzt noch keine Möglichkeit gefunden eine Spezialisierung für einen bestimmten Templateparameter zu schreiben. Irgendwie scheint es so als ob Generics nur für Container vom Typ T gedacht sind.
Dieses Feature beherrscht C++ nicht.
Spassiger wird es, wenn Du Mehrfachvererbung oder Const-Correctness benutzen willst ^^Kerli hat geschrieben:Also mit Java hat man es nicht einfach, man kommt sich vor als hätte man eine Zwangsjacke an und muss C++-Programmierer um Ihre Freiheit beneiden.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.