C++/CLI vs. C#

...komplette Frage anzeigen

2 Antworten

Microsoft will mit aller Gewalt die Entwickler in Richtung .NET (also alles mit # ) zwingen, da man sie und die Programme besser überwachen kann.
Es wurde sogar verboten Geschwindigkeitsvergleiche zu veröffentlichen...

Wenn ich lese "...C# ist wesentlich schöner ...", dann hat Microsoft sein Ziel erreicht...

Wer jedoch direkten, kompakten und schnellen Maschinencode ohne die Gigabyte an Frameworks, Treiber und andere "versteckte Blackboxen" erzeugen möchte, der sollte bei C++ bleiben.

Es gibt auch eine Kombi-Lösung: C++ als Rumpf und die Funktionen, die zu komplex zum selber machen sind per .NET-DLL- LoadLib... einbinden (JPEG-Grafiken, bunte Flächen oder Videos)

Man muss nur ein paar String- konvertierungs-Funktionen basteln, da .NET 2Bytes pro Buchstabe benötigt.

C++ ist geeigneter beim Einbinden von ASM, MMX-Befehlen, und direkten DLLs, die nicht installiert werden müssen. Der Code ist per zig Kompilerschalter besser optimierbar und kleiner. Die EXE und die DLL können ohne Installation von jedem Medium sofort gestartet werden... Der Debugger geht jeden Befehl übersichtlich durch ohne Umwege durch Microsofts Treiber... Wenn man z.B. eine DLL "bauen möchte", die einen gemeinsamen Speicherbereich für alle EXE bereitstellt um superschnellen Datentransport zu erzeugen, wird das für C# bestimmt nicht funktionieren... Versuche mal eine EXE unter C# zu erzeugen, die auf einem Netzwerkordner liegt und dort gestartet werden soll... da muss man sich erst zig Rechte erzeugen/besorgen, damit sie funktioniert...

Mit C++ hat man natürlich auch Nachteile:
- jeder Fehler (Speicherlücken, Pointer, Bereichsüberschreitung) erzeugt schnell Schutzverletzungen!
- eine fehlerhafte EXE kann ein ganzes Betriebssystem beeinträchtigen
- wenn Handles (Benutzer-, GDI-, usw.) nicht wieder freigegeben werden, bleibt die EXE bei 9999 Stück stehen!
All diese letzten Gründe sorgten dafür, dass kaum ein Windows-PC mit viel Grafik-Oberfläche länger als 1 Monat Dauerbetrieb lief.

0815 EXE ist es egal, welches C...

Wenn ich sehe, wie langsam viele Programme auf den superschnellen 64 Bit 8 Kern CPUs heute sind... da war mein alter 386 auf 16Bit mit c++ optimierter EXE (und 32Bit Befehlen) schneller...!

Referenz ist die y-cruncher.exe von Numberworld! Die nicht mal 4 MB große EXE muss nicht installiert werden, nutzt aller Kerne, SSE4.1 Befehle und berechnet 500 Mio. Stellen von Pi in etwa 160 Sekunden!
Dabei kommt es auf Geschwindigkeit und nicht auf "Schönheit" an.

0
@hypergerd

Danke für die ausführliche Antwort. Die Argumente die du bringst sprechen nicht gerade für .NET :)

0
@user2058

Hatte nur die Nachteile von C++ aufgezählt, die natürlich damit Vorteile von C# sind:
- weniger Schutzverletzungen
- weniger unberechtigte EXE (weniger Viren)
- leichter für einen Administrator fremde EXE zu überwachen

Aber großer Nachteil von C#: gibt es nur in der Windows-Welt!

0

Der erste Vorteil ist, dass du hardwarenah programmieren kannst. Du umgehst halt die virtuelle Maschine. Falls das egal ist, ist der zweite Vorteil dass du in einer Sprache programmierst, die Du schon gut kannst. Du musst nicht C# neu lernen.

Da allerdings die größten Unterschiede nicht in der Sprache selbst sondern in den Bibliotheken liegen, dürfte es aber egal sein, für welche Sprache Du Dich entscheidest...

Danke für die Antwort.

Ich dachte immer C++/CLI läuft ebenfalls (im gegensatz zu reinem C++) in der virtuellen Maschine. C# beherrsche ich bereits und finde es von der Syntax her deutlich schöner und angenehmer als C++.

0
@user2058

Entschuldige bitte. Du hast natürlich völlig recht... C++/CLI läuft auch in der virtuellen Maschine. Ich war im Kopf beim Vorteil von C++ zu C#. Dann bleibt nur noch der zweite Vorteil.

Und ja, C# ist wesentlich schöner ;-)

Sorry nochmal für die Verwirrung!

0

Was möchtest Du wissen?