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.