En introduktion till Swift

Under Apples utvecklarkonferens, WWDC, som ägde rum i centrala San Francisco, presenterades i år den första publika versionen av det nya programmeringsspråket Swift. Under flera år har utvecklingen skett i hemlighet internt hos Apple, vilket kom som en överraskning för de flesta som följde eventet eller befann sig på plats i Moscone Center. Swift skapades för att på sikt ersätta programspråket Objective-C, som hängt med sedan början av 1980-talet.

Vad är Swift?

Swift beskrivs som ett modernt, flexibelt, snabbt, och framförallt mer välkomnande programmeringsspråk för nya användare. Det sistnämnda är mycket efterlängtat då Objective-C under en lång tid kritiserats på grund av sin höga tröskel för nybörjare att komma igång med utveckling för iOS och OS X. För att realisera designen för Swift har kompatibiliteten med C plockats bort, vilket betyder att de begränsningar som tidigare fanns för ett modernare språk nu är ur vägen. Swift är optimerat för hög prestanda, men framställs samtidigt som lika uttrycksfullt och dynamiskt som ett script-språk.

Ett första intryck

Under den korta tid som jag bekantat mig med de grundläggande koncepten, syntaxen, samt den nya versionen av Xcode som krävs för att utveckla med Swift känner jag mig omedelbart som hemma. Språket tar inspiration från det bästa av Objective-C, som såväl ett flertal andra välrenommerade programspråk (C#, m.fl.). Några minnesvärda höjdpunkter utan att gå in i detalj är följande:

  • Generics, Optionals samt Extensions.
  • ARC för automatisk minneshantering.
  • Tuples. Används exempelvis för att returnera fler än ett värde från en funktion.
  • Closures och funktioner som första-klass-typer.
  • map, filter och liknande ”higher-order”-funktioner.
  • Read-Eval-Print-Loop (REPL).
  • Namngivna parametrar.

Allting kompileras direkt till maskinkod genom den högpresterande LLVM-kompilatorn, dessutom med bättre resultat än nuvarande version av Objective-C.

 Interactive Playgrounds

För att snabbt komma igång och experimentera med Swift rekommenderar jag starkt att använda ”Interactive Playgrounds”, som är en ny funktion i Xcode 6. För varje rad du skriver så kompileras och körs koden, detta ger dig direkt feedback på vad som returneras av olika uttryck, samt visualiseringar över tid av hur algoritmer och loopar beter sig. I skrivande stund är Xcode 6 endast tillgänglig för registrerade utvecklare och hämtas på Apple Developer Center; en publik release kommer sannolikt att lanseras kostnadsfritt på Mac App Store till hösten.

I den vänstra kolumnen skrivs koden. Eftersom Swift inte kräver att man deklarerar en ”main”-funktion eller liknande så är det bara att köra igång på rad 1. I mittenkolumnen visas omedelbart feedback för respektive rad i form av vad uttrycket returnerar. Om man vill få en bättre överblick, samt se det som skrivs till stdout, så öppnar man upp den tredje och sista kolumnen. Här visualiseras det som är möjligt, och du har bland annat tillgång till att stegvis följa en loop över tid.

Cocoa och övergången från Objective-C

När borde man börja använda Swift? Nu, enligt Apple. Man har möjlighet att fritt kombinera en existerande kodbas som är skriven i Objective-C med Swift, eller vice versa. Swift har tillgång till både Cocoa- och Cocoa Touch-ramverken och det fungerar även utmärkt att kalla på all annan kod skriven i Objective-C. För att göra detta möjligt så generar man såkallade ”bridging headers”. Detta sker automatiskt och underlättar processen avsevärt. Mer om detta finns att läsa under sektionen Using Swift with Cocoa and Objective-C på Apple Developer Center.

Resurser för utvecklare

The Swift Programming Language är en utmärkt gratis-bok publicerad av Apple. Här finns allt du behöver för att börja programmera med Swift redan idag. Med runt 500 sidor är det den mest kompletta referensen till språket just nu.

Skrivet den 4 juni av

Johan Bååth

Kategorier: iPad iPhone Ny Teknik

Skriv en kommentar

  • XHTML: Du kan använda följande taggar: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>