TSM - Să vorbim despre Swift

Valentin Filip - Cluster Manager & Team Lead on Innovation

Compania Apple este recunoscută prin interesul manifestat în ceea ce privește standardele de înaltă calitate a produselor și serviciilor pe care le oferă. Iată că au reușit din nou acest lucru, odată cu lansarea noului limbaj de programare Swift. Acesta a fost un proiect în lucru pe parcursul ultimilor 4 ani, care chiar dacă a pornit ca un proiect personal al lui Chris Lattner, angajat Apple, a câștigat cu ușurintă încrederea managementului executiv al companiei, fiindu-i oferită o echipă în scopul finalizării lui.

Pe data de 2 Iunie, Swift a fost făcut cunoscut developerilor, cu promisiunea unei performanțe și eficiențe sporite. Ținând cont de ultimele îmbunătățiri făcute limbajului de programare Objective-C, majoritatea publicului a fost surprins de mișcarea indrăzneață făcută de Apple, cu toate că se pot observa cu ușurință unele similarități dintre sintaxa modernă a Objective-C și elementele prin care Swift dorește să impresioneze.

Ceea ce face ca Swift să fie un limbaj mai puternic este faptul că a adoptat toate părțile pozitive ale altor limbaje populare precum managementul automatizat al memoriei, sintaxă de tip script și type inference pentru a crea un mod mai ușor și mai direct de a lucra. Dar cel mai important este că a fost creat pentru programatorul obișnuit, suportând dezvoltarea până și a celor mai simple aplicații.

De ce Swift și nu vechiul Objective-C?

După cum am menționat mai sus, Swift oferă un mare avantaj, acela de a putea fi mult mai ușor de înțeles de către orice programator obișnuit. Deși simplul fapt de a putea fi un programator pentru dispozitivele mobile ale companiei Apple poate reprezenta un motiv suficient, eliminarea barierelor limbajului de programare face ca adoptarea noii platforme să fie sporită. Swift oferă posibilitatea de a scrie cod pentru dispozitive Apple mult mai rapid. De asemenea, folosind “Playgrounds”, orice programator are oportunitatea de a învăța singur să codeze.

Pentru programatorul obișnuit cu Objective-C, este necesar un motiv foarte bine întemeiat pentru a adopta schimbarea. Au existat și alte limbaje dezvoltate până acum, dar fără a avea impactul dorit, deși au fost susținute de companii importante precum Google, cu Go. Dar în timp ce până și Paul Jensen, analist independent, afirma că Go nu a creat necesitatea folosirii lui, Swift își face intrarea în scenă cu adevărate îmbunătățiri asupra modului curent de a lucra, acest lucru făcându-l dorit de toți programatorii ce momentan folosesc Objective-C.

Swift este totuși destul de similar cu alte limbaje de programare disponibile în acest moment, dar având în vedere că singura alternativă ar fi Obecjtive-C, nenumărați programatori vor alege Swift datorită modului ușor de lucru pe care îl oferă. El vine împreună cu diverse caracteristici precum “inferred typing” prin care nu mai este necesară specificarea tipurilor pentru variabilele folosite, mai ales că în același timp codul este mai sigur, variabila preluând tipul primei valori atribuite.

Probabil că una dintre cele mai de efect schimbări adoptate de mediul folosit pentru a scrie applicații iOS, Xcode, este integrarea așa numitului “Playgrounds”. Prin acest mod se poate vedea în timp real produsul rezultat scrierii codului, facând mult mai rapidă testarea ideilor și în același timp învățarea de unul singur în mod empiric. “Playgrounds” reprezintă mai mult decât abilitatea de a testa câteva linii de cod. Demonstrează faptul că Swift este uimitor de rapid, având în vedere că face atât compilarea codului, rularea executabilului și afișarea rezultatului, toate acestea întâmplându-se într-un interval de sub 2 secunde, în funcție de mărimea și complexitatea codului, arătând rapiditatea cu care Swift va rula pe dispozitivele folosite.

Și totuși oferă mai mult decât atât. Un program funcțional poate fi modificat fără a fi necesară executarea întregului cod. Cu ajutorul Playgrounds se poate integra cod într-o aplicație deja funcțională, având astfel siguranța că este la zi cu implementarea facută.

Va dispărea oare Objective-C?

Partea bună este că Apple nu va elimina suportul pentru vechiul limbaj, iar aplicațiile vor putea avea baza de cod ce conține atât Swift cât și Objective-C.

Cu toate că Swift pare mai ușor de folosit și adoptat, modul de scriere al Objective-C oferă totuși mai mult context unui începător în programare. Acest lucru poate fi destul de important în cazul transferului unui proiect. Prin încercarea de a diminua cât de mult cantitatea de cod scrisă, codul rezultat în Swift este unul din ce în ce mai criptat și greu de citit la prima vedere. Astfel că folosirea de comentarii poate deveni în timp o necesitate.

Apple a luat în considerare toate situațiile în care mai poate apărea nevoia folosirii de Objective-C, astfel că permite folosirea ambelor limbaje în cadrul aceluiași proiect. Prin acest lucru se oferă oportunitatea programatorului de a folosi o librărie scrisă în Objective-C sau reutilizarea unei bucăți de cod pentru care rescrierea nu este încă o opțiune viabilă.

Nu se rezumă totul doar la performanță și eficiență

După cum a mai fost deja menționat, Swift oferă un avantaj mare asupra altor noi limbaje de programare atunci când se pune în discuție folosirea lui de către programatorii iOS existenți. Oferă perfomanță sporită și ușurință în utilizare.

Dar este oare acesta singurul scop al lui Apple? Doar de a îmbunătăți performanța platformei? Din punctul meu de vedere, ar putea fi și o mișcarea îndrăzneață de marketing cu efect pe viitor. Objective-C a fost dintotdeauna considerat a fi greu de învățat și adoptat, mai ales de către programatori cu experiență pe alte tehnologii. Așa au apărut Appcelerator Titanium, Xamarin și altele. Swift ar părea că seamănă cu multe dintre limbajele folosite des în industrie, dar spre deosebire de acestea, oferă migrare rapidă și rezultate cele mai bune în cazul mutării către platforma Apple.

Luând ca exemplu programatorii Web, alternativele sunt aplicații web optimizate pentru mobile sau Appcelerator Titanium. La momentul scrierii acestui articol, conform site-ului Appcelerator, există nu mai puțin de 618.722 de programatori ce folosesc platforma. Aș spune că aceștia formează o mulțime impresionantă. Oare Apple nu și-ar dori să utilizeze aceste resurse pentru dezvoltarea propriei lor platforme? Acest lucru ar asigura ca viitoarele aplicații să fie mai stabilie și mai rapide, mai multe componente ar fi create pentru Swift, iar șansele sunt ca venitul rezultat să se afle în cadrul ecosistemului, prin achiziționarea și plata cu ajutorul AppStore, înlocuind Web-ul.

Comparând Swift cu JavaScript, asemănarea modului de scriere a codului este vizibil similară:

JavaScript:

var country = 'Argentina';
var countries = ['Argentina', 'Brasil', 'Mexic'];

Swift:

var country = 'Argentina'
var countries = ['Argentina', 'Brasil', 'Mexic']

După cum este ușor de observat, sintaxa este similară în aceste exemple, deși, ținând cont de caracteristica inferred type, comportamentul variabilelor este puțin diferit.

Swift a împrumutat multe trăsături de la alte limbaje de programare, făcându-l să fie un amestec de idei bune. Se pot observa similaritățile cu JavaScript, Python, Java, C#, C, Lisp, Cold Fusion, JSP și altele.

Ghid/Mod de folosire

Pentru a exemplifica utilizarea de Swift, în continuare este un exemplu de aplicație pentru calcularea bacșișului.

class Calculator { 
  let total: Double
  let taxPct: Double
  let subtotal: Double
  init(total:Double, taxPct:Double) {
    self.total = total
    self.taxPct = taxPct
    subtotal = total / (taxPct + 1)
  }
  func calculate() {
    println("10% tip = : (subtotal * 0.10), for total = (total)")
  }
}
let tipCalc = TipCalculator(total: 10, taxPct: 0.24)
tipCalc.calculate()

Concluzii

Ținând cont de ce anume înlocuiește, Swift oferă o îmbunătățire în a permite scrierea rapidă de cod cu o performanță ridicată. Prin toate avantajele oferite, își va face cu siguranță loc spre inima chiar și a celor mai fideli programatori de Objective-C iar acest lucru se va întămpla cu un ritm mai alert comparativ cu situația altor limbaje.

Mai contează oare că este totuși un limbaj specific ecosistemului Apple? Acest lucru depinde doar de scopul fiecăruia. Apple a încetat să mai susțină Java de o vreme, astfel că o uniune cu limbajul de programare ce stă la baza Android-ului nu pare realizabilă în viitorul apropiat. Drept urmare, orice revoluționare a platformei este mai mult decât binevenită și cu siguranță va produce inovații în viitorul apropiat. Există chiar și posibilitatea de a fi open-sourced, așa cum Apple a făcut în cazul Clang și LLVM, oferind tuturor șansa de a contribui la îmbunătățirea lui.