Forum: PC-Programmierung Umstieg auf C# oder C++ ?


von David H. (avrbot)


Lesenswert?

Hallo,
ich programmiere seit ca.  Jahren mit VB6, bin dann auf VB.NET 2005 
umgestiegen. Jetzt will ich aber entweder C#.NET oder C++.NET lernen, 
weiß aber nicht, was Vor- und Nachteile dieser Sprachen sind. Ist die 
eine schneller als die andere ? Oder ist eine leichter zu erlernen ?
Ich weiß nur, dass C# rein objektorientiert aufgebaut ist und C++ glaube 
ich nicht so stark.
Über Antworten würde ich mich freuen.

Grüße
David

von WIN32API (Gast)


Lesenswert?

Du solltest einfach vorher überlegen, in welche Richtung Du Dich 
entwickeln willst. Einige Anregungen:

C++:
- platformunabhängig
- immer noch 1. Wahl für professionelle Windows-Software
- kein Garbage Collector (Vorteilhaft für Software, die zuverlässig im 
Dauereinsatz laufen soll)

C#:
- modernes Design
- führt schnell zum Ziel dank strukturierter, umfangreicher 
Klassenbibliothek
- Zukunft ist wesentlich von den weiteren Plänen MS abhängig
- anfängerfreundlicher dank GC

Auf jeden Fall kann ich Dir den Schritt zur objektorientierten 
Programmierung nur empfehlen, egal mit welcher Sprache.

von WIN32API (Gast)


Lesenswert?

Ergänzung:

Für einen erfahrenen C++-Programmierer ist die Verwendung von C# nach 
wenigen Stunden ohne Probleme möglich, ob der umgekehrte Weg ebenso 
einfach zu gehen ist bin ich mir nicht sicher.

von David H. (avrbot)


Lesenswert?

Hallo,
vielen Dank für die Antwort. Ich tendiere nach Deinen Antworten wohl 
eher zu C++. Nun hätte ich nur noch eine Frage:
Gibt es irgendwelche Geschwindigkeitsunterschiede zwischen C++ und C# ?

Grüße
David

von Thomas B. (yahp) Benutzerseite


Lesenswert?

> C++
> - kein Garbage Collector (Vorteilhaft für Software, die zuverlässig im
> Dauereinsatz laufen soll)

Da von C++.Net die Rede war, ist das nicht korrekt. Das hat nämlich den 
Dot-Net GC wohl dabei. Das kein GC ein Vorteil für Software im 
Dauereinsatz sein soll, halte ich für eine zweifelhafte Aussage 
(Stichwort Speicherlecks).


> C#:
> - führt schnell zum Ziel dank strukturierter, umfangreicher
> Klassenbibliothek

Die Klassenbibliothek ist für C++.Net und C#.Net identisch. Eben das 
Dot-Net-Framework.

> - Zukunft ist wesentlich von den weiteren Plänen MS abhängig

Muss man wohl so deutlich sagen.

> - anfängerfreundlicher dank GC

Siehe oben. Speicherlecks in Profisoftware sind wahrhaft nicht unbekannt 
;-)


> Gibt es irgendwelche Geschwindigkeitsunterschiede zwischen C++ und C# ?

Je nach verwendetem Test ist C# zur Laufzeit langsamer bis viel 
langsamer als C++.

Wenn du mit .Net weitermachen willst, würde ich dir nicht C++.Net 
empfehlen, da das eine schreckliche Verunstaltung von C++ ist. Kurz C++ 
mit .Net hat wenig mit "normalen" C++ zu tun.

von WIN32API (Gast)


Lesenswert?

@Thomas
Das war ich wohl etwas betriebsblind bzgl. des ".NET" hinter dem C++. 
;-)
Meine Anmerkung zu C++ bezogen sich natürlich auf C++ ohne .NET.

Übrigens finde ich C++.NET ab .NET 2.x/VS2005 gar nicht so übel, wenn 
man von der C++-Seite kommt. Da hat sich viel verbessert gegenüber 
.NET 1.x.

@David
Sollte es auf jeden Fall .NET sein, machst Du mit C# sicherlich nichts 
falsch.
Die Performance-Frage ist IMHO - wenn man PCs voraussetzt, auf denen 
.NET 2.x/3.X sinnvoll einsetzbar ist - eher vernachlässigbar. 
Laufzeitkritische Anwendungsteile könnten - falls doch erforderlich - 
auch über eine "echte" C++-DLL eingebunden werden.


von Bastian H. (bastianh)


Lesenswert?

Ich würde dir auf jedenfall zu C# raten! Ich habe mir mit C++ das 
programmieren beigebracht und kenne damit die immensen schwierigkeiten 
die C++ machen kann (und immer wieder macht).

Die Geschwindigkeitsnachteile (die sicherlich bestehen) wirst du im 
Praxiseinsatz so gut wie nie spüren.

Und warum der GC nachteile beim Produktiven Einsatz von Software bringen 
soll versteh ich nicht. Das müsste man mir mal erklären.

von jim (Gast)


Lesenswert?

Ich vergeleiche C# mit Java, hatte mit beiden Sprachen zutun und die 
Ähnlichkeit ist verblüffend.


"Wenn du mit .Net weitermachen willst, würde ich dir nicht C++.Net
empfehlen, da das eine schreckliche Verunstaltung von C++ ist. Kurz C++
mit .Net hat wenig mit "normalen" C++ zu tun."

Dem kann ich 100% zustimmen.


Wenn du auf der .NET ebene arbeiten willst, dann würde ich es mit C# 
tun, ist strukturiert und hat eine umfangreicher Klassenbibliothek.

C++ ohne .NET hat in Hinsicht der Performance und "Portierbarkeit" 
meiner Meinung nach die Hase vorn.


Gruss

von WIN32API (Gast)


Lesenswert?

Wenn Software im Dauerbetrieb (24/7) zuverlässig funktionieren muß, 
verlasse ich mich nur ungern auf einen GC. Ich verursache meine memory 
leaks lieber selbst. ;-)
Aber das hat natürlich auch mit meiner persönlichen Erfahrung und 
Gewohnheit zu tun. Ich möchte .NET keinesfalls schlechtreden.

von arc (Gast)


Lesenswert?

Kommt drauf an...

C# hat etliche Vorteile gegenüber C++:
- deutlich lesbarere Syntax (und einiges an "Syntactic Sugar" ala
  Properties, foreach, partielle Klassen etc)
- Delegates, Events die in C++ nicht vorhanden sind
- Garbage-Collection (deutlich höhere Zuverlässigkeit, wenn man nicht
  vollkommen schwachsinnig damit umgeht)
- bessere Typsicherheit
- solange man nicht explizit unsafe benutzt, keine Probleme mit
  Puffer/Stack-Überläufen etc.
- vollständige Introspektion/Reflexion
- dynamische Typen / dynamische Codegenerierung
- deutliche Vorteile gegenüber C++ bei komponentenbasierten Anwendungen
- mit C# 3.0
  - LINQ (Datenbankabfragen sind in die Sprache integriert und können
    auf (fast) beliebige Datenbestände angewandt werden)
  - Lambda-Ausdrücke
- "weitgehende" Plattformunabhängigkeit mit dotgnu/mono (problematisch 
sind
  hier hauptsächlich Windows.Forms-Programme)

Zum Thema Geschwindigkeit der erzeugten Programme:
http://www.ddj.com/184401976
http://www.shudo.net/jit/perf/

von David H. (avrbot)


Lesenswert?

Hallo,
erst mal vielen Dank an alle ! Dann noch die letzte Frage:
Sind .NET-Programme von der Geschwindigkeit schneller als VB6-Programme 
? Der Unterschied zwischen VB6 und C++ (ohne .NET) war ja sehr groß. Das 
wäre mir nämlich wichtig.
Die Entscheidung wird wahrscheinlich noch etwas dauern ;-)

Grüße
David

von Wong Fei Hung (Gast)


Lesenswert?

< Sind .NET-Programme von der Geschwindigkeit schneller als 
VB6-Programme
< ?

Ja .Net Programme sind aufjedenfall schneller als Visual Basic 
Programme, da sie mittels JIT Compilern in Maschinencode übersetzt 
werden.

von Thomas (Gast)


Lesenswert?

> Ja .Net Programme sind aufjedenfall schneller als Visual Basic
> Programme, da sie mittels JIT Compilern in Maschinencode übersetzt
> werden.

Weiß jemand wie das bei VB.Net aussieht?
Die Funktionen aus dem .Net-Framework werden doch von C#, C++.Net und 
VB.Net gleichermaßen verwendet, also sollte es da doch keinen großen 
Unterschied mehr geben.

von Klaus (Gast) (Gast)


Lesenswert?

> Weiß jemand wie das bei VB.Net aussieht?
> Die Funktionen aus dem .Net-Framework werden doch von C#, C++.Net und
> VB.Net gleichermaßen verwendet, also sollte es da doch keinen großen
> Unterschied mehr geben.

VB.Net verwendet dieselben Klassenbibliothek wie C++.Net bzw. C#.Net.
Meines Wissen nach macht es keine großen Unterschied.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.