Kurz & knapp: Apples neue Programmiersprache Swift

Sprachen  –  8 Kommentare

Die Enthüllung der neuen Programmiersprache Swift auf der diesjährigen WWDC gehörte sicherlich zu den großen Überraschungen der Konferenz. Sie verspricht Entwicklern spürbare Erleichterungen beim Schreiben von Applikationen für Cocoa und Cocoa Touch.

Der jüngste Spross unter den C-basierten Programmiersprachen hat nicht das Ziel, dem altehrwürdigen Objective-C den Todesstoß zu versetzen, sondern mit ihm harmonisch zu koexistieren. So versteht sich Swift mit Objective-C-Code.

Bei näherer Analyse der noch etwas unhandlichen Dokumentation, die übrigens kostenlos im Apple Book Store zur Verfügung oder als "A Swift Tour" im Web steht, kommt unweigerlich die Metapher der Patchwork-Familie in den Sinn. Swift nimmt Anleihen aus vielen Sprachen, beispielsweise aus Scala, C, Objective-C, Ruby, Java und C#. Von "syntaktischem Zucker" abgesehen, dürften sich Java- und C#-Programmierer daher im Swift-Ökosystem recht schnell heimisch fühlen. Nur noch wenig erinnert an das "Ur-Objective-C".

Brad J. Cox hatte die Sprache während des Siegeszugs objektorientierter Programmiersprachen Mitte der 80er-Jahre entwickelt. Den damaligen Marktgegebenheiten folgend, stellte Objective-C ursprünglich eine Art Fusion aus dem systemnahen, prozeduralen C mit dem eher objektorientierten und funktionalen Smalltalk dar. Dem Mac-OS-Entwickler hat dieser Ansatz nicht immer das Leben erleichtert. Ohne Apples Ritterschlag durch die Ernennung von Objective-C zur Mac-OS/-OS-X-Entwicklungssprache gäbe es Objective-C vermutlich heute nicht mehr. Und da ist die Frage berechtigt, ob es nicht Zeit wäre, das rund 30-jährige Objective-C abzulösen.

Moderner Anstrich

Dem Trend moderner Programmiersprachen folgend, basiert Swift auf einem Multiparadigmenansatz. Nebst Objektorientierung integriert die Sprache funktionale Elemente wie Closures und "for-Comprehensions", generische Elemente, beispielsweise parametrisierte Typen, und hybride Kombinationen davon, etwa den generischen und funktionalen Maybe-Monad. Zudem definiert Swift Standardbibliotheken, die unter anderem veränderliche und nichtveränderliche Collection-Typen enthalten. Darunter übliche Verdächtige wie Listen, Felder und Tupel.

Mit dem Schlüsselwort protocol lassen sich Protokolle definieren, die sich von verschiedenen Klassen implementieren lassen. Zudem ist es möglich, Typen mittels Extensions zu erweitern – ein Mechanismus, den Sprachdesigner im Allgemeinen als Mixin bezeichnen.

Hier zur Veranschaulichung des Look & Feel von Swift ein Beispiel aus der Dokumentation. Die Verwandtschaft zu anderen Sprachen ist unübersehbar.

class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}

var a = SimpleClass()

a.adjust()

let aDescription = a.simpleDescription

struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}

var b = SimpleStructure()

b.adjust()

let bDescription = b.simpleDescription

Eine REPL-Umgebung (REPL = Read Eval Print Loop) soll dem Entwickler ein wenig Skriptsprachen-Feeling a là Ruby vermitteln und eignet sich sowohl für das Erlernen von Swift als auch für das Testen des eigenen Codes.

Die Sprache bietet gegenüber Objective-C eine ganze Reihe zusätzlicher, moderner Sprachmerkmale. So ist Swift einerseits typsicher, kann aber wie Vetter C# Datentypen durch Typinferenz ermitteln. Sogar Funktionen sind Datentypen, ganz wie in Scala.