C#, Visual Basic, F# und IronPython im Vergleich

Neue Sprachen braucht die Welt
Kommentare

Über 600 Programmiersprachen – wie behält man da den Überblick? Wir vergleichen C#, VB, F# und IronPython.

Programmierer unterscheiden sich nicht von anderen Menschen: Sie erfinden ununterbrochen neue Sprachen, obwohl die alten auf den ersten Blick durchaus noch zur Problemlösung taugen. Mancher mag die dadurch entstehende Auswahl, aber für die meisten steigt die Komplexität ihrer Welt immer weiter an.

Laut Ethnologue gibt es derzeit 6912 lebendige Sprachen auf der Welt, Programmiersprachen natürlich nicht mitgezählt. Obwohl die Zeit seit der Erfindung der ersten Programmiersprache sich bisher noch in wenigen Jahrzehnten messen lässt, listet Wikipedia immerhin mehr als 600 Programmiersprachen auf (unterschiedliche Dialekte einzelner Sprachen sind darin weitgehend nicht enthalten). Es ist gut, die Wahl zu haben, allerdings kann zuviel Auswahl oft auch unangenehm sein. Programmierer lernen im Laufe ihres Lebens sicherlich mehr unterschiedliche Programmiersprachen als gewöhnliche Menschen natürliche Sprachen, aber trotz der vergleichsweise geringen Komplexität geht dies gewöhnlich mit signifikanten Umstellungen einher. Das Lernen von Programmiersprachen auf der .NET-Plattform stellt sich relativ angenehm dar, da durch die einheitliche Basis viele Unterschiede wegfallen, die in der Vergangenheit den Schritt von einer Sprache zur anderen schwierig machten. Das .NET Framework ändert sich nicht, und da sämtliche „echte“ Funktionalität durch dieses Framework verfügbar gemacht wird, braucht nur die Sprache selbst gelernt zu werden. Soweit die Theorie bzw. die Marketingaussage – die Realität sieht leider etwas anders aus.

.NET als Betriebssystem

Vor der Einführung von .NET war (zumindest bei Microsoft) Windows die Basis aller Anwendungen. Das Betriebssystem enthielt alles, was man als Anwendungsentwickler brauchte. Oder etwa nicht? Nun, es enthielt leider keine objektorientierten APIs, da es in C geschrieben war. Diese mussten also „draufgesetzt“ werden, und Microsoft tat das auch recht schnell mit der Einführung der Microsoft Foundation Classes (MFC). Ärgerlich nur, dass auch Borland beinahe zur gleichen Zeit die Library OWL herausbrachte (später ersetzt durch VCL), denn so stellte sich MFC für die meisten umfassend informierten Programmierer als Bestandteil der Entwicklungsumgebung von Microsoft dar, während OWL und VCL zu Borland gehörten. Lange Rede, kurzer Sinn: Ein Betriebssystem hat die Aufgabe, wichtige Funktionen für die Nutzung aller Programme verfügbar zu machen, und diese Aufgabe hat auch das .NET Framework. In der Programmierung unterscheiden sich gewisse Konzepte jedoch so stark, dass dieses „zur Verfügung stellen“ nicht so gelingen will, dass jeder Programmierer gleich zufrieden ist. Funktionale gegen imperative Programmierung, dynamische gegen statische – die objektorientierten APIs des .NET Frameworks haben ebenso wenig eine Chance, all diese Ansprüche abzudecken, wie seinerzeit die Windows APIs.

Neue Sprachen

Seit der Einführung des .NET Frameworks hat Microsoft selbst nur wenige voll unterstützte Sprachen angeboten. C# und Visual Basic haben die weitaus größte Verbreitung erreicht, sind sich allerdings in den Grundzügen so ähnlich, dass Zyniker schon Visual Basic als ein C# mit besonderer Syntax sehen. In den letzten Jahren gab es allerdings einige Neuigkeiten, die mit Visual Studio 2010 und .NET 4.0 einen vorläufigen Höhepunkt erreichen werden. Die Palette der Programmiersprachen aus dem Hause Microsoft wächst, sowohl mit F# in Richtung der funktionalen Programmierung als auch mit IronPython und IronRuby in eine dynamische Richtung.

Das Erlernen einer oder mehrerer dieser „neuen“ Sprachen beschränkt sich nicht auf eine neue Syntax. Da sind zunächst unterschiedliche Ansichten zur Erzeugung von Computerprogrammen zu verstehen. F# kommt mit einer großen Anzahl eigener Framework-Klassen und -Librarys daher, deren Struktur zum Teil aus imperativer oder objektorientierter Sicht merkwürdig erscheint. Bei den dynamischen Sprachen hat Microsoft außerdem versucht, zwei Zielgruppen gleichzeitig anzusprechen: .NET-Programmierer, die an dynamischer Programmierung Interesse haben, aber auch Python- bzw. Ruby-Programmierer, die gern .NET als Plattform für ihre Anwendungen nutzen wollen. So stehen auch in diesen Sprachen die jeweils typischen Librarys zur Verfügung, und diese überlappen in umfassenden Bereichen mit dem .NET Framework. Gleichzeitig ist in den dynamischen Sprachen generell die Austauschbarkeit mit .NET (noch?) nicht immer gegeben. IronPython hat z. B. keine gute Unterstützung für Attribute in .NET, so dass viel Gedankenarbeit notwendig ist, um Elemente dieser Sprachen in ihrer Zusammenarbeit mit .NET sinnvoll einzuordnen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -