C++ VS C# ? Was nutzt ihr?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • kabeltrommel schrieb:

    Selbstverständlich wirst Du mit einer Scriptsprache wie GML, JavaScript, etc. nie die Performace erreichen können, wie mit einer Hochsprache wie C++. Mit Java habe ich zwar noch keinerlei Erfahrung gesammelt, allerdings lässt sich C# eher mit Java als mit C++ vergleichen . Da Java- und C#-Code, anders als C++ Code, zur Laufzeit Kompiliert werden, hat man da zwangsläufig eine "schlechtere Performance".
    Wrong wrong wrong! C++ kann Optimierungen vornehmen die C# nicht vornehmen kann, das stimmt. Aber das gilt auch andersrum. Sprachen wie C# können Optimierungen durchführen zu denen C++ nicht in der Lage ist, da Laufzeitoptimierungen nicht möglich sind.

    kabeltrommel schrieb:

    Dafür kommt man solchen Sprachen wesentlich schneller zum Ziel, da man sich mit vielen Dingen nicht rumärgern muss. Und für manche Probleme sitzt man (in C++), meiner Erfahrung nach, oft viele Stunden über Tage verteilt, vor der IDE, weil man sich dafür wieder mit viel mehr Themen auseinandersetzen muss, die damit zusammenhängen.
    Man muss also sehr frustresistent, geduldig und motiviert sein und sich vor allem auch durchbeißen können wenn ein Thema total trocken und langweilig ist.
    Gerade am Anfang fängt man da oft von vorn an, muss nochmal alles umschreiben, etc. ...
    Das gilt auch für andere Sprachen. Man muss das Grundkonzept von Softwaredesign und Algorithmen verstanden haben.

    kabeltrommel schrieb:

    C# ist da beispielsweise nicht ganz so empfindlich. Vor allem nicht bei Datentypen, etc. . Dafür ergeben sich Fehler oft erst zur Laufzeit und oft sind die nicht immer sofort ersichtlich. Durch, zwangsläufig, penetrant penible C++ Compiler bekommt man die meisten Fehler und Warnungen schon beim Kompilieren (Bekommt man bei C# natürlich auch, aber wie gesagt, lässt dieser viele Dinge "durchgehen").
    Wtf? C# unempfindlich bei Datentypen? C# ist eine typisierte Sprache, genau wie C++. C++ ist an der Stelle sogar schwächer da es einfach casts auf void Pointer erlaubt!

  • rootnode schrieb:


    Wrong wrong wrong! C++ kann Optimierungen vornehmen die C# nicht vornehmen kann, das stimmt. Aber das gilt auch andersrum. Sprachen wie C# können Optimierungen durchführen zu denen C++ nicht in der Lage ist, da Laufzeitoptimierungen nicht möglich sind.

    Öhm ja..., was genau war an meinen Aussagen im Zitat "Wron wrong wrong"? Optimierungen hin oder her, das Kompilieren zur Laufzeit zerrt an der Performance. Bei Java-Applikationen merkt man das besonders stark.



    rootnode schrieb:



    Das gilt auch für andere Sprachen. Man muss das Grundkonzept von Softwaredesign und Algorithmen verstanden haben.


    Klar, vielleicht empfinde C++ auch nur als schwerer zu erlernen, weil ich damit angefangen habe.

    rootnode schrieb:





    Wtf? C# unempfindlich bei Datentypen? C# ist eine typisierte Sprache, genau wie C++. C++ ist an der Stelle sogar schwächer da es einfach casts auf void Pointer erlaubt!

    Stimmt, da habe ich was durcheinander gebracht. :S
    combobreaker.de - Indiegame Blog, News und Tests
  • kabeltrommel schrieb:

    Öhm ja..., was genau war an meinen Aussagen im Zitat "Wron wrong wrong"? Optimierungen hin oder her, das Kompilieren zur Laufzeit zerrt an der Performance. Bei Java-Applikationen merkt man das besonders stark.
    Etwas mit Java zu vergleichen ist ja auch als ob man die körperliche Stärke von Klitschko mit der von Hawking vergleicht. Die Kompilierung des Bytecodes beträgt selbst bei meinem eigenen C# compiler ca 1.5 Sekunden bei mehreren Hundert Klassen und Methoden. Und das bei einer vollen AOT Kompilierung. Normalerweise werden z.B. C# Programme aber von einem JIT gestartet. Dieser kompiliert konsekutiv vom Startpoint aus alles was gebraucht wird. Und dieser Vorgang dauert nur wenige Millisekunden. Ist also ein Impact den man gar nicht mitbekommt. Während der Ausführung kann der JIT jedoch wichtige häufig frequentierte Programmteile weiter optimieren da ihm komplett alle Laufzeitinformationen zur Verfügung stehen. So etwas ist in C/C++ beispielsweise nicht möglich. Es kann erkannt werden welche Fähigkeiten in der aktuellen CPU sitzen und es kann explizit ausgenutzt werden. In einem C++ Programm nicht möglich außer man baut es explizit in sein eigenes Programm ein und muss auch noch je nach Fall fpr das eine spezielle Target dann neu compilen.

    kabeltrommel schrieb:

    Klar, vielleicht empfinde C++ auch nur als schwerer zu erlernen, weil ich damit angefangen habe.
    Ich empfehle an solch einer Stelle mal einen Blick in die Funktionale Sparte der Sprachen. Hilft beim denken über Design und Algorithmen.

    kabeltrommel schrieb:

    Stimmt, da habe ich was durcheinander gebracht.
    Will ich auch meinen. Sieht man mal von den richtig stark typisierten Sprachen wie Haskell ab und schaut auf die "gängigen" Programmiersprachen, so ist C# eine der am stärksten typisierten Sprachen. Besonders hinsichtlich Generics (bei denen Java dermaßen übel gefailt hat dass mein Avatar gar nicht mehr aus seiner Haltung rauskommt).