Objective-C i els inicis de la programació per a iOS
L’entrada de les stores d’aplicacions va suposoar una explosió de programadors per aquestes. El primer kit de desenvolupament per aplicacions iOS va sorgir el 2008 i aquest utilitzava el llenguatge de programació Objective-C. Objective-C va ser adoptat per Apple pel desenvolupament d’aplicacions en OS X i rescatat per Steve Jobs durant la seva etapa a NeXT. Fins aquell moment, la presència d’Objective-C era merament anecdòtica així com el desenvolupament amb Xcode (IDE propi d’Apple pel desenvolupament).
En aquell moment la gestió de memòria era completament manual, la sintaxis com a llenguatge era massa explícita i llarga. A més a més, probablement el punt més negatiu davant l’usuari, era que l’estructura donava problemes de programació que desembocaven en molts errors inesperats.
Molts desenvolupadors utilitzaven llibreries de Java i de C++ sense aprofundir ni barallar-se amb els elements propis del sistema.
Amb l’entrada del kit de desenvolupament iPhone OS (que més tard va passar a anomenar-se iOS), Apple va introduir moltes millores al llenguatge. En són exemples la reducció d’escriptura dels programes i la incorporació d’ARC (Automatic Reference Counting), un sistema automàtic de gestió de memòria que permetia oblidar-se d’anar alliberant els elements que ja no interessaven.
Apple també va anar millorant el seu IDE afegint noves funcionalitats i llibreries per enriquir les possiblititats d’iOS i Objective-C. Tot i això, estadísticament, les aplicacions d’iOS eren menys estables que les d’Android. Això no volia dir que les aplicacions d’Android eren millors, únicament que el llenguatge de programació que s’utilitzava pel desenvolupament d’aplicacions per Android (Java) era més segur davant errors de programació.
En desenvolupar un programa, s’ha d’anar en compte de no cometre errors. En especial cal evitar errors que provoquen que la nostra aplicació es tanqui inesperadament. Per tal d’arreglar això un programador ha de seguir unes bones pràctiques i una ordenació del seu codi per intentar errar el menys possible. No tothom aplica aquestes metodologies. Quan un llenguatge no preveu d’errors com aquests al desenvolupador, apareixeran quan s’hi arribi a ells, no abans. Probablement ja serà massa tard i l’aplicació haurà caigut.
El gran problema d’Objective-C és que delega la major part de la feina al programador, atorgant-li així la responsabilitat de control d’errors a l’hora de programar, forçant que sigui metòdic en el seu treball. A l’hora de codificar el programa (quan les línies de codi es converteixen en codi màquina perquè l’entengui el hardware), no es passen suficients controls per detectar els problemes que arribaran ja en fase d’execució.
Apple necessitava arreglar aquest punt. La solució es va presentar el passat 2014 a la conferència anual de desenvolupadors d’Apple. Arribava Swift.
Swift
Swift parteix de la idea de crear un llenguatge modern, segur i superior a Objective-C, on es traslladin al moment de codificació i compilació la majoria d’errors que abans no estaven controlats.
Punters buits, desbordaments de buffers, variables no utilitzades, referències ambigües, etc., tot els errors que un programador podia provocar en Objective-C passen a mans del llenguatge amb Swift, donant molta part de la responsabilitat al llenguatge i al seu processat per passar-lo a codi màquina.
D’altra banda, Swift incorpora tots els elements d’un llenguatge modern que permet identificar on i per què està fallant el codi. On el rendiment i l’optimització del llenguatge va un pas més enllà, on Objective-C no podia arribar, a través d’un alleujament de la compilació amb nous fluxos de programació com els genèrics i la programació funcional.
Perquè quan una cosa no pot evolucionar és millor començar des de zero i partir dels fonaments, per poder tenir uns desenvolupaments més eficients i segurs. Així Apple ho va fer amb el seu llenguatge de programació.
Apple defineix Swift com un llenguatge modern i flexible que introdueix nous conceptes de programació apareguts últimament en molts altres llenguatges com Phyton o Ruby i d’altres més antics i complexes com Haskell. També definit com una barreja de C i Objective-C, però sense restriccions de compatibilitat amb C.
Swift és un llenguatge creat a base de llenguatges d’escripting amb la potència d’un alt nivell que utilitza eines com els genèrics, opcionals, estructures, tuples, programació funcional i més. Un llenguatge que a finals d’aquest any passarà ser de codi obert suposant que també tindrà compiladors per a sistemes Linux que facilitaran l’expansió del mateix.
Swift és més potent i lleuger que Objective-C que, a diferència d’aquest, és una superclasse de C i això fa que tingui menys capes de compilació i no resti tant al rendiment, on s’augmenta la qualitat del codi que es genera i posteriorment s’ha d’executar a la màquina o al codi intermedi.
Swift es posiciona a una posició intermèdia entre els llenguatges més lleugers com Ruby, Phyton o Lua, on són productius però a la vegada poc eficients per la quantitat de capes de compilació que requereixen (estan dissenyats per treballar a un alt nivell). I entre els altres més potents com Objective-C, C# i Java, que estan més a prop del codi màquina però que per contra requereixen més codi, components i són més complexos a l’hora d’aconseguir els resultats que es requereixen.
Swift es troba en un punt entremig ja que es caracteritza per assimilar-se a un llenguatge d’escripting però, a la vegada, es troba molt aprop del codi màquina, gaudint així de les característiques dels dos grups però sense endur-se els inconvenients.
Desenvolupar en Swift
Un desenvolupament en Swift millora el rendiment i el posiciona a una zona on el llenguatge evoluciona i millora amb un codi de més qualitat i, de segur, evitant caigudes i errors inesperats.
En un principi Swift sembla difícil d’entendre ja que sembla més críptic però és menys semàntic que Objective-C i, una vegada acostumats a la sintaxis, és molt més òptim per a treballar. A més, ens proporciona moltes possibilitats a través de les noves estructures tretes d’altres llenguatges i ens deixa oblidar-nos de molts elements que s’auto-gestionen podent arribar així a cotes que no es podien assolir fins ara.
Swift té molts detalls que fa que el software sigui més segur com les variables d’opcionals per evitar valors buits, l’obligació d’inicialitzar variables o contemplar totes les possibilitats del flux del nostre programa.
Tot això implica més seguretat en el desenvolupament i més garanties de qualitat y facilitat ja que molts dels problemes es traslladen al llenguatge estalviant molt de temps al programador.
No s’ha d’oblidar que en un desenvolupament en Swift podem utilitzar les llibreries i classes que solem utilitzar i es troben en Objective-C. Apple mica en mica està migrant totes les seves llibreries a Swift fent-les, a la vegada, més segures i àgils. A més, Objective-C ha millorat amb la sortida de Swift adoptant la idea de les variables no-nulles o els genèrics.
Apple esta apostant totes les cartes en Swift per a poder fer un pas més enllà en el món de la programació i desenvolupament de software.