Introduksjon til Apples nye programmeringsspråk Swift
Under årets WWDC-konferanse var det såpass stor fokus på iOS 8 og OS X Yosemite, at en av de mest betydningsfulle nyhetene, nemlig Apples introduksjon av programmeringsspråket Swift, nesten ble oversett. For sluttbrukere er dette knapt en nyhet, men for utviklerfellesskapet kan dette representere et paradigmeskifte. Noen programmeringsspråk har klare fortrinn over andre; noen er raskere, andre er mer effektive, noen er renere, og noen er svært brukervennlige. Apple er det siste selskapet som har utviklet sitt eget programmeringsspråk, etter Google med Go (Golang) og Microsoft med .Net Framework. Swift hevder å ha lært av disse språkene, samtidig som det ivaretar arven fra forgjengeren, Objective-C. Apple hevder å ha skapt det raskeste og mest robuste programmeringsspråket på høyt nivå. La oss se nærmere på dette.
Hvorfor trenger vi programmeringsspråk?
Det finnes en rekke metoder for å få en enhet til å utføre handlinger. Alle enheter, fra moderne håndholdte dingser til tradisjonelle datamaskiner, kan programmeres til å utføre oppgaver enten ved bruk av maskinspråk, som innebærer å skrive kode i rå bytekode/assemblerspråk og manuelt lage hver instruksjon, eller ved hjelp av høynivåspråk som forenkler prosessen. Det er derfor fokus i økende grad rettes mot å gjøre utviklerspråk så likt naturlig språk som mulig. Selv om navnet Swift kanskje appellerer mer til utviklere enn til utenforstående, skal vi forsøke å gi en enkel forklaring for å hjelpe deg å forstå teknologien som vil styre fremtidige generasjoner av Apple-produkter.
En kort introduksjon: Elektroniske enheter er i sin natur ganske enkle uten programmering ville de kun være til pynt. Det som gir dem reell funksjonalitet er programmeringen. Helt grunnleggende må elektronikk instrueres, handling for handling, hva de skal gjøre. Dette var praksisen med hullkort og senere maskinspråk. Deretter utviklet vi språk som lar oss kommunisere med maskiner på en mer naturlig måte (kode er i praksis en forenklet versjon av det det kunne ha vært). Vi skriver kode som blir kompilert til noe datamaskinen forstår, og deretter utført. Med andre ord, kode-kompilere-utføre.
Hvorfor Swift?
Det mest relevante spørsmålet er naturligvis «Hvorfor?». C, et språk fra 70-tallet, var banebrytende i sin tid, og ble etterfulgt av Objective-C på 80-tallet. Apple har benyttet denne plattformen for utvikling siden den gang. Logikken tilsier «hvis det ikke er ødelagt, ikke fiks det», og hvis det har fungert i 30 år i strekk, hva er da problemet? Jo, det er det. Apple har brukt Objective-C i flere tiår nå. Det er på tide med noe raskere, kraftigere og enklere. Swift kommer inn i bildet.
Ifølge den offisielle e-boken om Swift (tilgjengelig gratis på iTunes), er «Swift et nytt programmeringsspråk for iOS- og OS X-apper som bygger på de beste egenskapene fra C og Objective-C, uten begrensningene ved C-kompatibilitet. Swift bruker sikre programmeringsmønstre og legger til moderne funksjoner for å gjøre programmering enklere, mer fleksibel og morsommere. Swifts nye utgangspunkt, støttet av de etablerte og populære Cocoa- og Cocoa Touch-rammeverkene, gir mulighet til å tenke nytt om hvordan programvareutvikling fungerer.»
Hvorfor er Swift viktig?
Til tross for Apples fokus på innovasjon, har ideen om «skriptspråk» lenge vært en faktor. Den tradisjonelle «kode-kompilere-utføre»-prosessen krever at man først ser koden i aksjon etter at den er kompilert. Kompileringen viser presist hva koden din er i stand til. Hvis koden har feil, vil kompileringen resultere i uregelmessig oppførsel eller krasj. Da er det opp til programmereren å spore opp feilen, rette den og starte på nytt. Denne prosessen er både krevende og tidkrevende, men det er noe programmeringsverdenen alltid har måttet leve med; det er slik det alltid har vært. Skriptspråk kjøres linje for linje, slik at du kan se resultater mens du skriver, og dermed eliminerer behovet for å lete etter feil i koden på et senere tidspunkt. Dette gjør prosessen raskere og langt enklere.
Hittil har skriptspråk hatt begrensninger i sin kapasitet. Ta Python som eksempel; det er lynraskt, men er også begrenset til enklere oppgaver med begrenset funksjonalitet. Som en Formel 1-bil, er det utmerket for racing, men ikke særlig praktisk for å handle matvarer.
Hvis du ønsker å utvikle et spill, er Python ikke det beste alternativet. Men det er Objective-C (eller C++ hvis du benytter Windows). Nå lover Swift det beste fra begge (og faktisk mange) verdener, og henter inspirasjon fra Objective-C, Rust, Haskell, Ruby, Python, C#, CLU og mange andre (referanse: Swift-utvikler/ekspert Chris Lattner). Swift hevder å beholde de gode egenskapene og forkaste de dårlige fra de nevnte språkene. I sentrale sammenligninger er ytelsen raskere enn Python og mye raskere enn Objective-C, så det har en god start.
Hva annet gjør Swift?
Swift introduserer også et visuelt miljø i sanntid, kalt «lekeplass», hvor du kan se resultatet kompilert i sanntid, nesten som et skriptspråk. Dette, avhengig av appens design, kan redusere hele prosessen til noen få minutter, for hvis noe går galt, vil du umiddelbart vite årsaken og kunne rette det der og da. Det er programmeringens svar på å rette en feil på et utskrift kontra å rette et rødt understreket ord mens du skriver. Dette gjør det mulig å lage komplekse apper raskere.
Det går litt dypere enn det. For høynivåspråk måtte du deklarere og få tilgang til klasser og biblioteker for å bruke funksjoner, uansett hvor grunnleggende. I C++ trenger du <iostream.h>
og <conio.>
for å bruke grunnleggende input, output og datatyper i koden. I Swift er imidlertid ingenting av dette nødvendig. Du trenger ikke å deklarere noen biblioteker, ettersom Swift håndterer hva hver datatype og io (input/output)-funksjon trenger, og vil engasjere biblioteket selv. Så, å skrive ut noe så enkelt som «Hello world», går fra:
#include<stdio.h> int main(void) { printf("Hello Worldn"); return0; }
til en enkel:
println("Hello, world")
Dette er all koden som må kompileres. Du vil også merke at koden ikke bruker det fryktede «;» som et universelt tegn for å avslutte en setning.
Hva er ulempene?
Eksistensen av Swift betyr ikke umiddelbart at Objective-C og alt det innebærer, dør ut. Apper kan fortsatt lages med Objective-C, og eksisterende brukere av Objective-C vil ikke føle seg helt fremmedgjort siden det er likheter mellom de to miljøene. Siden Apple har brukt fire år på å utvikle et nytt programmeringsspråk, vil de naturligvis fokusere på å fremme og støtte Swift fremover. Kanskje vil de en dag fjerne Objective-C fra Apples programmeringsspråkhistorie, men den dagen er ikke i dag. Men hvis det finnes et nytt språk som er så enkelt å lære og så mye raskere, hvorfor skulle noen da holde fast ved Objective-C?
Det finnes selvsagt bekymringer; den umiddelbare er omveltningen i bransjen. Hele karrierer er bygd opp rundt å lære folk å lage iPhone-apper. Disse karrierene og studentene deres har umiddelbart blitt utdaterte. Det vil bli en betydelig omstrukturering på det området. Vi vil også se en ny gruppe «tidlige brukere» av Swift (Flappy Birds er allerede laget med Swift), som både er bra og dårlig. Det er bra at nytt blod kommer inn i systemet, men det dårlige er at dette nye blodet vil være uerfarent og kan oversvømme markedet med dårlig laget apper.
Vi kommer snart til å diskutere Apples metallrammeverk, og ser på fordeler og ulemper, spesielt innen iOS-spill.
Konklusjon
Hvis du undrer deg over hvorfor det ikke ble annonsert ny maskinvare på WWDC-konferansen, vil vi minne om at maskinvare alene ikke kan gjøre noe uten den tilhørende programvaren. Så dette var bokstavelig talt den største nyheten noensinne, nemlig et nytt programvaregrep som vil endre all maskinvare i fremtiden. For å ta i bruk Swift, trenger du Xcode 6 beta og en utvikler-ID.