EMZETT.
Login

Swift

Kurz: Apples moderne Programmiersprache für iOS-, macOS- und watchOS-Apps — seit 2014 der Nachfolger von Objective-C.

Genauer: Swift ist wie Kotlin bewusst sicherheitsorientiert (z. B. Optionals gegen Null-Fehler) und deutlich kompakter als Objective-C. Läuft nativ auf Apples Plattformen und wird über das App-Store-Ökosystem (Xcode) entwickelt und verteilt.

Im Detail

func begruessung(name: String?) -> String {
    return "Hallo, \(name ?? "Unbekannt")"
}

Swifts “Optionals” (String? im Beispiel — ein Wert, der entweder einen echten Inhalt oder explizit “nichts” enthält) lösen ein ähnliches Problem wie Kotlins Null-Sicherheit: der Compiler zwingt dazu, mit der Möglichkeit eines fehlenden Werts explizit umzugehen, bevor darauf zugegriffen wird, statt erst zur Laufzeit mit einem Absturz überrascht zu werden. Das war einer der Hauptkritikpunkte am Vorgänger Objective-C, wo fehlende Referenzen zu häufigen Laufzeitfehlern führten.

Swift ist eng mit Apples Entwicklungsumgebung Xcode verzahnt und ausschließlich für Apples eigenes Ökosystem konzipiert (iOS, iPadOS, macOS, watchOS, tvOS) — anders als Kotlin, das zwar primär für Android genutzt wird, aber als allgemeine JVM-Sprache auch plattformunabhängiger einsetzbar ist. SwiftUI, Apples deklaratives UI-Framework, hat in den letzten Jahren den älteren, imperativen UIKit-Ansatz zunehmend abgelöst.

Entstehung und Motivation

Swift wurde von Chris Lattner (auch Schöpfer des LLVM-Compiler-Frameworks, auf dem Swift aufbaut) bei Apple entwickelt und 2014 auf der Entwicklerkonferenz WWDC überraschend vorgestellt — bis dahin war Objective-C jahrzehntelang die einzige praktikable Sprache für Apple-Plattformen gewesen. Objective-C (eine Erweiterung von C um objektorientierte Konzepte nach Smalltalk-Vorbild) galt als zunehmend altmodisch: umständliche Syntax mit eckigen Klammern für Methodenaufrufe, manuelles Speichermanagement in älteren Versionen, und eine steile Lernkurve für Neueinsteiger ohne C-Hintergrund. Swift sollte eine moderne, sicherere und für Einsteiger zugänglichere Alternative bieten, bei gleichzeitig hoher Performance nahe an kompiliertem C-Code.

Automatic Reference Counting statt Garbage Collector

Anders als Java oder Kotlin nutzt Swift keinen klassischen Garbage Collector, sondern Automatic Reference Counting (ARC) — der Compiler fügt bereits beim Kompilieren automatisch Code ein, der zählt, wie viele Referenzen auf ein Objekt zeigen, und gibt den Speicher frei, sobald der Zähler auf null fällt. Das vermeidet die unvorhersehbaren kurzen Pausen, die ein klassischer Garbage Collector gelegentlich verursachen kann (relevant für flüssige UI-Animationen), erfordert aber Aufmerksamkeit bei zirkulären Referenzen (zwei Objekte referenzieren sich gegenseitig, der Zähler erreicht nie null) — dafür bietet Swift explizite weak/unowned-Referenzen, um solche Zyklen bewusst aufzubrechen.

SwiftUI und deklarative UI

SwiftUI (seit 2019) beschreibt Benutzeroberflächen deklarativ — man beschreibt, WIE die UI in einem bestimmten Zustand aussehen soll, statt imperativ Schritt für Schritt UI-Elemente zu erzeugen und zu aktualisieren (der ältere UIKit-Ansatz). Dieses Paradigma ähnelt konzeptionell React im Web-Bereich (deklarative Komponenten, die auf Zustandsänderungen automatisch neu rendern) und hat den Einstieg in native Apple-Entwicklung für Entwickler mit Web-Hintergrund erleichtert.

Siehe auch: iOS, Kotlin