Forum: PC-Programmierung C++, C# oder C++.net


von hansemann (Gast)


Lesenswert?

Hallo,
während meines Studiums mußte ich mich zwei Semester mit C++
auseinanderstzten, was allerdings schon eine weile zurück liegt. Bei
der
Arbeit werde ich gezwungener Maßen bald ein klein wenig wieder mit der
Programmierung auseinander stzten müssen. Jetzt stellt sich die Frage,
welche Sprache für mich am geeigntesten ist und wo auch die
Unterschiede
zwischen den Sprachen liegen. Da mein C++ Wissen schon stark angestaubt
ist und ich mich sowieso wieder einarbeiten muß, soll die Sprache nicht
veraltet sein und zukunftssicher sein. Bin ich daher noch mit C++
aktuell oder liegt die Zukunft doch mehr in C# ? Meine Anwendungen
liegen im technischen Bereich und sollen auch ein wenig auf Pocketpcs
liegen.
Daher hätte gerne Eure Meinungen und Empfehlungen zu den verschiedenen
Programmiersprachen gewußt. Wie gesagt, C++ ist mir eigentlich bekannt.
Die Unterschiede zu C# sind mir nicht richtig klar. Es soll ja
Plattformunabhängig sein. Aber so wie ich das vestanden habe, gitb es
noch keine Richtige Enginge, die auf Linux läuft. Was soll denn dann
die Palttformunabhängige sein? Gleichzeitig
kann man Sachen aus VB und anderen .net geschichten mitin sein
C#-Programm mit einbringen. Braucht man das?
Und wo ist der Unterschied zwischen C++ und  C++.net.
Kann ich meine C++ Programme noch ganz normal mit Visual Studio 2005
entickeln oder ist die IDE dafür nicht mehr geeignet?
Bedanke mich für Eure Hilfe zur Findung und Einstieg in meine richtigen
bzw geeignete Programmiersprache.

mfg

Hans

von Rolf Magnus (Gast)


Lesenswert?

> Bin ich daher noch mit C++ aktuell oder liegt die Zukunft doch
> mehr in C# ?

C++ wird so schnell nicht verschwinden. Veraltet ist es sicherlich
nicht, und C# wird primär unter Windows eingesetzt.

> Meine Anwendungen liegen im technischen Bereich und sollen auch
> ein wenig auf Pocketpcs liegen.

> Die Unterschiede zu C# sind mir nicht richtig klar. Es soll ja
> Plattformunabhängig sein.

Das war der Vorwand. Gedacht war es eigentlich nicht. Zur Zeit der
Erfindung von C# war Microsoft gerade in diversen Antitrust-Verfahren
verwickelt, und man mußte irgendwas vorweisen, das zumindest potenziell
die Nutzer/Programmierer an Windows bindet.

> Aber so wie ich das vestanden habe, gitb > es noch keine Richtige
> Enginge, die auf Linux läuft.

Doch, gibt es. Es gibt sogar zwei, nämlich mono und dotgnu, die
allerdings komplett ohne Unterstützung von Microsoft entwickelt werden.
Zu beachten ist aber, daß Steve Ballmer (Microsoft-Chef) Patentklagen
angedroht hat, falls die quelloffenen Alternativen zu beliebt werden.
Einiges in .NET ist nämlich patentiert.
Einen C++-Compiler findest du allerdings für praktisch jede beliebige
Plattform (vom AVR-Mikrocontroller mit 1kB Flash bis zum
Hochleistungs-Cluster für globale Wettersimulationen.

> Was soll denn dann die Palttformunabhängige sein?

In der Theorie ist es ähnlich wie bei Java. Man hat einen
just-in-time-Compiler, der den Bytecode beim Ausführen des Programms in
nativen Code wandelt. Man braucht nur die Laufzeitumgebung, dann kann
man das Programm laufenlassen, und zwar auf jeder unterstützten
Plattform, ohne es neu übersetzen zu müssen. Im Prinzip liegt das dann
so etwa zwischen einer nativ übersetzten Sprache (schnell,
Speichereffizient) und einer Skriptsprache (einfach zu benutzen, ohne
Neuübersetzung auf anderen Plattformen lauffähig).

> Gleichzeitig kann man Sachen aus VB und anderen .net geschichten
> mitin sein C#-Programm mit einbringen. Braucht man das?

Im Gegensatz zu Java sollen bei .NET mehrere Sprachen denselben
Bytecode verwenden, so daß man diese portablen Programme in jeder
unterstützten Sprache schreiben und sogar Teile in unterschiedlichen
Sprachen problemlos mischen kann. Wirklich brauchen tut man's nicht
unbedingt (es ging ja auch mal ohne), aber es kann die Sache schon
erleichtern, wenn man Module/Bibliotheken hat, die in unterschiedlichen
Sprachen implementiert sind und die nun in ein und demselben Programm
laufen sollen.

> Und wo ist der Unterschied zwischen C++ und  C++.net.

Das ist Microsofts modifizierte Variante von C++. Das hat mehr mit C#
gemein als mit richtigem C++. Die Syntax ist halt noch näher an der von
C++. Es ist zugeschnitten auf die Eigenheiten von .NET.

> Kann ich meine C++ Programme noch ganz normal mit Visual Studio
> 2005 entickeln oder ist die IDE dafür nicht mehr geeignet?

Einen normalen C++-Compiler enthält es meines Wissens auch.

von Pizzaman (Gast)


Lesenswert?

Hallo,

tja, die Wahl der "richtigen" Programmiersprache ist wohl zum
größtenteil eine Frage des pesönlichen Geschmacks.
Natürlich spielt auch der gewünschte Einsatzbereich eine Rolle.
Wenn deine Software später nur auf Microsoft Systemen laufen soll (PC
und auch PocketPC) ist Visual Studio mit C# eine ganz gute wahl.

Zum "mal eben schnell" ein Programm zusammenklicken eignet C# eher
weniger, dafür ist evtl VB eine alternative.

C++.net ist im Prinzip ein um die neuen .Net elemente aufgebohrtes
C++.

Gruß Pizzaman

von hansemann (Gast)


Lesenswert?

Hallo und schon mal Dank für die Antworten. Hört sich ja alles so ein
bißchen richtung C# an. Da wir auf der Arbeit Visual Studio einsetzen,
wäre C# ja auch nicht so verkehrt. Allerdings bin ich ein wenig
altmodisch und es hört sich für mich nicht alles ganz schüssig an. Soll
plattformunabhängig sein aber Microsoft will jemanden verklagen der mono
oder dotgnu auf den Markt bringt. Ist doch eigentlich Sinn der Sache.
Und kombinationen von VB und anderen Sprachen wird wohl mein Können
übersteigen. Von daher würde ich wieder zum gewöhnlichen C tendieren.
Mache mir da allerdings sorgen, dass Microsoft mit seiner bekannten
Hartnäckigkeit C# propergiert, weil es ja aus eigenem Hause kommt, und
somit C++ ausbotet.

Gruß

von Unbekannter (Gast)


Lesenswert?

C# verträgt sich ganz gut mit C++ (managed code). Mit C# und dem .net
Framework kann man wesentlich zu einer Lösung kommen als mit C++. Die
Fehlersuche wg. Speicherlecks und Zeigerfehlern entfällt, und das ist
ganz gravierend. Für die meisten Anwendungen kann man C# benutzen und
nur Zeitkritisches oder Byte Gefummel lässt sich in C++ besser
ausdrücken. Wobei die managed Erweiterungen die gefährlichen Sachen in
C++ entschärfen.
Die Nutzung von VB.net ist bei uns auch nahezu ausgestorben. Bei der
früheren Entwicklung mit COM hat es noch Sinn gemacht mit VB schnell
eine Oberfläche zu basteln und den 'richtigen' Code in C++
Komponenten zu packen. Unter .net ist die Mehrsprachigkeit aber gar
nicht mehr so wichtig: bei einer Portierung von VB5/6 nach VB.net muss
man den kompletten Code anpacken weil die Sprachunterschiede zu gross
sind, da kann man besser gleich nach C# portieren und muss sich dann
nicht mehr in zwei Sprachwelten bewegen.
'Plattforumunabhängig' interpretiert MS eher so das es auf Win95, 98,
ME, 2k, XP usw. läuft ;-) Mono & Co kenne ich nur vom Namen her, ich
denke das MS versucht das irgendwie zu kontrollieren da die Linux
Konkurrenz ja immer stärker wird.
Wenn sowieso VS genutzt wird dann ist C# schon ein gute Wahl, wenn die
Plattformunabhägigkeit wichtig ist dann sit Java sicher die bessere
Lösung (z.Zt.).

von Andreas B. (Gast)


Lesenswert?

Wenn du mit C++ Platformenunabhängig arbeiten willst eignet sich da
wxWidgets. Das ist eine Library mit der du GUI erstellen kannst. Ich
benutze hier wxDev C++, eine IDE bei der du dir die Steuerelemente
zusammenklicken kannst, und es wird dann einfach Code erstellt (und
wenns nicht klappt hat man ja schon mal die Codevorlage)
http://wxdsgn.sourceforge.net/
Das ganze ist aber nur solange Plattformenunabhängig wie du auch keine
WinAPI oder was auch immer benutzt.

Wenn du Visual Studio verwenden willst kannst du da ein Plugin
installieren (habe ich noch nicht getestet) http://wxwidgets.org/

von hansemann (Gast)


Lesenswert?

Hi,

ich denke, auf die Plattformenunabhängigkeit kann ich getrost
verzichten, hat bei mir keinen großen Stellenwert.

von Rolf Magnus (Gast)


Lesenswert?

> Soll plattformunabhängig sein aber Microsoft will jemanden
> verklagen der mono oder dotgnu auf den Markt bringt. Ist doch
> eigentlich Sinn der Sache.

Naja, ob sie das jemals tun werden, kann man nicht sagen. Ballmer hat
das zumindest in einem Interview mal so ganz beiläufig erwähnt, daß man
da ja noch Patente habe, die man theoretisch gegen unliebsame Konkurrenz
einsetzen könne. Das ist immerhin ein gewisser Unsicherheitsfaktor.

> Und kombinationen von VB und anderen Sprachen wird wohl mein
> Können übersteigen.

Naja, die Idee ist ja, daß du dazu nix weiter tun mußt. Du findest
irgendwo eine .NET-Bibliothek, die du gerne in deinem Programm
verwenden willst, und die kannst du dann ganz einfach nutzen, egal in
welcher Sprache sie geschrieben ist, und egal welche Sprache du nutzt.

> Mache mir da allerdings sorgen, dass Microsoft mit seiner
> bekannten Hartnäckigkeit C# propergiert, weil es ja aus eigenem
> Hause kommt, und somit C++ ausbotet.

Wie gesagt, C++ wird so schnell nicht von der Bildfläche verschwinden.
Und wenn du jemals mal außerhalb der Windows-Welt programmieren willst,
sieht es halt auch etwas mau aus.

von Bartli (Gast)


Lesenswert?

>Naja, ob sie das jemals tun werden, kann man nicht sagen. Ballmer hat
>das zumindest in einem Interview mal so ganz beiläufig erwähnt, daß
man
>da ja noch Patente habe, die man theoretisch gegen unliebsame
>Konkurrenz einsetzen könne. Das ist immerhin ein gewisser
>Unsicherheitsfaktor.

Wir haben letztens mit Freuden festgestellt, dass es (mit etwas
Sorgfalt) durchaus möglich ist, mit Mono auf ner Unixkiste
Windowsapplikationen zu Crossdevelopen: Ich kann unter Unix mit Mono
.NET-Binaries erstellen, welche auf ner Windowskiste mit MS.NET (oder
auch Win32-Mono) laufen. Umgekehrt gehts ebenfalls. Einziges Problem
ist WindowsForms, damit sind die Mono-Leute noch nicht so weit dass es
wirklich brauchbar ist, aber das wird schon noch, und sonst gibts auch
noch andere GUI Frameworks.

Kann mir gut denken, dass das Microsoft irgendwann sauer aufstösst.

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.