vorteile von c++ gegenüber von java
-
Steffo schrieb:
Wenn du sauber programmieren lernen willst, dann nimm Java.
Eher umgekehrt. Klassen als Namespaces zu missbrauchen ist nicht unbedingt sauber.
Steffo schrieb:
Das was C++ Programmierer hinhacken ist alles mögliche, aber oft nicht sauber.
Das zu verallgemeinern, ist Schwachsinn. Es gibt viele Leute, die sich C++-Programmierer nennen, aber auf dem Stand vor 20 Jahren sind. Modernes C++ ist anders.
Steffo schrieb:
Es gibt nicht viele Argumente für C++. Willst du auf die Hardware zugreifen? Oder auf System-APIs? Dann kann man über C++ nachdenken, wobei bei letzterem .Net zu bevorzugen wäre.
In erster Linie wohl wegen Performance. (Es soll aber auch Leute wie mich geben, die C++ einfach als schöne Sprache empfinden, eine Herausforderung suchen und Einschränkungen ganz und gar nicht mögen.)
Steffo schrieb:
Das, worüber einige hier lamentieren "Java kann aber dies nicht" ist nicht so tragisch wie das dargestellt wird, denn das Entwicklungsmodell in Java ist schlicht anders, d. h., dass man bei der Implementation eben anders als in C++ vorgeht. Dies allerdings als Nachteil zu verkaufen, ist Quatsch.
Das Entwicklungsmodell von Java ist (höflich ausgedrückt) so entworfen, dass auch Durchschnittsmenschen damit zurechtkommen. Ich weigere mich weiterhin, die überladenen Operatoren von String zu verwenden, aus Konsistenzgründen.
-
cooky451 schrieb:
Edit @Steffo: Genau, in C++ kann man nur hacken, aber sauber ist das nie. Du hast es erfasst.
Es gibt Sprachen die begünstigen sauberes Programmieren (ich sage nicht, dass sie dir das abnehmen, aber sie begünstigen es) und es gibt welche, die unsauberes Programmieren begünstigen. Vergleiche einfach mal Java- mit C++-Code.
L. G.
Steffo
-
Steffo schrieb:
Es gibt Sprachen die begünstigen sauberes Programmieren (ich sage nicht, dass sie dir das abnehmen, aber sie begünstigen es) und es gibt welche, die unsauberes Programmieren begünstigen. Vergleiche einfach mal Java- mit C++-Code.
Du klingst wie jemand, der bisher nur alten Code gesehen hat. Zeig mal was her davon, was du meinst.
-
314159265358979 schrieb:
Steffo schrieb:
Es gibt Sprachen die begünstigen sauberes Programmieren (ich sage nicht, dass sie dir das abnehmen, aber sie begünstigen es) und es gibt welche, die unsauberes Programmieren begünstigen. Vergleiche einfach mal Java- mit C++-Code.
Du klingst wie jemand, der bisher nur alten Code gesehen hat. Zeig mal was her davon, was du meinst.
Es fängt schon mit den abgestutzten Funktionsnamen von C++ an, bei denen man als Anfänger erst mal überfordert ist was die zu bedeuten haben. Die Java-API ist hingegen ein Vorbild wie man Klassen, Methoden und Variablen bennent. Sie ist ebenfalls ein Vorbild was OO betrifft.
Ich persönlich finde es witzig, dass du Java als inkonsistent betrachtest (das denke ich übrigens auch, aber es fällt mir nicht sonderlich negativ auf), was ist dann C++? Es hat von C Altlasten, unterstützt zwar Objektorientierung, aber die Bibliotheken sind es nicht wirklich und es ist überaus komplex (Mehrfachvererbung? Wie kommen Java-Entwickler nur ohne damit aus?!).
-
Macht den Thread dicht. Der hier taugt nicht mal für einen Flamewar, geschweige denn für irgendwelche anderweitigen Erkenntnisse.
-
Steffo schrieb:
Es fängt schon mit den abgestutzten Funktionsnamen von C++ an, bei denen man als Anfänger erst mal überfordert ist was die zu bedeuten haben. Die Java-API ist hingegen ein Vorbild wie man Klassen, Methoden und Variablen bennent.
Bitte bringe konkrete Beispiele. Ich kann damit so nichts anfangen, geschweige denn darauf eingehen.
Steffo schrieb:
Sie ist ebenfalls ein Vorbild was OO betrifft.
Soso. Warum ist Math dann eine Klasse? Was ist denn ein Math-Objekt?
Steffo schrieb:
Ich persönlich finde es witzig, dass du Java als inkonsistent betrachtest (das denke ich übrigens auch, aber es fällt mir nicht sonderlich negativ auf), was ist dann C++?
In C++ gibts so gut wie keine Sprachfeatures, die nicht ohne Compilermagie auskommen.
Steffo schrieb:
Es hat von C Altlasten
Altes muss nicht unbedingt schlecht sein. (Auch wenn es da Dinge gibt, die mich stören.)
Steffo schrieb:
unterstützt zwar Objektorientierung, aber die Bibliotheken sind es nicht wirklich und es ist überaus komplex
Von welchen Bibliotheken sprichst du? Ich brauche Beispiele.
Steffo schrieb:
(Mehrfachvererbung? Wie kommen Java-Entwickler nur ohne damit aus?!).
Mehrfachvererbung habe ich in Java schon mehrmals vermisst. Und wenn nur dafür, einen Listener von 2 anderen Listenerklassen erben lassen zu können. Nein, die Listener hätten keine Interfaces sein können.
-
314159265358979 schrieb:
Steffo schrieb:
Es fängt schon mit den abgestutzten Funktionsnamen von C++ an, bei denen man als Anfänger erst mal überfordert ist was die zu bedeuten haben. Die Java-API ist hingegen ein Vorbild wie man Klassen, Methoden und Variablen bennent.
Bitte bringe konkrete Beispiele. Ich kann damit so nichts anfangen, geschweige denn darauf eingehen.
cin<< oder vielleicht doch cin>> oder <cin>???
Steffo schrieb:
Sie ist ebenfalls ein Vorbild was OO betrifft.
Soso. Warum ist Math dann eine Klasse? Was ist denn ein Math-Objekt?
Gegenfrage: Was für einen Sinn macht ein Math-Objekt?
Steffo schrieb:
Ich persönlich finde es witzig, dass du Java als inkonsistent betrachtest (das denke ich übrigens auch, aber es fällt mir nicht sonderlich negativ auf), was ist dann C++?
In C++ gibts so gut wie keine Sprachfeatures, die nicht ohne Compilermagie auskommen.
Was willst du mir jetzt damit sagen?
Steffo schrieb:
Es hat von C Altlasten
Altes muss nicht unbedingt schlecht sein. (Auch wenn es da Dinge gibt, die mich stören.)
Der Name AltLAST impliziert ja schon, dass ausschließlich schlechtes gemeint ist.
Steffo schrieb:
unterstützt zwar Objektorientierung, aber die Bibliotheken sind es nicht wirklich und es ist überaus komplex
Von welchen Bibliotheken sprichst du? Ich brauche Beispiele.
Wieder popliges Beispiel aus der IO-Bibliothek: cout>>, oder cout<< oder côut>? Wo ist die Objektorientierung?
Steffo schrieb:
(Mehrfachvererbung? Wie kommen Java-Entwickler nur ohne damit aus?!).
Mehrfachvererbung habe ich in Java schon mehrmals vermisst. Und wenn nur dafür, einen Listener von 2 anderen Listenerklassen erben lassen zu können. Nein, die Listener hätten keine Interfaces sein können.
“Ich würde Klassen [-Vererbung] weglassen.” - James Gosling, Principal Scientist bei Sun Microsystems, 2001 auf die Frage, was er anders machen würde, wenn er Java noch einmal zu entwerfen hätte.
“Ziehe Objektkomposition der Vererbung vor.” - E. Gamma, R. Helm, R. Johnson, J. Vlissides, in Entwurfsmuster, Elemente wiederverwendbarer objektorientierter Software.
-
Steffo: Du hast gerade *etwas* gefailt, da std::cin und std::cout Objekte sind, aber mach dir nichts draus.
Steffo schrieb:
Gegenfrage: Was für einen Sinn macht ein Math-Objekt?
Gar keinen, das war ja das Argument von Pi.
-
lzoiktujzrnhbgvfc schrieb:
Macht den Thread dicht. Der hier taugt nicht mal für einen Flamewar, geschweige denn für irgendwelche anderweitigen Erkenntnisse.
Es gab immerhin noch eine lesenswerte Antwort, bevor das Bashing los ging. Aber ich bin hier nicht mehr der Mod, daher kann ich weder Pi und Steffo wegschneiden um die Diskussion zu retten, noch dem Thread den Gnadenschuss geben. Dieses Mal ging es aber wirklich sehr schnell. Normalerweise fängt das erst auf Seite 2-3 an.
-
cooky451 schrieb:
Steffo: Du hast gerade *etwas* gefailt, da std::cin und std::cout Objekte sind, aber mach dir nichts draus.
Pah, das ist doch nur ein Beweis dafür wie verzwickt C++ ist. Ein Objekt ohne new? Wie soll ich das erkennen? Ich dachte std ist schlicht der Namespace.
-
Steffo schrieb:
cin<< oder vielleicht doch cin>> oder <cin>???
Und wo liegt das Problem? cin/cout ist das Objekt. >> und << sind Operatoren. Du hast also nichts verstanden und reißt den Mund auf.
Steffo schrieb:
Gegenfrage: Was für einen Sinn macht ein Math-Objekt?
Keinen. Aber eine Klasse drückt genau das aus.
Steffo schrieb:
Was willst du mir jetzt damit sagen?
String hat operator + überladen. Das geht nur dank Compiler-Magie. foreach geht nur, wenn der Typ Iterable implementiert. Grunddatentypen werden ohne Zutun des Programmierers in Wrapperklassen gewrappt.
Steffo schrieb:
Der Name AltLAST impliziert ja schon, dass ausschließlich schlechtes gemeint ist.
Na dann zeig mir was du meinst.
Steffo schrieb:
Wieder popliges Beispiel aus der IO-Bibliothek: cout>>, oder cout<< oder côut>? Wo ist die Objektorientierung?
cin und cout sind Instanzen der Klassen std::istream und std::ostream. Wo fehlt dir da Objektorientierung?
Steffo schrieb:
“Ich würde Klassen [-Vererbung] weglassen.” - James Gosling, Principal Scientist bei Sun Microsystems, 2001 auf die Frage, was er anders machen würde, wenn er Java noch einmal zu entwerfen hätte.
Was willst du mir damit sagen?
Steffo schrieb:
“Ziehe Objektkomposition der Vererbung vor.” - E. Gamma, R. Helm, R. Johnson, J. Vlissides, in Entwurfsmuster, Elemente wiederverwendbarer objektorientierter Software.
Funktioniert in diesem Fall nur leider so nicht. Komposition ist vorzuziehen, aber Mehrfachvererbung kann extrem nützlich sein. Ich musste letzendlich 2 Klassen schreiben. Die Daten mussten natürlich konsitent gehalten werden. Was für ein Spaß.
-
@Steffo: Lern C++
@PI: Lern Java. edit: PI kann wohl Java.Ihr kämpft gerade einen Vorurteilenkampf und habt beide so unglaublich wenig Übersicht, daß es reichen würde, daraus eine Seifenoper zu drehen.
Kindchen, laßt mal ruhig angehen. Weniger Mutmaßungen, was bei "echten" Projekten wäre. Weniger Pseudo-Beweise, daß jemand gewinnt, weil er "objektorientierter" oder "generischer" ist. Es ist ja nicht klar, daß solche Konzepte alleinseligmachend sind.
-
Steffo schrieb:
cooky451 schrieb:
Steffo: Du hast gerade *etwas* gefailt, da std::cin und std::cout Objekte sind, aber mach dir nichts draus.
Pah, das ist doch nur ein Beweis dafür wie verzwickt C++ ist. Ein Objekt ohne new? Wie soll ich das erkennen? Ich dachte std ist schlicht der Namespace.
Das ist auch korrekt, std:: ist der Namespace. Allerdings sind cin und cout Objekte, die in diesem Namespace liegen. Die Operatoren << und >> sind für die Klassen der Objekte überladen.
-
@volkard: Würde ich kämpfen, dann wäre ich aggressiv
Aber ich kann doch Java.
-
314159265358979 schrieb:
Aber ich kann doch Java.
In der Tat. Mein Fehler. Ich hatte den Thread nicht gründlich genug verfolgt. Ich weiß, daß Du C++ nicht kannst. Ich war immer davon ausgegangen, daß Du mit C++ zu programmieren angefangen hattest. Ich editiere.
-
Naja, mit Java habe ich immerhin schon das eine oder andere Projekt hinbekommen. Aber das ist ja auch nicht besonders schwer
-
314159265358979 schrieb:
@volkard: Würde ich kämpfen, dann wäre ich aggressiv
Auch das nahm ich voreilig an, weil ich gewohnt bin, daß Du sonst fürchterlich rumpöbelst.
Es ist hier wohl nicht der Fall. Ich entschuldige mich nicht (ich doch nicht).
Ich nehme auch das zurück.
Seltsam…
-
Du bist der erste Mensch, den ich sehe, der das …-Zeichen verwendet
-
Wie? Hier ist Ende? Kein Flamewar? Wann geht es weiter? Ich habe doch schon die Chipstüte aufgemacht.
Alles muss man selber machen. Also los: Java ist doof!
-
314159265358979 schrieb:
Naja, mit Java habe ich immerhin schon das eine oder andere Projekt hinbekommen. Aber das ist ja auch nicht besonders schwer
So wie ich das sehe, bashst du Java nur. Aber das ist ja auch nicht besonders schwer