Du willst Apps entwicklen? Vielleicht tust Du das schon, arbeitest aber noch mit Objective-C? Oder bist Du Android Entwickler und möchtest ein Standbein im Apple Kosmos? Egal wo Du hier zustimmst: Eher früher als später wird dabei Swift für Dich eine große Rolle spielen. Die Sprache ist gerade mal ein halbes Jahr alt und nimmt kräftig fahrt auf. Und womit? Mit Recht! Es macht wirklich unglaublich Spaß damit zu arbeiten. Das macht es für alle Entwickler interessant. Hier ein erster Überblick.

Nicht immer, aber immer öfter: Swift

Ich werde in der nächsten Zeit verstärkt über Swift schreiben. Zum einen ist die Sprache optimal für Einsteiger. Ich habe lange Zeit Java als erste Sprache empfohlen. Das einzige Argument was beim Vergleich mit Swift noch dagegen spricht: nicht jeder hat sich (bisher) für Mac OS X entschieden. Trotzdem: Die Sprache ist echt genial. Und da es bereits viele Umsteiger von Objective-C gibt und noch weitere folgen, gibt es hier entsprechend mehr Informationen zum Thema.

Geschichten vom Spielplatz: Die Playgrounds

Ein erster Vorteil von Swift: Die Playgrounds. Wenn Du schon einmal mit Objective-C gearbeitet hast, kennst Du das Problem. Um die Sprache zu lernen, musst Du ein XCode Projekt anlegen. Um einfach „mal eben“ etwas auszuprobieren – eigentlich übertrieben. Speziell wenn Du verschiedene Aspekte trennen möchtest. Dann erzeugst Du bei den Experimenten schnell mal eine ganze Reihe weiterer Projekte. Soweit kein Problem. Speicherplatz kostet ja fast nichts mehr.

Aber: Nach jeder Änderung musst Du das Programm kompilieren und starten. Erst dann kommt die Ausgabe in der Konsole. Die musst Du sogar selbst erzeugen. Playgrounds machen es Dir leicht. Du schreibst Programmcode und kannst on-the-fly sehen was passiert. Ohne kompilieren, ohne mittels NSLog Daten auszugeben:

Swift Playground

Es ist wirklich kein weiterer Schritt notwendig. Die Ausgabe rechts wird automatisch aktualisiert. Die genaue Bedeutung des Codes ist an dieser Stelle zweitrangig. Wer gar nichts damit anfangen kann: Keine Angst. Weitere Artikel folgen. Grundsätzlich werden Inhalte von Variablen, Ausgaben und Rückgabewerte von Funktionen hier angezeigt. Spannend finde ich z.B. den ausgegebenen Returnwert der Methode addieren(). Der ergibt sich nur durch den Aufruf weiter unten.

Von Variablen und Konstanten

Im Beispiel Screenshot bereits zu sehen: Variablen und Konstanten. Hier ist Swift komplett überarbeitet worden – im Vergleich zu Objective-c quasi runderneuert. Du kannst jeden Datentyp als „mutable“ (veränderbar) und „immutable“ (nicht veränderbar) erzeugen. Wie? Ganz einfach – mit den Keywords var und let:

Anders ausgedrückt: Es gibt auf der einen Seite Variablen. Sie werden mit dem Keyword „var“ deklariert. Der Name deutet schon darauf hin: Sie sind variabel. Du kannst Ihren Wert später verändern. Bei einem String kannst Du einen anderen String hinterlegen. In einem Array kannst Du Elemente hinzufügen, verändern oder löschen.

Die andere Seite der Medaille sind Konstanten. Auch hier ist der Name Programm. Die Werte sind Konstant und können nicht verändert werden. In Objective-C gab es das so nicht. Beispielsweise für Arrays gab es separate Klassen: NSMutableArray und NSArray. Jetzt funktioniert es überall! Toll auch: Das Konzept funktioniert z.B. auch bei Parametern von Methoden und Funktionen. Es zieht sich konsequent durch die Sprache.

Die Datentypen und Annotations

Absolut genial: Die Typensicherheit in Swift. Es gibt, ähnlich wie bei Java, eine strenge Typisierung der Variablen. Das sieht auf den ersten Blick gar nicht so aus – ist aber trotzdem so. In Sprachen wie PHP wird der Datentyp einfach intern verwaltet. Er wird bei der Zuweisung erkannt. Großer Unterschied: Er kann sich jederzeit wieder ändern. Die Variablen sind also nicht typsicher – der Interpreter passt nicht auf.

Swift wirft einen Blick auf den initialen Wert Deiner Variablen. Dabei wird der Datentyp erkannt. Und das richtig gut und zuverlässig! Im Beispiel oben haben wir automatisch Strings erzeugt. In „meineVariable“ kann nun nicht bspw. ein Integerwert abgelegt werden. Folgendes geht also nicht:

Das führt zu einem Fehler. Was aber, wenn Deine Variable gar keinen Anfangswert hat? Swift kann vieles, aber nicht zaubern. Hier musst Du ein paar Hinweise geben. Und die nennen sich „Type Annotations“. Die Syntax ist denkbar einfach:

Durch den Doppelpunkt getrennt gibst Du an, welche Datentyp Swift erwarten soll.

Abgefahren: Die Variablennamen

Aus der Sicht von Swift eigentlich ein Nebenprodukt der vollständigen Unterstützung von Unicode: Die Möglichkeiten bei Variablennamen. Hier schlummert viel Potential. Eigentlich jede Sprache lehnt an die Denk- und Schreibweise in englischer Sprache an. Dabei geht es nicht um die Lokalisierung der Inhalte. Viel mehr sind auch Variablennamen, Klassen und Methoden gemeint.

In unserem Sprachgebrauch konntest Du bspw. die Umlaute nicht im Namen verwenden. Eine Variable mit dem Namen „größterGemeinsamerTeiler“? Undenkbar! Anders bei Swift:

Vollkommen legal trotz „ß“ und „ö“ – dank Unicode-Support. Für uns eher kleinere Einschränkungen. In China und Japan bedeuten solche Restriktionen eine komplett andere Welt. Versuch Du mal japanische oder chinesische Variablennamen zu finden. Dafür sind erstmal die normalen Sprachkenntnisse wichtig, noch vor der Programmierung. Dank Unicode sind nun auch folgende Variablennamen möglich:

Hier steht „漢字“, eine japanische Schrift, als Name der Variable. Sie kann genau so überall im Programm verwendet werden. Das ist ein sehr praktischer Nutzen. Ein lustiges Gimmick, ebenfalls eher Nebeneffekt durch Unicode, sind Emojis als Variablenname. Dazu hier ein Screenshot aus dem Playground. Vollkommen legal und verwendbar wie die Variable „myString“ weiter oben:

Swift: Emojis als Variablenname

Interessant, aber nicht unbedingt praktisch. Auf der Tastatur muss über „STRG + CMD + Space“ der Emoji-Dialog geöffnet werden. Außerdem wird keine Autovervollständigung unterstützt (zumindest aktuell nicht, Stand XCode 6.1.1). In internationalen Teams für die Lesbarkeit von Code ggf. toll. Den Hund erkennst Du sofort, ebenso die Pizza.

Daten auf der Konsole ausgeben

Die Ausgaben im Playground werden automatisch erzeugt. Sie würden auf der Konsole nicht angezeigt. Klingt erst mal wenig spannend. Wenn Du mit Schleifen arbeitest siehst Du nicht mehr genau was passiert. Dann gibt der Playground nur noch die Anzahl der Aufrufe aus:

Swift playground output

Hier wurde „lang“ zwei Mal angesprochen. Um die Ausgabe zu sehen, verwendest Du einfach println():

Swift console output

Die Ausgabe auf der rechten Seite zeigt das Ergebnis von println(). Die Ansicht erhälst Du über den „Assistant Editor“ und einen Klick auf das „+“ oben rechts neben „…(Timeline)“.

Alte bekannte: Kommentare

Mit Kommentaren dokumentierst Du Deinen Quellcode. Die Syntax ist keine wirklich Überraschung und aus Objective-C bekannt. Es gibt zwei Varianten. Kommentare über eine einzelne Zeile und mehrzeilige Kommentare:

Wenig spannend, trotzdem ein wichtiges Element.

Auf Wiedersehen: Semikolons

Eine richtig geniale Nachricht: Das obligatorische Semikolon am Zeilenende ist nicht mehr notwendig! Siehe auch sämtliche Beispiele oben. Es ist aber auch kein Fehler, wenn Du es benutzt. Generell empfehle ich darauf zu verzichten. Macht das Leben viel einfacher. Wenn es aus Angewohnheit mit reinrutscht – auch kein Problem. Es gibt allerdings eine Ausnahme:

Wenn Du mehrere Anweisungen in einer Zeile unterbringst, ist das Semikolon wichtig. Bezogen auf die Lesbarkeit ist das Beispiel aber ohnehin nicht zu empfehlen.

Grundlegende Datentypen

Die üblichen Verdächtigen sind auch mit von der Partie. Wie gesagt ist Swift eine Art „best of“-Compilation vieler Hits der letzten Jahrzehnte. Es gibt wie eben zu sehen Strings. Unterschied zu Objective-C: es handelt sich nicht um eine Klasse. Strings, genauso wie Arrays und Dictionaries, sind Value Types (als struct abgebildet). Das ist für Einsteiger irrelevant. Wichtig ist es für Dich bei der Frage ob Variablen als Wert oder Referenz weitergegeben werden. Noch eine Veränderung: boolsche Werte gibt es nun nur noch als true oder false. YES und NO bspw. gibt es nicht mehr. Hier eine kurze Übersicht:

Die Variablen in diesem Beispiel sind nur deklariert. Wie oben erwähnt braucht Swift dann einen Hinweis auf den Datentypen. Das gleiche kannst Du auch wie folgt erzeugen:

Fühlt sich gut an und sieht auch noch sehr ansehnlich aus.

Tuples

Tuples sind gruppierte Werte. Das Konzept gibt es in Python in ähnlicher Form. Das Beispiel zu Tuples aus dem Swift Language Guide zeigt einen typischen Anwendungsfall. Im HTTP-Kontext gibt es Fehlercodes. Als Entwickler hast Du vielleicht schon einmal etwas von einem 404-Fehler gehört? Genau das ist so ein Code. Zu dem Fehlercode gibt es eine Fehlermeldung, in diesem Fall „Not Found“. Um bspw. in einer Funktion beide Werte zurückzugeben, kannst Du in Swift Tuples verwenden:

Damit definierst Du das Tuple, also Deinen gruppierten Wert. Meldung und Code hängen nun zusammen. In einer Methode könntest Du „httpError“ nun mit return zurückgeben. Der Weg geht natürlich auch anders herum. Um „httpError“ auszulesen, kannst Du rückwärts vorgehen:

Es wird sogar noch besser. Wenn Du bspw. nur den Code auslesen willst, kannst du die Nachricht ignorieren ohne sie in den Namensraum zu holen:

Mit dem „_“ (Unterstrich) werden einzelne Bestandteile des Tuples ignoriert. Es gibt noch weitere Aspekte. Aber hier geht es ja nur um eine erste Übersicht. Später also sicher mehr.

Ja, Nein, Vielleicht? Optionals!

Mit Optionals deutest Du an: Hey, es ist vielleicht gar kein Wert vorhanden. Prüf dies, bevor Du mit mir arbeitest. Das Konzept gab es in Objective-C bisher nicht. Es gab eine Konvention. Über den Rückgabewert nil und die Abfrage ob eine Variable nil ist, kannst Du solche Fälle abdecken. Das gilt aber für Objekte. Das Keyword nil ist ein spezieller Pointer ins Leere. Optionals funktionieren hingegen bei jedem Datentyp. Hier ein Beispiel:

Wichtig dabei: Es ist nicht das gleiche wie die numerische Null. Das wäre ja auch ein Wert. Ob es nun die universelle Antwort gibt und ein Wert gesetzt ist. Fragst Du wie folgt ab:

Auch hier gibt es noch den in oder anderen Kniff. Wirklich zu empfehlen.  Das Kapitel zu den Basics im Swift Guide von Apple.

Fazit

Ein direkter Vergleich ist natürlich nicht fair. Swift ist eine neuen Sprache. Sie vereint in vielerlei Hinsicht das beste der letzten Jahrzehnte der Programmierung. Das ist ähnlich wie bei Autos. Du kommst auch mit einem Opel Kadett aus den 80er Jahren an Dein Ziel. An der ein oder anderen Stelle sicher nicht so bequem wie mit einem aktuellen Model. Sicher auch nicht so effizient. Ähnlich ist es bei Objective-C. Die Sprache ist mit der Zeit gewachsen. Swift wurde entworfen. Es lohnt sich also dranzubleiben.

Jetzt Du

Wir gefällt Dir Swift? Arbeitest Du schon länger mit Objective-C? Kommst Du vielleicht aus der Android-Welt und schnupperst erst einmal? Ich freue mich über jeden Kommentar, jeden Facebook Like und Tweet wie ein kleines Kind an Weihnachten. Jetzt bist also Du dran. Bis zum nächsten Artikel!

Tags:

Schreib einen Kommentar

Your email address will not be published.