Autor Beitrag
Voxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

Win XP, Win 7
Delphi 7 prof
BeitragVerfasst: Fr 19.08.11 18:15 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: 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ü

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
Voxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

Win XP, Win 7
Delphi 7 prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: 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ü

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!

Für diesen Beitrag haben gedankt: Voxe
Voxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

Win XP, Win 7
Delphi 7 prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 20.08.11 05:41 
user profile iconVoxe hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

Win XP, Win 7
Delphi 7 prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: 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ü

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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: blog.kalmbach-softwa...s-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-Subforum von 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)!


Zuletzt bearbeitet von Th69 am Di 23.08.11 20:54, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.