„Swift“ prieš „Objective-C“. Kokią „iOS“ programavimo kalbą pasirinkti

„Swift vs Objective -C“ – kokią programavimo kalbą turėtumėte pasirinkti kurdami „iOS“ programas? Populiarėjant „iOS“ platformai ir didėjant „Apple“ vartotojų, įmonės sutelkia savo strategines pastangas tiekti aukščiausios kokybės produktus. Svarbus vaidmuo čia tenka tinkamoms technologijoms. Todėl, 2014 m. Pristačius „Swift“, „iOS“ kūrimo pasaulyje atsirado daug painiavos.

Viena vertus, „Objective-C“ pasirodė esąs stabilus ir buvo naudojamas daugelį metų. Tuo tarpu naujausia programavimo kalba „Swift“ suteikia daug privalumų ir modernesnį kodavimo būdą.

Įdomu, kuo skiriasi „Swift“ ir „Objective-C“? Kuri kalba labiau tinka jūsų projektui?

Peržiūrėkite išsamų „Swift“ ir „Objective-C“ palyginimą ir analizę, kurią parengė užsakomųjų paslaugų įmonė, kad padarytumėte geriausią pasirinkimą.

Kas yra „Objective-C“ ir „Swift“ programavimo kalbos „iOS“?

„Objective-C“ ir „Swift“ yra programavimo kalbos, naudojamos programuojant „Apple“ programinės įrangos produktus naudojant „macOS“, „iOS“, „tvOS“, „watchOS“, „CarPlay“ ir „Linux“ (tik „Swift“) operacines sistemas. Šios kalbos turi atitinkamas programų programavimo sąsajas (API) ir rėmus. „Objective-C“ buvo sukurtas 80-ųjų pabaigoje ir paveikė „Smalltalk“ (skirta į objektą orientuotą sintaksę) ir „C“ (ne objektą) programavimo kalboms. Naujesnė „Swift“ kalba nėra pagrįsta C kalba. Vietoj to, jis nebeturi jokio paveldėjimo ir yra tiesiog sudedamas su C bibliotekomis ir sistemomis. „Swift“ siūlo galingesnius įrankius ir šiuolaikiškus kodavimo sprendimus, kad būtų galima paprasčiau, bet išraiškingai koduoti, mobilių aplikacijų saugumą ir našumą. Be to, kalba yra intuityvi, todėl naujiems programuotojams lengviau išmokti.

Kitas skirtumas „Swift“ ir „Objective-C“ yra kodo pateikimo būdas. „Swift“ kodas yra vieningas ir turi paprastesnę sintaksę, tuo tarpu dirbant su „Objective-C“ kodas yra padalintas į 2 kodo blokus:

  • antraštės (sąsajos) failai (.h)
  • diegimo failai (.m)

Devintajame dešimtmetyje „Objective-C“ iš pradžių sukūrė kompanija „Stepstone“, Bradas Coxas ir Tomas Love’as. Be to, „Objective-C“ prekės ženklas buvo išplėstas ir „Apple Computers“. Nuo tada „Objective-C“ buvo standartinė programavimo kalba, skirta „MacOS“ ir, dar daugiau, „iOS“ ir kitoms „Apple“ platformoms. Pagrindinis bruožas yra jo brandumas, nes jis buvo naudojamas ir išbandytas daugelį metų „Apple“ programinėje įrangoje.

Priešingai, „Swift“ neapsiriboja „Apple“ OS. 2015 metais ji tapo atvirojo kodo ir kelių platformų programavimo kalba. Tai pašalina nesaugų žymeklio valdymą ir tuo pačiu užtikrina sąveiką su seniai veikiančiomis Objective-C ir C kodų bazėmis. Šiomis dienomis „Apple Inc.“ skatina naudoti „Swift“ ir nuolat atnaujina kalbos versijas.

Šiose punktuose pateikiamos bendrosios „Swift“ ir „Objective-C“ techninės charakteristikos:

Objective-C

  • Tipai tikrinami, bet nėra vykdomi kompiliavimo metu
  • Galimi ribų ir stack perpildymai
  • Lengvi generiniai yra informatyvūs kompiliavimo laikui
  • Antraštės failai ir implemantavimo failai
  • Rankinis „CoreFoundation“ atminties valdymas
  • Pranešimo siuntimas (dinaminis siuntimas)
  • „Objective-C ++“ palaikymas

Swift

  • Tipai vykdomi kompiliavimo ir vykdymo metu
  • Užkertamas kelias obligacijų ir stack perpildymui
  • Generikai yra vykdomi kompiliavimo metu ir vykdymo metu
  • Vienas failas, kuriame yra ir sąsaja, ir implementavimas
  • Automatinis „CoreFoundation“ atminties valdymas
  • Statinis vertybių tipų metodo išsiuntimas
  • Nepalaiko „Objective-C ++“

Šiuo metu kūrimo pasaulis ginčijasi, kokia kalba „Swift“ ar „Objective-C“ yra geresnė „iOS“ mobilių aplikacijų kūrimo paslaugoms. „Objective-C“ buvo sukurta daug projektų, sistemų ir API.

Taigi, atraskime kiekvieno privalumus ir trūkumus, pradedant nuo Objective-C.

„iOS Objective-C“: pliusai ir minusai

Dabar patikrinkime „Swift“ pranašumus, lyginant su programavimo kalba „Objective-C“. Tiek „Swift“, tiek „Objective-C“ yra tarp 20 plačiausiai naudojamų programavimo kalbų visame pasaulyje. Iš visų kūrėjų 8,1 proc. Specializuojasi „Swift“, o 7 proc.-„Objective-C“.

„Objective-C“ pranašumai prieš „Swift“ 2018 m.

  1. Objective-C yra patvirtinta, gerai išbandyta kalba
    Kaip minėta, „Objective-C“ yra patikimas ir jį naudojo bei išbandė daugelis kūrėjų. „Objective-C“ yra parašyta daugybė projektų ir yra daug puikių trečiųjų šalių sistemų.
  2. Objective-C yra stabilesnis
    Kadangi „Swift“ vis dar vystosi kaip kalba, ji nuolat atnaujinama, o „Swift“ parašytos mobilios aplikacijos turi būti perkeltos į naujausią versiją. Logiškai mąstant, tam reikia laiko ir pinigų. Kai programa parašyta „Objective-C“, šios operacijos nėra būtinos.
  3. Lengvesnis privačių API naudojimas
    Tais atvejais, kai produktui reikalingas konkretus pasirinktinis sprendimas (pvz., Specifinis spalvos pakeitimas ar integravimas), „Objective-C“ lengviau prisijungti prie privačių API. Kadangi „Swift“ nuolat tobulėja, ji yra nestabili ir dėl to gali kilti avarijų dėl tokių ryšių.
  4. Objective-C lengvai suderinamas su C ++
    Produktai, kuriuose yra C arba C ++ kodo dalių, veikia sklandžiai, kadangi jie turi maršrutus iš C kalbos. Priešingai, „Swift“ nesuderinama su C ++ kalba.

Objective-C trūkumai 2018 m.

  1. Sunkiau mokytis
    „Objective-C“ yra atskira kalba, kurios sintaksė skiriasi nuo kitų programavimo kalbų. Jo atminties valdymas yra sudėtingesnis ir turi palikimą, kurį turi suprasti „C“ ir „Smalltalk“. Trumpai tariant, „Objective-C“ naujiems kūrėjams turi didesnę kliūtį dėl sudėtingų sintaksės ir kodavimo sąlygų. Jei nuspręsite, ar mokytis „Objective -C“, ar „Swift“ – pasirinkite „Swift“. Labai rekomenduojama mokytis „Swift“, nes ji yra logiškesnė, lengviau skaitoma ir suprantama ir pritaikyta specialiai „Apple“ aparatinei įrangai.
  2. Mažiau kvalifikuoti „Objective-C“ kūrėjai
    Gali būti sudėtinga rasti tinkamą „Objective-C“ kūrėją. Jų skaičius šiek tiek mažėja, nes nauji kūrėjai dažniausiai mokosi „Swift“, o kiti keičia „Objective-C“ į „Swift“. Bet kokie programavimo įgūdžiai reikalauja reguliarios praktikos, todėl laikui bėgant numatomas kvalifikuotų „Objective-C“ programuotojų skaičiaus mažėjimas.

Rekomendacijos, kada naudoti „Objective-C“

Yra keletas variantų, kuriuose vis tiek būtų geriau naudoti Objective-C:

  1. Jei programa jau buvo parašyta „Objective-C“ ir turi didžiulę kodų bazę (daugiau nei 100 000 kodo eilučių)
    Logiškiausia rekomendacija naudoti „Objective-С“, jei projektas labai priklauso nuo šios kalbos arba programa jau buvo parašyta „Objective-C“ ir veikia (pvz., „Facebook“).
  2. Jei kuriate pagrindą, naudokite Objective-C
    Iki šiol „Swift“ nėra stabili ABI (taikomoji dvejetainė sąsaja), o tai atitinka teisingą visų mašinos kodo elementų ryšį. ABI turi būti stabilus, jei buvo sudarytas dvejetainis kodas su skirtingomis kalbos versijomis. Pavyzdžiui, PSPDFKit yra sistema, kurioje naudojamas „Objective-C“ ir naudojama PDF dokumentams tvarkyti. Taigi, jei planuojate kurti SDK, „Objective-C“ yra geresnis pasirinkimas.
  3. Jei C arba C ++ trečiųjų šalių sistemos yra plačiai naudojamos
    Paprastai tai yra reta situacija, tačiau, jei reikia šių sistemų, rekomenduojama naudoti tikslą C, nes tai yra C pogrupis, todėl verta apsvarstyti.

„Swift“ – nauja „iOS“ programavimo kalba

Dabar patikrinkime „Swift“ pranašumus, lyginant su programavimo kalba „Objective-C“.

„Swift“ naudojimo pranašumai

  1. Swift yra greitesnis
    Pradžiai išsiaiškinkime skirtumą: „Swift“ ir „Objective-C“ našumas.

    „Swift“ našumas yra beveik toks pat kaip „C ++“, kuris laikomas greičiausiu algoritmo skaičiavimo aritmetikoje. „Apple“ turėjo omenyje šią idėją ir stengėsi pagerinti „Swift“ greitį. Pavyzdžiui, „Swift 2.0“ įveikė C ++ pagal kelis skaičiavimo algoritmus, tokius kaip Mandelbroto algoritmas. „Objective-C“ yra lėtesnis, nes jame yra C API palikimas.



    „Swift“ yra greitesnis už „Objective-C“, nes pašalino C kalbos apribojimus ir buvo patobulintas naudojant pažangias programinės įrangos kūrimo technologijas, kurios nebuvo pasiekiamos kuriant „C“. Kaip minėjo „Apple“, „Swift“ iš pradžių buvo sukurta veikti greičiau.

    Nepaisant to, kad kalbos yra skirtingos, jos integruojamos ir veikia su „Cocoa“ ir „Cocoa Touch“ API visoms „Apple“ platformoms. Todėl eilinis programos vartotojas nepripažintų skirtumo tarp „Objective-C“ ir „Swift“ veikimo greičio. Greitis taip pat priklauso nuo programuotojo lygio ir galimybių, nes lėta mobili aplikacija gali būti parašyta ir „Swift“.
  2. Swift“ yra saugesnis
    Šiais laikais mobilių aplikacijų duomenų saugumas yra esminė sėkmingo produkto savybė. „Swift“ konstrukcija buvo sukurta taip, kad būtų išvengta klaidų ir išvengta jų funkcijų – bendrųjų, pasirinktinių ir tipo trukdžių, kad būtų užtikrintas aplikacijos stabilumas. Todėl „Swift“ sukurtos programos yra mažiau linkusios į klaidas ir gedimus.
  3. Swift“ yra labiau skaitomas
    Norėdami pradėti, „Swift“ kodas labiau primena anglų kalbą, todėl jį lengviau skaityti ir reikia mažiau laiko kodui patikrinti. Taip pat apskritai tam pačiai funkcijai reikia daug mažiau kodo eilučių. „Swift“ lengvai perskaito „JavaScript“, „Java“, „Python“, „C#“ ir „C ++“ programuotojai, galintys tam tikru mastu ja naudotis. Be to, „Swift“, priešinga „Objective-C“, atsikratė kai kurių simbolių. Pavyzdžiui:

    — ; simbolis yra neprivalomas „Swift“ iki pabaigos eilutėse ir gali būti neįtrauktas
    — [] simboliai reiškia metodo iškvietimus. „Objective-C“ buvo patalpinti vienas į kitą taip: [[]], kad būtų labiau susipainioję. Vietoj to, „Swift“, standartinis kablelis naudojamas šiems veiksmams atskirti skliausteliuose – ()
  4. „Swift“ turi mažiau kodo
    „Swift“ yra kompaktiškesnė programavimo kalba. Tačiau šis faktas, žinoma, nereiškia kodo paprastumo. Kartais rašyti gali būti labai sunku, tačiau tai duoda daugiau naudos ir yra daugkartinio naudojimo. Pastarasis punktas negali būti taikomas C tikslui.

    Paimkime tikrą pavyzdį: yra žinoma programa „Lyft“, kuri buvo perrašyta „Swift“ nuo nulio. Idėja buvo gana rizikinga, nes komanda pradėjo ankstyvoje naujos kalbos stadijoje ir dirbo kartu su „Swift“ patobulinimais. Kokia buvo esmė? Programa nuo 75 000 kodo eilučių tapo 25 000. Šis stulbinantis pokytis neturėjo įtakos „Lyft“ veikimui, o klientai nepatyrė jokių funkcijų skirtumų.
  5. „Swift“ yra mažiau linkęs į klaidas
    „Swift“ sintaksė ir kalbos konstrukcijos neįtraukia kelių tipų klaidų, galimų „Objective-C“. Ši kontrolė reiškia mažiau avarijų ir netikėto elgesio atvejų. Tačiau tai, žinoma, netrukdo parašyti blogo kodo, tačiau kūrėjas yra geriau apsaugotas nuo nepageidaujamų klaidų. Tam tikra prasme tai galima pavadinti „kokybės kontrole“.

    Visa tai yra priežastis laikyti „Swift“ saugia programavimo kalba.

  6. „Swift“ integruojasi su atminties valdymu
    O kaip su „Objective-C“ ir „Swift“ atminties valdymu? ARC (automatinis nuorodų skaičiavimas), atminties valdymo funkcija „Clang“ kompiliatoriuje, valdo skaitmeninių objektų atmintį. Tai lengva išspręsti naudojant „Swift“, naudojant procedūrinį ir į objektą orientuotą kodą, naudojant „Cocoa“ API. Kalbant apie „Objective-C“, procedūrinis kodas veikia su „Corel Graphic“ API ir jį turi kontroliuoti kūrėjas.

    Taigi, naudojant „Swift“ kodavimą, vieningi atminties valdymo kūrėjai neturėtų atkreipti dėmesio į kiekvieną skaitmeninį objektą, o sutelkti dėmesį į bendrą programos logiką ir jos ypatybes.

  7. „Swift“ yra atvirojo kodo kalba
    “Swift” iš pradžių buvo sukurta „Apple“ platformoms („iOS“, OS X, „watchOS“, „tvOS“) ir buvo išplėsta iki „Linux“. Jos kūrėjai suprato, kad norint sukurti puikią šiuolaikinę programavimo kalbą, ji turėtų būti prieinama visiems. „Swift“ padėjo sukurti daug trečiųjų šalių sistemų ir įrankių, todėl atsirado bendruomenė. Kaip pavyzdį galime naudoti neseniai sukurtą „Swift“ sąveikos su „RESTful“ žiniatinklio paslaugomis sistemą „TRON“. Be to, „Swift“ kodas yra labiau įdiegiamas į kitas platformas, nei kada nors galėtų būti „Objective-C“. Taip pat yra iniciatyva, kad „Swift“ būtų suderinama su „Android“. Patraukimo užklausą jau sukūrė ir patvirtino „Swift“ autorius Chrisas Lattneris. Įdomus faktas, kad iki šiol niekas iš tikrųjų nenaudoja „Swift“ programuodamas „Android“.

  8. „Swift“ turi interaktyvų kodavimą
    „Swift Playgrounds“ kūrėjams suteikė naujų galimybių. Šis įrankis leidžia išbandyti kodą vietoje, nerenkant didelių jo dalių ar nesukuriant visos programos. Swift Playgrouds vizualizuoja duomenis, o programuotojai gali greitai patikrinti ir pataisyti viską kartu su tolesniu tobulinimu. Tai ypač tinka pasirinktiniams rodiniams ir kodo eksperimentams. Naujausias „Xcode IDE“ suteikia kūrėjams daug erdvės eksperimentams paprasto redaktoriaus pavidalu (įskaitant skydelį su linijomis, vaizdais, galutinį vaizdą).

  9. „Swift“ yra arčiau kitų platformų
    Šis punktas yra labai svarbus, ypač kalbant apie programuotojų, kuriančių tą pačią programą skirtingose platformose, bendradarbiavimą. Šiuolaikinę „Apple“ programavimo kalbą lengviau suprasti ne „iOS“ kūrėjams ir sumažina papildomiems paaiškinimams ir paaiškinimams skirtą laiką. Tai teigiamai veikia darbo našumą. Be to, „Swift“ gali būti naudojama kaip scenarijų kalba. „IOS“ bendruomenei tai yra įdomus sprendimas suvienyti kūrimo scenarijų rašymą. Šiuo metu „iOS“ kūrėjai dėl šios veiklos yra susiskaldę. Kai kurie iš jų rašo kūrimo scenarijus „Bash“, kiti naudoja „Ruby“, „Python“ ir t.t.. „Swift iOS“ programavimas atitinka visus šiuolaikinius poreikius ir siūlo nuostabias galimybes. Ar sutinkate, kad lengviau naudoti vieną (ypač „Native“) kalbą, o ne dirbti su dviem vienu metu?

  10. „Swift“ yra nuolatiniame „Apple“ dėmesys
    „Apple Inc.“ daugiausia dėmesio skiria „Swift“, kaip pagrindinės programavimo kalbos, kūrimui. Neseniai WWDC (pasaulinė kūrėjų konferencija) išsamiai pristatė „Swift 4.2“, kur pristatė daugybę puikių funkcijų ir atnaujinimų. Dabartinėje „Swift“ versijoje yra:

    — Greitesnės konstrukcijos
    — Kalbos funkcijos, skirtos pagerinti efektyvumą ir pašalinti plokštės SDK patobulinimus
    — Artėja prie dvejetainio suderinamumo

    Be to, tikimasi, kad „Swift“ užbaigs svarbų 2019 m. Etapą -suderinamumą su būsimais „Swift“ kompiliatoriaus leidimais.

„Swift“ naudojimo trūkumai

  1. Lėtesnis kompiliavimo greitis
    „Swift“ projektuose kompiliacijos (šaltinio kodo pavertimas dvejetainiu/ mechanizmo kodu) greitis yra daug lėtesnis.
    Kadangi „Swift“ yra sudėtingesnė kalba ir daug funkcijų, sunkiau užtikrinti, kad viskas būtų tikslu. Šiuo metu „Swift“ šaltinio kodas buvo koreguojamas kiekvieną kartą atnaujinus versiją. Kiekvieną kartą tai kainuoja laiko ir pinigų. Kita vertus, „Apple“ minėjo, kad šiuo metu dirba prie šio veiksnio ir tikisi pasiūlyti sprendimą 2019 m.
  1. Nėra ABI stabilumo
    Kita pagrindinė „Swift“ problema yra jos ABI nestabilumas. Panašiai kaip API, kuri apibrėžia visą bendravimą tarp visų šaltinio kodo elementų, ABI apibrėžia mechanizmo kodo ryšio taisykles. Tai daugiausia svarbu didesniuose projektuose, kai dalis programos sudedama su keliomis „Swift“ versijomis. Todėl, norint užtikrinti stabilų ryšį skirtingų kompiliatorių versijų dvejetainiame kode, ABI turėtų būti stabilus ir gerai struktūruotas. Dėl to gali kilti tam tikrų problemų naudojant „Swift“ sistemas visose „Swift“ versijose.
  2. Nėra C ++ importo
    Jei jūsų projektas labai priklauso nuo C ++, „Swift“ nėra „iOS“ kalba, kurią reikėtų pasirinkti šiai užduočiai atlikti.

„Swift“ naudojimo atvejai

„LinkedIn“- socialinis tinklas, skirtas profesionalams, pereinantiems iš „Objective-C“ į „Swift“, kuriant Native mobilias aplikacijas.

Kaip sukurti socialinės žiniasklaidos aplikaciją, kuri laimėtų rinką? Tiesiog prisitaikykite prie poreikių ir sekite tendencijas. 2016 m. buvo puiki kalba, kurioje buvo pristatyti šio sprendimo motyvai bendrovei. Esmė ta, kad „Swift“ buvo geresnis pasirinkimas mažesniems ir pradedantiems projektams, nes su juo buvo lengviau dirbti. Kita vertus, per 3 metus „Swift“ tapo brandesnis ir išsprendė savo problemas ankstyvosiose stadijose.

Kita bendrovė, „Lyft“, užsakomoji transporto įmonė, naudoja „Swift“ savo vietinei „iOS“ programai kurti.

Kitos žinomos programos, tokios kaip „Yahoo Weather“, „Clear“, „Hipmunk“, „WordPress“ ir „Firefox iOS“ programos, taip pat naudoja „Swift“.

„Objective-C“ ar „Swift“?

Šiais laikais „Objective-C“ yra mažiau atnaujinimų, kurių dauguma yra suderinami su „Swift“ (pvz., Lengvas importavimas į „Swift“ kodą). „Swift“ buvo sukurta kaip sąveikaujanti kalba, todėl ji visiškai suderinama su „Objective-C“. Tai reiškia, kad projekte galima sujungti šias kalbas, tačiau yra tam tikrų kliūčių:

  • reikalingos didesnės abiejų kalbų kūrėjų galimybės
  • sunkesnė sistemos priežiūra
  • lėtesnis vystymosi laikas

Galite paklausti: ar „Objective-C“ vis dar aktualus šiais laikais?

„Objective-C“ programavimas greitai netaps pasenęs, nes dėl savo 20 metų gyvavimo jis turi didelę kodų bazę, prižiūrimą daugybę programų ir trečiųjų šalių sistemą, kurios esmė yra „Objective-C“. Šie sprendimai ir bibliotekos vargu ar bus perkuriami iš naujo naudojant naują kalbą. Tai yra vienintelė priežastis, kodėl „Objective-C“ tam tikru mastu yra geresnis už „Swift“. Taigi „Swift“ neketina pakeisti „Objective-C“, ypač šiame etape.

Apibendrinant galima pasakyti, kad „Objective-C“, palyginti su „Swift“, yra pasenusi kalba ir neturi modernių įrankių bei savybių. „Swift“ turi daug atnaujinimų ir nuolatinių augimo planų, o programavimo kalba sulaukia didelio „Apple“ palaikymo. Tai lengvai išmokstama, saugi, moderni ir interaktyvi programavimo kalba. „Swift“ supaprastino kodavimo modelius, taip pat kodavimo sąsają, palyginti su „Objective-C“.

Labai rekomenduojame kitam paleidimo projektui pasirinkti „Swift“.

Greitas kodavimas, greitas vykdymas!

Susisiekite su Mumis

Contact Us