Vielen Anfänger, welche C/C++ lernen wollen, suchen sich nach einer kostenlosen Entwicklungsumgebung und stossen dann früher oder später auf die Visual Studio 2008/2010 Express Edition.
Und ein Anfänger will natürlich gleich sichtbare Erfolge sehen und beginnt logischerweise gleich mit einer Fenster-Anwendung.
Leider enthält die VC2008/2010 Express Edition nur WinForms als graphische Oberfläche. Deshalb entwicklen die meisten dann nicht mit C/C++, sondern mit C++/CLI, was eine komplett andere Sprache ist und für die meisten nur zu Verwirrung führt.
Ich Rate jedem Anfänger davon ab VC 2008/2010 Express Edition für graphische Oberflächen zu verwenden, aus folgenden Gründen:
Der WinForms-Designer ist miserabel, da er die Implementierung von Methoden in der h-Datei vornimmt, was spätestens zu Problemen führt, wenn man mehr als ein Form hat und auf Methoden/Properties des anderen Forms zugreifen will (da man dann zyklische Abhängigkeiten in den h-Dateien hat, die man nur lösen kann, wenn man die Implementierung in die cpp-Datei verlegt)
Wenn man die Anwendung verteilen will, so muss man neben dem .NET-Framework auch die C-Runtime installieren; das muss man bei einer reinen .NET-Anwendung (z.B. C#) nicht
C++/CLI ist primär als InterOp Sprache zwischen .NET und native Code gedacht; das sieht man auch schon daran, dass seit VC2008 auch der Data-Wizard für C++/CLI entfernt wurde. Daraus ergibt sich gleich der nächste Punkt:
Der Data-Wizard wurde in VC 2008 entfernt um auch deutlich zu machen, dass der Focus auf native-managed InterOp liegt
Ca. 99% aller Beispiele im Internet sind mit C#; man findet fast keine Beispiele in C++/CLI
C++/CLI ist eine eigene Sprache und hat mit (ISO) C/C++ nichts zu tun; und das ganze zu mischen ist meistens noch viel sinnfreier, es sei denn, man weiss was man tut (was zu 99% nicht der Fall ist; zumindest in den Fragen, die ich aus den Foren entnehme)
C++/CLI wird oft als “Erweiterung” von C/C++ gesehen. Diese Sicht ist aber komplett falsch! Ganz einfacher Beweis: Versuch in einen STL-Vector ein CLR Objekt reinzustopfen (z.B. std::vector). Wenn es gehen würde, dann könnte man C++/CLI als Erweiterung sehen. Es geht aber nicht. Deshalb sind es zwei komplett getrennte Welten!
In VS 2010 wird es für C++/CLI Projekte kein Intellisense geben; das deutet auch stark darauf hin, dass es nicht als primäre Sprache für .NET geeignet ist
Empfehlung für Anfänger:
Wenn Ihr unbedingt graphische Oberflächen (RAD) machen wollt, dann nehmt lieber C# (gibt es auch als Express Edition).
Wenn Ihr wirklich C/C++ lernen wollt, dann nehmt die Professional-Version mit der MFC oder eine freie GUI-Bibliothek wie wxWidgets, GTK oder QT.
Empfehlung für Microsoft:
Wenn Ihr auch mit VC++ Anfänger erreichen wollt, dann liefert bitte die MFC in der Express-Edition mit; oder bindet von mir aus wxWidgets ein
Stirbt C++/CLI nicht langsam aus? Gabs doch vor kurzem ein Thread darüber
Wenn dann nur ganz langsam. Gerade große Branchenbereiche in der Industrie steigen nur langsam auf .net um. Dafür gibts aber viele alte Anwendungen im C++ und niemand wird sofort das ganze vorhandene Zeugs auf .net Portieren. Daher muss CLI als Bridge her. Ich denke da würden einige Firmen auf die Barrikaden gehen wenn das ganze auf einmal wegen "Aussterbens" nichts mehr angeboten würde.
Jochen: So, wie du Krämpfe bekommst, wenn jemand C++ mit C++/CLI mischt, bekomme ich Krämpfe, wenn jemand durchgehend C/C++ schreibt. Ich versteh einfach nicht, warum du das machst.
_________________ Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
Ist doch allgemein üblich, wenn ich in mein Bücherregal schaue, sehe ich zum Beispiel Jeffrey Richters "Windows via C/C++". Und man wohl nicht behaupten, dass der keine Ahnung hat ...
Das stimmt bedingt. Wenn du C kannst, musst du dich nicht mehr um prozedurale Dinge wie Schleifen, If-Abfragen, Funktionen etc. kümmern. Falls du Zeiger schon verstanden hast, kommt dir das sicher auch zu Gute. Allerdings gibt es in C++ viele neue Sprachmittel wie Klassen, Templates, Operatoren, Namensräume, Exceptions, etc., die du auch alle lernen musst.
Das Wichtigste ist aber wohl, dass die Programmierparadigmen in C++ ganz anders als in C aussehen. Man hat viel mehr Möglichkeiten zur Abstraktion und kann fertige Klassen für Anwendungsbereiche wie Stringverarbeitung und Speicherverwaltung einsetzen. Die Philosophie ist eine andere. In C++ verwaltet man nur noch selten manuell Speicher, malloc() und free() braucht man so gut wie gar nie. Oder man benutzt typsichere Streams statt printf() mit variablen Argumentlisten. Es ist von zentraler Bedeutung, dass du dir neue Techniken anschaust, auch wenn die alten aufgrund der Abwärtskompatibilität zu C weiterhin funktionieren. Denn wenn du C in C++ programmierst, hast du C++ noch nicht verstanden.
_________________ Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
Zuletzt bearbeitet von Michael E. am 12:37:43 16.03.2010, insgesamt 2-mal bearbeitet
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.