Von C++, Java & Co. gelernt: Swift Collections für mehr Datenstrukturen lanciert
Die Swift Collections sollen als Füllhorn zur Entwicklung neuer Datenstrukturen für die Standardbibliothek der Programmiersprache Swift dienen.
- Alexander Neumann
Mit den Swift Collections wurde ein neues Open-Source-Projekt an die Welt gesetzt, das die bisherigen Swift-Datenstrukturen erweitern soll. Die Entwickler dahinter beschreiten damit den gleichen Weg, der zuvor schon bei den anderen Paketen Swift Algorithms und Swift Numerics eingeschlagen wurde – nämlich neue Funktionen für die Standardbibliothek der Programmiersprache Swift zu entwickeln.
Was jetzt am Anfang steht, soll irgendwann gereift via Swift Evolution Process eine offizielle Programmierbibliothek werden. Vergleichbare Entwicklungen gibt es auch in anderen Programmiersprachen, beispielsweise bei C++ in Form der Container-Bibliothek oder bei Java mit dem Collections-Framework.
Über Array, Set und Dictionary hinaus
Gegenwärtig implementiert die Standardbibliothek drei Datenstrukturen: Array
, Set
und Dictionary
. Doch sind die Swift-Collections-Entwickler der Meinung, dass eine größere Bibliothek hilfreich wäre, um gewisse Probleme effizienter zu lösen oder eine Invariante zu erhalten. Hierfür sollen die Collections Programmierer in die Lage versetzen, schnellere und zuverlässigere Programme zu schreiben – und das mit weniger Aufwand.
Die erste Version des Collections
-Pakets enthält Implementierungen für drei der am häufigsten nachgefragten Datenstrukturen: eine doppelendige Warteschlange ("deque"), eine geordnete Menge (OrderedSet
) und eine geordnete Zuordnungstabelle (OrderedDictionary
).
Deque
funktioniert offenbar ähnlich wie Array
: Es handelt sich um eine geordnete, wahlfrei zugreifbare, veränderbare, durch eine Range ersetzbare Sammlung mit ganzzahligen Indizes. Ihr Hauptvorteil gegenüber Array
ist, dass sie effiziente Einfügungen und Entfernungen an beiden Enden unterstützt. So werden doppelendige Warteschlangen wohl zu einer guten Wahl bei First-in-First-out-Queues.
OrderedSet und OrderedDictionary
OrderedSet
wird wiederum als mächtiges Hybrid aus einem Array
und einem Set
beschrieben. Wie ein Array
behalten geordnete Mengen ihre Elemente in einer benutzerdefinierten Reihenfolge und unterstützen einen effizienten Zufallszugriff auf ihre Mitglieder. Und wie ein Set
stellen sie sicher, dass jedes Element nur einmal vorkommt, und bieten außerdem Tests zur Zugehörigkeit. Darüber hinaus verwendet OrderedSet
einen Standard-Array-Wert zur Speicherung der Elemente, der sich mit wohl minimalem Overhead extrahieren lässt. Das wird als gutes Verfahren beschrieben, wenn der Inhalt einer geordneten Menge an eine Funktion mit nur einem Array übergeben werden soll. OrderedSet
implementiert auch einen Teil der Funktionen von RangeReplaceableCollection
und MutableCollection
sowie den Großteil des SetAlgebra
-Protokolls.
OrderedDictionary
ist schließlich eine offenbar nützliche Alternative zu Dictionary
, vor allem wenn die Reihenfolge der Elemente wichtig ist oder Entwickler in der Lage sein müssen, effizient auf Elemente an verschiedenen Positionen innerhalb der Sammlung zugreifen zu können. OrderedDictionary
weiß mit vielen der Operatoren von Dictionary
umzugehen und verwendet ganzzahlige Indizes, wobei das erste Element immer bei 0 beginnt. Um Mehrdeutigkeit zwischen schlüssel- und indexbasierten Subscripts zu vermeiden, ist OrderedDictionary
nicht direkt mit Collection
konform. Wie das Standard-Dictionary
bietet das OrderedDictionary
einfache Ansichten für keys
und values
. Es implementiert einen Teil der Funktionen von MutableCollection
und RangeReplaceableCollection
, obwohl die Anforderung an die Eindeutigkeit der Member wohl eine vollständige Konformität für beide Protokolle verhindert.
Weitere Informationen zum neuen Open-Source-Projekt finden sich in der Ankündigung im Swift.org-Blog. Für erste Tests finden Interessierte den Code auf GitHub.
Swift – Jahre später
Die Programmiersprache Swift ist seit Dezember 2015 als Open-Source-Software verfügbar. Im Sommer zuvor hatte Apple angekündigt, die hauseigene Programmiersprache quelloffen bereitstellen zu wollen. Apple hatte Swift als Alternative zu Objective-C 2014 auf seiner Entwicklerkonferenz WWDC eingeführt. Viele iOS- und macOS-Entwickler haben die Sprache mittlerweile angenommen. Die Version 2.2 war das erste Release nach der Öffnung der Quellen und Bekanntgabe des Linux-Supports, das im September 2016 erschienene Swift 3.0 war die erste quelloffene Hauptversion der Programmiersprache. Swift 4.0 wurde im Juli 2017 veröffentlicht, und Swift 5.0 kam im Frühjahr 2019 raus. Derzeit aktuell ist das letztes Jahr im September 2020 erschienene Swift 5.3.
(ane)