Ist C++ wirklich so schlecht?



  • Original erstellt von Mr. N:
    [quote]Original erstellt von Dimah:
    [qb]man macht einfach eine klasse die zu laufzeit eine dll läd, funktions aufrufe passieren dan ca. so ReflectionSimulator.run_func( "sag_hallo_world" );

    jo. sehe den sinn von reflection hier nicht.[/QB][/QUOTE]
    Ich weiß nicht, was man da alles mit C++ machen kann. Deshalb aus Interesse:

    Zeig mal C++-Code, der ein Verzeichnis nach Klassen durchsucht, die von einer gegebenen Klasse abgeleitet sind. ...es sollen auch andere Klassen in dem Verzeichnis zu finden sein. Die entsprechenden Klassen, die du findest, speicherst du in einem Array, erstellst dann von jeder dieser Klassen ein Exemplar und läßt das Exemplar dann etwas machen, was es wegen der Oberklasse können muss.

    ...ich würde einen solchen Code gerne mal sehen, weil ich es eben noch nicht gesehen habe.

    [ Dieser Beitrag wurde am 17.01.2003 um 00:02 Uhr von Gregor editiert. ]



  • +im moment geht das auf keinen fall. ich glaube auch nicht das es in der nächsten version von c++ geht. 😉



  • Zeig mal C++-Code, der ein Verzeichnis nach Klassen durchsucht, die von einer gegebenen Klasse abgeleitet sind. ...es sollen auch andere Klassen in dem Verzeichnis zu finden sein. Die entsprechenden Klassen, die du findest, speicherst du in einem Array, erstellst dann von jeder dieser Klassen ein Exemplar und läßt das Exemplar dann etwas machen, was es wegen der Oberklasse können muss.

    ...ich würde einen solchen Code gerne mal sehen, weil ich es eben noch nicht gesehen habe.

    Das wirst du ohne eine ausgeklügelte Lib nicht hinbekommen. Bedenke: Es gibt in C++ keine class-Dateien, keinen class-Loader und nix. Nur ein ganz simples RTTI. Du musst also vorher eine Menge Logik reinprogrammieren um sowas hinzubekommen.



  • Original erstellt von HumeSikkins:
    **
    Das wirst du ohne eine ausgeklügelte Lib nicht hinbekommen. Bedenke: Es gibt in C++ keine class-Dateien, keinen class-Loader und nix. Nur ein ganz simples RTTI. Du musst also vorher eine Menge Logik reinprogrammieren um sowas hinzubekommen.**

    Schade! Ich dachte, der Beitrag von Mr. N ging in die Richtung, dass das mit C++ auch nicht so schwer ist! Da habe ich wohl etwas falsches hineininterpretiert! 🙄



  • Hallo,
    mit COM oder ähnlichen Technologien ist das alles nicht so tragisch. In Standard-C++ würde man da wohl aber einige Monate dran sitzen 😃



  • @Gregor :p 😃



  • ...zeig mal, wie soetwas aussieht!



  • man kann ja den gcc sozusagen in sein programm reinbauen und dann die klassen immer wieder neu kompilieren in den speicher laden und ausführen :D.
    aber mal im ernst wenn ich ein plugin will dann schmeiss ich das in ne dll (oder was enstprechnedes) und die informationen die das programm braucht um das plugin einzusetzen kann ich da ja auch einbauen...



  • Original erstellt von Gregor:
    Schade! Ich dachte, der Beitrag von Mr. N ging in die Richtung, dass das mit C++ auch nicht so schwer ist! Da habe ich wohl etwas falsches hineininterpretiert! 🙄

    Ich meinte, dass sowas in solchem C++ Code (der übrigens leider plattformabhängig ist, unter Linux (POSIX?) gibts shared objects, unter Win32 DLLs) unnötig ist. Wobei man aus Gründen der Portabilität zu C Funktionen greifen wird. Man machts ganz ganz einfach so: In dem Verzeichnis alle DLLs (.so s) anschauen und dann die Funktion laden. Fertig. Nix RTTI, nix Reflection. Good ol' C.



  • Original erstellt von <Rüsselsheimer>:
    **Hi @ all,

    **
    WICHTIG:
    @kingruedi && elise: Der Beitrag war ernst gemeint. Ich bin nicht der echte gerner, ich habe ihn sozusagen gefakt.**

    ich möchte mich gleich für meine Wortwahl entschuldigen, ich bin aber ein
    bisschen von C++ entäscht. Ich habe mit Java das Programmieren gelernt und
    in allen Büchern steht, dass Java an C++ angeleht ist. In vier Seiten werden
    für C++ Programmierer die Unterschiede erklärt.
    Ich habe mir also gedacht, lern ich kurz mal C++, das kann nicht schaden.
    Nun muss ich mit Erschrecken feststellen, dass C++ kryptisch und weit
    weniger gut beherrschbar wie Java oder VBA sind. Auch die Klassen in C++
    sind ein Witz, dass ist prakisch nur die Überschrift der Datei.

    Wie ist das eigentich bei C#? Da heißt es es sei eine Mischung aus Java und
    C++. Wem ähnelt es mehr, undwo liegen die Unterschiede zu Java?

    Bin für jede Antwort dankbar,

    Rüsselsheimer**

    Soviel ich weiß ist Java lahmer als C++...
    Und wenn das stimmt, was soll ich mit ner Sprache wo ich bei der Anwendung warten muß, bis ich was weiter bearbeiten darf...



  • Soviel ich weiß ist Java lahmer als C++...
    Und wenn das stimmt, was soll ich mit ner Sprache wo ich bei der Anwendung warten muß, bis ich was weiter bearbeiten darf...

    Wenn man so argumentiert müsste man alles in Assembler schreiben.
    Sicher ist Java in einigen Dingen langsamer als andere Sprachen, aber man muss Java (und jede andere Sprache) ja auch nicht für alles einsetzen. Wenn für eine Anwendung X eine Sprache Y (bzw. besser eine Implementation/eine Umgebung) zu langsam ist, dann muss man eben eine Sprache Z nehmen. Das heißt aber nicht, dass Y keine Daseinsberechtigung hat.

    Und für Y = Java gilt, dass es unzählig viele Anwendungsbereiche gibt, in denen die Performance völlig ausreicht.



  • Original erstellt von DJ BlackEagle:
    Soviel ich weiß ist Java lahmer als C++...
    Und wenn das stimmt, was soll ich mit ner Sprache wo ich bei der Anwendung warten muß, bis ich was weiter bearbeiten darf...

    1. So viel lahmer als C++ ist Java nicht. Wenn du gegenteiliger Meinung bist, dann sag mir eine Aufgabe, die C++ generell viel schneller erledigt als Java.

    2. In erste Linie kommt es bei der Performance auf die richtige Wahl der Algorithmen, der Datenstrukturen und des Programmdesigns an. Das macht viel mehr aus, als die Wahl der Programmiersprache.



  • Original erstellt von Gregor:
    **
    1. So viel lahmer als C++ ist Java nicht.**

    Ich habe übrigens eben folgende Tabelle gefunden:

    Java JDK/JRE Version | Factors slower than C++ (approx.)
                         |
                    1.0  |  20-40
                    1.1  |  10-20
                    1.2  |  1-15
                    1.3  |  0.7-4
                    1.4  |  0.5-3 (typically 1.2-1.5)
    

    ...halte ich aber selbst für etwas zu optimistisch, was Java betrifft. Ich denke, momentan liegt der Geschwindigkeitsunterschied eher bei 1-5 (typically 2-3 :))

    ...dagegen kann der falsche Algorithmus oder eine schlechte Realisierung eines Algorithmus schnell mal nen Faktor 100 ausmachen.



  • Leute,

    was redet Ihr hier alle für ein Scheiß!!

    es ist doch im Grunde genommen SHIT egal, ob ich in Java,C++,Smalltalk,VB,
    Centura oder Pipsel Dipsel code.

    Eure vergleiche ,wie schnell C++ ist oder was JAVA alles kann sind echt makulatur.

    Haptache,die Art der Anwendung bestimmt die Sprache bzw. die IDE und nicht umgekehrt, das Ergebnis stimmt,der Code ist übersichtlich und lesbar.

    Ich bezweifle es, daß Ihr die Performance Unterschiede zwischen Java und C++
    merkt...

    epidemic



  • Original erstellt von epidemic:
    **
    Ich bezweifle es, daß Ihr die Performance Unterschiede zwischen Java und C++
    merkt...
    **

    Ich nicht. ...Naja: Es kommt auf das Anwendungsgebiet an. Einfache Anwendungen, bei denen keine große Leistung gebraucht wird, kann man in Java schreiben, ohne dass man einen Performanceunterschied merkt. In der Regel wird der Prozessor eh mit Warten beschäftigt sein.

    Ich beschäftige mich etwas mit Bildverarbeitung. ...und nehme dazu eigentlich die vollkommen falsche Programmiersprache, nämlich Java. Warum ist Java hier falsch? Bei Bildverarbeitung wird oft wirklich Leistung gebraucht. Wenn man etwas mit einem Bild macht, was mit C++ eine Minute dauert, mit Java aber 2 Minuten, dann merkt man das sehr deutlich.

    Ein weiteres Beispiel sind Spiele. Die meisten Spiele werden nicht ohne Grund nicht mit Java geschrieben. Es macht halt einen Unterschied, ob man 15 fps oder 30 fps bei einem Ego-Shooter hat. Das eine ist spielbar, das andere nicht. (abesehen davon werden aktuelle Prozessoren hier wohl immer weniger ausgelastet, weshalb der Vorteil für C++ hier schrumpfen wird)



  • Dafür ist Java in der Productivity zich mal schneller als C++.



  • Dafür ist Java in der Productivity zich mal schneller als C++.

    Oh ja. Besonders seit J2EE nebst Enterprise Java-Beans. Damit ist man sicher ganz schnell produktiv. Dürfte sich nur um Jahre handeln 😉 😃



  • Original erstellt von HumeSikkins:
    **
    Oh ja. Besonders seit J2EE nebst Enterprise Java-Beans. Damit ist man sicher ganz schnell produktiv. Dürfte sich nur um Jahre handeln 😉 :D**

    Erklärung bitte! Warum denkst du, dass man da nicht produktiver als mit C++ ist? Das hört sich ja sogar so an, dass man eine viel geringere Produktivität hat als mit C++.



  • Original erstellt von HumeSikkins:
    [quote] Dafür ist Java in der Productivity zich mal schneller als C++.

    **
    Oh ja. Besonders seit J2EE nebst Enterprise Java-Beans. Damit ist man sicher ganz schnell produktiv. Dürfte sich nur um Jahre handeln 😉 :D**[/QUOTE]

    Dauert ja bei C++ auch Jahre (mal MFC-Geklicke ausgenommen)



  • Hallo Freunde,
    steht hier irgendwo in meinen Beitrag "C++ ist geiler als Java"? Oder "Mit C++ ist man lecker produktiver"? Nein! Zur Hölle nochmal! Habe ich mit keinem Wort behauptet.

    Mein leicht ironischer Beitrag bezog sich eigentlich nur auf die Diskrepanz zwischen Wunschdenken-Java-ist-einfach-und-man-ist-schnell-produktiv und zähen riesen Klumpen wie J2EE mit Enterprise Java-Beans.

    Ich habe überhaupt keinen Vergleich angestellt. Der kam von Lars und Lars != HumeSikkins. Erkennt man schon an der Anzahl der Buchstaben.

    Achja, aber wo wir gerade bei vergleichen sind. Wo ist denn (aus Sicht der Produktivität) der Unterschied zwischen einem fetten C++ + CORBA-Mega-Implementation und Java + J2EE + Enterprise Java-Beans?

    Meine Antwort ist: Gar keiner. Alles mist. Ich sag's nur schon mal vorher. Nur damit nachher nicht wieder einer kommt und mir irgendwas andichtet.


Anmelden zum Antworten