Ovogodišnji WWDC (Apple Worldwide Developers Conference) bio je toliko usredsređen na iOS 8 i OS X Yosemite da je najvažnija novost događaja ostala pomalo u senci. Apple je predstavio programski jezik Swift. Za krajnje korisnike, ovo možda i nije vest. Međutim, za programersku zajednicu ovo bi moglo biti revolucionarno. Određeni programski jezici imaju jasne prednosti u odnosu na druge, neki su brži, neki efikasniji, neki jednostavniji, a neki neverovatno pregledni. Apple je najnovija kompanija koja je kreirala sopstveni programski jezik, nakon Google-ovog Go (Golang) i Microsoftovog .Net Framework-a. Swift programski jezik tvrdi da je učio iz ovih jezika, istovremeno ostajući veran svom prethodniku, Objective-C-u. Apple tvrdi da je kreirao najbrži, najrobusniji programski jezik visokog nivoa. Hajde da objasnimo.
Zašto su nam potrebni programski jezici?
Postoji nekoliko načina da se uređaj natera da radi „stvari“. Bilo koji uređaj, od modernih nosivih uređaja do tradicionalnih računara, može se programirati da radi koristeći zastareli metod mašinskog jezika, pisanjem u sirovom bajt kodu/asemblerskom jeziku, ručno kreirajući svaku instrukciju; ili se možemo osloniti na jezike visokog nivoa koji nam pomažu da smanjimo monotoniju. Zato se sve više pažnje posvećuje približavanju programskih jezika što je moguće više normalnom jeziku. Razumemo da ime Swift više privlači programere nego posmatrače, ali ćemo ipak pojednostaviti objašnjenje kako bismo vam pomogli da razumete tehnologiju koja će upravljati budućim generacijama Apple proizvoda.
Kratak primer: Elektronski uređaji su bukvalno najgluplje stvari koje čovečanstvo poznaje, bez ikakvog programiranja, oni bi bili samo ukrasi. Ono što im daje pravu funkciju jeste programiranje. Na osnovnom nivou, elektronici treba reći, akciju po akciju, šta da radi. To je ono što smo nekada radili sa bušenim karticama, a kasnije i sa mašinskim jezikom. Vremenom smo napredovali u razvoju jezika koji nam omogućavaju da komuniciramo sa mašinama na relativno prirodniji način (da, kod je u suštini jednostavnija verzija onoga što bi normalni jezik mogao biti). Mi bismo napisali kod, on bi bio preveden u nešto što računar razume, a zatim bi se izvršio. Dakle, ukratko, kod-kompilacija-izvršenje.
Zašto baš Swift?
Sada, možete zamisliti da je najrelevantnije pitanje „Zašto?“. C, jezik iz 70-ih, koji je u to vreme probio značajna nova polja, a zatim je došao njegov ogranak, Objective-C, u 80-im. Apple od tada koristi tu platformu za razvoj. Logika nalaže „ako nije pokvareno, ne popravljaj ga“, a ako radi 30 godina zaredom, šta bi mogao biti problem? E, pa, to. Apple koristi Objective-C već decenijama. Vreme je za nešto brže, moćnije i lakše. Tu na scenu stupa Swift.
Prema zvaničnoj e-knjizi o Swiftu (dostupnoj besplatno na iTunes-u), „Swift je novi programski jezik za iOS i OS X aplikacije koji se zasniva na najboljem od C-a i Objective-C-a, bez ograničenja kompatibilnosti sa C-om. Swift usvaja bezbedne obrasce programiranja i dodaje moderne funkcije kako bi programiranje učinilo lakšim, fleksibilnijim i zabavnijim. Swiftova čista lista, potpomognuta zrelim i vrlo voljenim Cocoa i Cocoa Touch okvirima, prilika je da se ponovo zamisli kako funkcioniše razvoj softvera.“
Zašto je Swift važan?
Koliko god da Apple želi da verujete u njihovu bezrezervnu inovaciju, postojala je ideja o jeziku „skriptovanja“. Tradicionalni parametri za kompilaciju i izvršavanje koda zahtevaju da svoj kod vidite u akciji tek nakon što je preveden. Kompilacija vam pokazuje za šta je tačno vaš kod sposoban. Ako vaš kod ima greške, kompilacija će rezultirati nepravilnim ponašanjem ili kvarovima. Posao programera je tada da pronađe gde leži greška, da je popravi i zatim počne iznova. Ovaj proces je i naporan i dugotrajan, ali to je nešto sa čime je svet programiranja oduvek živeo; tako su stvari oduvek funkcionisale. Skript jezici se izvršavaju red po red tako da možete videti rezultate dok pišete, eliminišući potrebu da kasnije pregledate kod za greške. Tako se proces ubrzava i olakšava.
Do danas, skript jezici su bili ograničeni u svojim mogućnostima. Uzmimo za primer Python, on je brz, ali je takođe ograničen na jednostavnije stvari, sa ograničenim mogućnostima. Kao bolid Formule 1, odličan za trke, ne toliko za kupovinu namirnica.
Ako želite da napravite igru, onda Python nije vaše okruženje. Međutim, Objective-C jeste (ili C++ ako koristite Windows). Sada, Swift obećava najbolje od oba sveta (zapravo, mnogo svetova), crpeći inspiraciju iz Objective-C, Rust, Haskell, Ruby, Python, C#, CLU i previše drugih da bi se nabrojali (referenca: Swift programer/ekspert Chris Lattner). Swift tvrdi da zadržava dobre karakteristike i odbacuje loše karakteristike gore navedenih jezika. U ključnim testovima, njegovo izvršenje je brže od Pythona i znatno brže od Objective-C-a, tako da je to dobar početak.
Šta još radi?
Swift takođe donosi vizuelno okruženje u realnom vremenu koje se zove „igralište“, gde možete videti svoj rezultat koji se kompajlira u realnom vremenu, slično kao jezik za skriptovanje. Ovo, na osnovu dizajna aplikacije, može da svede sve procese na nekoliko minuta, jer ako nešto pođe po zlu, odmah ćete znati šta je izazvalo problem i možete to odmah da rešite. To je programski ekvivalent ispravljanja greške u štampi naspram ispravljanja crveno podvučene reči dok idete dalje. Omogućava vam da brže kreirate složene aplikacije.
Idemo malo dublje. Za jezike visokog nivoa, od vas se zahtevalo da deklarišete i pristupate klasama i bibliotekama da biste aktivirali funkcije, bez obzira koliko su osnovne. U C++ bili bi vam potrebni <iostream.h> i <conio.h> da biste koristili osnovni ulaz, izlaz i tipove podataka u svom kodu. Međutim, u Swiftu ništa od toga nije neophodno. Ne biste morali da deklarišete nijednu biblioteku, jer će Swift upravljati onim što je potrebno za svaki tip podataka i I/O (ulaz/izlaz) funkcije i sam će aktivirati tu biblioteku. Dakle, štampanje nečeg jednostavnog kao što je „Zdravo svete“ ide od:
#include<stdio.h> int main(void) { printf("Hello Worldn"); return0; }
na jednostavno:
println("Hello, world")
To je sav kod koji treba da se sastavi. Takođe ćete primetiti da kod ne koristi ozloglašeno „;“, kao univerzalni znak krajnje izjave.
Koji su nedostaci?
Sada, postojanje Swifta ne znači trenutnu smrt Objective-C-a i svih njegovih metoda. Aplikacije se i dalje mogu kreirati pomoću Objective-C-a, a izvorni korisnici Objective-C-a se neće osećati potpuno otuđeno, jer postoje sličnosti u ovim okruženjima. Naravno, pošto je Apple upravo proveo 4 godine radeći na novom programskom jeziku, oni će se fokusirati na promociju i podršku Swiftu, sada i u budućnosti. Možda će jednog dana izbrisati Objective-C iz anale Appleovih programskih jezika, ali taj dan nije danas. Mada, ako je izašao novi jezik, koji je tako lak za učenje i koji je mnogo brži, zašto bi onda neko uopšte koristio Objective-C?
Naravno, postoji nekoliko zabrinutosti, a trenutna je preokret u industriji. Čitave karijere su izgrađene na podučavanju ljudi kako da kreiraju iPhone aplikacije, te karijere i njihovi učenici su odmah zastareli. Biće dosta restrukturiranja na tom polju. Takođe ćemo dobiti novi set ranih adaptera za Swift (Flappy Birds je već kreiran pomoću Swifta), što je i dobro i loše. Dobro je što će nova krv biti ubrizgana u organizam, loše je što će ta nova krv biti neiskusna i preplaviti tržište loše napravljenim aplikacijama.
Uskoro ćemo razgovarati o Appleovom metalnom okviru, raspravljajući o njegovim prednostima i nedostacima, posebno u iOS igrama.
Zaključak
U slučaju da se pitate zašto nije najavljen novi hardver na WWDC konferenciji, onda ćemo vas uputiti na našu raniju izjavu da sam hardver ne može učiniti ništa dok softver koji stoji iza njega ne radi. Dakle, ovo je bukvalno bila najveća vest svih vremena. Dobijamo novu kontrolu nad softverom koji će promeniti izgled celokupnog hardvera u budućnosti. Da biste dobili Swift, biće vam potreban Xcode 6 beta i ID programera.