Seid ihr der Meinung, dass C++ besser als Java ist?
Wenn ja, warum?
Ich danke schon einmal im Voraus.
Seid ihr der Meinung, dass C++ besser als Java ist?
Ist die Farbe Gelb besser als Blau?
Wenn ja, warum?
Ist ungefähr eine genauso sinnvolle Frage.
Gruß
Fritze
Nun ja, aber aus technischer Sicht lassen sich doch beide vergleichen und man kann doch dann ermitteln, ob Java C++ technisch überlegen ist oder nicht.
Nun ja, aber aus technischer Sicht lassen sich doch beide
vergleichen und man kann doch dann ermitteln, ob Java C++
technisch überlegen ist oder nicht.
Um etwas qualitativ vergleichen zu können, musst du schon angeben, anhand welcher Kriterien dieses geschehen soll:
Performance,
Komplexität,
Portabilität,
Zeilen Programmcode im Verhältnis zum Resultierenden Programm
Jede Sprache hat ihre Stärken und Schwächen, keine von beiden ist Prinzipiell stärker oder schwächer.
Wortfuchs
ich könnte natürlich auch bemeckern, dass es auf deine frage eigentlich keine antwort gibt. aber ich will mal nicht so sein und gebe mal ein paar allgemeine infos:
c++ hat den vorteil, dass man damit sehr schnelle programme schreiben KANN. ausserdem bietet diese sprache viele verschiedene möglichkeiten, ein problem zu lösen. man ist also ziemlich flexibel. inzwischen gibt es massenweise klassenbibliotheken, die teilweise extrem mächtig sind. man muss also das rad nicht ständig neu erfinden. aufgrung der tatsache, dass geübte programmierer in der lage sind, ressourcenschonende und schnelle applikationen zu schreiben, ist c++ v.a. am desktop-sektor sehr beliebt.
technischer hintergrund: c++ ist eine sprache, die aus der sprache c entwickelt worden ist. während c eine rein prozedurale sprache ist, ist c++ eine objektorientierte sprache. ausserdem ist es eine compilersprache, d.h. der quellcode wird von einem compiler in objectcode (=maschinensprache) übersetzt. über geeignete programme (linker) wird aus dem objectcode eine ausführbare datei (unter windows zb. eine exe-datei). solange man sich an gewisse standards hält, ist der quellcode bis zu einem gewissen grad plattformunabhängig. man ist aber stark von den verwendeten bibliotheken abhängig. der objectcode ist aber auf jeden fall prozessor- und meist auch betriebssystemabhängig.
die vorteile von java liegen auf einer komplett anderen seite. grundidee war, dass die programme nicht nur betriebssystem- sondern auch prozessorunabhängig sein sollen. möglich wurde das durch das einführen einer zwischenschicht: der quellcode wird ähnlich wie bei „normalen“ compilersprachen übersetzt. das ergebnis ist allerdings sogenannter bytecode. dieser bytecode ist eine spezielle form eines objectcodes, der auf einem abstrakten prozessor lauffähig ist. diesen abstrakten prozessor gibt es nicht tatsächlich. man benötigt einen emulator, der diesen prozessor emuliert. diesen emulator nennt man „virtual machine“ oder kurz vm.
das ganze hat mehrere auswirkungen. die wichtigsten wären: java-programme müssen immer von einer vm interpretiert werden. das braucht natürlich rechenzeit. eine faustregel besagt, dass ein exzellent optimiertes java-programm mind. doppelt solange zum lösen eines problems braucht als ein gut optimiertes c-programm. nebenbei ist java ziemlich ressourcenhungrig - zusätzlich zu den ressourcen des eigentlichen java-programms braucht man ja auch noch die ressourcen für die vm selbst.
das absolute killerfeature ist aber die plattformunabhängigkeit. jedes system, dass über eine vm verfügt, kann java-programme ausführen. das java-programm muss dabei nicht neu kompiliert werden: ein und dieselbe programmdatei ist sowohl under windows, linux, mac os und was auch immer lauffähig. (sofern man nicht plattformspezifische funktionen verwendet). dadurch ergeben sich vor allem 2 anwendungsbereiche, in denen java praktisch unschlagbar ist:
- im internet-bereich kann man miniprogramme als applets verpacken, die innerhalb eines web-browsers ausgeführt werden können. welches betriebssystem dabei verwendet wird, ist letztendlich egal.
- haupteinsatzbereich ist aber der unternehmensbereich und hier die applikationsserver. java liefert fix fertig technologien mit, die es unternehmen auf einfachste art und weise erlauben, ihre buchungssysteme miteinander zu verbinden.
nebenbei gibt es noch so spielereien wie java-fähige handys. das hab vor allem kostengründe für die handyhersteller: neue handys kann man inzwischen nur mehr über die beigelegte software verkaufen. telefonieren kann man schließlich ja mit jedem. da aber in jedem handy ein ander prozessor werkelt, müssten die softwarebeigaben (hauptsächlich gehts da um spiele) für jedes handy neu angepasst werden. der diese spiele aber in einem speziellen java-dialekt erstellt, so laufen sie auf jedem handy, dass eine entsprechende vm anbieten kann. der handy-hersteller muss also nur noch die vm auf jedes handy portieren - die software wird einfach nur aufgespielt und funktioniert.
zusammenfassung:
c++ nimmt man, wenn man die objektorientierung bis zum exzess ausnutzen will und wenn ressourcenbedarf und geschwindigkeit kritisch sind.
java nimmt man, wenn man möglichst plattformunabhängig sein will.
eine allgemeine antwort, was besser ist, gibt es damit immer noch nicht. es gibt überhaupt keine „optimale“ sprache (und wird es auch nie geben). jede sprache hat ihre vorteile und ihre nachteile. je nach problemstellung muss man die jeweils optimale variante auswählen.
erwin
Seid ihr der Meinung, dass C++ besser als Java ist?
Ich finde, dass fuer mich C++ besser geeignet ist als Java.
Wenn ja, warum?
Zum einen habe ich zuerst (nach Basic) C gelernt, da bot sich C++ eher an. Ich habe trotzdem beides getestet und habe bei Java das Manko gemerkt, dass ich Operatoren nicht ueberladen konnte.
Hintergrund war, dass ich als Test eine Klasse fuer komplexe Zahlen schreiben wollte. Das klappte soweit, bis ich zwei komplexe Zahlen addieren wollte. Unter C++ geht das mit ‚Komplex operator+(Komplex a, Komplex b)‘, dann kann ich einfach ‚a + b‘ schreiben. Bei Java habe ich nichts entsprechendes gefunden, da haette ich ‚a.add(b)‘ oder so etwas basteln muessen, das fand ich nicht intuitiv.
Jetzt arbeite ich schon laenger mit C++ und nutze da zusaetzlich noch die Mehrfachvererbung, auch eine Sache, die es unter Java nicht gibt.
Ich weiss, das ist jetzt eine einseitige Darstellung, aber das ist meine Erfahrung.
Zur Portabilitaet kann ich noch anmerken, dass sich mein C+±Programm ohne weiteres unter Linux und Windows kompilieren laesst (nur wenige Anpassungen sind da noetig). Wenn man aber nur die Binaerpakete hat ist das bei Java wohl besser (nur gehoert, nutze selber keine Java-Programme).
Meine Empfehlung ist, sich beides anzuschauen und selber testen, womit man besser arbeiten kann (dafuer hat man die Wahl). Und syntaktisch gibt sich zwischen C++ und Java nicht so viel (soweit ich das beurteilen kann).
Gruss
Diether Knof
Nochwas, was rot von blau unterscheidet…
Ein noch nicht erwähntes Plus für Java:
Garbage Collector - lästige Destruktoren (fehlerträchtig)
kann man sich sparen.
Plus für C++: Templates 
Ciao,
Martin.