Den 3. desember 2015 åpner Apple offisielt det Swift programmeringsspråket. Ved å åpne sourcing hele programmeringsspråket har Apple nå gitt utviklere fra hele verden til å bidra til språket og bistå i utviklingen og evolusjonen. I tillegg til dette kan Swift programmeringsspråket nå brukes i miljøer utenfor Apples plattformer, for eksempel Linux.
I denne artikkelen skal jeg fortelle deg om noen av de mest populære og interessante prosjektene som bruker Swift og vil over tid utvikle seg sammen med selve språket.
Hvis du har gjort noen iOS-programmering før, spesielt ved hjelp av Objective-C, er du sannsynligvis kjent med klasser som NSDate
, NSArray
, NSString
, og NSURL
. Disse klassene er alle en del av Fundament rammeverk, som er tilgjengelig på alle Apple-plattformer (iOS, OS X, tvOS og watchOS).
Den grunnleggende funksjonaliteten Foundation APIs gir imidlertid også reimplemented som et Swift Core Library av Apple for å være bærbart på tvers av plattformer. Dette prosjektet kan bli funnet på Apples stiftelsesbase på GitHub.
Mange andre utviklere arbeider aktivt for å bringe Foundation APIs til Swift i en bærbar kryssplattform. Den mest populære av disse prosjekter er SwiftFoundation, som i skrivende stund denne artikkelen har mange viktige differensier fra Apples implementering.
Det gir mer funksjonalitet. Som prosjektets README notater er mange metoder i Apples grunnprosjekt merket med NSUnimplemented ()
, noe som betyr at bare grunnleggende funksjonalitet er tilgjengelig.
Fra begynnelsen har den blitt designet med bærbarhet i tankene. I motsetning til Apples grunnleggende kjernebibliotek, stoler SwiftFoundation ikke på CoreFoundation APIs skrevet i C. Dette gjør at SwiftFoundation lettere kan støtte et bredere utvalg av plattformer i fremtiden.
SwiftFoundation er helt utviklet og utviklet ved hjelp av en protokollorientert struktur i stedet for den mer tradisjonelle objektorienterte programmeringsstilen. Å gjøre det gir deg en rekke fordeler, som du kan lære mer om i denne opplæringen.
Enda viktigere, det moderniserer de 20 + år gamle grunnleggende API-ene. Apple kunne til slutt gjøre noe slikt med deres grunnkjernebibliotek, men README i deres depot sier følgende.
I vårt første år ønsker vi ikke å gjøre store API-endringer i biblioteket. Vi føler at dette vil hemme det primære målet [av portabilitet utenfor Apple-plattformer].
Begge disse prosjektene blir aktivt oppdatert og vil definitivt bli avgjørende i fremtiden for Swift utvikling, ettersom de tillater grunnleggende funksjoner, for eksempel nettverk, å få / manipulere datoer / tider og vedvarende lokal lagring på hvilken som helst plattform som støttes av Swift-språket.
I tillegg til Foundation, er Apple også ombygging av to andre hovedbiblioteker som skal brukes med Swift på andre plattformer: XCTest og libdispatch (også kjent som Grand Central Dispatch). Selv om disse prosjektene ikke er like populære eller har samme omfang som Foundation, er de fortsatt svært viktige når det gjelder Swift utvikling.
XCTest-prosjektet er utviklet for å tillate utviklere å lage enhetstester for deres Swift-kode. Hvis du ikke er kjent med enhetstester, så ta en titt på denne artikkelen for å lære mer om dem. Mens det i svært tidlige stadier med bare grunnleggende tester blir støttet, vil XCTest-prosjektet over tid bli svært viktig for alle Swift-utviklere når de tester og feilsøker sin kode.
Libdispatch-prosjektet tillater samtidige (multithreaded) arbeidsflyter når de kjøres på støttet maskinvare. Dette er spesielt viktig for handlinger, for eksempel nettverksforespørsler, slik at hovedtråden ikke blir blokkert av andre operasjoner.
Mens begge disse reposene eies og vedlikeholdes av Apple, som Swift, har de blitt åpnet for å oppmuntre utviklerinngang. Jeg oppfordrer deg til å ta en titt på dem, selv om det bare er interessant å se på implementeringen av APIene. Det er mye du kan lære av å bla gjennom kildekoden.
En av de mest spennende mulighetene for åpen sourcing Swift er evnen til å bruke den som det primære programmeringsspråket for serverbackends og nettsteder. Mens HTML og CSS vil forbli standardene for nettet når det gjelder å presentere innhold til brukeren, når Swift og dets biblioteker er modne og funksjonelle nok, kan Swift brukes i nesten alle situasjoner der andre språk, for eksempel PHP og JavaScript, er brukt.
Dette er spesielt spennende for kakaoutviklere fordi ferdighetene og kunnskapen de allerede har oppnådd ved å bruke Swift for frontend-utvikling, vil da i stor grad hjelpe dem dersom de ønsker å gjøre utviklingsutvikling.
Det er mange prosjekter som alle jobber for å bringe Swift til nettet, inkludert Vapor, Zewo og Caramel. Den mest avanserte og funksjonelle pakken av disse prosjektene er imidlertid Perfekt.
Perfekt omfatter mange forskjellige Swift-komponenter, som hver har sitt eget unike formål.
Når kombinert, disse komponentene tillater en fullt funksjonell webserver, som ville fungere akkurat det samme som en tradisjonell server drevet av PHP eller JavaScript ville. Mulighetene for webservere som kjører Swift, er veldig spennende, og prosjekter som Perfect, baner vei for dagen. Swift kan brukes til praktisk talt alle komponenter i et prosjekt.
Hvis du ser på repositoriene nevnt tidligere i denne artikkelen, vil du legge merke til at noen av dem, i deres rotkatalog, har en fil som heter Package.swift. Prosjekter som inneholder denne filen, gjør det for å bli brukt med Swift Package Manager.
Swift Package Manager er et dependence management system som ligner på CocoaPods og Carthage, slik at utviklere kan koble til tredjepartsbiblioteker og bruke dem i egne prosjekter.
Denne pakkeadministratoren blir utviklet slik at enhver plattform som bruker Swift kan koble til og importere kode på samme måte, i stedet for å stole på en plattformspesifikk løsning. Swift Package Manager er fortsatt i det tidligste utviklingsstadiet med mange spesifikasjoner som kan endres. Men målet er å bli ferdiggjort og utgitt sammen med Swift 3.
Hvis du vil se nærmere på dette prosjektet og lære å bruke det i din egen kode, anbefaler jeg at du besøker prosjektets side på Swift.org eller depotet på GitHub.
I tillegg til de nevnte open source Swift-prosjektene, er det også mange andre som er veldig interessante og unike.
Dette prosjektet er rettet mot logging. Det gjør det mulig for utviklere å skrive ut mye mer detalj i systemkonsollen uten å skrive en hel masse ekstra kode. Denne loggingsverktøyet lar deg automatisk logge en rekke attributter, inkludert trådnavn, kildekodefilnavn, linjenummer og nåværende omfangsmetode.
Målet med dette prosjektet er å skape kommandolinjeprogrammer med Swift. Disse applikasjonene støtter brukerinteraksjon i form av både vanlig tastaturinngang og flere valg.
Swiftline ville være spesielt nyttig i et pedagogisk miljø, da elevene kunne bruke den til å utvikle et fullt funksjonelt og interaktivt program uten å måtte bekymre seg for noen form for brukergrensesnitt.
Dette depotet inneholder et bredt utvalg av nyttige algoritmer alt for bruk i Swift-kode. Dette inkluderer ting, for eksempel faste størrelsesarrayer, hashbord og shuffling. Lageret inneholder en fullstendig liste over alle de allerede støttede algoritmene.
Swift AI er et kunstig intelligensprosjekt med fokus på maskinlæring. Eksempelprosjektet som er inkludert i depotet, viser hvordan AI-systemet kan lære å replikere en grunnleggende sinusfunksjon.
Merk at dette prosjektet for øyeblikket kun støttes på iOS og OS X på grunn av avhengigheten av Apples Accelerate Framework, som gir bedre ytelse når du utfører store beregninger.
Det er så mange nye og spennende open source Swift-prosjekter der ute, som over tid vil utvikle og påvirke karriere fra mange utviklere. Apple har ikke bare tillatt språket å bli bedre gjennom samfunnsinnskudd, men også å bli nyttig når man utvikler seg for andre plattformer enn Apples.
Jeg oppfordrer deg til å sjekke ut noen av prosjektene nevnt i denne artikkelen, og se på hva de prøver å oppnå. Hvis du vil se på enda flere prosjekter, anbefaler jeg at du surfer GitHub for de mest populære og nåværende Trend-repositoriene.
Som alltid, legg igjen dine kommentarer og tilbakemeldinger i kommentarene nedenfor.