C++ vs. Java - Kleine Fallstudie gefällig?
-
Hallo!
Nachdem unter höchst fadenscheiniger Begründung dieser Thread http://www.c-plusplus.net/forum/viewtopic-var-p-is-1290247.html#1290247
von der Zensur geschlossen wurde folge ich dann dem Zensor in seinem Rat diesen Beitrag hier zu posten. Mal sehen wie lange es dauert bis diese Kritik oder der ganze Thread gelöscht werden.Es gibt einen Dauerbrenner-Thread im C++ Forum in dem - kurz gefasst - die Frage nach "der besseren" Programmiersprache zu beantworten versucht wird.
Im wesentlichen erfolgt das, soweit ich den Thread überblicke, deduktiv mittels Vergleiches der Sprachmerkmale.
Es gibt imho mindestens zwei methodische Inkonsistenzen dabei
- Lösung sucht Problem
Aussagen wie "man braucht Zeiger nicht" oder "der GC ist dubios" sind imo per-se weder richtig noch falsch sondern schlicht unentscheidbar solange man keinen Bezugsrahmen hat, also ein konkretes Problem das man lösen muss.- Der menschliche Faktor
Sprachen mögen Features haben oder ihrer entbehren; zur produktiven Arbeit muss der Entwickler sie auch nutzen (oder missbrauchen) können. Es wäre doch wirklich mal aufschlussreich zu untersuchen wie gross der Anteil strittiger Features in der Praxis eigentlich ist.Also: Wir könnten uns doch mal eine minimale Allerwelts-Fallstudie überlegen! (Voschlag s. Anhang)
Was haltet Ihr davon?Grüsse && Danke fürs Lesen
*this
P.S.: Aber jetzt bitte nicht den Grabenkrieg hieher verlagern!
Anhang
Meine Idee wäre sowas:
- nicht zu systemnahes; das wäre Java gegenüber etwas unfair
- Fliesskommaperformance lassen wir mal weg
- Mit C++ darf man Bibliotheken im Umfange der Java-EE hinzufügen; also z.B. GUI-Bibliotheken; Boost; ATL/COM, MICO/Orbeit, ... und dergleichen whatever we like
- [...] ???Also:
- Eine SQL-Datenbank mit drei Tabellen ( (m:n) plus die Hilfstabelle ); ein BLOB-Feld und ein TEXT Feld dabei
- Ein RPC-Server für (Win32 und Linux) der den BLOB verarbeitet z.B. Base64Encoded, eine Volltextsuche über dem TEXT Feld anbietet und (String)-Ergebnisse als XML zurückliefert (all dies mit beliebiger Technik).- Ein Standalone-GUI jeweils für Win32 und Linux/X
- Ein Intranet Client ( Whatever we like )Wäre das nicht ein praxisnaher Masstab?
(Ich würde es bei Bedarf auch in MySQL/Python/Tix prototypisieren - das spart ein Pflichtenheft.)
-
und dann?
-
wenn du sprachen vergleichen willst, ist es irgendwie kontraproduktiv die hauptarbeit an ein externes program abzugeben (SQL mein ich).
mein vorschlag waere einfach ne SQL DB zu implementieren, dann kann man naemlich mit immer dem gleichen client (per tcp) die leistung messen. (ich glaube es gibt sogar standard benchmarks dafuer sodass wir uns hier nicht ueber einen fairen test streiten muessten) das waere dann auch eine schoen grosse verwaltungsaufgabe die nicht rechenintensiv ist und java doch eigentlich stehen muesste.
damit hier nicht jeder nen sql parser anfaengt, koennte man die xml version nutzen, dafuer hat wohl jede sprache ein paar parser libs. (alternativ waere ein simpler xml syntax ja auch moeglich)
-
Werden denn wirklich die Sprachen verglichen, oder nicht einfach nur Implementierungen/Algorithmen?
-
wollen wir nicht lieber äpfel mit birnen vergleichen und danach vergleichen, welches von beiden besser schmeckt?
-
Birnen
-
rapso schrieb:
wenn du sprachen vergleichen willst, ist es irgendwie kontraproduktiv die hauptarbeit an ein externes program abzugeben (SQL mein ich).
Ne. Das ist super. Damit kann man prima vergleichen wie aufwendig es ist, solche externen Ressourcen mit der jeweiligen Programmiersprache einzubinden.
-
Was soll das bringen?
Wird es jemanden aus der Flamewar Fraktion überzeugen können?Letzten endes kann man doch in beiden Sprachen schlecht programmieren.
Man muss es aber nicht, wenn man die richtigen Mittel nutzt.
-
Jester schrieb:
rapso schrieb:
wenn du sprachen vergleichen willst, ist es irgendwie kontraproduktiv die hauptarbeit an ein externes program abzugeben (SQL mein ich).
Ne. Das ist super. Damit kann man prima vergleichen wie aufwendig es ist, solche externen Ressourcen mit der jeweiligen Programmiersprache einzubinden.
in dem fall muesste man aber allerlei libs checken z.b. sound, rendering, netzwerk(z.b. https)... und am ende weiss man nur wie gut eine sprache unterstuetzt wird, damit hat man aber noch keine aussage ueber die guete der sprache.
-
rapso schrieb:
in dem fall muesste man aber allerlei libs checken z.b. sound, rendering, netzwerk(z.b. https)... und am ende weiss man nur wie gut eine sprache unterstuetzt wird, damit hat man aber noch keine aussage ueber die guete der sprache.
Ne, muß man nicht alles prüfen. Es geht um eine Fallstudie, keine vollständige Evaluation.
Insbesondere lässt sich mit der gegebenen Aufgabenstellung sehr leicht prüfen, ob man in Java tatsächlich so reibungslos alles mit der Standardlib realisieren kann und ob man damit tatsächlich auch so viel schneller ist. Andererseits sieht man auch, ob man mit C++ tatsächlich durch Einbinden der richtigen Libraries die Entwicklungszeit so stark verkürzen kann, dass man nicht länger braucht als mit der Java-Version, wo vieles schon da ist.Da das zwei Hauptthesen in den Flamewars sind, denke ich, dass allein die Überprüfung dieser Thesen das Experiment rechtfertigt.
-
Jester schrieb:
Ne, muß man nicht alles prüfen. Es geht um eine Fallstudie, keine vollständige Evaluation.
Insbesondere lässt sich mit der gegebenen Aufgabenstellung sehr leicht prüfen, ob man in Java tatsächlich so reibungslos alles mit der Standardlib realisieren kann und ob man damit tatsächlich auch so viel schneller ist.naja, soweit ich weiss ist einiges in c++ implementiert worauf java bzw jvm dann zugreift (jedenfalls war das mal so und ist bei c# zZ auch so). also ist schnelligkeitsvergleich dann nicht wirklich aussagefaehig.
Andererseits sieht man auch, ob man mit C++ tatsächlich durch Einbinden der richtigen Libraries die Entwicklungszeit so stark verkürzen kann, dass man nicht länger braucht als mit der Java-Version, wo vieles schon da ist.
Da das zwei Hauptthesen in den Flamewars sind, denke ich, dass allein die Überprüfung dieser Thesen das Experiment rechtfertigt.
ich dachte es wurde auch geflamet wegen GC und wie langsam java ist usw. bzw. dass man heutzutage besser mit GC faehrt und dafuer keine memleaks hat usw.
wenn man diese sache ueberpruefung wollen wuerde waere es wichtig die sprache selbst auszulasten.
-
<°((((><
-
rapso schrieb:
Jester schrieb:
Ne, muß man nicht alles prüfen. Es geht um eine Fallstudie, keine vollständige Evaluation.
Insbesondere lässt sich mit der gegebenen Aufgabenstellung sehr leicht prüfen, ob man in Java tatsächlich so reibungslos alles mit der Standardlib realisieren kann und ob man damit tatsächlich auch so viel schneller ist.naja, soweit ich weiss ist einiges in c++ implementiert worauf java bzw jvm dann zugreift (jedenfalls war das mal so und ist bei c# zZ auch so). also ist schnelligkeitsvergleich dann nicht wirklich aussagefaehig.
Wir reden vom gleichen "schnell"? Ich meine die Entwicklungszeit, nicht die Laufzeit.
-
Jester schrieb:
Wir reden vom gleichen "schnell"? Ich meine die Entwicklungszeit, nicht die Laufzeit.
hmm... ich ging von schnell schnell aus
(also performance)
entwickelungszeit usw. find ich sehr schwer messbar.
-
Also ich fänds ganz gut wenn wir eine SQL Anbindung einbauen würden - einfach weil das gängige Praxis in den viel beschworenen "Business-Applikationen" ist.
Bei der Volltextsuche könnte man sich ja auf C++/Java-Sprachmagie statt aufs RDBMS stützen und mal richtig grosse Speicherblöcke mit Regex abgrasen oder so.
Btw ich mach gerne ggf. den Prototypen nach den Vorgaben die wir hier beschliessen und möchte natürlich beim C++-Team mitmachen, aber koordinieren und hosten kann ich's nicht.
Hat jemand Platz für 1 BBS (mit PN) und ein CVS-Repository?
Oder gibt's ne andere Idee das zu organisieren?Grüsse
*this
-
rapso schrieb:
in dem fall muesste man aber allerlei libs checken z.b. sound, rendering, netzwerk(z.b. https)... und am ende weiss man nur wie gut eine sprache unterstuetzt wird, damit hat man aber noch keine aussage ueber die guete der sprache.
Sind viele verfügbare Libs nicht eher ein Beweis der Güte, solange die Libs auch in dieser Sprache geschrieben sind?
-
Gast++ schrieb:
Also ich fänds ganz gut wenn wir eine SQL Anbindung einbauen würden - einfach weil das gängige Praxis in den viel beschworenen "Business-Applikationen" ist.
das ist aber unfug, weil man dazu weder c++ noch java nimmt, sondern visual basic oder c#.
Bei der Volltextsuche könnte man sich ja auf C++/Java-Sprachmagie statt aufs RDBMS stützen und mal richtig grosse Speicherblöcke mit Regex abgrasen oder so.
also gucken, bei welcher sprache eine bessere (natürlich in c++ implementierte) regexp-lib beiliegt. lustiger gedanke.
-
volkard schrieb:
visual basic.
Ich dachte wir sprächen über Programmiersprachen....
*SCNR*
Grüsse
*this
-
!§$%&/()=? schrieb:
rapso schrieb:
in dem fall muesste man aber allerlei libs checken z.b. sound, rendering, netzwerk(z.b. https)... und am ende weiss man nur wie gut eine sprache unterstuetzt wird, damit hat man aber noch keine aussage ueber die guete der sprache.
Sind viele verfügbare Libs nicht eher ein Beweis der Güte, solange die Libs auch in dieser Sprache geschrieben sind?
nein, das ist nicht aussagefaehig, das ist als ob du ne neue graphikkarte mit einer alten vergleichen wuerdest und oh wunder verwenden viel mehr leute die alte.
java kann nunmal nicht wirklich die selbe userbase aufweisen und deswegen auch nicht die libs, ansonsten kann ich dir sicher ohne ende libs aufzeigen bei denen es nichts bei java gibt.
und das alles hat am ende leider immer noch nicht gesagt, ob die vorteile den nachteilen von java gegenueber c++ ueberwiegen. aber selbst wenn wir hier wirklich entwicklungszeit und laufzeit dann vergleichen ended es wieder nur im streit was wichtiger ist. was bloedsinnig ist. ich kann dir den auftrag geben einen echtzeit raytracer zu machen, den machst du in c++ for sure. ich kann dir sagen dass du fuer alle bankautomaten meiner bank ein interface zur DB coden sollst, das machst du dann wohl mit java.
das hat mit eignung und "moegen" und nicht mit "besser" zu tun.
-
volkard schrieb:
Gast++ schrieb:
Also ich fänds ganz gut wenn wir eine SQL Anbindung einbauen würden - einfach weil das gängige Praxis in den viel beschworenen "Business-Applikationen" ist.
das ist aber unfug, weil man dazu weder c++ noch java nimmt, sondern visual basic oder c#.
java,VB und c# sind doch fuer gui-clients fuer DB gleich geeignet und verbreitet.