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
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.
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.
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
> 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.
@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.
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.
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
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.
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/
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
< 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.
> 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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.