de Colin Smith

Swift vs. Objective-C: Tendința ascendentă și întoarcere vs. dinozaur

Swift vs Objective C Tendinta ascendenta si inaintea dinozaurului
Rapid vs. Obiectiv-C. Cum se compară?

O scurtă istorie a lui Swift

Îmi amintesc cât de important a fost când Swift a fost prezentat la WWDC (Conferința mondială a dezvoltatorilor) din 2014 a Apple. Era vorba despre oraș și toți specialiștii cu care am lucrat abia așteptam să-l încerc. Comunitatea iOS bâzâia și a existat o mulțime de entuziasm în jurul noii limbi.

A fost dezvoltat pentru a continua unele concepte pe care le-am văzut în Objective-C, cum ar fi programarea extensibilă. Dar a împins spre o abordare diferită a codificării cu designul orientat spre protocol și a sporit siguranța cu tastarea statică.

A fost un mare succes și și-a văzut racheta cerului în creștere în anii de după introducere. A fost cel mai iubit limbaj de programare în 2015, al doilea cel mai iubit în 2016, a 11-a cel mai popular limbaj de programare în 2017, depășind Objective-C și, de asemenea, bătut Obiectiv-C în 2018.

Swift este, de asemenea, un pariu de către Apple pe cucerind novicii pentru a deveni dezvoltatori iOS. Speranța este că noii dezvoltatori vor învăța limba și o vor folosi pentru a construi aplicații iOS. Acest lucru crește apoi ecosistemul magazinului de aplicații. Deoarece Swift este optimizat pentru a funcționa cu aplicații iOS, acest lucru asigură că aplicațiile scrise sunt de înaltă calitate.

Popularitatea Swift-urilor continuă să crească, în special pentru aplicațiile mai mici și pentru start-up-uri. Decalajul dintre Swift și Objective-C va continua să crească. Viitorul este luminos pentru această limbă tânără.

O scurtă istorie a Objective-C

Objective-C este un limbaj de programare orientat pe obiecte, care este un superset al lui C, așa cum ar putea arăta numele limbajului. Aceasta înseamnă că orice program C valid se va compila cu un compilator Objective-C. El derivă toată sintaxa sa non-orientată obiect din C și sintaxa orientată obiect din SmallTalk. A fost dezvoltat în 1984, deci a avut timp să se maturizeze ca limbă și este mult mai stabil decât Swift.

Majoritatea oamenilor cunosc Objective-C ca limbajul folosit pentru a dezvolta aplicații pentru iPhone, dar istoria merge mult mai adânc de atât. Aș recomanda să citiți Acest articol pentru un aspect mai aprofundat.

Punctele forte ale lui Swift

Swift a crescut enorm în popularitate din câteva motive cheie. În primul rând, există o mulțime de instrumente de dezvoltare excelente pe care Apple le-a oferit pentru a lucra împreună cu Swift. Unul dintre preferatele mele personale este locul de joacă, care este compatibil doar cu Swift. Apple a prezentat Playgrounds în 2016. Au fost introduse ca o modalitate de a învăța cum să codez, dar le-am iubit dintr-un motiv diferit.

Dezvoltarea mobilă a avut întotdeauna mai multe obstacole decât dezvoltarea web. Aveți nevoie de un simulator, de obicei aveți nevoie de un mediu de dezvoltare integrat (IDE) și trebuie să configurați un proiect întreg doar pentru a testa un mic prototip. În cazul Apple, aveți nevoie și de un cont de dezvoltator. Lucrul drăguț despre terenurile de joacă este că rezolvi ceva din asta. Aveți nevoie de Xcode sau de aplicația Playgrounds, dar asta este tot. Și puteți începe să codificați și să compilați codul imediat.

Cu toate acestea, un alt avantaj imens al Swift este faptul că este open source. Dacă v-ați întrebat vreodată cum a funcționat un limbaj de programare sub capotă, atunci puteți du-te să vezi singur! Acesta este un mod excelent de a înțelege limbajul de programare cu care lucrați zilnic la un nivel mai profund.

O mențiune de onoare se referă la un utilitar frumos disponibil numai pentru Swift, Manager de pachete Swift. Managerul de pachete Swift este pur și simplu un manager de dependență care este integrat cu sistemul de construire Swift. Nu este un schimbător de jocuri, deoarece CocoaPods și Carthage făceau această treabă cu mult timp în urmă, dar este o altă soluție disponibilă, dacă este necesar.

O mulțime de dovezi susțin faptul că Apple face multe pentru a face Swift mai de dorit ca limbaj de programare ales pentru dezvoltatorii iOS. Acestea creează utilități și auxiliare drăguțe pentru a atrage oamenii să înceapă să folosească limba. Acest lucru arată că Apple face tot posibilul pentru Swift.

Caracteristici lingvistice

Să intrăm în unele dintre detaliile limbajului în sine. Swift este mai sigur datorită tastării statice și a utilizării opționalelor. În Swift, dacă codul dvs. necesită un șir, caracteristicile Swift vă vor garanta că codul dvs. primește un șir și nu un alt tip, cum ar fi un int. Bineînțeles, acest lucru depinde dacă folosiți limba așa cum este intenționată și nu forțați să despachetați totul.

O altă caracteristică excelentă a Swift este sintaxa sa. Mai ales în comparație cu Objective-C. Cel mai bun cuvânt pentru a descrie sintaxa ar fi „succint”. Nu este nevoie de punct și virgulă, apeluri către sine sau paranteze în jurul valorii de declarații. Se pare că omiteți o mulțime de lucruri de care oricum nu aveți cu adevărat nevoie. Poate îmbunătăți procesul de tastare a multor coduri „flux”.

Unii oameni spun că acest lucru duce la îmbunătățirea vitezei de dezvoltare, dar eu nu aș spune exact asta. Nevoia continuă de a desface obiecte pentru a se conforma siguranței de tip Swifts compensează câștigurile de dezvoltare care vin odată cu succintitatea.

Swift are, de asemenea, o mulțime de opțiuni excelente de flux de control, cu instrucțiuni de protecție, dacă se lasă, comutare avansată, repetare și amânare. Îmi plac toate opțiunile diferite, deoarece le permit oamenilor să controleze fluxul codului lor într-un mod care are sens pentru ei. Mulți oameni urăsc diferența, dar iubesc paznicii și invers. Nu contează cu adevărat ce îți place sau ce îți place, dar opțiunile sunt acolo și poți codifica în modul în care ți se pare cel mai bine.

Nu pot uita toate funcțiile de programare funcționale, cum ar fi filtrul, harta și reducerea. Acest lucru este excelent pentru manipularea colecțiilor și este foarte util la îndemână.

Punctele slabe

Swift este o limbă tânără și, odată cu aceasta, vine o schimbare. Migrațiile între versiuni sunt pur și simplu o durere. La o companie mică, instrumentul de migrare furnizat de Apple poate fi util și acoperă majoritatea cazurilor. Devine mai puțin util cu cât ai mai mult cod. Este și mai rău dacă baza de cod conține atât Objective-C, cât și cod Swift care interoperă.

La ultima mea companie, efortul de migrație a dus un grup dedicat un weekend întreg. Au trebuit să o facă în weekend, astfel încât să nu întâmpine conflicte de fuziune de la alți producători care împing codul. Acest lucru a fost incredibil de dureros pentru toți cei implicați.

Un motiv pentru aceste migrații este faptul că Swift ABI nu este stabil. Asta înseamnă că versiunile mai noi ale Swift nu pot funcționa cu versiunile mai vechi ale Swift. Asta înseamnă, de asemenea, că limba nu poate fi ambalată cu sistemul de operare. Aceasta este o afacere importantă pentru companiile cu aplicații mari care combate în mod activ dimensiunea aplicației, deoarece Swift este inclus în pachet cu aplicația și crește dimensiunea.

O altă problemă este că Swift nu se joacă bine cu Xcode. Xcode se simte foarte agitat când lucrezi cu Swift și completează automat pur și simplu nu funcționează uneori. Acest lucru este ciudat, având în vedere cât de greu îl împinge Apple pe Swift. Ați crede că ar dori să facă experiența utilizării Swift cu Xcode o încântare.

Swift are, de asemenea, probleme cu manipularea șirurilor, consultați exemplul de cod de mai sus. Este un ciudat. În ziua ta, acest lucru nu este prea rău. Unde intră cel mai mult în joc este în timpul interviurilor. Din păcate, pentru dezvoltatorii Swift, intervievatorilor le place să pună întrebări care implică manipularea șirurilor. Acest lucru este agravat de faptul că modul în care sunt tratate șirurile s-a schimbat între versiunile Swift.

Punctele forte ale Objective-C

Objective-C este un limbaj extrem de dinamic, orientat spre obiect. Este dinamic până la punctul în care puteți schimba invocările de metode în timpul rulării folosind tehnici precum Vâjâitoare. Este capabil să facă astfel de lucruri datorită paradigmei sale de trimitere a mesajelor. Acest lucru permite obiectelor să trimită mesaje către alte obiecte în timpul rulării pentru a determina invocarea metodei apelate.

În scopuri practice, ce înseamnă asta? Ei bine, un mare avantaj este adaptabilitatea în timpul rulării. Aceasta înseamnă că este posibilă accesarea API-urilor private sau efectuarea unor lucruri precum batjocorirea obiectelor în timpul rulării. Acest lucru poate fi util mai ales atunci când vine vorba de testarea unității. Bibliotecilor le place OCMock faceți acest lucru și mai ușor și permiteți configurări de testare foarte elaborate. Dacă aveți teste unitare bune, aplicația dvs. va deveni mai stabilă și mai fiabilă.

Vorbind de stabilitate, Objective-C există de mult timp, ceea ce îl face un limbaj foarte stabil. Cu Swift, veți întâlni bug-uri care sunt destul de surprinzător și ar perturba stabilitatea aplicației dvs. În exemplul pe care l-am legat mai sus, această blocare ar fi cauzată de limba reală pe care o utilizați pentru a codifica aplicația dvs., nu din cauza unei erori create de codul pe care l-ați scris. Acest lucru poate fi frustrant.

Ultimul punct, care este mai important pentru anumite companii, este compatibilitatea cu bibliotecile C și C ++. Fiind că Objective-C este un superset de C, este ușor de utilizat codul C și C ++ cu Objective-C. Puteți folosi chiar și Objective-C ++ dacă vă simțiți atât de înclinați. Acest lucru este important dacă depindeți de bibliotecile terțe C și C ++.

Punctele slabe

Prima plângere principală pe care o aud despre Objective-C este sintaxa. Mi-am început cariera profesională folosind Objective-C, deci nu am probleme cu asta. Este detaliat și puțin neconvențional cu utilizarea parantezelor pătrate. Dar opiniile despre sintaxă sunt doar atât, păreri. M-am gândit că aș lista acest punct, deși este unul dintre primele lucruri care apar atunci când menționezi Objective-C.

Un lucru cu care sunt de acord este că sintaxa blocurilor este frustrantă. Există chiar și un site web dedicat decodării misterelor blocurilor din Objective-C. De fapt, folosesc acest site destul de des ca referință.

Cea mai mare problemă cu care se confruntă acum Objective-C este faptul că într-o zi Apple ar putea renunța la suportul pentru Objective-C cu Cocoa și alte biblioteci obișnuite utilizate pentru a crea aplicații iOS. Deoarece Objective-C este utilizat în principal pentru a crea aplicații iOS, aceasta ar fi o problemă pentru limbă. De asemenea, înseamnă că noii veniți în comunitatea iOS se tem să se angajeze să învețe Objective-C chiar acum, deoarece este posibil să nu mai fie folosit în viitor.

Să revenim la limba în sine. Este predispus să aibă probleme greu de depanat din cauza naturii dinamice a limbajului. Abilitatea de a trimite mesaje către zero și de a nu se bloca pe lângă lipsa de tastare strictă sunt câteva exemple de lucruri care duc la aceste probleme greu de depanat.

Nici Obiectiv-C nu te ține de mână când vine vorba de aceste lucruri. Deși este frumos că aplicația nu se blochează atunci când trimiteți un mesaj către zero, este posibil să vă pună aplicația într-o stare ciudată. Este foarte greu să depanați astfel de probleme. Faptul că Swift are o tastare strictă și utilizarea opționalelor de despachetare împiedică aceste lucruri la compilare.

Ar trebui să învăț Swift sau Objective-C?

Răspunsul pentru majoritatea oamenilor va fi Swift. Apple împinge în mod clar Swift ca limbă de alegere pentru comunitatea sa de dezvoltare a aplicațiilor iOS. Swift va continua să devină mai performant pe măsură ce se introduce stabilitatea ABI și Swift devine ambalat cu sistemul de operare în sine.

Dacă doriți să obțineți un loc de muncă ca dezvoltator iOS, Swift va fi limba pe care doriți să o învățați. Majoritatea companiilor de start-up la nivel mediu vor avea aplicațiile iOS scrise complet în Swift. Acest lucru înseamnă că veți putea aplica și interoga pentru mai multe locuri de muncă dacă învățați Swift.

Chiar și la companiile mai mari, în care Objective-C este încă utilizat intens, interviurile se pot face în Swift. Deci, puteți învăța Objective-C odată ce vă alăturați companiei și nu vă faceți griji că vă veți împovăra cu mai multe lucruri de învățat înainte de interviu.

Veți dori să învățați Objective-C dacă lucrați deja la o companie de start sau la nivel mediu și doriți să treceți la o companie mai mare. Abilitățile cu Objective-C vă vor oferi cunoștințe specializate și un avantaj față de alți candidați la interviu.

Ți-a plăcut ce ai citit? Aruncați o privire la unele dintre celelalte articole ale mele:

Sfaturi pentru primul dvs. interviu tehnologic.

Începând o carieră tehnologică din nimic.

Ar trebui să obțineți o diplomă în informatică?