Entwickler-Ecke
Programmierwerkzeuge - Unterschied C# und C++
Voxe - Fr 19.08.11 18:15
Titel: Unterschied C# und C++
Hallo zusammen,
hoffe diese Frage nervt nicht zu sehr.
Worin besteht der wesentliche Unterschied zwischen C# und C++ :?:
Da ich eigentlich Delphi nutze, dachte ich immer, da ist kein großer Unterschied. OK, ein kleiner in der Syntax, aber was noch ?
Gruß, Voxe
gfoidl - Fr 19.08.11 18:19
Hallo,
ganz grob:
C# ist für .net und somit managed Code (automatische Speicherverwaltung, u.a.) und wird nach IL-Code übersetzt der zur Laufzeit in der CLR läuft und dort vom JITer zu Maschinencode kompiliert wird.
C++ ist unmanaged und wird direkt nach Maschinencode kompiliert.
mfG Gü
Voxe - Fr 19.08.11 18:26
Hallo Gü,
bin halt in Automatisierung tätig, warum machen manche Hersteller Unterschiede, wie man an dessen Daten kommt ?
Einmal heisst es C#, der andere nimmt C++. Hoffe du hast eine Antwort.
Gruß, Voxe
gfoidl - Fr 19.08.11 18:34
Hallo Voxe,
dafür ist C# und C++ zu verschieden, dass es eine gemeinsame (Daten-) Basis gibt. Alleine schon managed/unmanaged ist ein anderes Konzept. Suche mal nach diesen Begriffen und ich denke es wird dir klarer werden.
mfG Gü
Voxe - Fr 19.08.11 19:09
Ja, Günther
damit wurde es klarer und hoffe verstanden zu haben, warum, der eine C++ und der andere C# nimmt.
Ich dachte halt bisher, C# ist die neue Mode von MS. Ist es aber wohl nicht.
Aber Danke, für den Such-Hinweis.
Gruß, Voxe
jaenicke - Sa 20.08.11 05:41
Voxe hat folgendes geschrieben : |
Ich dachte halt bisher, C# ist die neue Mode von MS. Ist es aber wohl nicht. |
Es ist eine von vielen Sprachen, die für das .NET Framework und Mono existieren. Man kann damit in Verbindung mit Mono aber auch für Linux und andere Plattformen entwickeln. ;-)
Nebenbei gibt es auch C++ als managed Version, die das .NET Framework benutzt. Und dann ist die Syntax der einzige Unterschied.
Der Vorteil vom .NET Framework ist, dass es sehr viel Funktionalität bereits bereitstellt, die man einfach nutzen kann. Zudem ist es auf den meisten PCs ohnehin schon drauf, so dass es oft nicht einmal für ein spezielles Programm installiert werden muss. Dennoch ist es ein Nachteil, dass man das Framework braucht um dafür entwickelte Programme ausführen zu können.
Voxe - Di 23.08.11 20:16
Hallo, dachte ich hätte es.
Wenn es C++ als managed Version gibt, ist diese von MS und diese Version dann umschaltbar ? Also managed oder unmanaged ? Was bringt dann C#, wenn C++ auch das .NET Framework nutzen kann ?
Oder anders gefragt, wovon ist es abhängig C++ oder C# zu wählen. (Von der Neigung des Programmierers abgesehen)
Gruß mit Hoffnung auf Antwort.
gfoidl - Di 23.08.11 20:33
Hallo,
alle managed Sprachen werden nach IL-Code kompiliert und dann zur Laufzeit wird dieser vom JITer zum Maschinencode. Also ist für .net die Ausgangssprache egal und somit ist C#/C++ hauptsächlich eine Geschmacksfrage.
C# wurde als Sprache extra für .net entworfen und ist auch irgendwie die von MS bevorzugte Sprache um neue Features einzuführen. Die anderen Sprachen ziehen dann meist nach.
Managed C++ bietet die Möglichkeit besser mit unmanaged C++ zusammen zuarbeiten, als dies C# ermöglicht. Aucher der C++-Compiler (für den IL-Code) kann bessere Optimierungen als der C#-Compiler durchführen.
Persönlich bringt mir C# im Vergleich zu C++ eine viel angenehmere Syntax. Mit C++ bin ich nie warm geworden, bei C# hingegen schon.
Für managed C++ suche auch mal nach C++/CLI.
mfG Gü
Th69 - Di 23.08.11 20:51
Hallo Voxe,
C++/CLI ist eine ganz andere Sprache als natives C++. Jochen Kalmbach hat dies ganz gut in seinem Blog dargestellt:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/
C++/CLI (hieß früher "Managed C++") sollte man also nur als Interop-Sprache (d.h. als Schnittstelle) zwischen einem .NET Programm und nativem C++ sehen, aber keine größeren eigenständigen Projekte (und erst recht keine GUI-Programme) damit machen. Die Syntax ist ein "Grauen", da zusätzlich zu den Elementen von nativem C++ auch noch die Operatoren und Schlüsselwörter für den "managed"-Zugriff darein "gewurschtelt" wurden (^, ref, value, ...).
Im
C++/CLI mit .NET [
http://www.c-plusplus.de/forum/f58]-Subforum von
http://www.c-plusplus.de landen sehr viele Beiträge von Leuten, die mit der Sprache nicht zurechtkommen (zum einen, weil es anscheinend Unis bzw. sog. Fachakademien gibt, welche C++/CLI einsetzen und dies als C++ mit .NET verkaufen und zum anderen weil dies absolut keine Anfängersprache ist, d.h. man sollte zuvor jeweils in nativem C++ als auch mit dem .NET-Framework völlig vertraut sein, ehe man sich mit C++/CLI überhaupt nur ansatzweise beschäftigen sollte - wenn man es denn überhaupt unbedingt benötigt)!
Ralf Jansen - Di 23.08.11 20:53
Zitat: |
Also managed oder unmanaged ? |
Nicht oder sondern
und ;) Du vergleichst Sprachen solltest aber eher API's und Art des Speichermanagment (daher die Begrifflichkeit managed bzw. unmanaged) vergleichen. Eine C++/CLI Anwendung kann Objekte aus beiden Bereichen (managed bzw. unmanaged) gleichzeitig verwenden nur jedes Objekt kann natürlich nur mit der API aus seiner Welt zusammenarbeiten Wenn du Daten in beiden Welten verwenden willst musst du die Daten zwischen dem managed und unmanaged Speicher verschieben.
Zitat: |
Was bringt dann C#, wenn C++ auch das .NET Framework nutzen kann ? |
Weil C# eigentlich leichter zu beherrschen ist und explizit zur Verwendung mit dem .NET Framework entwickelt wurde.
Zitat: |
Oder anders gefragt, wovon ist es abhängig C++ oder C# zu wählen.(Von der Neigung des Programmierers abgesehen) |
Davon mit welcher Möglichkeit du das zu erreichende Ziel mit dem geringsten Kostenaufwand erreichst ;) Stichworte währen da z.B. Produktivität, Plattformabhängigkeit, vorhandene Infrastruktur(Hard- und Software), vorhandenes Know-How und vieles mehr. Eine eindeutige Zuordnung zu einem der beiden Systeme ist nicht möglich ohne konkrete zu lösendes Problem. Als interessierter Programmierer sollte man deshalb die verschiedene Möglichkeiten zumindest soweit kennen das man eine halbwegs fundierte Entscheidung treffen kann sobald man denn das zu lösende Problem kennt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!