Swift vs. Objective-C: 10 grunner til fremtiden favoriserer Swift

programmeringsspråk ikke dø lett, men utviklingen butikker som klamrer seg til falming paradigmer gjøre. Hvis du er utvikler applikasjoner for mobile enheter, og du har ikke undersøkt Swift, ta merk: Swift vil ikke bare erstatte Objective-C, når det gjelder å utvikle apps for Mac, iPhone, iPad, Apple-Klokke, og enheter til å komme, men det vil også erstatte C for embedded programming på Apple-plattformer.,

Takk til flere viktige funksjoner, Swift har potensial til å bli den de-facto programmeringsspråk for å lage engasjerende, responsiv, forbruker-mot programmer for årene som kommer.

Apple ser ut til å ha store mål for Swift. Det har optimalisert kompilatoren for ytelse og språket i utvikling, og den videre viser til Swift er «designet for å skala fra» hello, world «til en hel operativsystem» i Swift dokumentasjon., Mens Apple ikke har oppgitt alle sine mål for språk ennå, lanseringer av Xcode 6, Lekeplasser, og Swift sammen signal Apples hensikt å gjøre app utvikling enklere og mer tilnærmelig enn med noen annen utvikling verktøyet kjede.

Her er 10 grunner til å komme i forkant av spillet ved å begynne å arbeide med Raske nå.

Swift er lettere å lese

Objective-C, lider alle vorter du ville forvente fra et språk som er bygd på C., For å skille mellom søkeord og typer fra C-typer, Objective-C, innført nye søkeord ved å bruke @ – symbolet. Fordi Swift er ikke bygget på C, kan det samle alle søkeord og fjerne en rekke @ symboler foran hvert Mål-C-type eller objekt-relaterte søkeord.

Rask dråper eldre konvensjoner. Dermed trenger du ikke lenger semikolon for å avslutte linjer eller parentes til surround betinget uttrykk inne i if/else-setninger. En annen stor endring er at metoden kaller ikke reir inne i hverandre, noe som resulterer i braketten helvete—bye-bye, ]]., Metode og funksjonskall i Swift bruke bransjestandard komma-separert liste over parametere som står i parenteser. Resultatet er en renere, mer uttrykksfullt språk med en forenklet syntaks og grammatikk.

Swift-kode mer ligner naturlige engelsk, i tillegg til andre moderne populære programmeringsspråk. Dette lesbarhet gjør det enklere for eksisterende programmerere fra JavaScript, Java, Python, C# og C++ til å vedta Swift inn i deres verktøy kjede—i motsetning til den stygge andungen som ble Objective-C.,

Swift er enklere å vedlikeholde

Legacy er det som holder Mål-C-tilbake—språket kan ikke utvikle seg uten C i utvikling. C krever programmerere til å opprettholde to koden filer for å forbedre bygge gang og effektivitet på den kjørbare app skapelse, et krav som bærer over til Objective-C.

Rask drops to-fil kravet. Xcode og LLVM kompilatoren kan finne ut avhengigheter og utføre trinnvis bygger automatisk i Swift 1.2., Som et resultat, repeterende oppgave å skille innholdsfortegnelse (header-fil) fra kroppen (gjennomføring fil) er en ting fra fortiden. Swift kombinerer Objective-C header (.h) og implementering filer (.m) i en enkelt kode-fil (.rask).

Objective-C er to-file system medfører ekstra arbeid på programmerere—og det er arbeid som distraherer programmerere fra det store bildet., I Objective-C, må du synkronisere manuelt metode navn og kommentarer mellom filer, forhåpentligvis ved hjelp av en standard konvensjonen, men dette er ikke garantert mindre team har regler og etiske vurderinger i stedet.

Xcode og LLVM kompilatoren kan gjøre arbeidet bak kulissene for å redusere arbeidsbelastningen på programmerer. Med Raske, programmerere gjøre mindre bokføring og kan bruke mer tid på å lage app logikk. Raske kutt ut standardtekst arbeid og forbedrer kvaliteten på koden, med kommentarer, og funksjoner som støttes.,

Swift er tryggere

Et interessant aspekt i Objective-C, er den måten tips—spesielt null (null) pekere—er håndtert. I Objective-C, ingenting skjer hvis du prøver å kalle en metode med en peker variabel som er lik null (ikke initialisert). Uttrykket eller linje av koden blir en no-drift (ingen-op), og selv om det kan virke gunstig at det ikke krasje, det har vært en stor kilde til feil. En no-op fører til uforutsigbare atferd, som er fiende av programmerere prøver å finne og fikse et tilfeldig krasjer eller slutter uberegnelige oppførsel.,

Valgfritt typer kontroller muligheten for et nil valgfri verdi som er veldig klar i Swift-kode, noe som betyr at det kan generere en kompileringsfeil som du skrive dårlig kode. Dette skaper en kort feedback loop og lar programmerere å kode med hensikt. Problemene kan bli løst som koden er skrevet, noe som reduserer mengden av tid og penger som du vil bruke på å fikse bugs relatert til musepekeren logikk fra Objective-C.,

Tradisjonelt, i Objective-C, hvis en verdi ble returnert fra en metode, det var programmerer ansvar for å dokumentere atferd på pekeren variabel tilbake (med kommentarer og metode-naming conventions). I Swift, valgfri typer og verdi-typer som gjør det uttrykkelig klart i metoden definisjonen hvis verdien eksisterer, eller om det har potensial til å bli valgfritt (som er verdien kan finnes, eller det kan være nil).

for Å gi forutsigbar atferd Rask utløser en runtime krasje hvis en null ekstra variabel som er brukt., Dette krasjet gir konsekvent atferd, som letter på bug-fixing prosessen, fordi det styrker programmerer for å løse problemet med en gang. Swift-runtime-ulykken vil stoppe på linje med kode der en null ekstra variabel som har vært brukt. Dette betyr at feil vil bli løst før eller unngås helt i Swift-kode.

Swift er forenet med memory management

Rask forener språket på en måte som Objective-C, aldri har. Støtte for Automatisk Referanse Telling (ARC) er fullstendig på tvers av det prosessuelle og objektorientert kode stier., I Objective-C, ARC er støttet i Kakao Api-er og objektorientert kode; det er ikke tilgjengelig, men for prosessuelle C-kode og Apier som Core Grafikk. Dette betyr at det blir programmerer ansvar for å håndtere memory management når du arbeider med Core Grafikk Api-er og andre lavt nivå Api tilgjengelig på iOS. Den enorme minne lekkasjer som en programmerer kan ha i Objective-C er umulig i Swift.

En programmerer bør ikke trenger å tenke på minne for hver digital object han eller hun skaper., Fordi ARC håndterer alle minne ledelsen på kompilere tid, hjernekraften som ville ha gått mot memory management kan i stedet være fokusert på kjernen app logikk og nye funksjoner. Fordi ARC i Swift fungerer på tvers av både prosessuelle og objektorientert kode, det krever ikke mer åndelig sammenheng brytere for programmerere, selv når de skriver kode som berører lavere nivå Api—et problem med den gjeldende versjonen av Objective-C.

Automatisk og høy ytelse memory management er et problem som har blitt løst, og Apple har bevist at det kan øke produktiviteten., Den andre siden effekten er at både Objective-C og Swift ikke lider av en Garbage Collector kjører rydde opp for ubrukt minne, som Java, Gå, eller C#. Dette er en viktig faktor for hvilken som helst programmeringsspråk som vil bli brukt for responsive grafikk og brukerundersøkelser, spesielt på en taktil enhet som iPhone, Apple Se, eller iPad (der lag er frustrerende og gjør brukerne oppfatter en app er ødelagt).

Swift krever mindre kode

Swift reduserer mengden av kode som er nødvendig for repeterende utsagn og streng manipulasjon., I Objective-C, arbeider med tekst-strenger er svært detaljert og krever mange trinn å kombinere to biter av informasjon. Swift vedtar moderne programmeringsspråk funksjoner som å legge sammen to strenger med et » + » – operatoren, som mangler i Objective-C. Støtte for å kombinere tegn og strenger som dette er grunnleggende for alle programmeringsspråk som viser tekst til en bruker på en skjerm.

skriv inn system i Swift reduserer kompleksiteten av koden uttalelser — som kompilatoren kan finne ut typer., Som et eksempel, Objective-C, krever programmerere til å huske spesielle string tokens (%s, %d, %@) og gi en komma-separert liste av variabler for å erstatte hvert token. Swift støtter string interpolering, noe som eliminerer behovet for å huske symboler og lar programmerere å sette inn variabler direkte inline til en bruker-mot strengen, for eksempel en etikett eller knappen tittel. Type inferering system og streng interpolering redusere en felles kilde til krasj som er vanlig i Objective-C.,

Med Objective-C, rote opp for eller bruker feil string token fører til at programmet krasjet. Her, Swift igjen avlaster deg fra bokføring arbeid, førte til mindre kode å skrive (koden er nå mindre feil utsatt) på grunn av sin innebygde støtte for å manipulere tekst, lyd og data.

Swift er raskere

Slippe legacy C konvensjoner i stor grad har forbedret Swift under panseret. Milepæler for Swift-kode ytelse fortsette å peke til Apple ‘ s engasjement for å forbedre hastigheten som Swift kan kjøre app logikk.,

Ifølge for å Primate Labs, skaperne av den populære GeekBench ytelse verktøy, Swift ble nærmer seg egenskapene til C++ for prosesserings-bundet oppgaver i desember 2014 ved hjelp av Mandelbrot-algoritmen.

I februar 2015, Primate Labs oppdaget at Xcode 6.3 Beta forbedret Swift ytelse av GEMM algoritme—et minne-bundet-algoritmen med sekvensiell tilgang av store matriser—med en faktor på 1.4. Den første FFT implementering—en minne-bundet-algoritmen med tilfeldig tilgang av store matriser—hadde en 2.6-brett forbedring.,

Ytterligere forbedringer ble observert i Swift ved å bruke beste praksis, noe som resulterer i en 8.5-brett løft for FFT-algoritmen ytelse (slik at C++ med bare en 1.1-time ytelse gevinst). Ekstrautstyr også aktivert Snar til å utkonkurrere C++ for Mandelbrot-algoritmen med en faktor på en ren 1.03.

Swift er nesten på linje med C++ for både FFT og Mandelbrot algoritmer., I henhold til Primate Labs, den GEMM algoritme resultater tyder på Swift-kompilatoren kan ikke vectorize kode i C++ kompilatoren kan — en enkel ytelse gevinst som kan oppnås i den neste versjonen av Swift.

Færre navn kollisjoner med åpen kildekode-prosjekter

Ett problem som har plaget Objective-C kode er dens mangel på formell støtte for navnerom, som var C++’s løsning for å kode filnavn kollisjoner. Når dette navnet kollisjon skjer i Objective-C, det er et linker feil, og appen kan ikke kjøre. Løsningene finnes, men de har potensielle fallgruver., Felles konvensjonen er å bruke en to – eller tre-brev prefikser for å skille mellom Mål-C-kode som er skrevet, sier du, av Facebook versus din egen kode.

Swift gir implisitt navnerom som tillater den samme koden fil å eksistere på tvers av flere prosjekter uten å forårsake en bygge-svikt og krever navn som NSString (Neste Trinn — Steve Jobs’ selskap etter å ha blitt sparket fra Apple) eller CGPoint (Core Grafikk). Til slutt, denne funksjonen i Swift holder programmerere mer produktiv og betyr at de ikke trenger å gjøre regnskapet som finnes i Objective-C., Du kan se Swift innflytelse med enkle navn som Matrise, Ordliste, og String i stedet for NSArray, NSDictionary, og NSString, som ble født ut av mangel på navnerom i Objective-C.

Med Swift, navnerom er basert på mål-som en kode filen tilhører. Dette betyr programmerere kan skille mellom klasser eller verdier ved hjelp av navnerommet identifikator. Denne endringen i Swift er stort. Det blir enklere å innlemme åpen kildekode-prosjekter, rammeverk, og biblioteker inn koden din., Den navnerom aktivere forskjellige programvare-selskaper for å skape den samme koden filnavn uten å bekymre deg for kollisjoner ved å integrere open source prosjekter. Nå er både Facebook og Apple kan bruke et objekt kode fil som heter FlyingCar.swift uten noen feil eller bygge feil.

Swift støtter dynamiske biblioteker

Den største endringen i Swift som ikke har fått nok oppmerksomhet er overgangen fra statisk bibliotek, som er oppdatert på viktige punkt utgivelser (iOS 8, iOS 7 og så videre), for å dynamiske biblioteker., Dynamiske biblioteker er kjørbar biter av kode som kan være knyttet til en app. Denne funksjonen gjør gjeldende Swift apps til kobling mot nyere versjoner av Swift språk som den utvikler seg over tid.

utvikleren hevder app sammen med bibliotekene, som begge er digitalt signert med utviklingen sertifikat for å sikre integritet (hei, NSA). Dette betyr Swift kan utvikle seg raskere enn iOS, som er en forutsetning for et moderne programmeringsspråk. Endringer til bibliotekene kan alle bli inkludert i den nyeste oppdateringen av en app på App Store, og alt fungerer ganske enkelt.,

Dynamiske biblioteker har aldri vært støttet på iOS før lanseringen av Swift og iOS 8, selv om dynamiske biblioteker har vært støttet på Mac for en svært lang tid. Dynamiske biblioteker som er eksterne til app kjørbar, men er inkludert i appen bunt lastet ned fra App Store. Det reduserer den opprinnelige størrelsen av en app som den er lastet inn i minnet, siden den eksterne koden er knyttet bare når de brukes.

evnen til å utsette legge i en mobil app eller en innebygd app på Apple-Klokke vil forbedre den opplevde ytelsen til brukeren., Dette er en av de forskjeller som gjør iOS-økosystem føles mer responsiv. Apple har vært fokusert på å legge bare eiendeler, ressurser, og nå samlet og knyttet kode på fly. On-The-fly legge reduserer første ventetid, til en ressurs er faktisk nødvendig å vise på skjermen.

Dynamiske biblioteker i Swift gjør det mulig for programmeringsspråk endringer og forbedringer for å formere seg raskere enn noen gang før. Brukere trenger ikke lenger å vente for iOS punkt utgivelser for å dra nytte av enhver ytelse eller pålitelighet forbedringer Apple introduserer i Swift.,

Swift Lekeplasser oppfordrer interaktive koding

Swift er nylig innført Lekeplasser er en velsignelse for erfarne utviklere. Lekeplasser var delvis inspirert av arbeidet til tidligere Apple-ansatt Brett Victor. Lekeplasser aktivere programmerere til å teste ut en ny algoritme eller grafikk rutine, sier 5 til 20 linjer med kode, uten å måtte lage en hel iPhone-app.

Apple har lagt inline kjøring av kode for å Lekeplasser for å hjelpe programmerere lage en klump av kode eller skrive en algoritme mens du får tilbakemelding underveis., Dette feedback loop kan forbedre hastigheten koden kan skrives fordi den mentale modellen som en tradisjonell programmerer behov kan bli erstattet med data for effekter på Lekeplasser. Programmering er en iterativ prosess, og noen belastning som kan bli redusert eller brukt til å utfylle den kreative prosessen vil gjøre programmerere mer produktiv og sette dem fri til å løse større problemer, heller enn å fokusere på kjedelig, detaljer som tradisjonelle samlerne har pålagt programmerere.,

Merk: Fra min erfaring i undervisning uerfarne programmerere, Lekeplasser er ikke så kraftig for nybegynnere som de er for erfarne programmerere. Rett og slett som viser hvordan en variabel fungerer i Swift lekeplass ikke hjelpe en nybegynner å forstå behovet for en » Floating point variabel versus en heltallsvariabel. Behovet blir åpenbart når du viser en app som kan huske siste bla posisjon i Facebook nyhetsfeed. For nybegynnere, «hvorfor» spørsmålet kan bare besvares med en fungerende eksempel: en iPhone-app.,

Swift er en fremtidig du kan påvirke

Objective-C, er ikke å gå hvor som helst, men det kommer ikke til å se så mange store endringer, takket være innføringen av Swift. Noen Raske funksjoner vil trolig migrere over til Objective-C, men Objective-C ‘ s legacy i C betyr at den kan absorbere bare så og så mye.

Swift gir den utvikling samfunnet er en direkte måte å påvirke et språk som vil bli brukt til å lage apps, embedded systemer (hvis Apple noensinne lisenser en innebygd rammeverk og chip for tredjeparter), og enheter som Apple-Klokke.,

Apple er fokusert på å levere den beste kundeopplevelsen og bygger bare de funksjonene anses verdig oppmerksomhet. Med den Raske 1.2 utgivelse i Xcode 6.3, Apple har allerede løst tusenvis av bugs rapportert med den populære Apple-Bug Reporter verktøyet. Teamet støtte utviklingen og utviklingen av Swift er veldig interessert i hvordan språket kan forbedres for å gi bedre støtte til utvikling av samfunn som bygger applikasjoner og systemer ved bruk av Swift.,

Swift: Jo mer imøtekommende, fullverdig språk

hoveddelen av endringene som tillater Rask til å stige over Objective-C, stammer fra å slippe det gamle språket Objective-C, ble bygget på. Apple er ikke beveger seg bort fra Kakao, som er deres API og kode bibliotek for å skape opplevelser som føler Apple-esque. I stedet, de gir fullverdig paritet og gjør det enklere å samhandle med nye Api-er som støtter funksjoner som Force Touch eller Taptic Tilbakemeldinger.

Mange eldre avgjørelser ble laget for å gjøre kompilatoren design lettere., Swift er å fokusere på å lage app-utvikler er jobben enklere ved subsidiary & affiliated den mentale belastningen av eldre koding praksis. Som moderne kompilatorer bedre, mer informasjon kan utledes fra mindre kode.

Med Swift, programmerere har halvparten så mange koden filer for å opprettholde, null manuell kode synkronisering, og langt mindre tegnsetting å feilstaver—fører til mer tid brukt på å skrive kvalitet linjer med kode., Koden er nå selv-å dokumentere i Swift med tillegg av ekstrautstyr typer: en compile-time sikkerhetsmekanisme for å returnere en verdi eller ingen verdi, som er et vanlig problem med asynkrone operasjoner, nettverk feil, ugyldige inndata fra brukeren, eller data validering feil. ARC er samlet i Swift mellom både prosessuelle C-stil-koden, samt objekt-orientert koden ved hjelp av Apples Cocoa-rammeverket.

Utviklere vil finne at de skriver mindre kode i Swift, og moderne språk har støtte dem i å holde linjene i koden mer lesbar., Swift vil holde hele Apple-økosystemet i forkant av programmering som det fortsetter å utvikle seg, takket være dynamisk bibliotek støtte i iOS og Swift. Åpen kildekode-prosjekter, tredje-part Sdker, og rammeverk som integrerer med hjemme automasjon, enheter og sosiale tjenester vil være enklere å integrere uten å øke bygge ganger. Swift er nesten like rask som C++ i noen algoritmer og den nyeste utgaven av Xcode 6.3 og Swift punkt 1.2 til ekstra ytelse optimaliseringer på horisonten.,

Legg til at det faktum at Lekeplasser og Swift aktivere en ny måte å programmere med visuelle tilbakemeldinger som bidrar til utvikling av algoritmer ved hjelp av innebygd data visualiseringer. En kortere feedback loop og grafiske beskrivelser gjøre iterativ koding prosessen enda enklere å starte.

til Slutt, Swift er en mer tilnærmelig fullverdig programmeringsspråk som vil tillate utviklere å ikke bare bygge apps, men også mål embedded systemer, som den nye lavere strømforbruk Apple Se i mange år fremover.,

  • 10 har Apple ‘stjal’ for Swift programming language
  • 9 ting vi hater om Objective-C
  • Vurdering: 7 utmerket mobil app utbyggere
  • Vurdering: AppStudio er som Visual Basic for mobile dev
  • Vurdering: Appery.io par mobile app builder med back-end-tjenester
  • Vurdering: Alfa hvor som Helst ess frakoblet mobile apps

Share

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *