Man sollte sich erst mit dem Konzept einer Framework-Abhängigen Sprache wohl besser vertraut machen, dann würde man auch die zig Vorteile einer solchen Sprache sehen.
Einige Punkte:
Who needs includes?? Wir arbeiten hier auf objektorientierter Basis und haben eine Riesen-Klassenbibliothek im Nacken, die uns alle nötigen Funktionen anbietet ... mit denen sich auch wirklich arbeiten lässt und die einem allerlei Implementierungsaufwand abnimmt.Zitat
Modularisieren ist ebenfalls kein Problem.. man definiere sich eigene Namespaces (mit der 'aufwendigen' Syntax namespace DeinNameSpace {}) und verwendet jenen eben in all deinen Dateien, in denen du deine Funktionen auslagern willst. Java mit ihren Packages arbeitet da auf einer IMO noch anwendungsfreundlicheren Ebene
Makros in C# nennen sich Delegates, und haben in dieser Sprache auch das erste Mal Sinn... Ich programmiere seit 6 Jahren, davon 3.5 'hauptberuflich', und habe noch NIE Makros verwendet... bis C#Zitat
Nenn mir einen Grund, wo Zeiger und deren Arithmetik wirklich von Nöten ist, ausser in der Speicherverwaltung? Ich habe keinen wirklichen gefunden. Gottseidank übernimmt die Speicherverwaltung in C# das Framework und der Garbage Collector, wieder eine Sorge weniger.Zitat
Zwei Dinge: MS hat nichts dagegen, dass an einem .net für Linux gearbeitet wird. Allerdings hat MS die Rechte auf die CLL ... und ohne der ist Programmieren unter C# ziemlich sinnlosZitat
Noch etwas zum Interpretation-Compilierungs - Thema:
C# wird in einen .net-Framework Bytecode compiliert, ähnlich wie Java in einen Bytecode für die JVM. Das ist natürlich langsamer als wenn der Code direkt für den PC selbst compiliert wird, wenn die VM allerdings erstmal im Laufen ist, merkt man kaum einen Unterschied (hier könnte ich noch viel weiter ausholen, aber das würde am Thema vorbeigehen). .net ist noch dazu in der nächsten Windows-Version komplett integriert... macht also dann keinen Unterschied mehr, ob ich nun mit dem Betriebssystem kommuniziere oder mit dem Framework.
Alles in Allem:
Vorteile
- Selbstständige Speichermanagement
- Umfangreiche und auch verwendbare Klassenbibliothek! (schon mal ein Zeichenprogramm unter C programmiert - ohne GUI-Ersteller? Ich hab dafür eine knappe halbe Woche gebraucht... mit Java hatte ich das in einer Stunde erledigt)
- Schnelle Softwareentwicklung durch eben jene Klassenbibliothek
- viel umgänglicher als die Maschinennahen Sprachen
Nachteile
- nicht so mächtig wie C++
Besonderer Nachteil bei .net ist auch, dass man versucht, soviel Sprachen wie möglich für ein Framework zu integrieren (währen Java versucht, eine Sprache für soviel Frameworks wie möglich zu integrieren).
Noch ein Beispiel aus der Praxis: Ich programmiere gerade ein Spiel für mein kleines Siemens S55 mit Hilfe der JVM. Großer Vorteil ist, dass es kaum Unterschied macht, ob ich nun mein Handy oder meinen PC programmiere... und ich sehr schnell alles wichtige machen kann. Hätte ich nur C(++) zur Verfügung, müsste ich mich zuerst mit der genauen Hardwarearchitektur und Speicherarchitektur vertraut machen... würde allein in diese Einarbeitung mehr Entwicklungsaufwand hineinstecken als ins Programmieren dann selbst.
Sicher, für andere Dinge geht nichts an C vorbei... vor allem bei der Grafikprogrammierung. Aber für Softwareapplikationen sind Frameworkbasierte Sprachen einfach die Zukunft... C++ ist nun auch schon über 10 Jahre alt...