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



  • Badestrand schrieb:

    Glaub ich nicht, dass das so schwierig ist.
    Jo, ich könnte gerne bei der Java-Fraktion mitmachen, hätte aber nicht mehr als eine Stunde Zeit am Tag und bin hab in meinem ganzen Leben nicht mehr als 50 Stunden in Java programmiert 😕 Aber wie gesagt, ich kanns versuchen 😃

    @Badestrand:
    Toll dass Du mitmachst! 🙂
    Gilt Deine Zusage auch wenn sich die Teilnehmer mehrheitlich gegen eienen SQL-Server entscheiden?

    @all:
    Wenn alle Stricke reissen würde ich bei Java mitcoden.
    Aber wirklich nur wenn's sonst gar nicht geht!
    (Eigentlich wollte sehr gerne ich beim C++-Team mitmachen)
    Damit hätten wir jetzt in beiden Teams minimale Mannstärke für eine Minianwendung.

    Ein Problem ist aber dass meine Java-Praxis auch nicht die grösste ist; das Javateam bräuchte eigentlich zumindest auch einen Experten.

    Grüsse

    *this



  • Ich würde mich auch anbieten, bei der C++ Seite mitzumachen.

    Allerdings kenne ich mich zwar in C++ aus, das heißt aber nur in Standard-C++ (keine großartigen anderen Bibliotheken für Sockets, GUI, Threads, etc.). Außerdem habe ich noch nie bei einem größeren Projekt (mit mehr als 2 Leuten 😞 ) mitgemacht.

    Felix



  • Die Idee mit einer Fallstudie finde ich gut, da ich bisher in der Praxis noch nichts vergleichbares in der Art gesehen habe - bisher basieren die "Behauptungen" immer auf subjektiven Meinungen.

    Ich denke ein Großteil der Software die heutzutage entwickelt wird, sind die klassischen Unternehmslösungen. Ich finde auch das dieser Bereich aus anderen Gründen repräsentativ für viele Sprachmerkmale ist, da moderne Enterprise System weit mehr können müssen als Daten aus SQL Datenbanken auslesen und in einer GUI darszutellen. Mein Vorschlag wäre ein klassisches modernes Enterprise System:

    1.) Die Software muss mit mind. 2 versch. Datenbanksystemen lauffähig sein
    - Ein freies OSS System wie Postgres oder MySQL
    - Ein kommerzielles wie Oracle oder DB2

    2.) Es soll mind. auf Linux und Windows System laufen(x86, x86-64). Sowohl die Clients, wie auch der Server.

    3.) Es sollte eine Mehrschichtarchitektur zum Einsatz kommen, Web- und GUI Frontends sollen vorhanden sein. Kommunikation erfolgt über eine verteiltes Objektprotokoll der Wahl.

    4.) Das System soll parallel auf mehreren Servern betrieben werden können(HA, Skalierbarkeit, etc.)

    Das sind die typischen Randbedingungen die ein System heutzutage erfüllen sollte. Gleichzeitig werden auch verschiedene Bereiche abgedeckt: Datenbankenzugriffe, Netzwerkzugriffe, Objektverteilung, GUIs, etc..

    Bemerkung: Durch das verteilen auf mehrere Schichten, lassen sich auch hervorragend automatisiert Tests und Benchmarks erstellen.
    Bemerkung 2: Ein Baispflichtenheft halte ich für sehr wichtig, da es exakt festgelegt sein muss, was das System später können muss.

    Was haltet ihr davon?



  • Irgendwie ist es doch witzlos, Java und C++ anhand einer 0815-SQL-Applikation zu vergleichen. Angenommen, du hast dann 2 Lösungen, was willst du vergleichen? Die Performance hängt primär vom SQL-Server ab, die Implementierungszeit und Qualität von der Erfahrung des Authors im Umgang mit entsprechenden Libraries und Tools. Wobei anteilsmäßig eher wenige C++ - Entwickler sich täglich mit SQL-Anwendungen herumschlagen müssen (gibt schließlich genug interessante Arbeit) wärend die Javaleute fast nichts anderes tun als das.



  • Artchi schrieb:

    Also ne DB entwicklen ist ja wohl der totale Blödsinn. Sorry das ich das sagen muß. Aber es geht in jedem Java vs. C++ Thread darum, das die Mehrheit der Entwickler schneller mit Java etwas fabriziert. Und da geht es nunmal eher darum, eine DB anzusprechen und nicht eine DB zu entwickeln. Ich bezweifel mal stark, das die Mehrheit der Informatiker DBs implementieren, oder? Die Mehrheit wird eher sogenannte Businessanwendungen designen und dann implementieren.

    sorry, aber es ist ebenfalls bloedsinn zwei sprachen zu vergleichen indem man prueft wie gut man sie an externe libs koppelt. damit vergleicht man die sprachen kaum, eher die libs und am ende weiss man dann trotzdem nicht was die sprache zu leisten vermag. Es geht doch darum zu sehen ob die individuellen sprachvorzuege/-konzepte (z.b. gc oder eigenes memorymanagement) von vorteil oder nachteil sind, darum geht es bei den meisten flamewars.

    Und ob man mit C++ eine DB implementieren kann, steht außer Frage. Ich wette, 99% der heutigen DB-Systeme sind in C++ oder mit Legacycode noch in C. Da müssen wir hier im Forum bestimmt nicht noch Fallstudie machen.

    du darfst gerne vorschlagen wie man beide sprachen relativ unabhaengig von externen dingen gegeneinander testen soll.
    Bei den meisten flamewars steht ja oft im raum, dass man mit java alles machen kann was c++ kann und java eine weiterentwicklung ist bzw behauptet die gegenseite dass java nie c++ ersetzen wird sondern nur in speziaellen rapiddev interfaces reinkommt.
    da muss man doch eben auf diesem gebiet die alroundfaehigkeiten der sprachen testen... falls man es wirklich wissen will.
    wenn man hingegen sagt "java ist fuer business DB-interfaces" und dann soll man das mit c++ vergleichen, wo c++ ueberhaupt nicht reinwill, ist das sinnfrei, weil am ende jeder sagt "hui, gut, java hat also vorteile in dem gebiet in dem es benutzt wird und niemand dran zweifelte, so wayne?"



  • rapso schrieb:

    "hui, gut, java hat also vorteile in dem gebiet in dem es benutzt wird und niemand dran zweifelte, so wayne?"

    Das kann zwar sein, dass das am Ende gesagt wird. Fakt ist aber, dass es hier genug Leute gibt, die sagen: "Das kann man mit C++ alles genauso gut, genauso einfach und genauso schnell." Falls es schief geht werden die natürlich nachher alle was anderes gesagt haben. 😉

    Interessant daran finde ich, dass man damit mal überprüfen kann, ob es stimmt, dass die Entwicklungszeiten kürzer sind und vieles einfacher ist. Und dazu gehört auch die Anbindbarkeit an Libraries. Aus der Anwendung einfach den (durchaus auch gelegentliche bestrittenen) Vorteil der großen Library rauszunehmen ist nicht wirklich fair. Imho geht es hier doch eher darum nicht nur die Sprachen zu vergleichen, sondern die komplette Infrastruktur und alles was eben mit dranhängt, wenn man sich entscheidet in Sprache xy zu implementieren.



  • Entwicklungszeiten sind aber stark abhängig von Software-Werkzeuge ;o



  • Zeus schrieb:

    Entwicklungszeiten sind aber stark abhängig von Software-Werkzeuge ;o

    Sehr gut erkannt!



  • Jester schrieb:

    rapso schrieb:

    "hui, gut, java hat also vorteile in dem gebiet in dem es benutzt wird und niemand dran zweifelte, so wayne?"

    Das kann zwar sein, dass das am Ende gesagt wird. Fakt ist aber, dass es hier genug Leute gibt, die sagen: "Das kann man mit C++ alles genauso gut, genauso einfach und genauso schnell." Falls es schief geht werden die natürlich nachher alle was anderes gesagt haben. 😉

    ich habs in den vorherigen thread schon geposted:

    für jeden zweck hat man längst eine Programersprache entwickelt (nicht in etwa so: wir bruchen eine neue sprace , egal wo zu sie gut sei! xD)

    drum halt ich das für einen flamer-thread thread-ersteller meinte dazu "Dauerbrenner-Thread " ..

    so ha ich mit meiner meinung recht ? ja,:

    PHP zB sieht fast so as wie C++, hat aber diverse unterschiede. Was kann man damit Programieren - sher viel mit geringen aufwand. (ein Gästebuch hab Ich inner halb von 10h programiert). würde man für so etwas C++ nutzen?? nein da man einen eigenen Webserver Programieren müsste.

    Hoffe mal das es keine zweifel mehr gibt, warum es verschiedene Programiersprachen gibt !

    ich weis auch nicht ob es sin voll ist wegen 5% mehr usern etwas in C++ zu entwickel was dann ca 50% mehr kostet!
    einlösung wäre das man seiten Kompilieren kann - aber dadurch wächst das Problem mit webspace anbietern und hackern!



  • LinkeT schrieb:

    PHP zB sieht fast so as wie C++, hat aber diverse unterschiede. Was kann man damit Programieren - sher viel mit geringen aufwand. (ein Gästebuch hab Ich inner halb von 10h programiert). würde man für so etwas C++ nutzen?? nein da man einen eigenen Webserver Programieren müsste.

    Yo, da hat jemand Ahnung von CGI, tntnet, Witty und ATL-Server. Du bist wirklich in der C++-Welt zu Hause. 👍



  • LinkeT schrieb:

    PHP zB sieht fast so as wie C++, hat aber diverse unterschiede. Was kann man damit Programieren - sher viel mit geringen aufwand. (ein Gästebuch hab Ich inner halb von 10h programiert).

    dann hast du aber 3 mal länger gebraucht als es mit PHP normal wäre 😉



  • Jester schrieb:

    rapso schrieb:

    "hui, gut, java hat also vorteile in dem gebiet in dem es benutzt wird und niemand dran zweifelte, so wayne?"

    Das kann zwar sein, dass das am Ende gesagt wird. Fakt ist aber, dass es hier genug Leute gibt, die sagen: "Das kann man mit C++ alles genauso gut, genauso einfach und genauso schnell." Falls es schief geht werden die natürlich nachher alle was anderes gesagt haben. 😉

    Interessant daran finde ich, dass man damit mal überprüfen kann, ob es stimmt, dass die Entwicklungszeiten kürzer sind und vieles einfacher ist. Und dazu gehört auch die Anbindbarkeit an Libraries. Aus der Anwendung einfach den (durchaus auch gelegentliche bestrittenen) Vorteil der großen Library rauszunehmen ist nicht wirklich fair. Imho geht es hier doch eher darum nicht nur die Sprachen zu vergleichen, sondern die komplette Infrastruktur und alles was eben mit dranhängt, wenn man sich entscheidet in Sprache xy zu implementieren.

    Eben, es geht in den ganzen Threads nicht darum, ob man überhaupt etwas in einer Sprache realisieren kann. (ausgenommen wirklich seeeeeeehr spezielle Gebiete, aber über die man sich dann auch einig ist) Es geht um Businessanwendungen. Ich selber entwickle Java-Business-Anwendungen seit ca. 7 Jahren. Und ich weiß, das es z.B. für Java eine Unmenge an Tools, Libs und Frameworks gibt. Ich bin der letzte, der sagt, das man mit Java keine Businessanwendung entwickeln kann. ABer das was mich stört, sind Aussagen, das man es mit C++ nicht vernünftig hinbekommt. Das ist ja der Punkt. LinkeT ist wieder so ein Spezi, der meint, man kann mit C++ keine dynamischen Webseiten programmieren. Eben genau das ist es! Auch in diesem Thread hieß es, das es wohl Probs geben würde, wenn wir eine RDBMS ansprechen wollen. Und wir wohl selbst bei einer DB2 auf die Nase fallen würden. So als ob IBM für ihre DB2 keine Schnittstelle für C/C++-Programme bereitstellen würde. Wie kann man auf so einen Gedanken kommen?



  • Jester schrieb:

    rapso schrieb:

    "hui, gut, java hat also vorteile in dem gebiet in dem es benutzt wird und niemand dran zweifelte, so wayne?"

    Das kann zwar sein, dass das am Ende gesagt wird. Fakt ist aber, dass es hier genug Leute gibt, die sagen: "Das kann man mit C++ alles genauso gut, genauso einfach und genauso schnell." Falls es schief geht werden die natürlich nachher alle was anderes gesagt haben. 😉

    Interessant daran finde ich, dass man damit mal überprüfen kann, ob es stimmt, dass die Entwicklungszeiten kürzer sind und vieles einfacher ist. Und dazu gehört auch die Anbindbarkeit an Libraries. Aus der Anwendung einfach den (durchaus auch gelegentliche bestrittenen) Vorteil der großen Library rauszunehmen ist nicht wirklich fair. Imho geht es hier doch eher darum nicht nur die Sprachen zu vergleichen, sondern die komplette Infrastruktur und alles was eben mit dranhängt, wenn man sich entscheidet in Sprache xy zu implementieren.

    Und wie willst du die Entwicklungszeit messen? Legen wie einen Startzeitpunkt fest und erklären die Programmiersprache mit der die erste vollständige Implementierung eingereicht wird zum Gewinner?

    Man merkt ja sofort, dass das nicht aufgeht. So messen wir höchstens wie gut ein Team ist. Ein Programmierer der täglich solche Programme schreibt, wird natürlich jemanden besiegen, der dies nicht regelmäßig tut. Das beweißt aber wieder nichts.

    Wenn es um die Infrastruktur geht, tritt das gleiche Problem auf. Java hat vielleicht Standardmäßig eine umfangreichere Infrastruktur und hat vielleicht für das erste Projekt in die Richtung einen Vorteil. Aber wenn man täglich business Software mit C++ schreibt, hat man ja auch seine Sammlung an Werkzeugen um Datenbanken effizient anzusteuern und GUI zu zeichnen und was man sonst noch alles braucht. Daher glaube ich nicht, das diese Phase überhaupt für einen Test von Interesse ist.

    Aber das zeigt ja eh den ganzen Quell der Java- vs C++-Flamewars. Wir wissen alle, das man in den Bereichen in denen sich der Einsatz überschneidet mit beiden Sprachen erfolgreich Programme schreiben kann. Das wird ja in beiden Programmiersprachen täglich gemacht. Ein Bereich zu nehmen wo Java nicht wirklich mithalten können wird, wäre auch nicht sehr sinnvoll...

    Die ganzen Flamewars drehen sich ja eher um Kleinigkeiten und um des Flames willen. So macht man sich zB gerne über Java lustig, weil dort die Addition nicht Kommutativ ist oder man macht sich über C++ lustig, weil die Syntax so bodenlos beschissen ist. Wenn man objektiv messen könnte welche Programmiersprache mehr "Mojo" hat, dann gäbe es ja nicht ständig diese Flamewars.

    (Okay nebenbei gibt es noch immer wieder diese Vorurteile, von denen Artchi zB gesprochen hat)

    In dem Sinne: Nicht diskutieren, programmieren!



  • rüdiger schrieb:

    So macht man sich zB gerne über Java lustig, weil dort die Addition nicht Kommutativ ist...

    du meinst in Java sei: a+b != b+a 😕
    oder hab' ich vergessen was kommutativ heisst?
    🙂



  • waere seltsam, das in c++ die reihenfolge von operatoren auch klar definiert ist, ansonsten waere operatorueberladung sehr evil wenn man sich auf die reihenfolge verlassen will.



  • pale dog schrieb:

    du meinst in Java sei: a+b != b+a 😕
    oder hab' ich vergessen was kommutativ heisst?
    🙂

    String a = "a";
    String b = "b";

    😉

    ...da ist sogar a+b != a+b. 😃



  • @Phoemuex:

    Phoemuex schrieb:

    Ich würde mich auch anbieten, bei der C++ Seite mitzumachen.

    Das freut mich; willkommen! 🙂

    @all:
    Google bietet seit kurzem ein freies Projekt-Hosting; dort habe ich ein Projekt namens "jc-eval" angelegt:

    http://code.google.com/p/jc-eval
    (Mein Benutzername dort ist "gnat.thegnu".)

    Google bietet VCS Unterstützung durch Subversion(SVN);

    hier zwei Links dazu:

    Subversion Packages:
    http://subversion.tigris.org/project_packages.html

    Tortoise Explorer Plugin:
    http://tortoisesvn.tigris.org/

    Zu testen habe ich ein DB Designer 4 http://fabforce.net/dbdesigner4/ Modell der Bilddatenbank die ich als Thema vorgeschlagen hatte erstellt (Die XML-Datei im Unterverzeichnis model); als MySQL exportiert und mittels Perl::SQL::Translator (aka SQLFairy http://sqlfairy.sourceforge.net/; trotz des imho scheusslichen Logos ein gutes Tool!) nach Postgres konvertiert (händisch hierbei eine Längenangabe des BLOBS aka PSQL "bytea" gelöscht; ist imo ein Bug von SQLFairy)
    Mit (WinXP SP2) MySQL 5.2 und PostgreSQL 8.2) funktionieren die DDL-Skripte)

    Google Projects bietet ein Issue-Feature an; das können wir dort später zur Kommunikation nutzen.

    Wder Site noch Blog habe ich bislang angelegt; ich fände es gut wenn die Diskussion zunächst (ca. 1 Woche) noch hier weiterbetrieben würde.

    Wer mitmachen möchte registriere sich bitte bei Google Mail und sende mir bitte eine kurze Email an

    gnat dot thegnu at gmail dot com

    damit ich ihren/seinen gmail-Benutzernamen kenne und sie/ihn in die Google Projects Teilnehmerliste aufnehmen kann. (Bitte auch "C++" oder "Java" angeben!)

    Grüsse

    *this



  • ...gern beim java team mitmachen, hab aber leider keine zeit für sowas. anscheinend sind hier die meisten c++ programmierer arbeitslos so dass sie ihre zeit für so ne aufgabe verschwenden können oder wie 😕



  • ich würde... schrieb:

    ...gern beim java team mitmachen, hab aber leider keine zeit für sowas. anscheinend sind hier die meisten c++ programmierer arbeitslos so dass sie ihre zeit für so ne aufgabe verschwenden können oder wie 😕

    Wenn du effizient arbeitest weil du das richtige Werkzeug verwendest, hast du auch rechtzeitig Feierabend 😉



  • Gregor schrieb:

    pale dog schrieb:

    du meinst in Java sei: a+b != b+a 😕
    oder hab' ich vergessen was kommutativ heisst?
    🙂

    String a = "a";
    String b = "b";
    😉
    ...da ist sogar a+b != a+b. 😃

    okay, aber das ist ja stringverkettung.
    rüdi schrieb aber, dass addition nicht kommutativ sei...


Anmelden zum Antworten