Swift vs. objective-C: 10 syytä tulevaisuus suosii Swift

Ohjelmointi kielet eivät kuole helposti, mutta kehitys kauppoja, jotka takertuvat hiipumassa paradigmat tehdä. Jos olet kehittää sovelluksia mobiililaitteisiin ja olet ole tutkinut Swift, ota huomautus: Swift ei vain korvata objective-C, kun se tulee kehittää sovelluksia Mac, iPhone, iPad, Apple Watch, ja laitteita, mutta se korvaa myös C sulautettujen ohjelmointi Omena alustat.,

Kiitos useita keskeisiä ominaisuuksia, Swift on potentiaalia tullut de-facto-ohjelmointikieli luoda mukaansatempaava, reagoiva, kuluttaja-päin hakemukset vuosina.

Applella näyttää olevan isoja tavoitteita Swiftille. Se on optimoitu kääntäjä suorituskyvyn ja kielen kehityksen, ja se viittaa Swift on ”suunniteltu asteikolla ’hei, maailma’ koko käyttöjärjestelmä” Swift on dokumentointi., Vaikka Apple ei ole ilmoittanut kaikki sen tavoitteet kieli vielä, lanseeraukset Xcode 6, Leikkikentät, ja Swift-yhdessä, signaalin Applen aikomus tehdä app kehitystä helpompaa ja helpommin lähestyttävä kuin minkään muun kehittämisen välineenä ketju.

Tässä ovat 10 syitä, päästä eteenpäin peli alkaa työskennellä Nopeasti nyt.

Swift on helpompi lukea

objective-C kärsii kaikki syyliä odotat kieli rakennettu C., Erottaakseen avainsanat ja tyypit C-tyypeistä Objective-C esitteli uusia avainsanoja @ – tunnuksella. Koska Swift ei ole rakennettu C, se voi yhdistää kaikki avainsanat ja poistaa lukuisia @ symbolit edessä joka objective-C-tyypin tai kohde-liittyvän avainsanan.

Swift drops legacy conventions. Näin ollen et enää tarvitse puolipisteitä rivien päättämiseksi tai suluissa ehdollisten lausekkeiden ympäröimiseksi if/else-lausekkeiden sisällä. Toinen suuri muutos on se, että menetelmä edellyttää älä pesä sisällä toisiaan, jolloin kiinnike hell—bye-bye, ]]., Menetelmä ja funktio puhelut Swift käyttää alan standard pilkku-erotettu luettelo parametreista sulkeissa. Tuloksena on puhtaampi, ilmaisuvoimaisempi kieli, jolla on yksinkertaistettu syntaksi ja kielioppi.

Swift-koodi muistuttaa muiden nykyaikaisten suosittujen ohjelmointikielten lisäksi enemmän luonnollista englantia. Tämä luettavuutta helpottaa nykyisten ohjelmoijat JavaScript, Java, Python, C#, ja C++ hyväksyä Swift heidän työkalu ketju—toisin kuin ruma ankanpoikanen, joka oli Objective-C.,

Swift on helpompi ylläpitää

Perintö on mitä pitää objective-C-takaisin—kieli ei voi kehittyä ilman C kehittyvä. C vaatii ohjelmoijia ylläpitää kahta koodin tiedostoja parantamiseksi rakentaa aikaa ja tehokkuutta suoritettavan sovelluksen luomiseen, vaatimus, joka kuljettaa yli Objective-C.

Swift putoaa kaksi-tiedosto vaatimus. Xcode ja LLVM-kääntäjä voivat selvittää riippuvuudet ja suorittaa incremental rakentaa automaattisesti Swift 1.2., Tämän seurauksena toistuva tehtävä erottaa sisällysluettelo (otsikkotiedosto) kehosta (toteutustiedosto) on menneisyys. Swift yhdistää Objective-C-otsikon (.h) ja toteutustiedostot (.m) yhdeksi kooditiedostoksi (.nopea).

objective-C: n kaksi-tiedostojärjestelmä määrää ylimääräistä työtä ohjelmoijat—ja se on työtä, joka vie huomion ohjelmoijat isompi kuva., Objective-C, sinun täytyy manuaalisesti synkronoida menetelmä nimiä ja kommentteja välillä tiedostoja, toivottavasti tavallisella yleissopimuksen, mutta tämä ei ole taattu, ellei joukkue on säännöt ja koodi arvosteluja paikka.

Xcode ja LLVM-kääntäjä voivat tehdä kulissien takana töitä vähentääkseen ohjelmoijan työmäärää. Swiftin avulla ohjelmoijat tekevät vähemmän kirjanpitoa ja voivat käyttää enemmän aikaa sovelluslogiikan luomiseen. Swift vähentää boilerplate-työtä ja parantaa tuettavien koodien, kommenttien ja ominaisuuksien laatua.,

Swift on turvallisempi

Yksi mielenkiintoinen näkökohta objective-C on tapa, jolla osoittimia, erityisesti nolla (null) osoittimet—käsitellään. Objective-C: ssä mitään ei tapahdu, jos yrität kutsua menetelmää osoitinmuuttujalla, joka on nolla (uninitialized). Ilmaus tai linja-koodi tulee ei-käyttö (o-op), ja vaikka se voi tuntua hyödyllinen, että se ei kaadu, se on ollut valtava lähde vikoja. Ei-op johtaa arvaamattomaan käyttäytymiseen, joka on niiden ohjelmoijien vihollinen, jotka yrittävät löytää ja korjata satunnaisen kaatumisen tai pysäyttää arvaamattoman käyttäytymisen.,

valinnaiset tyypit tekevät nollan valinnaisen arvon mahdollisuuden hyvin selväksi Swift-koodissa, mikä tarkoittaa, että se voi tuottaa kääntäjän virheen kirjoittaessasi huonoa koodia. Tämä luo lyhyen palautesilmukan ja antaa ohjelmoijille mahdollisuuden koodata tarkoituksellisesti. Ongelmia voi olla kiinteä, koska koodi on kirjoitettu, joka vähentää huomattavasti aikaa ja rahaa, että voit viettää bugien liittyvät osoitin logiikka objective-C.,

Perinteisesti, objective-C, jos arvo oli palannut menetelmä, se oli ohjelmoija on vastuu asiakirjan käytöstä osoitin muuttuja palasi (käyttäen kommentteja ja menetelmä-nimeämiskäytännöt). Swift, valinnainen tyypit ja arvotyypeillä tehdä selväksi menetelmä määritelmä, jos arvo on olemassa tai jos se on potentiaalia olla valinnainen (eli arvo voi olla olemassa tai se voi olla nolla).

ennustettavan käyttäytymisen mahdollistamiseksi Swift laukaisee ajonaikaisen kaatumisen, jos käytetään Nollaa valinnaista muuttujaa., Tämä kaatuminen tarjoaa johdonmukaista käyttäytymistä, joka helpottaa vikojen korjaamista, koska se pakottaa ohjelmoijan korjaamaan ongelman heti. Swift runtime crash pysähtyy koodiriville, jossa on käytetty nollan valinnaista muuttujaa. Tämä tarkoittaa, että vika korjataan ennemmin tai vältetään kokonaan Swift-koodissa.

Swift on yhtenäinen muistin hallinta

Swift yhdistää kieltä siten, että objective-C ei koskaan ole. Automaattisen Referenssilaskennan (ARC) tuki on täydellinen prosessuaalisten ja oliopainotteisten koodien poluilla., Objective-C, KAARI on tuettu sisällä Kaakaota APIs ja olio-koodin; se ei ole käytettävissä, kuitenkin, menettelyyn C-koodia ja Api: t, kuten Core Grafiikka. Tämä tarkoittaa sitä, että se tulee ohjelmoijan vastuu käsitellä muistin hallinta työskennellessään Core Graphics APIs ja muut matalan tason APIs saatavilla iOS. Valtavat muistivuodot, joita ohjelmoijalla voi olla Objective-C: ssä, ovat Swiftissä mahdottomia.

ohjelmoijan ei pitäisi joutua miettimään jokaisen luomansa digitaalisen esineen muistia., Koska ARC käsittelee muistia hallinta koota aikaa, aivokapasiteetti, että olisi mennyt kohti muistin hallinta voi sen sijaan olla keskittynyt core sovelluksen logiikka ja uusia ominaisuuksia. Koska ARC Swift toimii kaikkialla sekä menettelyihin ja olio-koodin, se vaatii enemmän henkistä yhteydessä kytkimet ohjelmoijille, vaikka ne kirjoittaa koodia, joka koskettaa alemman tason Api—ongelmia nykyisen version Objective-C.

Automaattinen ja korkean suorituskyvyn muisti hallinta on ongelma, joka on ratkaistu, ja Apple on osoittanut, että se voi lisätä tuottavuutta., Toinen sivuvaikutus on, että sekä objective-C ja Swift eivät kärsi roskienkerääjä käynnissä puhdistusta varten käyttämätön muisti, kuten Java, Go tai C#. Tämä on tärkeä tekijä minkä tahansa ohjelmointikieli, jota käytetään reagoiva grafiikka ja käyttäjä syöttää, erityisesti tunto-laitteen, kuten iPhone, Apple Watch, tai iPad (jos viive on turhauttavaa ja tekee käyttäjät kokevat sovelluksen on rikki).

Swift vaatii vähemmän koodia

Swift vähentää määrä koodia, että tarvitaan toistuvia lausuntoja ja merkkijonojen käsittely., Objective-C, tekstin kanssa työskentely jouset on hyvin yksityiskohtainen ja vaatii monta vaiheet yhdistää kaksi paloja tiedot. Swift antaa moderni ohjelmointikieli ominaisuuksia, kuten lisäämällä kaksi merkkijonoa yhteen, jossa on ” + ” – operaattori, joka puuttuu objective-C. Tuki yhdistämällä merkit ja merkkijonot, kuten tämä on olennaista tahansa ohjelmointikielellä, että teksti näkyy käyttäjän näytöllä.

Swiftin tyyppijärjestelmä vähentää koodilausekkeiden monimutkaisuutta — koska kääntäjä voi selvittää tyypit., Esimerkkinä, Objective-C vaatii ohjelmoijat muistaa erityinen merkkijono kuponkia (%s, %d, %@) ja antaa pilkulla erotettuna luettelo muuttujat korvata kunkin merkki. Swift tukee string interpolointi, joka poistaa tarpeen muistaa tunnuksineen ja mahdollistaa ohjelmoijat lisätä muuttujia suoraan inline käyttäjälle päin merkkijono, kuten etiketti tai-painiketta otsikko. Tyyppi inferencing system ja merkkijono interpolointi lieventää yhteinen lähde kaatumisia, jotka ovat yleisiä tavoite-C.,

Objective-C: llä tilauksen sotkeminen tai väärän merkkijonon käyttäminen saa sovelluksen kaatumaan. Täällä, Swift jälleen vapauttaa sinut kirjanpito työtä, kääntää vähemmän koodia kirjoittaa (koodi, joka on nyt vähemmän virhealtista), koska sen inline tuki manipuloimalla merkkijonoja ja tiedot.

Swift on nopeampi

Pudottaminen legacy C yleissopimukset on parantunut Nopeasti konepellin alle. Viitearvot Swift-koodin suorituskyvylle viittaavat edelleen siihen, että Apple on omistautunut parantamaan nopeutta, jolla Swift voi ajaa sovelluslogiikkaa.,

Mukaan Primate Labs, päättäjät suosittu GeekBench suorituskyky työkalu, Swift oli lähestyy suorituskykyä ja ominaisuuksia C++ laskea sidottuja tehtäviä joulukuussa 2014 käyttäen Mandelbrot algoritmi.

helmikuussa 2015, Primate Labs huomasi, että Xcode 6.3 Beta-parannettu Swift suorituskykyä GEMM algoritmi—muisti-bound-algoritmi, jossa juokseva pääsy suuri taulukot—kertoimella 1.4. Alkuperäinen toteutus FFT—muisti-bound-algoritmi random access suuret taulukot—oli 2,6-kertainen suorituskyvyn parannus.,

parannuksia havaittiin Nopeasti soveltamalla parhaita käytäntöjä, mikä on 8,5-kertainen boost FFT-algoritmin suorituskyky (jolloin C++ vain 1.1-aika suorituskyky voitto). Parannusten ansiosta Swift pystyi myös ohittamaan C++: n Mandelbrot-algoritmin kertoimella vain 1,03.

Swift on lähes C++: n tasolla sekä FFT-että Mandelbrot-algoritmien osalta., Mukaan Primate Labs, GEMM algoritmin suorituskyky viittaa siihen, Swift compiler ei vectorize-koodi C++ compiler voi — helppo suorituskyky voitto, joka voisi olla saavutettu seuraava versio Swift.

Vähemmän nimen törmäykset avoimen lähdekoodin projekteja

Yksi kysymys, joka on vaivannut objective-C-koodi on sen puute muodollista tukea nimiavaruudet, joka oli C++’s ratkaisu-koodi tiedostonimi törmäykset. Kun tämä nimi törmäys tapahtuu Tavoite-C, se on linker virhe, ja sovellus ei voi ajaa. Työkoiria on olemassa, mutta niissä on potentiaalisia sudenkuoppia., Yhteinen sopimus on käyttää kahden tai kolmen kirjaimen etuliitteitä erottelemaan Tavoite-C-koodia, joka on kirjoitettu vaikkapa Facebook vastaan oma koodi.

Swift tarjoaa implisiittinen nimiavaruudet, joiden avulla samaa koodia tiedosto olemassa useiden hankkeiden aiheuttamatta rakentaa vika ja vaatii nimiä kuten NSString (Seuraava Askel — Steve Jobs’ yrityksen jälkeen potkut applelta) tai CGPoint (Core Grafiikka). Lopulta, tämä ominaisuus Nopeasti pitää ohjelmoijat ovat tuottavampia ja tarkoittaa, että he ei tarvitse tehdä kirjanpitoa, joka on olemassa objective-C., Näet Swift vaikuttaa yksinkertaisia nimiä kuten Array, Sanakirja, ja Merkkijono sijaan NSArray, NSDictionary, ja NSString, joka oli syntynyt puute nimiavaruudet objective-C.

Swift, nimiavaruudet perustuvat tavoite, että koodi tiedosto kuuluu. Tämä tarkoittaa sitä, että ohjelmoijat voivat erottaa luokat tai arvot nimiavaruuden tunnisteella. Muutos Swiftissä on valtava. Se helpottaa huomattavasti avoimen lähdekoodin projektien, puitteiden ja kirjastojen sisällyttämistä koodiisi., Nimiavaruuksien avulla eri ohjelmistoyritykset voivat luoda saman koodin tiedostonimet ilman huolta törmäyksistä, kun integroidaan avoimen lähdekoodin projekteja. Nyt sekä Facebook että Apple voivat käyttää flyingcar-nimistä objektikooditiedostoa.swift ilman virheitä tai rakentaa epäonnistumisia.

Swift tukee dynaamisia kirjastoja

suurin muutos Nopeasti, että ei ole saanut tarpeeksi huomiota, on vaihtaa staattinen kirjastot, jotka päivitetään merkittävä kohta versiot (iOS 8, iOS 7, ja niin edelleen), dynaamiset kirjastot., Dynaamiset kirjastot ovat suoritettavia koodinpätkiä, jotka voidaan linkittää sovellukseen. Tämän ominaisuuden avulla nykyiset Swift-sovellukset voivat linkittyä Swiftin kielen uudempiin versioihin, kun se kehittyy ajan myötä.

Kehittäjä toimittaa sovelluksen yhdessä kirjastojen kanssa, jotka molemmat on digitaalisesti allekirjoitettu kehitystodistuksella eheyden varmistamiseksi (hello, NSA). Tämä tarkoittaa, että Swift voi kehittyä nopeammin kuin iOS, mikä on vaatimus nykyaikaiselle ohjelmointikielelle. Muutokset kirjastoihin voidaan sisällyttää App Storen sovelluksen uusimpaan päivitykseen, ja kaikki yksinkertaisesti toimii.,

Dynaamiset kirjastot ole koskaan ollut tuettu iOS, kunnes käynnistää Nopeasti ja iOS 8, vaikka dynaamiset kirjastot on tuettu Mac pitkään aikaan. Dynaamiset kirjastot ovat sovelluksen suoritettavan ulkopuolisia, mutta sisältyvät App Storesta ladattuun app bundleen. Se pienentää sovelluksen alkuperäistä kokoa, koska se ladataan muistiin, koska ulkoinen koodi linkittyy vain käytettynä.

kyky lykätä latausta mobiilisovelluksessa tai sulautetussa sovelluksessa Apple Watchissa parantaa havaittua suorituskykyä käyttäjälle., Tämä on yksi eroavaisuuksista, jotka saavat iOS-ekosysteemin tuntumaan herkemmältä. Apple on keskittynyt lastaus ainoa omaisuus, varat, ja nyt koottu ja linkitetty koodi lennossa. Lennolla tapahtuva lataus lyhentää ensimmäisiä odotusaikoja, kunnes näyttöön todella tarvitaan resurssi.

Dynaamiset kirjastot Swift mahdollistaa ohjelmointikieli muutokset ja parannukset leviävät nopeammin kuin koskaan ennen. Käyttäjien ei tarvitse enää odottaa iOS point-julkaisuja hyötyäkseen mistään suorituskykyä tai luotettavuutta parantavista parannuksista, joita Apple tuo Swiftiin.,

Swift Playgrounds kannustaa interaktiiviseen koodaukseen

Swiftin vasta käyttöön otetut leikkikentät ovat kokeneille kehittäjille siunaus. Leikkipuistot saivat osittain vaikutteita Applen entisen työntekijän Brett Victorin työstä. Leikkikentät avulla ohjelmoijat testata uuden algoritmin tai grafiikka rutiini, sanoa 5-20 riviä koodia, ilman luoda koko iPhone-sovellus.

Apple on lisännyt Inline-koodin suorituksen leikkikentille auttaakseen ohjelmoijia luomaan palan koodia tai kirjoittamaan algoritmin saadessaan palautetta matkan varrella., Tämä palaute loop voi parantaa nopeutta, jolla koodi voidaan kirjoittaa, koska henkinen malli että perinteinen ohjelmoija tarvitsee voidaan korvata tietojen visualisointeja Leikkikentillä. Ohjelmointi on iteratiivinen prosessi, ja mitään paineita, että voidaan vähentää tai käyttää täydentämään luova prosessi tekee ohjelmoijien tuottavuutta ja vapauttaa heidät ratkaisemaan suurempia ongelmia, eikä keskitytä tylsiä yksityiskohtia, että perinteinen kääntäjät ovat saattaneet ohjelmoijat.,

huomaa: kokemukseni aloittelevien ohjelmoijien opettamisesta perusteella leikkikentät eivät ole yhtä tehokkaita aloittelijoille kuin kokeneille ohjelmoijille. Yksinkertaisesti osoittaa, kuinka muuttuja toimii Swift leikkikenttä ei auta aloittelija ymmärtää, että tarvitaan liukuluku muuttuja vs. Kokonaisluku muuttuja. Tarve tulee selväksi, kun näytät sovelluksen, joka muistaa viimeisen vierityspaikan Facebook – uutissyötteessä. Aloittelijoille, ”miksi” kysymykseen voidaan vastata vain toimiva esimerkki: iPhone-sovellus.,

Swift on tulevaisuuteen voit vaikuttaa

objective-C ei ole menossa minnekään, mutta se ei näe niin monia suuria muutoksia, ansiosta käyttöönotto on Nopeaa. Jotkut Swift ominaisuudet todennäköisesti siirtää yli objective-C, mutta objective-C: n perintönä C tarkoittaa, että se voi imeä vain niin paljon.

Swift tarjoaa kehitys yhteisön suora tapa vaikuttaa kieli, jota käytetään luoda sovelluksia, sulautettujen järjestelmien (jos Apple koskaan lisenssit upotettu kehys ja siru kolmansille osapuolille), ja laitteet, kuten Apple Watch.,

Apple on keskittynyt tarjoamaan paras kuluttajien kokemuksia ja rakentaa vain ne toiminnot, katsotaan huomionarvoinen. Swift 1.2 julkaisu Xcode 6.3, Apple on jo vahvistettu tuhansia bugeja raportoitu suosittu Apple Bug Reportteri apuohjelma. Joukkue kehityksen tukeminen ja kehitys Swift on hyvin kiinnostunut siitä, miten kieli voidaan parantaa paremmin tukemaan yhteisön, joka rakentaa sovelluksia ja järjestelmiä käyttäen Swift.,

Swift: enemmän helposti lähestyttävä, monipuolinen kieli

suurin osa muutoksia, jotka mahdollistavat Nopean nousta yli objective-C ovat peräisin pudottamalla legacy kieli, että objective-C oli rakennettu. Apple ei ole siirtymässä pois Cocoa, joka on niiden API-ja koodikirjasto luoda kokemuksia, jotka tuntuvat Apple-esque. Sen sijaan ne tarjoavat täysin varustellun pariteetin ja helpottavat vuorovaikutusta uusien APIs-järjestelmien kanssa, jotka tukevat ominaisuuksia, kuten Force Touch tai Taptic Feedback.

monet perintöpäätökset oli suunniteltu helpottamaan kääntäjän suunnittelua., Swift keskittyy helpottamaan sovelluskehittäjän työtä luopumalla vanhojen koodauskäytäntöjen henkisestä rasituksesta. Kun nykyaikaiset kääntäjät paranevat, lisää tietoa voidaan päätellä vähemmästä koodista.

Swift, ohjelmoijat ovat puoli niin monta koodin tiedostoja, säilyttää, nolla manuaalinen koodin synkronointi, ja paljon vähemmän välimerkkejä väärin, jolloin on enemmän aikaa kirjoittaa laatu riviä koodia., Koodi on nyt itsedokumentoiva Nopeasti lisäämällä valinnainen tyypit: käännettäessä turvallisuus mekanismi paluu arvoa tai ei arvoa, joka on yleinen ongelma asynkroninen toiminta, verkon epäonnistumisia, virheellinen käyttäjä syöttää, tai tietojen validointi virheitä. ARC on yhdistetty nopeasti sekä menettelyllisen C-tyylisen koodin että object-suuntaisen koodin välillä Applen Cocoa Frameworkilla.

Kehittäjät huomaavat, että ne kirjoittaa vähemmän koodia Swift, ja moderni kielen ominaisuudet tukevat heitä pitämään riviä koodia on helpompi lukea., Swift pitää koko Applen ekosysteemin jatkuvasti kehittyvän ohjelmoinnin kärjessä iOS: n ja Swiftin dynaamisen kirjastotuen ansiosta. Avoimen lähdekoodin projektit, kolmannen osapuolen Sdk, ja puitteet, joka yhdistää kodin automaatio, laitteet ja sosiaalipalvelut on helpompi integroida lisäämättä rakentaa kertaa. Swift on melkein yhtä nopeasti kuin C++ joissakin algoritmeja ja uusimman Xcode 6.3 ja Swift 1.2 kohta lisää suorituskykyä optimointeja horisontissa.,

lisää, että leikkikentät ja Swift mahdollistavat uuden tavan ohjelmoida visuaalisella palautteella, joka auttaa algoritmien kehittämistä inline-datavisualisoinneilla. Lyhyempi palautesilmukka ja graafiset kuvaukset tekevät iteratiivisesta koodausprosessista entistä helpomman aloittaa.

Lopulta, Swift on helpommin lähestyttävä monipuolinen ohjelmointikieli, jonka avulla kehittäjät voivat rakentaa sovelluksia, mutta myös kohde sulautettujen järjestelmien, kuten uusi pienempi-teho Apple Watch useita vuosia.,

  • 10 ominaisuudet Apple ’varasti’ Swift ohjelmointikieli
  • 9 asioita, vihaamme noin objective-C
  • Arvostelu: 7 erinomainen mobiili sovellus rakentajat
  • Arvostelu: AppStudio on, kuten Visual Basic for mobile dev
  • Arvostelu: Appery.io paria mobile app builder back-end-palvelut
  • Arvostelu: Alpha Anywhere ässät offline mobiili-sovellukset

Share

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *