mikrocontroller.net

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


Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: WIN32API (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: WIN32API (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: WIN32API (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.


Autor: Bastian H. (bastianh)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: WIN32API (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wong Fei Hung (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.