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.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Alexander Neumann
Inhaltsverzeichnis

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.

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 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.

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)