C++ vs. Java - Kleine Fallstudie gefällig?



  • 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



  • Ich hätte da mal ne Idee,

    XML-Verarbeitung eines Grossen Document mit SAX in C++ und Java, davon einen Baum erstellen und nach paar Sachen suchen.



  • zur versionierung würde ich hg/monotone vorschlagen, da die flott und wesentlich fähiger als svn/cvs sind



  • rapso schrieb:

    ich kann dir den auftrag geben einen echtzeit raytracer zu machen, den machst du in c++ for sure.

    Hmm... Ich denk ein Echtzeit-Raytracer waer ein interessantes Performance-Vergleichsprojekt, da es da wirklich nur um Number-Crunching geht (also keine Abhaengigkeiten von anderen Libs, ausser halt das auf-den-Screen-bringen), und da soll Java ja gar nicht so schlecht sein, mit JIT usw.



  • also ne sql db ansprechen ist in java einfacher. in c++ hast du irgendeine lib bei der du schauen musst, wie du die statements absetzt und wie du das ergebnis bekommst. in java hast du durch jdbc vorgegebene interfaces und bekommst das ergebnis als resultset. wenn du ein resultset in c++ willst, dann musst du es dir selber bauen. falls die db mal ausgetauscht werden soll, muss in java nur die zeile in der die klasse geladen wird geändert werden. in c++ musst du alle lib spezifischen befehle ändern, weil es kein gemeinsames interface gibt. vorrausgesetzt man verwendet std sql und nix db spezifisches.



  • naja, du scheinst nicht wirklich Ahnung von C++ haben. Sonst würdest du nicht solche Unwahrheiten über C++-DB-Interfaces reden. Aber um so besser: wird das Ergebnis so manchen hier um so mehr überraschen. 😃

    Zeus! Naja, den Vergleich können wir uns sparen: http://www.doctronic.de/knowhow/vortraege/DE_1.2002_91_94_monitor.pdf Da hat das XML-Magazin schon Java gegen C++ antreten lassen. Ergebnis: XML ist in Java für den Progger einfacher zu handhaben. Aber Java ist einfach bei zu großen XML-Dokumenten um ein vielfaches langsamer gewesen und ist sogar wegen Speicherhunger abgestürzt (hat einfach den Test nicht bis zum Ende geschafft). Während C++ das Dokument viel schneller verarbeitet und vorallem zuende verarbeitet hat.



  • db@ schrieb:

    also ne sql db ansprechen ist in java einfacher. in c++ hast du irgendeine lib bei der du schauen musst, wie du die statements absetzt und wie du das ergebnis bekommst. in java hast du durch jdbc vorgegebene interfaces und bekommst das ergebnis als resultset. wenn du ein resultset in c++ willst, dann musst du es dir selber bauen. falls die db mal ausgetauscht werden soll, muss in java nur die zeile in der die klasse geladen wird geändert werden. in c++ musst du alle lib spezifischen befehle ändern, weil es kein gemeinsames interface gibt. vorrausgesetzt man verwendet std sql und nix db spezifisches.

    http://soci.sourceforge.net/ < doch, das gibts auch für C++.
    Und für ODBC gibts auch Libs.



  • @Zeus

    Zeus schrieb:

    Ich hätte da mal ne Idee,

    XML-Verarbeitung eines Grossen Document mit SAX in C++ und Java, davon einen Baum erstellen und nach paar Sachen suchen.

    Coole Idee; so kriegen wir XML in die App; allerdings würde ich's gerne den Teams überlassen ob's Sax oder DOM wird.

    Mal angenommen die BLOBs sind Bilder. In den TEXT Feldern liegen Texxtbausteine für Bildbeschrebungen. Über ein Zusatzattribut in der m:n Hilftabelle schaffen wir eine Vater-Sohn - Beziehung; bspw. "(zeigt) einen Baum" <- "(zeigt) eine Weide".

    Daraus generiert der Server ein XML das der Client geeignet rendert.
    Da kommt dann z.B. SAX ins Spiel wenn das TreeWidget zusammengebaut wird.

    Wie wär das?

    Würdest Du also mitmachen? 🙂
    Bei welchem Team?

    @ronny:

    r0nny schrieb:

    zur versionierung würde ich hg/monotone vorschlagen, da die flott und wesentlich fähiger als svn/cvs sind

    Die Enbtscheidung welche Versionsverwaltung wir nehmen sollte vielleciht derjenige treffen der's hostet und somit administrieren muss.
    Ich denk mal dass alle von uns mit VCSsen klarkommen; also macht ein weiteres dann auch nichts mehr aus.

    Würdest Du also mitmachen? 🙂
    Bei welchem Team?

    Blue-Tiger schrieb:

    rapso schrieb:

    ich kann dir den auftrag geben einen echtzeit raytracer zu machen, den machst du in c++ for sure.

    Hmm... Ich denk ein Echtzeit-Raytracer waer ein interessantes Performance-Vergleichsprojekt, da es da wirklich nur um Number-Crunching geht (also keine Abhaengigkeiten von anderen Libs, ausser halt das auf-den-Screen-bringen), und da soll Java ja gar nicht so schlecht sein, mit JIT usw.

    Von einem Raytracer halte ich gar nichts; das ist fachlich viel zu komplex.

    @Blue-Tiger
    Würdest Du denn ggf. beim Java-Team mitmachen? 🙂
    Fände ich gut!

    @phlox81:
    Na Herr Dr. Phlox, wie geht's denn Familie Tucker? 🙂 *SCNR*
    (Btw am Sonntag läuft "Terra Prime" im Frühfernsehen!)

    phlox81 schrieb:

    http://soci.sourceforge.net/ < doch, das gibts auch für C++.
    Und für ODBC gibts auch Libs.

    Würdest Du denn bei C++ mitmachen? 🙂
    Würde mich freuen!

    ...und grüssen Sie bitte T'Pol von mir! 👍

    Grüsse

    *this



  • Gast++ schrieb:

    @Blue-Tiger
    Würdest Du denn ggf. beim Java-Team mitmachen? 🙂
    Fände ich gut!

    Wie, was? Da bringt man mal einen Vorschlag ein und wird gleich zur Arbeit rekrutiert? o_0 😃 Tut mir leid, aber (zur Zeit) hab ich keine Zeit fuer sowas.

    EDIT: bzw. kommt drauf an wieviel Arbeit das dann tatsaechlich wird, also entscheidet euch erst mal, WAS ihr machen wollt, und dann erteil ich euch die endgueltige Absage 🙂



  • Gast++ schrieb:

    @phlox81:
    Na Herr Dr. Phlox, wie geht's denn Familie Tucker? 🙂 *SCNR*
    (Btw am Sonntag läuft "Terra Prime" im Frühfernsehen!)

    phlox81 schrieb:

    http://soci.sourceforge.net/ < doch, das gibts auch für C++.
    Und für ODBC gibts auch Libs.

    Würdest Du denn bei C++ mitmachen? 🙂
    Würde mich freuen!

    ...und grüssen Sie bitte T'Pol von mir! 👍

    Nein, keine Zeit. Ich weiss das für mich C++ besser ist. 😉
    Kann also nur als Berater was Libs etc. angeht helfen.

    Und Tucker ist im Maschinenraum oder bei T'Pol. Beiden gehts gut 😉

    phlox



  • hallo! Ich habe immer noch nicht verstanden, wofür die Versionsverwaltung gut sein soll. (aber kostenlose SVN-Hostangebote gibt es im Internet) Soll das heißen, das mehrere Leute an einer Lösung arbeiten sollen? Ich sehe sonst keinen Grund für eine Versionsverwaltung.



  • ach ja, und das programm sollte natürlich unter mindestens 3 verschiedenen OS's lauffähig sein 😃



  • Artchi schrieb:

    Soll das heißen, das mehrere Leute an einer Lösung arbeiten sollen?

    So war's gedacht!
    EDIT Ich finde das muss eine Teamentwicklung sein; schon aus Gründen

    - der Vergleichbarkeit (Bildung von Leistungsdurchschnitten in den Teams)
    - der Signifikanz für grössere Projekte /EDIT

    Mit VCS brauchen wir uns jetzt auch noch nicht herumschlagen; wichtig wäre mir dss wir asap eine Kommunikationsplatform finden und die Fallstudie konkretisieren.

    Was hältst Du denn von "Bilddatenbank mit Textbausteinen zur Bildbeschribung" ?

    Grüsse

    *this


Anmelden zum Antworten