Unterschiedliche Programmierungsarten?
-
Hallo alle zusammen.
was ist eigentlich der Unterschied, jetzt nicht die Sprache selber sondern die Art wie man sie verwendet, bei C++ und Java?
Ich habe desöfteren in Foren gelesen, wo sich C++ Programmierer über die Geschwindigkeit von Java aufgeregt haben, dass es zu langsam sein soll und die Java Programmierer meinten das sie kein richtiges Java programmiert haben, sondern nur die Art wie sie in C++ programmieren in Java umgesetzt haben und das es deshalb so langsam ist.
Ich hoffe ihr könnt einigermaßen verstehen was ich möchte.Gruß, Daniel_S
-
Das man Java wie C++ programmieren kann wäre mir neu, wohl eher andersrum.
-
Servus,
@Daniel_S Du musst darauf achten was du von dir gibst, wenn du Programmiersprachen vergleichst.
Im allg. ist es eine Glaubensfrage, sowie eine Betrachtung für einen Anwendungsfall
Threads in denen die Geschw. von Java kritisiert wird hatten/haben ihre Berechtigung. Java - Software war bis 1.4 auf jeden Fall langsamer als Projekte die mit C++ umgesetzt wurden. Vorausgesetzt beide Projekte hatten ein gutes Design
Seit 1.5 hat Sun Java ordentlich eingeheitzt und kann sich heutzutage mit anderen Programmiersprachen messen.
Java und C# haben in einige Mikrobenchmarks gezeigt, dass Sie in bestimmten Anwendungsfällen eine höhere Performance aufweisen als C++ Lösungen. Aber dies sind absolute Ausnahmen und meist auch noch von der Hardware abhängig
Daher werde ich auch keine Referenzen angeben
In 99% der Fälle liegt der Performanceverlust nicht an der Sprache sowie Hardware, sondern an der Person vorm Bildschirm
Wenn du nach der neuesten Generation von Programmiersprachen bist, würde ich dir Raten bei anzufragen. Vielleicht bekommst du ja ne Berechtigung die nächste (sinnlose) Programmiersprache aus dem Haus $$$ zu verwenden. Der Name ist überigens N oder wars M
Für was du dich entscheidest musst du selber abwägen. Es sei noch erwähnt, dass Java mittlerweile komplette Freigegeben wurde -> OpenSource
MfG,
ThomasP.S.: Noch viel Spaß beim Schreiben in diesem sinnlosen Thread
-
Das sollte überhaupt kein Vergleich irgend einer Sprache sein. Ich möchte keine Vor bzw Nachteile einer Sprache hören, ich wollte eigentlich nur wissen ob es irgendein Unterschied macht, wenn ich als C++ Programmierer auf einmal in Java Programmiere. Ich zweifel garnicht daran das Java so schnell sein kann wie C++.
Die Frage war nur, kann ich ein Programm in C++ einfach so eins zu eins nach Java portieren?PS: Ich programmiere seit mehreren jahren in C++ und bin jetzt dabei Java zu lernen da ich die Sprache sehr gut finde.
-
C++ eins zu eins nach Java
Ähm, jein. Es ist generell möglich. Du solltest jedoch bedenken das Java ein eigenes Konzept verfolgt und somit eine eins zu eins Portierung nicht zu empfehlen ist. Ich habe schon einige Portierungen von C++ -> Java gesehen und fand sie hässlich. Mir kam so vor als kannten die Programmierer nur den Syntax und hatten sonst keine Ahnung von Java.
Du musst den Code nicht großartig verändern. Java besitzt halt ein paar Techniken die C++ nicht hat (was C++ Flexibilität verleiht) und die man beim konvertieren beachten sollte
z.B.
- keine Zeiger
- abstrakte Klassen
- Interfaces
- Generic's
- ...
-
Und genau sowas meinte ich. Wo kann ich darüber mehr Informationen finden was ich beachten muss. Die Syntax habe ich schnell drauf aber halt nicht wie ich richtig in Java programmiere.
Alle Tutorials die ich bis jetzt gefunden habe nehmen nur die Standardsachen durch die man halt so aus Tutorials kennt wie zB Schleifen, Abfragen und soweiter. Aber die sind ja in fast jeder Sprache gleich und deshalb nicht das Problem.
-
Siassei schrieb:
Du musst den Code nicht großartig verändern. Java besitzt halt ein paar Techniken die C++ nicht hat (was C++ Flexibilität verleiht) und die man beim konvertieren beachten sollte
z.B.
- keine Zeiger
- abstrakte Klassen
- Interfaces
- Generic's
- ...Das was man in Java Referenzen nennt, ist eigentlich fast das gleiche wie C++ Zeiger, nur ohne Zeigerarithmetik, aber wer verwendet die schon oft.
Abstrakte Klassen gibts natürlich in beiden Sprachen.
Java Interfaces kannst du in C++ mit pure virtual Klassen nachbauen, ist zwar nicht ganz so schön, aber reicht aus.
Generics sind eingeschränkte Templates.Java hat keine Destruktoren die zu nem definierten Zeitpunkt aufgerufen werden. Dafür hat es try - finally und im finally kann macht man dann die aufräumarbeiten wie Streams schließen. Sonst fällt mir nichts ein das man in Java groß falsch machen kann, wenn man schon vernünftig C++ programmierne kann.
-
Das was man in Java Referenzen nennt, ist eigentlich fast das gleiche wie C++ Zeiger, nur ohne Zeigerarithmetik, aber wer verwendet die schon oft.
Abstrakte Klassen gibts natürlich in beiden Sprachen.
Java Interfaces kannst du in C++ mit pure virtual Klassen nachbauen, ist zwar nicht ganz so schön, aber reicht aus.
Generics sind eingeschränkte Templates.Toll du hast eindrucksvoll Beispiele genannt, die besagen, dass man Javastyle in C++ programmieren kann...
Aber halt.. ach richtig, der Thread ging um die andere Richtung.
-
JustAnotherNoob schrieb:
Das was man in Java Referenzen nennt, ist eigentlich fast das gleiche wie C++ Zeiger, nur ohne Zeigerarithmetik, aber wer verwendet die schon oft.
Abstrakte Klassen gibts natürlich in beiden Sprachen.
Java Interfaces kannst du in C++ mit pure virtual Klassen nachbauen, ist zwar nicht ganz so schön, aber reicht aus.
Generics sind eingeschränkte Templates.Toll du hast eindrucksvoll Beispiele genannt, die besagen, dass man Javastyle in C++ programmieren kann...
Warum Javastyle in C++? Templates sind mal sicher kein Javastyle. Abstrakte Klassen und Interfaces gibts eigentlich fast überall. Und nur weil man Pointer verwendet ist es auch noch kein Javastyle. Man könnte zwar alles auf dem Heap anlegen, wie in Java, und dazu braucht man Pointer, aber deswegen sind doch Pointer noch kein Javastyle.