Generell zu C++/CLI
-
Hi
Programmiere seit einigen Jahren C++ und hab schon einiges über .NET gelesen. Jetzt hab ich einige Fragen zu CLI mit .NET. Ich hoffe mir kann jemand helfen
1. Die Compiler erzeugen ja auch eine Exe-Datei. Muss auf den PCs, wo die Exe ausgeführt wird, das .NET Framework installiert sein? Wenn ja, ist das von Haus aus bei Windows dabei, oder in Zukunft bei Vista? Was passiert, wenn man die Exe startet und das Framework ist nicht installiert?
2. Hat jemand Erfahrung vom Umstieg von C++? Ist der Umstieg schwer? Oder kann man ganz normal (wie bei C++) programmieren und bei Bedarf halt .NET-Komponenten einsetzen?
3. Ist CLI eigentlich so das Zwischending zwischen C++ und C#? Wenn ja, gibts Gründe, warum man nicht gleich auf C# umsteigen sollte? Hab mal gehört, dass man mit C# nur schwer komplexe Anwendungen erstellen kann!?
4. Habe mal gelesen, dass Programmierer in Vista am besten nur noch mit dem .NET Framework programmieren sollte (jedenfalls Windows-Fenster-Anwendungen).
5. Die WinAPI soll auslaufen, aber .NET wrappt doch nur die WinAPI, oder? Was macht .NET eigentlich so besonders? Ist es nicht so ähnlich wie MFC, dass es für alle möglichen Funktions-Themen Klassen gibt?
Wär nett, wenn ihr mir ein wenig Klarheit schaffen könntet!
In Ehrfurcht und ewigem Dank,
Badestrand
-
Nicht alle Antworten aber...
http://www.c-plusplus.net/forum/viewtopic-var-t-is-126465.html
-
Badestrand schrieb:
Hi
Hoi!
1. Die Compiler erzeugen ja auch eine Exe-Datei. Muss auf den PCs, wo die Exe ausgeführt wird, das .NET Framework installiert sein? Wenn ja, ist das von Haus aus bei Windows dabei, oder in Zukunft bei Vista? Was passiert, wenn man die Exe startet und das Framework ist nicht installiert?
Das .Net Framework 2.0 ist bei Windows Vista fest integriert. Amsonsten, wenn du so eine EXE startest und es ist kein Framework vorhanden, erscheint eine kurze Mitteilung.
2. Hat jemand Erfahrung vom Umstieg von C++? Ist der Umstieg schwer? Oder kann man ganz normal (wie bei C++) programmieren und bei Bedarf halt .NET-Komponenten einsetzen?
Ja, du kannst erstmal ganz normal C++ programmieren. Du musst dich aber mit Dingen wie der ^-Referenz beschäftigen, sobald du .Net-Komponenten benutzen willst.
3. Ist CLI eigentlich so das Zwischending zwischen C++ und C#? Wenn ja, gibts Gründe, warum man nicht gleich auf C# umsteigen sollte? Hab mal gehört, dass man mit C# nur schwer komplexe Anwendungen erstellen kann!?
Nein, es ist kein Zwischending, es ist mehr ein C++ mit darüber-gefrickelten Erweiterungen, dass man z.B. GC hat oder mit anderen .Net-Sprachen zusammenarbeiten kann. Warum man mit C# keine komplexen Anwendungen erstellen können soll, entzieht sich meinem Verständnis.
4. Habe mal gelesen, dass Programmierer in Vista am besten nur noch mit dem .NET Framework programmieren sollte (jedenfalls Windows-Fenster-Anwendungen).
Die meisten neuen APIs basieren auf .Net, von daher ist das schon empfehlenswert.
5. Die WinAPI soll auslaufen, aber .NET wrappt doch nur die WinAPI, oder? Was macht .NET eigentlich so besonders? Ist es nicht so ähnlich wie MFC, dass es für alle möglichen Funktions-Themen Klassen gibt?
.Net ist erstmal die Laufzeit-Umgebung und die Base Class Library. Die Base Class Library ist ein neues, objektorientiertes API, ziemlich umfangreich, mit dem viele grundlegende Dinge abgedeckt sind. Das Win32 API deckt sehr viel weniger ab und wird irgendwann in zukünftigen Windows-Versionen nicht mehr verfügbar sein. Die MFC ist ebenfalls ein objektorientiertes API, das allerdings deutlich weniger abdeckt (über dessen Zukunft ist mir nichts bekannt).
Dass die BCL im Moment mit dem Windows-API implementiert wird ist ziemlich bedeutungslos. Jede andere Implementierung ist ebenfalls möglich, selbst dass die .Net-Klassen direkt mit den Gerätetreibern und der Schnittstelle zum Kernel reden. In Zukunft werden die APIs selber erhalten bleiben aber nicht mehr das Win32 API wrappen, sondern anders implementiert sein.
-
Vielen Dank!
Eine Frage aber noch: Stimmt es, dass Programme basierend auf .NET etwa 2-3 mal langsamer laufen als ohne? Aber bei Windows-Anwendungen mit nur ein paar Fenstern dürfte das ja nicht schwerwiegend sein, oder?
-
Badestrand schrieb:
Vielen Dank!
Eine Frage aber noch: Stimmt es, dass Programme basierend auf .NET etwa 2-3 mal langsamer laufen als ohne? Aber bei Windows-Anwendungen mit nur ein paar Fenstern dürfte das ja nicht schwerwiegend sein, oder?Das stimmt schon mal nicht. Erstens kommt es immer auf den Algorithmus an. Zweitens werden .NET-Programme nicht interpretiert sondern gejittet, was es theoretisch sogar ermöglicht den Maschinencode auf das Zeilsystem zu optimieren, ohne das sich der eigentliche Compiler darum kümmern muss. Und drittens hast du natürlich Recht das es bei Windows-Anwendungen sowieso nix zur Sache tut.