[C#, C++] Was ist günstiger bzw. zweckmäßiger?

Rofi

Erfahrenes Mitglied
Hi,

habe mich in letzter Zeit intensiver mit Visual C++ (für Konsole) beschäftigt als früher mit Delphi (damals noch Delphi 2).
Ist superinteressant und ich bin sehr fasziniert von der Sprache aber je weiter ich in die Materie vorgedrungen bin, je mehr bin ich zu dem Schluss gekommen, dass es zeitintensiver wird, als ich Zeit zu Verfügung habe. Besonders deshalb, weil ich nicht bei der Konsolenprogrammierung bleiben will. Das habe ich gemacht, um eine Basis zu haben, um danach in die Windowsprogrammierung einzusteigen.

Was ich bisher von C# gehört habe, macht micht zuversichtlich, dass dies für meine Ansprüche evtl. besser geeignet wäre als C++. Zu Delphi möchte ich allerdings nicht zurück.

In Windows möchte ich mit Fenstern und ihren Komponenten wie Labels, Buttons, Comboboxen usw. umgehen können. Ebenso Grafikfenster, in denen ich kleinere Grundelemente wie Linien, Kreise, Rechtecke usw. darstellen bzw. programmieren kann.

Meine Frage ist nun, ob jemand mir Vergleiche bzw. Argumente aufzählen kann, warum C# oder C++ beser geeignet wäre.
 
Also C# ist dank .NET Framework plattformübergreifend. C# soll sicherer sein( es sollen keine Buffer overflowes mehr möglich sein?) Besseres Rechte managment.

Du kannste sowohl in C++ als auch in C# mit fenstern programmieren. Ansonsten kannst du ja auch mal bei wikipedia nachgucken.
 
Hi!

Also für Deine Programmieranforderungen würde ich meiner Meinung nach zu C# tendieren. Wie Du schon geschrieben hast, ist die Programmierung in C++ oftmals weitaus aufwendiger, bei C# bist Du meiner Meinung nach schneller am Ziel.

Allerdings muss man plattformübergreifend etwas differenzieren. Unter Windows ist C# generell kein Problem. Unter Linux gibts für das DOTNET-Framework das MONO-Project. Allerdings bin ich mir nicht sicher, ob unter Windows lauffähige C#-Programme 1:1 nach LINUX portiert werden können - ich glaube es wird ab und zu (vor allem bei tiefgehenden System-Dingen) vorkommen, dass Du das unter LINUX anpassen musst.

Auf jeden Fall ist C# eine interessante Alternative zu C++.

MfG ..::SD::..
 
Danke für die Infos,

@ Messiahs_128
Messiahs_128 hat gesagt.:
C# soll sicherer sein( es sollen keine Buffer overflowes mehr möglich sein?).
Ja, so was in der Art hab ich gehört, in C# soll der Programmierer ohne Zeiger auskommen. Nur intern würde C# mit Zeigern arbeiten. Oder bei zeitintensiven Aktionen. Ähnlich als würde man in C++ Teile in assembler programmieren.
Messiahs_128 hat gesagt.:
Du kannste sowohl in C++ als auch in C# mit fenstern programmieren. Ansonsten kannst du ja auch mal bei wikipedia nachgucken.
Das ist mir bekannt, ich wollte nur wissen, welche Sprache für mich der beste Kompromiss ist. Habe unter anderem auch schon bei Wikipedia vorbeigeschaut, wollte aber über eventuelle positive oder negative Erfahrungen von Leuten hier im Forum hören.

@SixDark
SixDark hat gesagt.:
Hi!

Also für Deine Programmieranforderungen würde ich meiner Meinung nach zu C# tendieren. Wie Du schon geschrieben hast, ist die Programmierung in C++ oftmals weitaus aufwendiger, bei C# bist Du meiner Meinung nach schneller am Ziel.
Danke, damit bestätigst Du meine Vermutung. C# ist vielleicht nicht ganz so flexibel und offen wie C++, dafür aber einfacher in der Handhabung.
SixDark hat gesagt.:
Allerdings muss man plattformübergreifend etwas differenzieren. Unter Windows ist C# generell kein Problem. Unter Linux gibts für das DOTNET-Framework das MONO-Project. Allerdings bin ich mir nicht sicher, ob unter Windows lauffähige C#-Programme 1:1 nach LINUX portiert werden können - ich glaube es wird ab und zu (vor allem bei tiefgehenden System-Dingen) vorkommen, dass Du das unter LINUX anpassen musst.
Im Moment interessiert mich keine andere Plattform außer Windows, noch nicht! Früher oder später werde ich aber in Linux reinschnuppern. Habe ich übrigens schon mal. Man kann aber nicht alles miteinander machen.

Bis dann,
Rofi
 
Hi, Rofi.

Du hättest natürlich theoretisch auch unter .NET die Möglichkeit mit einer Art C++ zu arbeiten, nur eben Managed C++; das kann ich allerdings nicht wirklich empfehlen, da Managed C++ erstens vom 1.1-er Framework sehr stiefmütterlich behandelt wird (so gibt es keine wirkliche Intellisense-Unterstützung und die meisten Beispiele in der MSDN sind nicht für Managed C++ verfügbar).

Zweitens ist Managed C++ eigentlich nur eine unsauber kastrierte Form von C++: So darf man z.B. nicht mehrfach vererben und muss mit umständlichen Bezeichnungen und Schlüsselwörtern kämpfen (die mit den vielen "__"...); wenn man Garbage Collection will muss man noch mehr Zugeständnisse machen usw. .

Deshalb: Wenn du also schon die Vorteile (für dich) von .NET gegenüber C++ erkannt hast, solltest du nicht den Fehler machen, C++ mit Managed C++ zu verwechseln.

Ich spreche da aus (leidvoller) Erfahrung, wir haben da letztes Semester dieses Projekt gemacht und sind auf die dumme Idee gekommen, uns auf Managed C++ festzulegen... :rolleyes: Seitdem weiss ich dass Programmieren wirklich weh tun kann.

Aber auch mal ein anderes Argument (für C++) am Rande:
Im reinen C++ stellt die richtige Verwendung von Zeigern einen Geschwindigkeitsvorteil gegenüber "Zeigerlosen" Sprachen dar; so ist es bei Kopieraktionen effizienter, einen Zeiger einfach "umzubiegen" als den ganzen Inhalt der Speicheradresse in eine andere umzukopieren.

Wie C# intern mit der Speicherverwaltung bzw. ob es intern mit Zeigern arbeitet, weiss ich leider nicht, das müsstest du eventuell mal im .NET-Forum den Norbert Eder oder den cosmochaosmaker fragen, die kennen sich bei den Interna der Sprache bzw. des Frameworks besser aus als ich.

Ich hoffe mal , dir noch ein paar Denkansätze gegeben zu haben. ;)

Gruß, Niko
 
@ Azmodan,

Danke für Deinen Beitrag.

Im Moment werde ich mich wohl c# zuwenden, um die Sprache kennen zu lernen. Dann wird sich heraus stellen, welche der beiden Sprachen C++ und C# für mich eher geeignet ist!

Gruss,
Rofi
 
... nur eben Managed C++; ...

Nicht ganz richtig, denn man kann auch unter .NET unmanaged C++ programmieren.

Diese ganze Sache mit dem "einfach umbiegen" von Zeigern ist aber eine riesige Fehlerquelle, deshalb hat man in C# (und auch ich glaub auch z. größten Teil in Java) darauf verzichtet.

MfG ..::SD::..
 
SixDark hat gesagt.:
[...] denn man kann auch unter .NET unmanaged C++ programmieren. [...]

Jupp, kann man. Damit unterminiert man aber das ganze Framework-Prinzip von .NET, denn unverwalteter Code läuft diesem zuwider (man könnte also gleich "richtig" C++ programmieren). Siehe hierzu auch mal was zum Thema "Managed Code".

Gruß, Niko
 
Ja klar, das Framework ist dann relativ sinnfrei, das ist wahr. Sicher wäre es dann auch zweckmäßiger, gleich in 'normalem' C++ zu programmieren, da geb ich Dir recht. Aber generell ist es möglich...

MfG ..::SD::..
 
Zurück