Apple hat auf der WWDC im Juni überraschend eine neue Programmiersprache mit dem Namen Swift vorgestellt und damit für Furore gesorgt. Neben dem nicht unerheblichen Überraschungseffekt hat die Ankündigung jedoch ein geteiltes Echo hervorgerufen. Welche Vor- und Nachteile die Ankündigung nach sich zieht, wie viel Euphorie bzw. Skepsis angebracht und gerechtfertigt sind und welche Schlüsse man als Entwickler daraus ableiten sollte, ist Thema dieses ersten Teils einer dreiteiligen Artikelserie.
Objective-C ist mittlerweile eine schon deutlich in die Jahre gekommene Programmiersprache. Ihre Anfänge nahm sie bereits zu Beginn der 80er Jahre, als sie bei NeXT für die Entwicklung des Betriebssystems NeXTStep eingesetzt wurde. Nach Übernahme von NeXT durch Apple Mitte der 90er wurde sie Teil von Apples Betriebssystem Mac OS X, und 2007 feierte Objective-C mit iPhone OS 1.0 schließlich sein Debüt auf dem Smartphone.
Über die Jahre wurden viele neue Features hinzugefügt und teilweise auch wieder entfernt (z. B. Garbage Collection). Fest steht: Die Sprache ist nach wie vor lebendig.
Trotz vieler Neuerungen wie ARC (Automated Reference Counting), Blocks (vergleichbar mit Closures) und moderner Syntax für Collection-Typen und Subscripting kann sie jedoch an mancher Stelle ihre Wurzeln (und Schwächen) nicht verleugnen. Die fehlenden Namespaces beispielsweise sind ein Umstand, der Entwickler zu permanenten Workarounds zwingt, um nicht in ungeliebte Namenskollisionen zu laufen. Zudem sind die immer wieder an die Oberfläche brechenden API-Teile in C mit ihren Pointern gleichermaßen ein Hindernis für Neueinsteiger sowie erfahrene Entwickler.
Die Motivation Apples zur Entwicklung und Einführung einer neuen Programmiersprache leitet sich jedoch nicht alleine aus den Unzulänglichkeiten von Objective-C ab. Ein weiterer Faktor dürften auch die Erkenntnisse aus den vergangenen dreißig Jahren mit unterschiedlichen Programmiersprachen und Programmierparadigmen gewesen sein. In letzter Zeit erfahren funktionale Programmiersprachen wie Ruby, Scala und Clojure gesteigertes Interesse, und bestehende Sprachen werden um funktionale Aspekte erweitert (Objective-C: Blocks, Java: Lambdas).
Dies folgt sowohl der Erkenntnis, dass sich Probleme mithilfe funktionaler Programmierung leichter parallelisieren lassen und damit performanter auf heutigen Mehrkernarchitekturen laufen, als auch dem Wunsch nach größerer Flexibilität in der Wahl der Mittel.
Mit anderen Worten: Eine moderne,...