A posztban kiemelt részek GK-tól származnak, hogy a blogger mellett egy gyakorló iOS-fejlesztő is elmondja a szempontjait.
A WWDC egyik nagy meglepetése volt a Swift, az Apple saját programozási nyelve. Nem csak a képességei miatt volt meglepetés, hanem egyszerűen azért, mert négy éve (az első iPad megjelenése óta) készül, mégsem szólt róla egyetlen pletyka sem. Végre megtapasztalhattuk, milyen az, ha az Apple titoktartási módszerei valóban működnek, és sehol nem szivárog ki információ.
Amikor Steve Jobs 1985-ben eljött az Apple-től, és megalapította a NeXT-et, megvásárolta az akkor még csak pár éve létező Objective-C programozási nyelv licencét. Végül az ekkor fejlesztett operációs rendszer lett az OS X alapja, majd az iOS is ezekre építkezett, így nem csoda, hogy a mai napig megingathatatlan volt az Objective-C uralma a cégen belül.
Az Objective-C-ben sajnos a nagyon egyszerű műveletek is nagyon komplexül voltak megfogalmazva, nagyrészt a C nyelvi örökség miatt. Például így néz ki két string egymás után fűzése Objective-C-ben:
NSString *a = @"Kedvenc színem a ";
NSString *b = @"piros";
NSString *c = [a stringByAppendingString:b];
Így az Apple úgy érezte, hogy szükség van egy kevesebb felesleges körítést, és több fejlesztőknek használható lehetőséget tartalmazó nyelvre. Nem mentek el nagyon messzire, hiszen a C egy variánsát fejlesztették ki, ami mélységeiben megtartja a korábbi lehetőségeket, kezelésében viszont egy sokkal egyszerűbb metódust követ. Ez volt az a pont, amikor az Apple megdizájnolta a programozási nyelvet. A számítástechnika legszexibb jelensége találkozott a legkevésbé szexivel. Robbantak egyet, és megszületett a Swift.
A fenti kód Swiftben így néz ki:
var a = "Kedvenc színem a "
var b = "piros"
var c = a + bÉs a legfontosabb dolog nem csak a szintaktika egyszerűsödése (hogy például nem kell @ a stringek elé, nincs sor végi pontos vessző, nem kell állandóan a változók típusait írogatnunk), hanem az, hogy olyan nyelvi elemeket hoztak be, amiket eddig csak más nyelvekben láthattunk. Ilyen mondjuk az operator overload, ami azt jelenti, hogy ha írunk egy saját osztályt, akkor meg tudjuk mondani, hogy mi történjen, ha össze akarunk adni két példányt ebből vagy mondjuk el akarjuk osztani őket egymással. Vagy ilyen az okosabb switch-case, ami már tud feltételeket kiértékelni is.
A nyelvet ráadásul úgy írták meg, hogy a korábban Objective-C-ben írt kódok is gond nélkül beilleszthetőek, használhatóak. Sőt akár az egész kódot is meg lehet írni ebben, ha valakinek ahhoz támadna kedve, nincs szó diszkriminációról.
A Swift csak egy programozási nyelv, a programozóknak továbbra is az egyébként elég jól összerakott Cocoa API-kat kell használniuk, tehát maga a logika nem változott, ugyanúgy kell elkészíteni egy appot, csak egy tisztább, tömörebb, átláthatóbb formában tesszük ugyanezt. A különbség annyi, mint egy esszés formátumú és egy vázlatos órai jegyzet közt: ugyanaz a tartalom, csak kevesebb a felesleges körítés.
A Swiftben dolgozni már a legelején óriási könnyebbség az Objective C-hez képest. Csak elkezded gyártani a kódot, és azonnal látod az eredményt. Nincs szükség a korábbi, hosszadalmas előkészületekre, amit csak azért kellett elvégezni, hogy elkezdhess alkotni. Robotmunkával kezdeni egy kreatív feladatot: nincs lélekölőbb ennél.
Egy átlagos Objective-C "Hello world" egy csomó fájlból áll, mert egy az Objective-C ahelyett, hogy megcsinálná helyetted ezeket a mindig kellő dolgokat, csak odaadja neked a kész kódot, hogy szabadon használhasd. Ilyen például a fő ciklus, a programod fő osztálya, és egy csomó mindig létező objektum. Ezekre mondják, hogy "boilerplate code", ami valami olyasmit jelent, hogy mindig ugyanazt ismételgeted. A Swift megkímél ettől, mert a script nyelvekhez hasonlóan egy, a semmi közepébe beírt utasítás is futtatható kódot eredményez. A boilerplate kódot meg majd fordításkor beilleszti magának, nem téged traktál vele.
Az Xcode 6 Playgrounds ugyanezt az azonnal kipróbálhatóságot erősíti. A segítségével a kód azonnal lefordul, és látható, tapintható, kattintható formában eléd tárul akár egy kódrészlet is. Nem világot megváltó újdonságról van szó, csak a maga nemében: a script nyelvekre volt eddig jellemző leginkább. Ha a programozó valamit megváltoztat, az eredmény azonnal látszik.
Ötletek gyors kipróbálására, értékek tesztelésére kiváló. Komplexebb alkalmazásokban pedig ott segít, hogy tudsz vele olyan részeket is tesztelni az alkalmazásodban, amit amúgy elég nehézkesen tudnál elérni.
A Swift fogadtatása programozói körökben szinte elsöprően pozitív. Mindenki üdvözli, használja, próbálgatja, és imádja. Nem csoda, az Objective-C-ben programozóknak nagy könnyebbséget jelent, a most programozni tanulóknak pedig elvileg könnyebb dolguk van. Mondjuk ezt mi, persze van, aki szerint ez nem igaz. Sőt, a Swift nehézségei a legszemetebb rendszerekével vetekszik:
Intriguing that non-devs seem to perceive learning Swift as being much easier than Obj-C. I guarantee it is much, much harder. C++ hard.
— Drew McCormack (@drewmccormack) 2014. június 12.
Mindenesetre akik most vágnak bele, és Swifttel vágnak bele, azok ott vannak az elejétől, az 1.0-tól fogva, ami a későbbiekben sokat ér majd. Ettől függetlenül a Swift megjelenése nem jelenti, hogy a cégek azonnal ráugranak, mint felizgult groupie Mick Jagerre. Még legalább egy év kell GK szerint, hogy a stratégiai projekteket ebben dolgozzák ki.
Ez alatt az idő alatt kialakul a rendes fejlesztői bázis, előkerülnek a hibák, több lesz a dokumentáció, támogatás, a fórumokban megválaszolnak kérdéseket, amikbe így már nem én fogok először belefutni.
forrás: Citeworld, GK, de érdemes elolvasni a Geekwire öt pontját is
Figyelem! Ha szeretnél Facebookon értesülni a posztjainkról és egyéb dolgainkról, akkor az Almalé és Kungfu oldalát lájkold. Egyébként ugyanezt Twitteren vagy rss-sel tehetitek meg.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.