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



  • 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...



  • @pali
    Ja, es ist eine String-Verkettung. Aber es wird mit dem Builtin-Op+ gemacht. Also mit dem Additions-Operator.

    In Java ist eben i+2 != 2+i



  • rüdiger schrieb:

    @pali
    Ja, es ist eine String-Verkettung. Aber es wird mit dem Builtin-Op+ gemacht. Also mit dem Additions-Operator.

    dass ein zeichen verschiedenen bedeutungen haben kann, ja nachdem wo es im quelltext auftaucht, ist doch nix neues (denk' doch nur mal an das '*' in C).
    deshalb ist '+' im zusammenhang mit strings noch lange keine addition...



  • Gast++ schrieb:

    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;...

    Wieso hab ich iregndwie so ein gefühl, dass wir hier arbeit umsonst machen sollen? Woher weiß man, dass du das nicht brauchst, um später damit Geld zu verdienen?

    Wieso wollt ihr überhaupt Java und C++ vergleichen? Gibt es Gebiete, in denen beide groß konkurieren? Die Flamewars ala "GC ist für Mädchen..." werdet ihr damit nicht beenden.



  • pale dog schrieb:

    rüdiger schrieb:

    @pali
    Ja, es ist eine String-Verkettung. Aber es wird mit dem Builtin-Op+ gemacht. Also mit dem Additions-Operator.

    dass ein zeichen verschiedenen bedeutungen haben kann, ja nachdem wo es im quelltext auftaucht, ist doch nix neues (denk' doch nur mal an das '*' in C).
    deshalb ist '+' im zusammenhang mit strings noch lange keine addition...

    Das sagt Herr "ich will keine Operator-Überladung, weil ich sonst nicht weiß was hinter einem Operator steckt *heul*" :p Ich finde es eben in Java nur sehr lustig, das man keine Operator-Überladung hat. Die Java-Entwickler dann aber her gehen und Operatoren in der Sprach-Spec für einige Klassen überladen und dann auch noch eine Klasse auswählen für die sich die Semantik des Operators von allen anderen Verwendungen unterscheidet 😃 Wie gesagt: In Java ist + nicht kommutativ :p

    In C gibt es den unären- und binären-Operator . Oder meinst du dass der Op auch für floats und integer funktioniert? Aber da verhält er sich wenigstens gleich a*b == b*a :p

    Aber ich will jetzt hier keine weitere Diskussion zu dem Thema starten. Ist einfach zu langweilig.



  • rüdiger schrieb:

    Aber ich will jetzt hier keine weitere Diskussion zu dem Thema starten. Ist einfach zu langweilig.

    müssen wir auch nicht.
    in Java ist einerseits '+' eine addition und im anderen fall eine stringverkettung, genau so, wie in C einmal das '*' für 'multipliziere' steht, ein anderes mal für 'pointer' oder 'pointer dereferenzieren'.
    es hat in beiden sprachen nichts mit 'überladen von operatoren' zu tun...

    rüdiger schrieb:

    Wie gesagt: In Java ist + nicht kommutativ

    das hast du vorhin aber nicht so geschrieben
    🙂



  • hmmm... schrieb:

    Wieso hab ich iregndwie so ein gefühl, dass wir hier arbeit umsonst machen sollen?

    Weiss ich nicht - weil Du den Unterschied zwischen "umsonst" und "unentgeltlich" nicht kennst?
    Weil Du das OpenSource-Konzept nicht verstanden hast...

    hmmm... schrieb:

    Woher weiß man, dass du das nicht brauchst, um später damit Geld zu verdienen?

    ...oder weil Dich das alles intellektuell überfordert und Du Hunger hast?
    <°)))o><



  • Ja, hat mich voll überzeugt. Wir sollen nicht nur umsonst arbeiten, sondern die Arebit ist auch noch umsonst, weil sie keinen Flamewar oder sonst was verhindern wird. Stimmt.

    Gast++ schrieb:

    hmmm... schrieb:

    Woher weiß man, dass du das nicht brauchst, um später damit Geld zu verdienen?

    ...oder weil Dich das alles intellektuell überfordert und Du Hunger hast?
    <°)))o><

    Irgendwie hab ich immer mehr den eindruck das du hier nur rumtrollst.



  • Als Unregistrierter wird hier einem ja anscheinend nicht geantwortet, selbst wenn man sich sachlich an der Diskussion beteiligen will. Dennoch starte ich einen erneuten Versuch, auch wenn ich mir dafür ein ungünstiges Thema ausgesucht habe: Operator-Überladung.

    Manch einer mag dieses Feature natürlich in Java vermissen, ich eben nicht, obwohl ich meine Meinung auch aus der Sicht eines C++ Programmierers bilden kann. Würde ich das jetzt so stehen lassen, wäre ich natürlich als Troll abgestempelt, der nur subjektive Meinungen äußert, darum versuch ich eben Google Codesearch [1] als Argumentationsbasis zu verwenden. Die Verwendungszwecke sind meiner Meinung nach - schleicht sich da doch wieder eine subjektive Meinung ein - allesamt ungerechtfertigt. Entweder jemand versucht Builtin-Klassen zu ersetzen (Integer, String, etc.) oder missbraucht sie an Stellen, an denen ich sie nichtmal einführen würde, selbst wenn ich könnte (z.B. Merge von Collections). Natürlich gibt es auch "sinnvolle" Beispiele, aber die beschränken sich eben auf die Geometrie. Vektoren, Matrizen, Punkte oder andere mathematisch angehauchte Konstrukte wie komplexe Zahlen lassen sich mit Operatoren natürlich einfacher bedienen, aber das ist einfach ein verschwindend geringes Einsatzgebiet.

    Andererseits denke ich aber auch, dass sich über die Verwendungszwecke und ihre Rechtfertigung streiten lässt. Wenn ich mir zum Beispiel Auszüge aus Boost [2] ansehe, denke ich mir auch oft, dass ich diese oder jenes eher als Methode implementiert hätte. In diesem konkreten Beispiel hätte bei mir ein Iterator eben die Methode seek oder skip statt dem Operator um ihn zu positionieren. Als C++-Programmierer argumentiert man dann wohl, dass sich der Iterator dadurch wie ein Zeiger verwenden lässt, aber nachdem es in Java keine Zeigerarithmetik gibt, fällt das Argument ohnehin weg. Da einigt man sich eben auf eine Schnittstelle (z.B: Iterator). Insofern kann man das ohnehin nur schlecht vergleichen.

    Ansonsten wird in dieser Diskussion nur auf Oberflächlichkeiten herumgeritten, die wenn überhaupt lediglich von theoretischer Bedeutung sind. Ich finde es einfach lächerlich sich über "Inkonsequenz" aufzuregen, weil man halt Strings mit einem Operator konkatenieren kann. Mir ist allerdings auch klar, dass diese Antwort wohl überhaupt nichts zur Diskussion beitragen wird, da wohl, wie bereits erwähnt, weiterhin auf Oberflächlichkeiten herumgeritten wird.

    [1]: http://www.google.com/codesearch?q="operator+%2B"+lang%3Ac%23&hl=en&btnG=Search+Code
    [2]:
    http://www.google.com/codesearch?hl=en&q=+lang:c%2B%2B+"operator+%2B"+show:2r8ZBrSL_8c:j1RJWYwXQQI:svxzsEk0sq8&sa=N&cd=13&ct=rc&cs_p=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/All/k3d-0.4.4.0_10.tbz&cs_f=include/k3d/boost/boost/regex/v3/fileiter.hpp#a0



  • Komatierchen schrieb:

    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 😉

    da hast du wohl recht, ich muss aber leider eclipse auf arbeit verwenden 😞

    hmmm... schrieb:

    Gast++ schrieb:

    hmmm... schrieb:

    Woher weiß man, dass du das nicht brauchst, um später damit Geld zu verdienen?

    ...oder weil Dich das alles intellektuell überfordert und Du Hunger hast?
    <°)))o><

    Irgendwie hab ich immer mehr den eindruck das du hier nur rumtrollst.

    ich auch 👎 wann wird dieser thread endlich geschlossen !



  • Damit es wieder etwas ontopic wird erlaube ich mir alle an der Teilnahme Interessierten nochmal auf das Projekt bei Google Projects hinzuweisen:

    http://code.google.com/p/jc-eval
    (Näheres auf S.12)

    Das bisschen SQL dort soll v.a. helfen die eigene Infrastruktur geeignet anzupassen; was wir nun bauen wollen steht ja immer noch zur Disposition.

    Allerdings halte die Themen "Rendering" und "SQL Server" die verschiedentlich geäussert wurden für zu aufwändig.

    Es scheint mir dass die technischen Features, die ich vorgeschlagen hatte akzeptiert worden sind; wenn jemand eine andere Anwendungsidee (was anderes als eine Bilddatenbank) hat, die diese inkorporiert dann bitte her damit! 🙂

    was für ein theater hier schrieb:

    Ansonsten wird in dieser Diskussion nur auf Oberflächlichkeiten herumgeritten, die wenn überhaupt lediglich von theoretischer Bedeutung sind.

    Das sollte in diesem Thread auch gar nicht passieren; deshalb hatte ich auf den parallelen Thread im C++ Forum verwiesen. Hier geht es darum Thesen anhand eines konkreten, kleinen, aber technologieintensiven Projektes zu überprüfen.

    Insofern ist Dein Beitrag, obwohl inhaltlich interessant, offtopic.

    Grüsse

    *this

    P.S.:

    was für ein theater hier schrieb:

    Als Unregistrierter wird hier einem ja anscheinend nicht geantwortet, selbst wenn man sich sachlich an der Diskussion beteiligen will.

    Das mag an Deinenm etwas provokanten Nick liegen. Was soll sowas?



  • was für ein theater hier schrieb:

    Dennoch starte ich einen erneuten Versuch, auch wenn ich mir dafür ein ungünstiges Thema ausgesucht habe: Operator-Überladung.

    Was für einen Versuch? Einen Flamewar auszulösen? Hier geht es nicht um C++ vs Java und auch nicht darüber ob Operator-Überladung sinnvoll ist...



  • was für ein theater hier schrieb:

    Dennoch starte ich einen erneuten Versuch, auch wenn ich mir dafür ein ungünstiges Thema ausgesucht habe: Operator-Überladung.

    ich glaube der letzte thread zu dem thema war der: http://www.c-plusplus.net/forum/viewtopic-var-t-is-180255-and-start-is-130.html
    lass dich doch da hin verschieben...
    🙂


Anmelden zum Antworten