C++ vor CLI ?
-
Hallo alle zusammen, bin in der ganzen Programmierer scene , und hätte einige fragen.
habe mich noch nicht alzu viel mit dem thema auseinander gesetzt.
was ich mittlerweile weiß das es neben dem standart C++ noch eine weitere "version" von C++ gibt, die mit Netframework zusammen hängt, also die C++/CLI die einem eine besser bibliothek für GUI anwendungen bietet und die es einem erböglicht plattform unabhängige programme zu schreiben, richtig soweit ?Mein eigentliches ziel ist es spiele in C++ zu programmieren, und das ganze mit CLI habe ich erst herausgefunden, als ich mir dieses buch geholt habe http://www.weltbild.de/3/16029043-1/buch/jetzt-lerne-ich-visual-c-2010.html?wea=8002019
meine fragen währen jetzt.
sollte ich lieber das standart C++ lernen bevor ich mit CLI anfange ?
kann man mit CLI auch spiele programmieren, oder gibt es dafür eigene bibliotheken?dankeschön
~mfg DaCodex
-
C++/CLI hat so gut wie nichts mit C++ zu tun. Es ist eine Erweiterung von Microsoft für C++, die aber totaler Mist ist. Vergiss C++/CLI und lern Standard-C++.
In C++ kann man übrigens auch Plattformunabhängige Programme erstellen, das ist überhaupt kein Problem. Das Buch würde ich an deiner Stelle umtauschen wenn möglich, ansonsten wegwerfen. Markt & Technik sind nicht berühmt für deren Bücher. (Und wenn dann nur dafür, dass sie so unglaublich schlecht sind)
-
vielen dank , ehm 314159265358979
welches buch würdest mir den empfehlen?
-
Wenns unbedingt deutsche Literatur sein soll, kann ich dir die deutsche Übersetzung vom Struppi empfehlen. http://www.amazon.de/Einf%C3%BChrung-die-Programmierung-mit-C/dp/3868940057/ref=sr_1_2?ie=UTF8&qid=1314799301&sr=8-2
Ich würde mich aber auch frühzeitig an Englisch gewöhnen, da hab ich vom C++ Primer gutes gehört (Welchen es zwar auch auf Deutsch gibt, aber schwer zu bekommen sein scheint.)
-
314159265358979 schrieb:
C++/CLI hat so gut wie nichts mit C++ zu tun. Es ist eine Erweiterung von Microsoft für C++, die aber totaler Mist ist.
Begründung wär nicht schlecht. Nicht jeder kennt dich gut genug, um deine Meinungsäußerungen einordnen zu können.
-
DaCodex schrieb:
und die es einem erböglicht plattform unabhängige programme zu schreiben
Das ist natürlich Quatsch. .Net (und damit C++/CLI) ist im Grunde nur für Windows.
-
Bashar schrieb:
314159265358979 schrieb:
C++/CLI hat so gut wie nichts mit C++ zu tun. Es ist eine Erweiterung von Microsoft für C++, die aber totaler Mist ist.
Begründung wär nicht schlecht. Nicht jeder kennt dich gut genug, um deine Meinungsäußerungen einordnen zu können.
Für den TE spielt die Begründung keine Rolle, weil er damit sowieso (noch) nichts anfangen kann. Sagen wir einfach, dass die Mischung aus C++, C#, Java, was auch immer das sein soll, nicht zusammenpasst.
-
314159265358979 schrieb:
C++/CLI hat so gut wie nichts mit C++ zu tun. Es ist eine Erweiterung von Microsoft für C++
314159265358979 schrieb:
die aber totaler Mist ist. Vergiss C++/CLI und lern Standard-C++.
Es spricht nicht gerade fuer dich, dass du staendig deine eigene (kleingeistige) Meinung als Fakt hinstellst.
@DaCodex: C++/CLI brauchst du nur als Schnittstellensprache zwischen Standard Managed Code (fast immer in C# geschrieben) und nativem C++.
Wenn du nativ programmieren willst, nimm am besten C++. Willst du mit dem .NET Framework arbeiten: Nimm C#.
-
314159265358979 schrieb:
Bashar schrieb:
314159265358979 schrieb:
C++/CLI hat so gut wie nichts mit C++ zu tun. Es ist eine Erweiterung von Microsoft für C++, die aber totaler Mist ist.
Begründung wär nicht schlecht. Nicht jeder kennt dich gut genug, um deine Meinungsäußerungen einordnen zu können.
Für den TE spielt die Begründung keine Rolle, weil er damit sowieso (noch) nichts anfangen kann. Sagen wir einfach, dass die Mischung aus C++, C#, Java, was auch immer das sein soll, nicht zusammenpasst.
Wieso sagst du es dann ueberhaupt? Nur um mal wieder rumstaenkern zu koennen? Was sollte da nicht zusammenpassen? Du magst die Sprache nicht != Die Sprache ist schlecht.
-
Ich traue mich zu sagen, dass eine sehr sehr geringe Zahl an Usern hier C++/CLI für nützlich hält. Das hat nichts mit mögen oder nicht mögen zu tun, die Sprache ist als solches unnötig. Wie du schon richtig sagtest: Für natives C++, für .NET C#. Ein Zwischending braucht man nicht, nativen Code man auch aus C# aufrufen.
-
*was ich sagen wollte wurde schon alles gesagt*
lesen ftw
-
_matze schrieb:
DaCodex schrieb:
und die es einem erböglicht plattform unabhängige programme zu schreiben
Das ist natürlich Quatsch. .Net (und damit C++/CLI) ist im Grunde nur für Windows.
ehm, wenn ich mich nicht irre, funktioniert ein programm das in C++/CLI geschrieben wurde auf jedem PC/laptop der NetFramework besitzt,
da das Programm ja nicht richtig compiled wird sondern in den IL code übersetzt wird und beim ausf+hren übersetzt dann Netframework diesen IL code in den fertigen maschinencode ( also für mich hört sich das plattform unabhängig an) ? richtig soweit?achja, wie schon erwähnt will ja vorallem spiele programmieren, muss ichd was besonderes beachten ?
-
314159265358979 schrieb:
Ich traue mich zu sagen, dass eine sehr sehr geringe Zahl an Usern hier C++/CLI für nützlich hält. Das hat nichts mit mögen oder nicht mögen zu tun, die Sprache ist als solches unnötig. Wie du schon richtig sagtest: Für natives C++, für .NET C#. Ein Zwischending braucht man nicht, nativen Code man auch aus C# aufrufen.
Du hast offenbar noch nie an einem groesseren Projekt mit .NET und nativem Code gearbeitet. Sonst wuesstest du, wie ekelhaft es ist nativen Code aus C# aufzurufen. Mit C++/CLI kann man relativ einfach Wrapper schreiben.
-
DaCodex schrieb:
_matze schrieb:
Das ist natürlich Quatsch. .Net (und damit C++/CLI) ist im Grunde nur für Windows.
ehm, wenn ich mich nicht irre, funktioniert ein programm das in C++/CLI geschrieben wurde auf jedem PC/laptop der NetFramework besitzt,...
Ihr beide habt zum Teil recht.
Das .Net-Framework ist hauptsächlich für Windows geschrieben, es gibt aber eine (unvollständige) Portierung auf andere Plattformen (Mono, MonoTouch...). Und ja, es gibt durchaus Programme die portabel auf Windows, Mac und Linux laufen - aber das ist nicht der Standard, und verbietet auch die Benutzung einiger Teile des .Net Frameworks (z.B. WPF).
Die nativen Teile von einem im C++/CLI geschriebenen Programm sind aber auch nicht automatisch Portabel. C++/CLI war ursprünglich als gleichrangige Sprache zu C# und Vb.Net geplant, aber der Support ist immer mehr zurück gefahren wurden. Wenn man .Net Programmieren will sollte man zu C# greifen. Will man nativ Programmieren zu C++. Ausschließlich als Schnittstelle zwischen C++ und C# sehe ich noch durchaus Vorteile in C++/CLI (z.B. bei der schrittweisen Portierung einer großen Anwendung von C++ auf C#).
DaCodex schrieb:
...da das Programm ja nicht richtig compiled wird sondern in den IL code übersetzt wird und beim ausf+hren übersetzt dann Netframework diesen IL code in den fertigen maschinencode
1. Das .Net Framework übersetzt erst einmal nichts, das macht der JIT (Just in Time Compiler).
2. C++/CLI wird nicht komplett in IL-Code übersetzt, native Anteile werden auch nativ compiliert.
3. Im Prinzip wäre es möglich (ein vollständiges .Net Framework vorausgesetzt) auch .Net portabel zu verwenden. In der Realität gibt es aber größere Unterschiede zwischen .Net und der Mono-Portierung die spezielle Einschränkungen und Kompromisse mit sich bringen. .Net hat eigentlich nur im Windowsbereich sowie bei RIA's (Silverlight/Moonlight) eine relevanz. Bei letzteren sieht die Kompatibilität etwas besser aus (wenn auch gewisse Diskrepanzen existieren).DaCodex schrieb:
achja, wie schon erwähnt will ja vorallem spiele programmieren, muss ichd was besonderes beachten ?
1. Die meisten die ich kenne scheitern daran von Anfang an zu meinen Spiele zu programmieren. Ich rate dir dazu erst einmal die Grundlagen der Sprache gut zu beherrschen, bevor ich mich Spielen zuwende.
2. Du solltest dir dann erst recht überlegen welche Sprache. Entweder C++ (diverse Frameworks) oder C# (in letzteren Fall mit XNA).
-
DaCodex schrieb:
_matze schrieb:
DaCodex schrieb:
und die es einem erböglicht plattform unabhängige programme zu schreiben
Das ist natürlich Quatsch. .Net (und damit C++/CLI) ist im Grunde nur für Windows.
ehm, wenn ich mich nicht irre, funktioniert ein programm das in C++/CLI geschrieben wurde auf jedem PC/laptop der NetFramework besitzt,
da das Programm ja nicht richtig compiled wird sondern in den IL code übersetzt wird und beim ausf+hren übersetzt dann Netframework diesen IL code in den fertigen maschinencode ( also für mich hört sich das plattform unabhängig an) ? richtig soweit?achja, wie schon erwähnt will ja vorallem spiele programmieren, muss ichd was besonderes beachten ?
Genau. Und das .net Framework gibt es für MS Windows X, MS Windows Y, MS Windows Z und auch noch für MS Windows A und MS Windows B. Daher ist es Plattformübergreifend. Gibt es denn Betriebssysteme, die nicht mit MS Windows anfangen? (na ja - als Alibi gibt es ja auch noch mono).
-
wer auch immer schrieb:
Daher ist es Plattformübergreifend...
Was für einen Quatsch. Ja, ich kenne viele Firmen die keinen Bedarf an portablen Programmen haben (Bei uns z.B. gibt es nur sehr wenige Anfragen zu anderen Betriebssystemen, nicht genug um auch nur im entferntesten an eine Portierung zu denken - und die sehr wenigen Mac-User die wir haben nutzen eine VM), aber in einigen Bereichen sieht es anders aus.
Und auch in der Windowswelt ist .Net nicht komplett portabel. z.B. wirst du mit Versionen vor XP einige Probleme mit den neueren Versionen haben... Und wie es um Windows 8 steht ist noch komplett offen (Wegen ARM-Portierung).
-
Lern ganz normales C++. Das ist schon kompliziert genug. Wenn du dann C++/CLI brauchst, dann wird das vermutlich maximal ein Tag sein, um sich die paar neuen Erweiterungen anzueignen. Aber C++/CLI ist halt speziell und "normales" C++ ist allgemein.
-
rüdiger schrieb:
Lern ganz normales C++. Das ist schon kompliziert genug.
Jede aufgesattelte Erweiterung kann eingrenzen, die Portabilität versperren und vor allem von einfach zu handhabenden Grundlagen ablenken!