Swift, Pascal oder C# - Das ultimative Duell

Natürlich hat jede Programmiersprache ihre Berechtigung. Und eigentlich ist es ungerecht, denn zwei der genannten sind die Haus- und Hofsprachen der beiden Betriebssysteme und nicht ohne Hilfe auf dem jeweils anderen einsetzbar. 

Portabilität

Und da sind wir schon beim ersten Thema: der Portabilität. Und da hat Pascal dank seiner Implementierung als FreePascal und Lazarus die Nase vorn. Damit kann man auf fast allen – auch exotischen – Betriebssystemen programmieren. Ob Mac, Linux oder Windows, ja sogar auf Haiku (dem Nachbau von BeOS) oder FreeDOS (wers noch braucht). C# bringt es auf den zweiten Platz (auch nur, weil Microsoft die Opensource Implementierung Mono gekauft hat). Immerhin lässt sich mit Visual Studio auf dem Mac auch eine Cocoa-Anwendung programmieren.

Swift landet hier etwas abgeschlagen. Zwar ist Swift inzwischen als Sprache Open Source, allerdings gibt es nur wenige Portierungen, mit denen etwas anzufangen wäre. Daher bleibt dann nur der Pool an Apple-Geräten, ob Mac, iPhone, iPad und Apple Watch und Apple TV. 

API

Machen wir uns nichts vor: Jede heutige Programmiersprache ist nur so gut wie das API, das sie mitbringt. Ohne API kann keine Sprache heutzutage nicht einmal mehr einen String wie "Hallo Welt!" auf dem Bildschirm ausgeben. 

Und hier hat Pascal mit Lazarus wieder den ersten Platz. Das API, die FCL (FreeClassLibrary) ist eher klassisch aufgebaut, da sie Delphis VCL (VisualClassLibrary) entspricht. Selbst Programmieranfänger kommen schnell damit klar, sie ist stringent.

Swift und C# teilen sich hier den zweiten Platz. Während Swift eine etwas höhere Lernkurve hat, durch den konsequenten Einsatz der MVC-Pragmatik (Model-View-Controller). Wenn man diese aber verinnerlicht hat, dann erhält man ein sehr robustes API, das sich aus der Objective-C Vergangenheit gelöst hat. Inzwischen hat Apple es auch sehr angeglichen, so dass es kaum noch einen Unterschied macht, ob sie für das iPhone oder den Mac Programmieren. 

C# bietet mit .Net ein sehr umfassendes API an, das allerdings mit fast jeder neuen Version komplett umgestaltet wird. So müssen Sie bei ihren Programmen jedes Mal eine passende Bibliothek mit ausliefern. 

Syntax

Nun kommen wir endlich zu den sprachlichen Besonderheiten. 

Swift und C# richten sich in erster Linie an den C und Java Programmierer. Für diese ist die Syntax gleich. Die meisten Kontrollstrukturen (If...Else, Switch, While oder For-Schleifen) sind ähnlich. Während C# noch jeden Befehl mit einem Semikolon (;) abschließt muss man dies bei Swift nicht machen. 

Im Gegensatz zu C# und Pascal benötigt Swift bei der Variablendeklaration auch keine Typisierung. In C# und Swift können Variablen an jedem Ort deklariert werden. Dieser Vorteil kann schnell auch zum Nachteil werden, allerdings die jeweilige IDE, Visual Studio und Xcode hilft. 

Pascal dagegen hat eine sehr strenge Syntax. Auch muss man viel mehr schreiben als mit den beiden anderen. Dadurch läßt sich der Code allerdings auch viel leichter lesen und auch nach Monaten noch nachvollziehen. Damit dokumentiert sich der Code von selbst und die für C typischen, kryptischen Codezeilen, die mit C# und Swift teilweise auch möglich sind, sind in Pascal nicht so einfach möglich. 

Während Swift nicht streng typisiert ist, d.h. man muss keinen Datentyp mit angeben, muss man dies bei Pascal und C# tun. Zwar haben alle Sprachen inzwischen auch einen "Variant" Datentypen, der ist allerdings ziemlich speicherfressend und unsauber. Dadurch kann es auch Sicherheitsprobleme geben. 

Laufzeitumgebung

Pascal gewinnt hier, da es richtig kompiliert, das heißt in Maschinensprache umwandelt. Dadurch sind die Kompilate auch weniger speicherfressend und werden schneller ausgeführt. 

Swift und C# Programme werden nur in einen Bytecode umgewandelt, und müssen dann eine Laufzeitumgebung mitbringen. Bei iOS und macOS ist die Laufzeitumgebung Bestandteil des Betriebssystems, bei Windows wird die Laufzeitumgebung als DLL ausgeliefert. 

Dadurch werden Programme auch gerne mal langsamer, was in der Regel durch schnellere Prozessoren und mehr Hauptspeicher ausgeglichen wird. 

Fazit

Für mich gewinnt immer noch Pascal, trotz seines Alters. Swift ist durch sein API sehr elegant, C# nutzt das .Net-API, ist dadurch sehr ausbaufähig. Mit allen Programmiersprachen und APIs ist es möglich jedes nur erdenkliche Programm zu erstellen, egal ob Anwendung oder Spiel. 

Das ist natürlich nur meine subjektive Meinung.