Macoun 2014: Entwicklerkonferenz zu iOS 8, Yosemite und Swift

Seite 3: Threads und die Tücken

Inhaltsverzeichnis

Nach einer kleinen Einführung in Threads zeigte Frank Illenberger von den ProjectWizards, welche Probleme man mit der Nebenläufigkeit haben kann, wie man sie vermeidet und wie man Grand Central Dispatch (GCD) als Retter in der Not einsetzen kann. Das Problem: Das Betriebssystem verteilt die CPU-Kraft aller Kerne auf die einzelnen Threads und der Entwickler hat wenig Kontrolle, was wo läuft. Fehler in Threads lassen sich schwer lokalisieren, da sie nicht-reproduzierbar auftreten können. Dennoch sind Hintergrundabläufe enorm wichtig, etwa um asynchrone Netzwerkanfragen zu erledigen oder um zu verhindern, dass der zentrale Mainthread blockiert wird und nicht mehr auf Tastatur- und Mausereignisse reagieren kann.

Vom Indie-Entwickler bis zum Chef der Entwicklungsabteilung eines DAX-Konzerns, das Spektrum war breit.

(Bild: Macoun)

An einem Beispielprogramm zeigte Illenberger einige häufige Probleme und machte Lösungsvorschläge: Man sollte gemeinsame Daten möglichst vermeiden und unveränderliche Objekte bevorzugen, wo immer es geht. Obendrein gilt es, Datenbanken zu verwenden oder Locks/Mutex-Konstruktionen einzusetzen. Bei Locks sind allerdings auch die gefürchteten Deadlocks möglich, das passiert, wenn zwei Threads gegenseitig auf sich warten. Mit Dispatch Queues als Teil von Grand Central Dispatch kann man das vermeiden. Dabei verwaltet Apples Framework den Thread Pool selbst; der Entwickler hantiert nur mit Codeblöcken. Blöcke dürfen Abhängigkeiten haben und einige Blöcke können exklusiv laufen. Ein Deadlock ist dann unmöglich, weil nur ein Block zeitgleich läuft. Quintessenz: Threads sind oft nötig, aber man sollte sehr vorsichtig damit umgehen und möglichst auf GCD setzen.

Im ihrem Vortrag zu Swift setzten sich Armin Negm-Awad und Christian Kienle kritisch mit Apples neuer Programmiersprache auseinander, die viele neue Konzepte einführt (siehe Schwerpunkt in Mac & i Heft 5, Seite 146 und 152). Der größte Unterschied: Swift ist eine stark typisierte Sprache, Objective-C dagegen eine dynamisch typisierte. Um Code für verschiedene Typen zu schreiben, kann man in Swift Templates einsetzen. Damit harmonieren jedoch viele dynamische Konstrukte nicht. Core Data, Responder Chain, Core Animation, der Undo-Manager und Proxies sind alles Konstrukte, die ohne dynamische Typisierung schwer oder gar nicht möglich sind.

Armin Negm-Awad (und sein Kollege) beleuchteten die neue Programmiersprache Swift besonders krtitisch: Es gibt noch viel zu tun…

(Bild: Macoun)

Leider gibt es noch einige Probleme in Swift. Zum Beispiel bestimmt beim Overloading der Typ der Variable mitunter, welche Funktion aufgerufen wird, und das muss nicht die sein, die man erwartet. Außerdem funktioniert die Typinterferenz bei komplexen Ausdrücken wie Collections nicht immer. Je nach Inhalt der Deklaration von Array- oder Dictionary-Variablen und Syntax kommt ein Swift-Array oder ein NSArray heraus. Bei Ausdrücken kann zudem der Typ der Variable links von der Zuweisung bestimmen, wie der Ausdruck rechts der Zuweisung ausgewertet wird. Auf diese Weise ruft Swift eventuell andere Funktionen auf als erwartet. Das kann die Arbeit mit der Sprache sehr erschweren.

Des weiteren demonstrierten die beiden Referenten Probleme bei Optionals, also Referenzen, die undefiniert sein dürfen. Sie schimpften über kryptische Fehlermeldungen, die häufig auftreten und einem nicht wirklich weiterhelfen. Was soll einem etwa "@lvalue $T3' is not identical to 'String'" sagen? Insgesamt ist Swift, so die Schlussfolgerung von Negm-Awad und Kienle, immer noch eine Baustelle.

Am Abend des ersten Konferenztages war Feiern angesagt: Die Macoun-Party fand im Lokalbahnhof statt. Bei schönstem Altweibersommerwetter und mit über 200 Leuten am Buffet. Leider war die Schlange eine Serial Queue und nicht zur parallelen Verarbeitung ausgelegt, aber bei dem leckeren Essen wartete man gern. Viele nette Gespräche und das ein oder andere Bier lockerten die Stimmung.

Macoun 2014 in FFM: Dank Altweibersommer gab es das Buffet unter freiem Himmel.

(Bild: Christian Schmitz)