Schlagwort-Archive: Swift

Braucht Linux Swift? Oder braucht Apple Linux?

Vor eineinhalb Jahren hat Apple die Programmiersprache Swift vorgestellt. Wie man es sich von einer neuen Sprache erwartet, ist Swift modern und vereint in sich viele (die besten?) Features aus diversen anderen Programmiersprachen, kombiniert mit ein paar eigenen Ideen.

Wie jede neue Sprache leidet Swift noch unter einigen Kinderkrankheiten. Die größte besteht darin, dass die Sprache work in progress ist. Wer immer sich auf Swift einlässt, muss damit rechnen, dass sein Code schon mit der nächsten Swift-Version an neue Syntaxregeln oder veränderte Standardbibliotheken angepasst werden muss. (In der Apple-eigenen Entwicklungsumgebung Xcode funktioniert das zum Glück weitgehend automatisch.)

Trotz dieser Einschränkung ist Swift durchaus schon praxistauglich und wird bereits intensiv genutzt. Der Grund dafür ist leicht erklärt: Wer native Apps für iOS, OS X, die Apple Watch etc. programmieren will, hat nur die Wahl zwischen Objective C (uralt mit steinzeitlicher und abschreckender Syntax) und Swift. Apple erklärt dezidiert, die Zukunft heißt Swift. Da fällt die Entscheidung nicht schwer …

Braucht Linux Swift? Oder braucht Apple Linux? weiterlesen

Swift 2: Reflection

Swift fehlt leider ein allgemein gültiger Ansatz, um die Eigenschaften von Objekten bzw. Typen festzustellen. Andere Programmiersprachen besitzen dafür Reflection-Funktionen, z.B. Objective C, C# oder Java.

Swift ist aber zumindest eingeschränkt zur Selbstreflexion in der Lage, wobei sich die Vorgehensweise in der gestern freigegebenen Beta 4 von Xcode 7 Beta 4 nochmals geändert hat:

  • Die globale Funktion reflect ist verschwunden, ebenso der MirrorType.
  • Dafür gibt es die neue Mirror-Klasse.

Swift 2: Reflection weiterlesen

Optionals in Swift — Fluch oder Segen?

Viele Programmiersprachen unterscheiden zwischen Wert- und Referenztypen. Werttypen sind für elementare Daten gedacht, vor allem Zahlen. Referenztypen enthalten dagegen Verweise auf Objekte. Sie können null sein, also nicht initialisiert, leer.

Swift unterscheidet ebenfalls zwischen Wert- und Referenztypen. Allerdings ist in Swift vieles ein Werttyp, was in anderen Sprachen ein Referenztyp wäre — Arrays, Dictionaries, Sets etc. Die eigentliche Besonderheit ist aber der Umgang mit dem Zustand null, der in Swift nil heißt:

  • »Gewöhnliche Variablen« — egal, ob Wert- oder Referenztypen — müssen vor vor der ersten Verwendung initialisiert werden; in Klassen muss die Initialisierung im Rahmen der Deklaration oder durch die init-Funktion erfolgen.
  • Nur wenn die Variable zusätzlich als »Optional« gekennzeichnet wird, ist auch der Zustand nil erlaubt. Optionals gibt es gleichermaßen für Wert- und Referenztypen.

Optionals in Swift — Fluch oder Segen? weiterlesen

Wie schnell ist Swift?

Ich bin ein passionierter Lotto-Spieler! Aber da mir mein Geld zu schade ist, um es beim Fenster rauszuwerfen bzw. dem Staat zu schenken, simuliere ich das Lottospielen nur. Z.B. in Java oder in Swift.

Mein erster Versuch, einen Lottosimulator in Swift zu programmieren, endete aber mit einer bösen Überraschung. Das Programm war grottenlangsam! Also bin ich der Sache auf den Grund gegangen. Soviel vorweg: Schuld waren Swifts Arrays und Dictionary. Die sind komfortabel in der Handhabung, aber nicht unbedingt schnell.

Update 10.2.2015: Ich habe die Benchmarktests gerade mit XCode 6.3beta / Swift 1.2 wiederholt. Lesen Sie die Updates am Ende des Beitrags!

Wie schnell ist Swift? weiterlesen

Swift — Referenz aller Sonderzeichen

Die Syntax von Swift macht Gebrauch von unzähligen Sonderzeichen und Zeichenkombinationen — nicht nur für Operatoren, sondern auch für diverse andere Sprachfunktionen. Ich habe mich bemüht, hier eine möglichst vollständige Referenz aller Zeichen und ihrer Bedeutung je nach Kontext zusammenzustellen. Wenn etwas fehlt, melden Sie sich bitte, entweder per Mail an kontakt@kofler.info oder per Kommentar am Ende dieses Beitrags.

Swift — Referenz aller Sonderzeichen weiterlesen

Swift — Besondere Operatoren

Swift kennt im Wesentlichen dieselben Operatoren wie die meisten anderen Programmiersprachen — also etwa +, -, * und / für die Grundrechnungsarten, = für Zuweisungen, == und === für Vergleiche etc. Allerdings gibt es in Swift auch einige Besonderheiten, die einen genaueren Blick rechtfertigen. Vorweg ein Überblick:

Operator         Bedeutung
------------     -----------------------------
(a, b) = (1, 2)  Mehrfachzuweisung
a &+ b           Addition ohne Überlaufkontrolle
a &- b           Subtraktion ohne Überlaufkontrolle
a &* b           Multiplikation ohne Überlaufkontrolle
a &/ b           Division ohne Überlaufkontrolle
a &% b           Restwert ohne Überlaufkontrolle
a ?? b           Nil Coalescing
a ~= b           Vergleichsoperator für `switch/case`

Swift — Besondere Operatoren weiterlesen