Op 3 december 2015 heeft Apple officieel de Swift-programmeertaal geopend. Door de volledige programmeertaal open te sourcen, heeft Apple nu ontwikkelaars van over de hele wereld toegestaan bij te dragen aan de taal en te helpen bij de ontwikkeling en ontwikkeling ervan. Bovendien kan de Swift-programmeertaal nu worden gebruikt in omgevingen buiten Apple's platforms, zoals Linux.
In dit artikel ga ik je vertellen over enkele van de meest populaire en interessante projecten die gebruik maken van Swift en die in de loop van de tijd zullen evolueren naast de taal zelf.
Als je eerder iOS-programma's hebt gedaan, vooral met Objective-C, ben je waarschijnlijk bekend met klassen zoals NSDate
, NSArray
, NSString
, en NSURL
. Deze klassen maken allemaal deel uit van de fundament framework, dat beschikbaar is op elk Apple-platform (iOS, OS X, tvOS en watchOS).
De basisfunctionaliteit die de Foundation-API's bieden, wordt echter ook door Apple opnieuw geïmplementeerd als een Swift Core Library om op verschillende platforms te kunnen worden gebruikt. Dit project is te vinden in de quick-corelibs-foundation-repository van Apple op GitHub.
Talloze andere ontwikkelaars werken er actief aan om de Foundation-API's op een platformoverschrijdende manier naar Swift te brengen. De meest populaire van deze projecten is SwiftFoundation, dat, op het moment dat dit artikel wordt geschreven, veel belangrijke verschillen heeft met de implementatie van Apple.
Het biedt meer functionaliteit. Zoals de README-notities van het project aangeven, zijn veel methoden in het Apple's Foundation-project gemarkeerd met NSUnimplemented ()
, wat betekent dat alleen de basisfunctionaliteit momenteel beschikbaar is.
Vanaf het begin is het ontworpen met portabiliteit in gedachten. Anders dan de kernbibliotheek van Apple Foundation, steunt SwiftFoundation niet op de CoreFoundation-API's die zijn geschreven in C. Hierdoor kan SwiftFoundation in de toekomst gemakkelijker een groter aantal platforms ondersteunen.
SwiftFoundation is volledig ontworpen en ontwikkeld met behulp van een protocolgeoriënteerde structuur in plaats van de meer traditionele objectgeoriënteerde programmeerstijl. Dit biedt een aantal voordelen, waarover u meer informatie kunt vinden in deze zelfstudie.
Wat nog belangrijker is, het moderniseert de meer dan 20 jaar oude Foundation API's volledig. Apple zou uiteindelijk zoiets kunnen doen met hun kernbibliotheek van de Foundation, maar de README van hun repository vermeldt het volgende.
In ons eerste jaar zijn we niet op zoek naar belangrijke API-wijzigingen in de bibliotheek. We denken dat dit het primaire doel [van draagbaarheid buiten Apple-platforms] zal belemmeren].
Beide projecten worden actief bijgewerkt en zullen zeker cruciaal worden in de toekomst van Swift-ontwikkeling omdat ze basisfuncties mogelijk maken, zoals netwerken, data / tijden ophalen / manipuleren en permanente lokale opslag op elk platform dat wordt ondersteund door de Swift-taal.
Naast Foundation herontwikkelt Apple vanaf de grond ook nog twee andere belangrijke bibliotheken die met Swift op andere platforms kunnen worden gebruikt: XCTest en libdispatch (ook bekend als Grand Central Dispatch). Hoewel deze projecten niet zo populair zijn of dezelfde schaal hebben als Foundation, zijn ze nog steeds erg belangrijk als het gaat om de ontwikkeling van Swift.
Het XCTest-project is ontworpen om ontwikkelaars in staat te stellen eenheidstests voor hun Swift-code te maken. Als u niet bekend bent met unit tests, neem dan een kijkje op dit artikel om meer over hen te weten te komen. Hoewel het nog in de kinderschoenen staat en alleen basistests worden ondersteund, zal het XCTest-project na verloop van tijd zeer belangrijk worden voor alle Swift-ontwikkelaars bij het testen en debuggen van hun code..
Het libdispatch-project maakt gelijktijdige (multithreaded) workflows mogelijk wanneer het op ondersteunde hardware draait. Dit is vooral belangrijk voor acties, zoals netwerkaanvragen, zodat de hoofdthread niet wordt geblokkeerd door andere bewerkingen.
Hoewel beide repos zijn eigendom van en worden onderhouden door Apple, zoals Swift, zijn ze open source geweest om input van ontwikkelaars aan te moedigen. Ik moedig je aan om ze te bekijken, ook al is het alleen maar uit interesse om naar de implementatie van de API's te kijken. Je kunt veel leren van het bladeren door de broncode.
Een van de meest opwindende mogelijkheden van open sourcing Swift is de mogelijkheid om het te gebruiken als de primaire programmeertaal voor serverbackends en websites. Hoewel HTML en CSS de standaard voor internet blijven als het gaat om het presenteren van inhoud aan de gebruiker, zou Swift, zodra Swift en zijn bibliotheken volwassen en functioneel genoeg zijn, kunnen worden gebruikt in bijna elke situatie waarin momenteel andere talen, zoals PHP en JavaScript, worden gebruikt.
Dit is bijzonder opwindend voor Cocoa-ontwikkelaars, omdat de vaardigheden en kennis die ze al hebben opgedaan door Swift te gebruiken voor frontendontwikkeling hen enorm zullen helpen als ze back-endontwikkeling willen doen.
Er zijn veel projecten die allemaal werken om Swift op het web te brengen, waaronder Vapor, Zewo en Caramel. De meest geavanceerde en veelzijdige van deze projecten is echter Perfect.
Perfect omvat veel verschillende Swift-componenten, die elk hun eigen unieke doel hebben.
Gecombineerd zorgen deze componenten voor een volledig functionele webserver, die precies hetzelfde zou werken als een traditionele server met PHP of JavaScript. De mogelijkheden van webservers waarop Swift draait, zijn zeer opwindend en projecten, zoals Perfect, banen de weg voor de dag dat Swift voor vrijwel elk onderdeel van een project kan worden gebruikt..
Als je de repositories bekijkt die eerder in dit artikel zijn genoemd, zul je merken dat sommigen van hen in hun root directory een bestand hebben genaamd Package.swift. Projecten die dit bestand bevatten, doen dit om te worden gebruikt met de Swift Package Manager.
De Swift Package Manager is een afhankelijkheidsbeheersysteem dat vergelijkbaar is met CocoaPods en Carthage, waardoor ontwikkelaars kunnen linken naar externe bibliotheken en deze kunnen gebruiken in hun eigen projecten.
Deze pakketbeheerder wordt zo ontwikkeld dat elk platform dat Swift gebruikt, op exact dezelfde manier kan linken en code kan importeren, in plaats van te vertrouwen op een platformspecifieke oplossing. De Swift Package Manager bevindt zich nog in zijn vroege ontwikkelingsstadia en vele specificaties kunnen worden gewijzigd. Maar het is bedoeld om te worden afgerond en samen met Swift 3 te worden uitgebracht.
Als je dit project van naderbij wilt bekijken en wilt leren hoe je het kunt gebruiken in je eigen code, raad ik aan de projectpagina op Swift.org of de repository op GitHub te bezoeken..
Naast de eerder genoemde open source Swift-projecten zijn er ook vele andere die erg interessant en uniek zijn.
Dit project is gericht op loggen. Hiermee kunnen ontwikkelaars veel meer details afdrukken op de systeemconsole zonder een hele stapel extra code te hoeven schrijven. Met dit logboekhulpprogramma kunt u automatisch een verscheidenheid aan kenmerken registreren, waaronder de naam van de draad, de bestandsnaam van de broncode, het regelnummer en de huidige scopemethode.
Het doel van dit project is om opdrachtregeltoepassingen met Swift te maken. Deze toepassingen ondersteunen de gebruikersinteractie in de vorm van zowel gewone toetsenbordinvoer als multiple choice.
Swiftline zou bijzonder nuttig zijn in een educatieve omgeving omdat studenten het zouden kunnen gebruiken om een volledig functionele en interactieve applicatie te ontwikkelen zonder zich zorgen te hoeven maken over een soort gebruikersinterface..
Deze repository bevat een breed scala aan nuttige algoritmen allemaal voor gebruik in de Swift-code. Dit omvat dingen, zoals arrays met vaste grootte, hashtabellen en schuifelen. De repository bevat een volledige lijst van alle algoritmen die momenteel worden ondersteund.
Swift AI is een artificial intelligence-project dat zich richt op machinaal leren. Het voorbeeldproject in de repository laat zien hoe het AI-systeem kan leren om een basis sinusfunctie te repliceren.
Merk op dat dit project momenteel alleen wordt ondersteund op iOS en OS X vanwege zijn afhankelijkheid van het Accelerate-framework van Apple, dat betere prestaties mogelijk maakt bij het uitvoeren van grote berekeningen.
Er zijn zoveel nieuwe en opwindende open source Swift-projecten, die in de loop van de tijd de loopbanen van vele ontwikkelaars zullen ontwikkelen en beïnvloeden. Zoals je kunt zien, heeft Apple via open sourcing Swift niet alleen toegestaan dat de taal beter wordt door bijdragen van de gemeenschap, maar ook om bruikbaar te worden bij het ontwikkelen voor andere platforms dan die van Apple..
Ik moedig je aan om een aantal van de projecten in dit artikel te bekijken en te kijken naar wat ze proberen te bereiken. Als je nog meer projecten wilt bekijken, raad ik je aan door GitHub te bladeren voor de populairste en op dit moment populaire Swift-bibliotheken.
Laat zoals altijd uw opmerkingen en feedback achter in de opmerkingen hieronder.