C++ vs. Java - Kleine Fallstudie gefällig?
-
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.
-
Hi,
mal ein paar Fragen, die mir durch den Kopf schießen:
+ Ist eine Testphase mit eingeplant ? Wie werden Fehler gewertet ?
+ Wird ein gemeinsames Design vorgegeben ? Da man im Design bereits verschiedene "Reuse-/Flexibilisierungsmarken" setzt, kommen da schnell sehr entscheidende Unterschiede (sowohl Entw- als auch Laufzeit) zustande.
+ Wie werden die "Erfahrungsdifferenzen" festgestellt oder gewertet ? Ich behaupte mal, dass ich in jeder Sprache Leute finden werde, die "besser" und welche die "schlechter" (egal nach welchem Maß) programmieren als ich.Ich weiß nicht, wie realistisch das Ganze ist.
Gruß,
Simon2.
-
Simon2 schrieb:
+ Ist eine Testphase mit eingeplant ? Wie werden Fehler gewertet ?
wohl am besten, sie werden weggemacht, statt sich eine bewertung zu überlegen.
+ Wird ein gemeinsames Design vorgegeben ? Da man im Design bereits verschiedene "Reuse-/Flexibilisierungsmarken" setzt, kommen da schnell sehr entscheidende Unterschiede (sowohl Entw- als auch Laufzeit) zustande.
mit einem java-design erzwingst du, daß java gewinnt. und umgekehrt. wäre also nicht geschickt, das vorzugeben.
falls es in c++ einen performance-teil gibt, zum beispiel stringsuche, könnte ich dran denken, in diesem teil ein wenig mitzuzspielen. vielleicht bringts ja dann was, den code nach java zu portieren.
-
Simon2 schrieb:
+ Ist eine Testphase mit eingeplant ?
Meinste nicht dass es leicht zu aufwändig wird wenn wir's so formal betreiben?
Simon2 schrieb:
+ Wie werden Fehler gewertet ?
Würde vorschlagen dass verbliebene Fehler einfach in die Geasmtbewertung eingehen. Ist nicht gleich ein K.O. aber es sagt halt vielleicht auch was über typische Defizite der Sprchen aus.
Simon2 schrieb:
+ Wird ein gemeinsames Design vorgegeben ? Da man im Design bereits verschiedene "Reuse-/Flexibilisierungsmarken" setzt, kommen da schnell sehr entscheidende Unterschiede (sowohl Entw- als auch Laufzeit) zustande.
Vielleicht könnte man ein Modul für Reuse vorsehen. Das Interface müsste dann ja in beiden Modellierungen enthalten sein.
Restliche Modellierung sollte imho sprachspezifisch sein; sonst machen wir uns Probleme die's in der Praxis nicht gibt.Simon2 schrieb:
+ Wie werden die "Erfahrungsdifferenzen" festgestellt oder gewertet ? Ich behaupte mal, dass ich in jeder Sprache Leute finden werde, die "besser" und welche die "schlechter" (egal nach welchem Maß) programmieren als ich.
Deshalb denke ich das sich beidseitig bei 5-10 Teilnehmern ein gesunder Mittelwert finden wird.
Vielleicht schreiben beide Teams einen Bericht mit pros und cons und man schaut sich zusammen die beiden Soources an.
Konsens in der Bewertung werden wir eh nicht erzielen, aber wir haben vielleicht eine gute Argumentationsgrundlage ?!?Simon2 schrieb:
Ich weiß nicht, wie realistisch das Ganze ist.
Ich fänds realistischer als ein rein deduktives Vorgehen; zur reinen Wahrheit werden wir dadurch freilich nicht gelangen!
@Simon2:
Würdest Du denn vielleicht mitmachen?
Hättest Du Space und Lust zum Hosting?Grüsse
*this
-
Also die Idee an sich ist nicht schlecht. Wobei ich sagen muß, das es schon genug Erfahrungswerte aus der realen Welt gibt. Deshalb finde ich die Fallstudie etwas unseriös, da die Entwicklungsgeschwindigkeit von einer Person und den Werkzeugen (nicht nur Sprache!!!) abhängt. Ich selber habe z.B. in der Entwicklung von DB-Anwendungen in Java mehr Erfahrung. In C++ habe ich in dem Bereich praktisch keine Erfahrung (außer mal hin und wieder diverse Libs anprobiert). Dafür habe ich in C++ in anderen Bereichen mehr Erfahrung als ich das in Java sammeln könnte.
Zum Spaß und um selber mal an sowas mitzumachen, finde ich es gut. Ich erkläre mich auch bereit, mit zumachen.
- 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
Sowieso! Sonst müsste man gleich das nachfolgende streichen:
- nicht zu systemnahes; das wäre Java gegenüber etwas unfair
- Fliesskommaperformance lassen wir mal weg- 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).
Was ist ein RPC-Server? Oder meinst du einfach einen Server für XML-Remotecalls?
- Ein Standalone-GUI jeweils für Win32 und Linux/X
Dürfte für beide Seiten kein großes Ding sein. Im einfachsten Fall wird das sogar nur mit der Mouse zusammen geklickt, kann man nicht gerade von Programmierung sprechen...
(ich meine das für beide Fraktionen!)
- Ein Intranet Client ( Whatever we like )
Was denn nun? Standalone-GUI oder Web?
Wäre das nicht ein praxisnaher Masstab?
Umsetzen kann man beides mit Java oder C++ ohne Probleme. Das was vorgeschrieben werden sollte, sind zumindest die Techniken/Protokolle. Soll heißen, nicht das einer SOAP macht, und der andere ODBC. Aber Libraries und Werkzeuge sollten dann von jedem wählbar sein, wie er meint, am schnellsten zum Ergebnis zu kommen.
Ein Design (bezogen auf Codebasis) würde ich nicht vorgeben, ausgenommen auf reines Datendesign (z.B. die von dir genannten Tabellen). Aber jetzt nicht nach dem Motto "Ja, an der Stelle muß ein Visitorpattern benutzt werden, dort muß eine Factory die Objekte erzeugen...". Das sollte jeder machen können wie er es für richtig hält.
(
Ich würde es bei Bedarf auch in MySQL/Python/Tix prototypisieren - das spart ein Pflichtenheft.)
Am Ende gewinnt Python.
Nein, aber ein "Pflichtenheft" fämd ich nicht schlecht. Wie die GUI aussehen soll, kann man im normalfalls mit Papier und Bleistift machen. Einen Prototypen finde ich nicht so gut, weil man an dem höchstens die GUI sieht. Bei allem anderen muß ich mich in deinen Prototypen einarbeiten. Ich habe keine Ahnung von MySQL, in Python habe ich mal ein Helloworld gemacht, und Tix hört sich für mich nach dem Pfeffermindbonbon an.
-
volkard schrieb:
Simon2 schrieb:
+ Ist eine Testphase mit eingeplant ? Wie werden Fehler gewertet ?
wohl am besten, sie werden weggemacht, statt sich eine bewertung zu überlegen. ...
Für mich ist es durchaus ein Qualitätsmerkmal, wenn im resultierenden Code weniger Fehler auftreten. Nach meiner (bescheidenen) Erfahrung haben die Javaisten (hier in der Firma) ihr Teil zwar viel schneller compiliert, verbraten diesen Vorsprung aber dann locker in der Testphase (tw. noch beim Kunden) und den dadurch notwendigen "Rückwärtsrollen" in die Entwphase.
volkard schrieb:
...
mit einem java-design erzwingst du, daß java gewinnt. und umgekehrt. wäre also nicht geschickt, das vorzugeben. ...Eben deswegen habe ich das erwähnt: Entweder geben wir ein Design vor und bevorzugen eine Sprache oder wir lassen frei wählen und bekommen nur schwer vergleichbare Lösungen.
Gruß,
Simon2.
-
Gast++ schrieb:
...
@Simon2:
Würdest Du denn vielleicht mitmachen?
Hättest Du Space und Lust zum Hosting?...bool Simon2::isFun_avail() { return true; } bool Simon2::isSpace_avail() { return false; }
(Habe einfach zuviele Hobbies und Verpflichtungen)
Aber Danke für die Anfrage.
Gruß,
Simon2.
-
Was soll denn gehostet werden?
Kann nicht jeder lokal auf seinem PC entwickeln? Den Source versionieren kann auch jeder selber für sich. Im einfachsten Fall ein Backup machen und in einem Zip packen... wenn kein Versionstool da ist.
Eine RDBMS kann jeder auch noch selber installieren, wenn man sich auf ein Once-Click-Produkt einigt. Unter Windows habe ich schon mal PostgreSQL installiert. Einfacher gehts nun nicht. Deren Admin-Tool ist übrigens in wxWidgets programmiert.
-
Artchi schrieb:
Zum Spaß und um selber mal an sowas mitzumachen, finde ich es gut. Ich erkläre mich auch bereit, mit zumachen.
Das finde ich super! C++?
Artchi schrieb:
Was denn nun? Standalone-GUI oder Web?
Eigentlich dachte ich dass wir beides implementieren.
Selbst wenn'S bei uns das gleiche tut; ich denke an Lösungen indenen es Backoffice-Standalonne-Clients und Frontoffice-Web-GUI anbeboten wird.Hiffssprachen fürs Web sollten erlaubt sein; zB. per Java-Script/COM oder PHP /XMLRPC auf den "RPC"-Server zugreifen
"RPC"-Server ist natürlich schlecht formuliert von mir.
Ich wollte nur irgendeine Art von IPC mit einbringen und die sollte auch remotable sein, finde ich.Ob das nun direkt XML-RPC oder XML das von Middletier verpackt wird werden soll müssten wir diskutieren.
XML-RPC direkt ist zwar schön schlank aber man hätt eletzt lich kein internes XML-Handling in der App sondern hätte das allees im Kommunikationslayer.Müssen wir uns vielleicht noch mal überlegn;
Optimal wär's natürlich wenn sich beide Gruppen sich auf ein Protoll einigen könnten, damit die Clients austauschbar wären.
Dann könnte man sich irgendwoher ein Webgui für beide cut'n pasten und verlöre damit keine Zeit.Artchi schrieb:
Ein Design (bezogen auf Codebasis) würde ich nicht vorgeben, ausgenommen auf reines Datendesign (z.B. die von dir genannten Tabellen). Aber jetzt nicht nach dem Motto "Ja, an der Stelle muß ein Visitorpattern benutzt werden, dort muß eine Factory die Objekte erzeugen...". Das sollte jeder machen können wie er es für richtig hält.
ACK
Artchi schrieb:
Am Ende gewinnt Python.
Nein, aber ein "Pflichtenheft" fämd ich nicht schlecht. Wie die GUI aussehen soll, kann man im normalfalls mit Papier und Bleistift machen. Einen Prototypen finde ich nicht so gut, weil man an dem höchstens die GUI sieht. Bei allem anderen muß ich mich in deinen Prototypen einarbeiten. Ich habe keine Ahnung von MySQL, in Python habe ich mal ein Helloworld gemacht, und Tix hört sich für mich nach dem Pfeffermindbonbon an.
Tix schmeckt sogar so!
Wenn's per Pflichtenheft schneller geht bin ich auch dafür; ich scheu mich nur immer etwas vor Paperwork
EDIT
Artchi schrieb:
Was soll denn gehostet werden?
Hmmm... Irgendeine Kommunikationslösung (BBS), ggf Pflichtenheft oder Prototyp, Testdaten(skript), DDL-Skripte; und später ein SVN/CVS-Repository - zumindest für C++; ich weiss nicht ob es java-spezifische VCS gibt./EDIT
Grüsse
*this