Svåra vägen: Programmera på riktigt med Swift (IOS)

Swift är Apples nya programmeringsspråk som så småningom är tänkt att helt ersätta det numera föråldrade objective-c som utvecklades på 80-talet. Det är ett språk som hämtar inspiration från många andra språk, till exempel Python, som är ett av de populäraste språken för utbildning i programmering.

Jämfört med objective-c eller gamla c och c++ har Swift väldigt många fördelar som gör det lämpligt som nybörjarspråk. Du slipper till exempel det huvudbry som minneshantering tidigare gav även erfarna utvecklare. Det är också ett språk som försöker ligga så nära vanlig engelska som möjligt. Du slipper ofta fundera på vilken typ en variabel (ett stycke data) har, och när du väl kommer igång är det snabbt och enkelt att jobba med då många saker kan skrivas väldigt kortfattat utan att bli oförståeligt.

Om du aldrig har provat programmering tidigare men vill ge Swift en chans är det bästa att börja med en bok för nybörjare, eller en onlinekurs på till exempel Udemy. Vilket som passar dig avgör du själv – en del lär sig bäst genom att läsa och göra övningar i en bok medan andra har lättare för videolektioner.

Innan du går vidare dit ska vi dock börja med att gå igenom vad det faktiskt innebär att programmera med Swift, så du vet vad du ger dig in på och vad du kan förvänta dig.

Swiftkod

Skillnad på språk och api

En viktig sak du bör känna till från början är skillnaden mellan programmeringsspråk och så kallade api:er (står för "application programming interface").

Ett programmeringsspråk definierar hur kod formateras och har grundläggande hantering av data av olika typer. Det har system för att bygga funktioner (kallas ibland metoder), datastrukturer, flödeskontroll (loopar, logiska kontroller och så vidare).

Ett api är en uppsättning funktioner och datastrukturer som används för att utföra en viss typ av uppgift. Utan api:er skulle du bli tvungen att skriva hundratals eller tusentals rader kod bara för att göra enkla saker som att formatera text eller visa en knapp. Apple förser IOS-utvecklare med en lång rad api:er som används för olika saker. Här är några exempel:

  • Cocoa är det övergripande namnet för de UI-relaterade api:erna (UI står för "user interface").
  • Sprite Kit är till för tvådimensiella spel.
  • Health Kit kommunicerar med appen Hälsa och dess databas.
  • Core Data hjälper dig hantera stora mängder data utan att behöva lära dig mysql eller annan databasutveckling.
  • Core Audio hanterar ljuduppspelning.

På IOS är många av de här api:erna det enda sättet att göra det de är till för. Du kan helt enkelt inte kommunicera direkt med hårdvaran i Iphone eller Ipad, utan måste gå via Apple-försedda api:er. En samling api:er kallas även ett ramverk, och de har ofta en viss stil som du efter hand lär dig.

När du bygger dina egna appar och skriver nya funktioner, klasser och protokoll kommer du se att Apples api:er förväntar sig att du bygger appen med en struktur som passar in i stilen. Den struktur Apple använder i Cocoa kallas model-view-controller (MVC) och är även populär bland webbprogrammerare (Ruby on Rails, Django).

Model View Controller
Model View Controller (MVC) är ett av många sätt att strukturera ett program så att det inte blir spaghettikod.

Det kan kännas som att en viss uppsättning api:er bildar ett eget språk och eftersom du kommer att använda api:er så mycket kan det vara svårt att se var Swift slutar och var Cocoa och andra api:er börjar.

Flera sätt att programmera

Objective-c är, som namnet antyder, ett objektorienterat språk. Swift ärver den biten men kan även användas för något som kallas funktionell programmering.

Båda dessa paradigm är olika sätt att tänka på och strukturera kod, och har båda för- och nackdelar.

Objektorienterad programmering – utgår från datastrukturer som kallas objekt, och definierar olika metoder (funktioner) för att manipulera dessa. När du programmering definierar du klasser, som är en samling datastrukturer och metoder. Ett typiskt exempel från Cocoa är UIButton, en klass som definierar en knapp. Den har variabler (datastrukturer) som till exempel en titel och en funktion som ska köras när användaren trycker på den. Bland metoderna hittar vi exempelvis setTitle:forState: som ändrar titel för ett visst tillstånd (till exempel nedtryckt). Ett objekt är en unik "kopia" av en klass, med sina egna värden på de olika variablerna. Du kan skapa många UIButton-objekt som alla ser olika ut och har olika titlar.

Med objektorienterade system bygger du upp programmet som en struktur av objekt som kommunicerar med varandra. Ett fönsterobjekt kan tala om för ett knappobjekt att den ska ligga på en viss plats, till exempel.

Funktionell programmering – ett paradigm som bygger på lambdakalkyl. Funktionell programmering hanterar program som matematiska formler. Varje funktion gör samma sak varje gång med data du matar in i den, och spottar ut ett svar. Du kan inte göra ändringar i en variabel som sedan påverkar hur en funktion fungerar, vilket ofta händer i objektorienterade program. Precis som f(x) = 1/x ger samma värde varje gång alltså. Med objektorienterad programmering kan "f(x)" ge olika svar beroende på vilket tillstånd x befinner sig i, eller till och med vilket tillstånd något annat objekt befinner sig i.

Procedurell programmering – ett tredje paradigm som också är det äldsta inom programmering. Det används framför allt i dag i språk som c och pascal, och ligger närmast hur datorn faktiskt fungerar med steg-för-steg-instruktioner. Skapa en variabel med värdet x. Skapa en annan variabel och sätt värdet till svaret från en funktion genom att mata in x.

Eftersom Cocoa och de flesta av Apples api:er är objektorienterade kommer du mest stöta på det paradigmet, men det kan vara bra att känna till de andra två.


Tips: Bra källor för att komma igång att lära dig Swift

Här är några böcker, onlinekurser och webbplatser vi kan rekommendera om du vill lära dig Swift från grunden:

  • The Swift Programming Language (Swift 3) – Apples bok som går igenom själva språket. Väldigt bra om du redan kan en del programmering och vill lära dig Swift 3. Bra att ha som referens för alla Swift-utvecklare.
  • Swift Apprentice – har precis uppdaterats för Swift 3 och vänder sig till utvecklare som aldrig har programmerat tidigare.
  • Raywenderlich.com – en portal som drivs av Ray Wenderlich och har hundratals guider till Swift, IOS, Mac, Android, Apples spelutvecklingsbibliotek och Unity. Ger även ut boken ovan.
  • Itunes U – här finns många kurser i programmering och utveckling, men än så länge har vi inte sett några som har uppdaterats för IOS 10 och Swift 3. Det lär komma under hösten.
  • Udemy – här finns många videokurser för allt från Swift 3-utveckling till vektorgrafik och marknadsföring. De allra flesta kostar en slant, men om du väntar brukar de hamna på rea och då kan du komma undan med en hundring för kanske 50 timmars videolektioner.
  • Swift Playgrounds – en ny Ipad-app som kom med IOS 10, och lär dig Swift på ett sätt som även yngre barn kan hänga med i. Koden du lär dig är riktig kod, även om den döljer mycket av logiken bakom, och ju längre du kommer desto mer ”autentisk” blir den. Om du inte har en aning om vad det innebär att programmera kan det vara ett kul sätt att få ett smakprov.