Swift: 10 bestechende Sprachmerkmale

von Hubert Schmid vom 2014-06-29

Wie jede neue Programmiersprache bringt auch Swift einige Features mit, die sie von anderen Sprachen abgrenzt. Dennoch gibt es einen wichtigen Unterschied zu Sprachen wie Ceylon, Clojure, Dart, Go, Kotlin, Scala und wie sie auch alle heißen: Aufgrund der klaren Positionierung von Apple zu Swift wird Letztere sehr wahrscheinlich bald zu den verbreitetsten Sprachen insgesamt gehören. Entsprechend zeichnet sich Swift weniger durch innovative und experimentelle Features als vielmehr durch einen klaren Mainstream-Fokus aus.

Die folgende Liste zeigt zehn herausragende Merkmale von Swift, die Software-Entwickler bei ihren tatsächlichen Aufgaben unterstützen sollen. Einige der Features finden sich in ähnlicher Form auch in Sprachen wie C#, C++ und Java. Doch in dieser Zusammenstellung sind sie neu und wegweisend für die zeitgerechte Softwareentwicklung.

  1. Fast schon ein alter Schuh, doch leider immer noch keine Selbstverständlichkeit, ist die Typinferenz für lokale Variablen. Zweifelsohne gibt es viele Fälle, in denen eine explizite Typangabe die Lesbarkeit unterstützt – was Swift auch unterstützt – doch in den meisten Fällen ist weniger einfach mehr.
  2. Konsequent setzt Swift auf Properties statt Member-Variablen. Die sogenannten Getter- und Setter-Methoden werden dadurch überflüssig, was gerade für Java-Entwickler, die typischerweise einen besonderen Hang dazu haben, einen signifikanten Unterschied macht.
  3. Entgegen dem Namen werden heutzutage gefühlt die meisten lokalen Variablen für unveränderliche Daten verwendet. Programmiersprachen unterstützen das mit Schlüsselwörtern wie final und const, auf deren Angabe jedoch zu Gunsten der Lesbarkeit häufig verzichtet wird. Swift dreht das um und setzt auf Immutability-By-Default. Nun müssen beispielsweise Parameter explizit mit var gekennzeichnet werden, um sie im Rumpf der Methode ändern zu können, und Methoden von Wertklassen können den Zustand nur ändern, wenn sie als mutating deklariert sind.
  4. Häufig möchte man ein paar Attribute zusammenfassen, ohne gleich eine neue Klasse zu definieren. Swift unterstützt das durch in die Sprache integrierte Tupel, wobei die Elemente optional benannt werden können. Besonders interessant ist die Verwendung als Rückgabetyp einer Methode, um mehrere Rückgabewerte zu simulieren.
  5. Zur Vermeidung der Nil-Zeiger-Problematik unterscheidet das Typsystem von Swift zwischen Referenzen, die nil sein können (Optional), und solchen, die stets auf ein Objekt verweisen. Begleitet werden diese integrierten Optionals von einer speziellen if-Anweisung sowie von mehreren Operatoren, um die häufigsten Verkettungen kurz und prägnant zu realisieren.
  6. Neben Literalen für Zahlen und Zeichenketten besitzt Swift auch Literale für Arrays und Dictionaries, wobei gerade Letzteres die Lesbarkeit gegenüber Varianten ohne Sprachunterstützung sichtbar verbessert.
  7. Swift unterstützt benannte Parameter, das heißt beim Aufruf einer Methode wird der Name des Parameters mit angegeben. Bemerkenswert dabei ist, dass die Angabe des Namens beim Aufruf verpflichtend sein kann und ohne weiteres Zutun für alle Parameter außer dem Ersten auch ist.
  8. Als Enumeration with Associated Values wird in Swift ein Datentyp bezeichnet, der am Ehesten mit Case-Classes in Scala vergleichbar ist. Er ermöglicht eine Variantenbildung über nicht verwandte Datentypen einschließlich der Unterstützung für Pattern Matching. In anderen Programmiersprachen werden für Varianten dagegen häufig die Vererbungsmechanismen vergewaltigt.
  9. Insbesondere C++ hat die deterministische De-Initialisierung populär gemacht, die sich auch in Swift wiederfindet. Sie löst die Problematik um finally und try-with-resources gleichermaßen einfach und zuverlässig – und ohne die Verantwortung auf den Nutzer der Klasse zu verlagern.
  10. In Swift lassen sich Klassen ohne Änderung des Codes mit Class Extensions erweitern. Das gilt sowohl für Methoden, Properties als auch Protokolle. Für eigen-entwickelten Code ist das unbedeutend – für die Integration von Drittbibliotheken jedoch unverzichtbar.

Die Liste enthält nur einige der zahlreichen Features von Swift. Doch die Richtung ist klar erkennbar: Agilität mit Nachhaltigkeit, Pragmatismus statt Dogmatismus und Generalisierung statt Spezialisierung. Insgesamt macht Swift einen sehr guten Eindruck. Bleibt nur die Frage, ob es Verwendung auch abseits von Apples Plattformen findet.