C++ und C#



  • Jaja,

    aber was ist denn jetzt der Unterschied zwischen C++ und C# und ihren MS- Entwicklungsumgebungen?
    Was sind sie Vorteile, Nachteile? 😋



  • Beides sind Programmiersprachen, mit denen man OOP durchführen kann. C++ erlaubt darüber hinaus noch Systemprogrammierung und nicht-OOP.
    C# ist streng objektorientiert und ähnlich Java. Mit C# und Windows Forms ist es leicht, GUI-Programme zu erstellen. C# klebt aber leider an .NET und damit an MS. Daher empfehle ich C++, insbesondere wegen STL. Zur Windows-Programmierung nimmt man z.B. WinAPI, MFC (gekapseltes WinAPI) oder die oben genannten Bibliotheken.



  • Vielen Dank, die zahlreichen Hilfestellungen haben mir sehr geholfen.

    C# scheint eigentlich ganz interresant, aber ist C# eigentlich genauso schnell wie C++ oder C, und nicht so langsam wie Java oder Delphi, wie man immer wiederrß hört?

    Mich interessieren auch die MS- Entwicklungsumgebung für C# sowie C++, gibt es einen großen Untershied.
    Ich mich schonaml kurz mit MS VC++ 6.0 (ist die neue .Net version besser???)beschäftig, und die Programmoberfläche kam mir sehr unübersichtlich vor, gilt dies auch für MS C#???

    MFG 🙂

    Christopher



  • Java ist so langsam, weil es nicht kompiliert, sondern gejittet wird. Da C# (und die anderen dotNet Sprachen) ebenfalls gejittet werden, sollte C# eine ähnliche Performance wie Java haben.

    (btw. glaub ich nicht, dass Delphi so langsam ist)



  • Wer schnelle Programme benötigt, nimmt Assembler, C, C++.
    C# verwendet z.B. einen automatischen Garbage Collector. Solche Dinge kosten immer Performance.



  • cmdr c schrieb:

    Mich interessieren auch die MS- Entwicklungsumgebung für C# sowie C++, gibt es einen großen Untershied.
    Ich hab mich schonaml kurz mit MS VC++ 6.0 (ist die neue .Net version besser???)beschäftig, und die Programmoberfläche kam mir sehr unübersichtlich vor, gilt dies auch für MS C#???

    MFG 🙂

    Christopher

    Vielen Dank für die vielen Antworten, leider hat mir noch keiner was zu dem zitierten Post von mir geschreiben!!!

    MFG

    Christopher



  • Also, C# ist ein MS Konstrukt, und somit für alles gut geeignet was mit XP, Fenstern usw. zu tun hat.

    C++ hat vor allem eine Stärke, die STL. Da hat es viele Container und Datenstrukturen
    die man immer wieder braucht, und das ganze ist dann auch noch Plattform unabhängig.

    Ich würde dir zu C++ raten, da es am unverfänglichsten ist, und von vielen Unternehmen
    genutzt wird. Später kannst du immer noch bei bedarf auf Java oder C# umsteigen.

    Devil



  • C++ also, was verwnden eigentlich professionelle Progr. z.B die von Software- firmen, um Anwendungssoftware für Win. zu programmieren???
    Benutzen alle noch C++ oder eher C#.
    Benutzen sie alle MS VC++, oder auch Borland- Produkte?

    Ist der C++ Builder von Borland eigentlich genauso gut und umfangreich wie der von MS, oder vielleicht besser?

    MFG

    Christopher



  • Professionelle Programmierer der Industrie und Forschung verwenden meines Wissens zu ueber 90% C++
    Ich weiss nicht ob die MS VC++ verwenden, moeglich, aber fuer etwa 200 Euro kriegst du die Schuelerversion des CodeWarrior-Compilers. Ist sehr umfangreich und enthaelt Versionen fuer Windows und fuer Macintosh.
    Die Vorteile von C++ wurden ja alle bereits genannt 🙂 ich empfehle dir C++, weil die meisten APIs dafuer konzipiert sind, das ermoeglicht dir eine groessere Flexibilitaet. Es gilt als nicht einfach zu lernen, aber wenn du dich dahinterklemmst, schaffst du es

    MFG



  • kingruedi schrieb:

    Da C# (und die anderen dotNet Sprachen) ebenfalls gejittet werden, sollte C# eine ähnliche Performance wie Java haben.

    es gibt zwei Möglichkeiten bei C#:

    Compilation bei der Installation(empfehlen bei Spielen)
    Compilation bei der Ausführung



  • Compilation bei der Installation(empfehlen bei Spielen)

    Warum sollte man das tun? Gibt man damit nicht alle Vorteile auf, die eine virtuelle Maschine nunmal bietet? Bist du dir sicher, dass das dann automatisch schneller läuft? Immerhin gibt es auch einige Dinge, die man nur mit einer VM zur Laufzeit optimieren kann. Wie sieht es zum Beispiel mit Inlining bei Laufzeitpolymorphie aus?

    ...und wie sieht es mit den Sicherheitskonzepten aus? Werden hier noch zu Laufzeit die Bereichsgrenzen von Arrays überprüft etc.? Wenn ja: Warum sollte es dann soviel schneller sein? Wenn nein: Das ist doch eigentlich eine Sache, die man sich wünscht. IMHO gehört soetwas zu den Vorteilen, die typische C#-Programme oder Java-Programme mit sich bringen.



  • Gregor schrieb:

    Compilation bei der Installation(empfehlen bei Spielen)

    Warum sollte man das tun? Gibt man damit nicht alle Vorteile auf, die eine virtuelle Maschine nunmal bietet? Bist du dir sicher, dass das dann automatisch schneller läuft? Immerhin gibt es auch einige Dinge, die man nur mit einer VM zur Laufzeit optimieren kann. Wie sieht es zum Beispiel mit Inlining bei Laufzeitpolymorphie aus?

    du verstehst .net nicht
    der C# Compiler wandelt den C# Source in .il um
    Die VM von .net wandelt diesen Code beider Ausführung in Mascheienen code um
    es wird also nie interpretiert, wie bei Java



  • hö?

    Ich dachte der dotNET Code wird nicht während der Ausführung in Maschinencode umgewandelt, dass wär ja interpretieren des Bytecodes. Ich dachte der Code wird vor der Ausführung compiliert ("gejittet")

    Java wird nicht interpretiert, sondern auch gejittet



  • Hauptmann schrieb:

    du verstehst .net nicht
    der C# Compiler wandelt den C# Source in .il um
    Die VM von .net wandelt diesen Code beider Ausführung in Mascheienen code um
    es wird also nie interpretiert, wie bei Java

    Ich glaube, wir haben ein kleines Kommunikationsproblem. Es ging hierbei doch um Performance. Kannst du dann nochmal den Unterschied zwischen den beiden Möglichkeiten erläutern, die du genannt hast? Beziehst du das nur auf die Zeit, die eine Applikation zum Starten benötigt?



  • also
    Wenn man mit einem .net Compiler(etwa dem C# Compiler) etwas compiliert, kommt eine *.exe raus
    diese exe liegt aber eigentlich nicht im eigentlichen exe format vor, sondern im MSIL Format
    MSIL ist eine Zwischensprache die an Assembler erinnert
    Bei der Ausführung wird dieser IL Code der Anwendung compiliert, nicht interprtiert
    Also hat man, wenn die Anwendung läuft, eine richtige *.exe im RAM, was ja bei JAva nicht der Fall ist, hier wird ja die class Datei interpretiert und nicht compiliert



  • Hauptmann schrieb:

    Also hat man, wenn die Anwendung läuft, eine richtige *.exe im RAM, was ja bei JAva nicht der Fall ist, hier wird ja die class Datei interpretiert und nicht compiliert

    Etwa 99% (nach meiner Erfahrung) des Java-Bytecodes werden auch zur Laufzeit in Maschinencode kompiliert. Du solltest vielleicht mal dein Java-Wissen aktualisieren. Es ist wohl mindestens 5 Jahre her, dass der Bytecode einfach interpretiert wurde.

    Aber ich verstehe immernoch nicht, auf welchen Performanceunterschied du bei deinen beiden genannten "Möglichkeiten" hinauswillst.



  • geb ich gregor recht
    das mit java ist schon lange nicht mehr so

    die IL ist sowas wie assembler?? - kenn mich da jetzt nicht so aus
    , aber das klingt unvernünftig
    assembler ist ja eine beschreibung von maschinencode und wesentlich grösser als die eigentliche .exe dadurch das man halt lesbare befehle hat
    und genau das wird die MSIL wohl nicht sein - lesbar

    also ich denke halt das die IL genau so etwas ist wie der binärstandard den java klassenfiles haben
    etwas das man interpretieren kann auf jeder plattform sei es nun intel x86
    oder das neueste handy (angenommen es gäbe eines auf dem .net läuft) das mit einer völlig anderen architektur daherkommt

    ANNAHME: -- kann mir irgendwer sagen was davon alles stimmt!
    das ganze wird halt bei MSIL glaub ich vor dem ersten ausführen auf einer plattform ganz übersetzt und ins file gespeichert während java das ganze in der JVM hält und sobald diese sich beendet muss es wieder neu übersetzt werden
    dennoch interpretiert java nicht da es zuerst alles übersetzt und diesen maschinencode dann immer wieder verwendet



  • gomberl schrieb:

    m .net läuft) das mit einer völlig anderen architektur daherkommt

    ANNAHME: -- kann mir irgendwer sagen was davon alles stimmt!
    das ganze wird halt bei MSIL glaub ich vor dem ersten ausführen auf einer plattform ganz übersetzt und ins file gespeichert während java das ganze in der JVM hält und sobald diese sich beendet muss es wieder neu übersetzt werden
    dennoch interpretiert java nicht da es zuerst alles übersetzt und diesen maschinencode dann immer wieder verwendet

    das ist imho richtig
    zumindest das Grundprinzip(oder liege ich da bei Java wieder falsch, glaube es aber kaum 😃 )


Anmelden zum Antworten