Ist es empfehlenswert, .net-Apps mit C ++ zu programmieren?

9

Soweit ich verstehen kann, ist C # die defacto-Sprache beim Codieren von .NET-Apps. Ist es empfehlenswert, .NET-Apps [sei es ASP.NET, WinPhone 7, GUI usw.] in C ++ zu programmieren? Was sind die Fallstricke und die Nachteile, wenn wir diesen Weg beschreiten?

Danke für das Teilen.

Joshua Partogi
quelle
3
C ++ / CLI unterscheidet sich von den übrigen .NET-Sprachen, da es Assemblys im gemischten Modus erzeugt (was die möglichen Verwendungszwecke stark einschränkt). Es ist eine gute Idee, nur CLI-kompatible Sprachen zu verwenden, es sei denn, Sie möchten wirklich eine komplizierte Interoperabilität mit einer nicht verwalteten C ++ - Codebasis.
SK-Logik

Antworten:

16

Als langjähriger Programmierer, der C ++ verwendet hat, bis ich zu C # /. Net gewechselt bin, rate ich, C ++ nicht für die .NET-Entwicklung zu verwenden. Tatsächlich können Sie kein echtes C ++ verwenden, um in .Net zu programmieren, sondern einen Microsoft-Gräuel namens C ++ / CLI mit einer Hässlichkeit, die in ISO C ++ nicht zu finden ist. Ich würde sagen, nur aus Sicht der Lesbarkeit sollte C ++ / CLI überhaupt nicht berücksichtigt werden. Möchten Sie _gc, gcnew usw. verwenden?
Auch für praktische Zwecke finden Sie nicht viele Codebeispiele, Lernprogramme, Blogs usw. mit C ++ / CLI, noch finden Sie Programmierer, die C ++ / CLI kennen oder bereit sind, damit zu arbeiten. Es ist keine natürliche Sprache für die .Net-Entwicklung. C # / VB.Net / F # wird sich mit neuen Funktionen im Vergleich zu C ++ / CLI weiterhin viel schneller ändern.

Softveda
quelle
C ++ mit verwalteten Klassen war erbärmlich, aber C ++ / CLI ist viel besser. Ich kaufe nicht die "natürliche Sprache", weil es für einen C ++ - Programmierer wirklich nicht so schwer ist, C ++ / CLI zu lernen. Zumindest war es nicht für mich. Nicht, wenn Sie für die Codierung stark von Codebeispielen abhängig sind. Und Microsoft hat nie beabsichtigt, dass der C ++ / CLI-Standard ein Konkurrent des neuen C ++ 0x-Standards ist. Sie sind für zwei verschiedene Dinge gedacht. Angesichts der Tatsache, dass es C ++ / CLI bereits seit drei bis vier Jahren gibt und der neue ISO-Standard erst jetzt veröffentlicht werden kann, war es für MS meiner Meinung nach eine vernünftige Sache.
DPD
2
C ++ / CLI erfüllt seinen Zweck gut. Es ist für winzige Interop-Ebenen zwischen der verwalteten und der nicht verwalteten Welt konzipiert. Es ist nicht ratsam, es für etwas anderes zu verwenden.
SK-Logik
Nun, ich benutze es derzeit für ein neues Projekt. Nicht für die Interoperabilität, nicht um native Bibliotheken von Grund auf neu zu verpacken. Das einzige Problem, das ich hatte, war die anfängliche Zeit, die benötigt wurde, um sich mit der C ++ / CLI-Syntax vertraut zu machen, und das Dot Net-Framework war meines Erachtens viel kürzer als die Zeit, die erforderlich war, um sich mit C # vertraut zu machen. Nun, jeder hat seine eigene Erfahrung, also für jeden seine eigene :-)
DPD
2
@DPD - Ich sehe keinen C ++ / CLI-Projekttyp für ASP.NET (MVC), LINQ, EF, ODATA usw. in Visual Studio 2010. Selbst wenn dies möglich wäre, wäre es ohne Tools schwierig Support, fehlende Dokumentation usw. Daher halte ich an meiner Meinung fest, dass C ++ / CLI in der .Net-Welt kein erstklassiger Bürger ist.
Softveda
12

Die Idee von .Net ist, dass Sie jede Sprache verwenden können, mit der Sie bereits vertraut sind, und die DotNet-Plattform verwenden können, ohne erneut eine neue Sprache lernen zu müssen. Eine Sichtweise ist die Umkehrung der Java-Pyramide. Java kann als "Single Language-Single Executable (IL) -many OS" erklärt werden. dot net ist "viele Sprachen - eine ausführbare Datei - ein Betriebssystem" (natürlich ist das Bit "Ein Betriebssystem" falsch, da wir Mono haben, aber ich glaube nicht, dass Microsoft dies im Sinn hatte :-P).

Ja, C # sollte DIE Sprache für DotNet sein, aber nicht "DIE EINZIGE". Microsoft hatte wahrscheinlich gehofft, C ++ - Programmierer auf lange Sicht, wenn nicht sofort, dazu zu bringen, auf C # zu migrieren. Aber das scheint nicht zu passieren. C ++ ist immer noch die drittbeliebteste Sprache. Die Faimiliarität mit einer Sprache und der Aufwand, eine Anwendung von C ++ nach C # zu portieren, haben die meisten Entwickler zurückhaltend gemacht. Warum also etwas reparieren, das nicht kaputt ist? Aus diesem Grund hat Microsoft C ++ / CLI entwickelt. Es ist eine wunderbare Möglichkeit, C ++ - Programmierer auf den DotNet-Wagen zu bringen, ohne eine neue Sprache lernen zu müssen. Ich habe sehr wenig Zeit gebraucht, um mich an C ++ / CLI zu gewöhnen. Der einzige Nachteil, den ich sah, war die neue Zeigernotation für verwaltete Klassen, die diejenigen verwirren kann, die ein schwaches Verständnis von Zeigern in C ++ haben. Hat mich aber nicht beeinflusst.

DPD
quelle
2
Der Hauptnachteil von C ++ / CLI besteht darin, dass es sich erheblich von Standard-C ++ unterscheidet, da einige C ++ - Konstrukte überhaupt nicht gut auf CLI übertragen werden. SK-Logik behauptet auch, dass es nicht nahtlos mit .NET funktioniert, daher würde ich vorschlagen, es zu vermeiden.
David Thornley
9

Ich sehe nicht, was der Nutzen ist. Der Hauptvorteil von C ++ ist leistungskritischer, in sich geschlossener / nativer Code auf niedriger Ebene. Sobald Sie eine verwaltete Umgebung und das gesamte mitgebrachte Gepäck verwenden, kann ich nicht verstehen, warum Sie keine modernere Sprache für verwaltete Umgebungen wünschen.

Dsimcha
quelle