Kurz & knapp: Apples neue Programmiersprache Swift
Die Enthüllung der neuen Programmiersprache Swift auf der diesjährigen WWDC gehörte sicherlich zu den großen Überraschungen der Konferenz.
- Dr. Michael Stal
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.