S .ift vs. Objective-C: 10 Årsager fremtiden favoriserer s .ift

programmeringssprog dør ikke let, men udviklingsbutikker, der klamrer sig til fading paradigmer gør. Hvis du udvikler af apps til mobile enheder og du har ikke undersøgt Swift, tage til efterretning: Swift vil ikke kun erstatte Objective-C, når det kommer til at udvikle apps til Mac, iPhone, iPad, Apple-Ur, og enheder til at komme, men det vil også erstatte C til embedded programmering på Apple-platforme.,

takket være flere nøglefunktioner har s .ift potentialet til at blive de-facto programmeringssprog til at skabe fordybende, lydhøre, forbrugervendte applikationer i de kommende år.

Apple ser ud til at have store mål for S .ift. Det har optimeret compileren til ydeevne og sproget til udvikling, og det henviser til, at s .ift er “designet til at skalere fra ‘hej, verden’ til et helt operativsystem” i s .ifts dokumentation., Mens Apple endnu ikke har angivet alle sine mål for sproget, lancerer launcode 6, Playgrounds og S .ift sammen Apples hensigt om at gøre appudvikling lettere og mere tilgængelig end med nogen anden udviklingsværktøjskæde.

Her er 10 grunde til at komme videre i spillet ved at begynde at arbejde med Swift nu.

s Objectiveift er lettere at læse

Objective-C lider alle de vorter, du ville forvente af et sprog bygget på C., For at differentiere søgeord og typer fra C-typer introducerede Objective-C nye søgeord ved hjælp af @ – symbolet. Da S .ift ikke er bygget på C, kan det forene alle søgeord og fjerne de mange @ symboler foran hver Objective-C type eller objektrelateret søgeord.

s .ift dråber legacy konventioner. Således behøver du ikke længere semikoloner for at afslutte linjer eller parentes for at omringe betingede udtryk inde i hvis/ellers udsagn. En anden stor ændring er, at metodekald ikke hekker inde i hinanden, hvilket resulterer i beslag hell—bye-bye, ]]., Metode – og funktionsopkald I S .ift bruger industristandarden kommasepareret liste over parametre inden for parenteser. Resultatet er et renere, mere ekspressivt sprog med en forenklet syntaks og grammatik.

s .ift-kode ligner mere naturligt engelsk ud over andre moderne populære programmeringssprog. Dette læsbarhed gør det lettere for eksisterende programmører fra JavaScript, Java, Python, C# og C++ til at træffe Hurtige i deres værktøj kæde—i modsætning til den grimme ælling, der blev Objective-C.,

s .ift er lettere at vedligeholde

Legacy er det, der holder Objective-C tilbage—sproget Kan ikke udvikle sig uden C udvikler sig. C kræver, at programmerere opretholder to kodefiler for at forbedre byggetiden og effektiviteten af den eksekverbare appoprettelse, et krav, der overføres til Objective-C.

S .ift dråber kravet om to filer. Xcode og LLVM compiler kan finde ud af afhængigheder og udføre trinvise bygger automatisk i S .ift 1.2., Som et resultat er den gentagne opgave at adskille indholdsfortegnelsen (headerfil) fra kroppen (implementeringsfil) en saga blot. S .ift kombinerer Objective-C header (.h) og gennemførelsesfiler (.m) i en enkelt kode fil (.Hurtig).

Objective-C ‘ S to-filsystem pålægger programmerere yderligere arbejde—og det er arbejde, der distraherer programmerere fra det større billede., I Objective-C skal du manuelt synkronisere metodenavne og kommentarer mellem filer, forhåbentlig ved hjælp af en standardkonvention, men dette er ikke garanteret, medmindre holdet har regler og kodeanmeldelser på plads.

Xcode og LLVM compiler kan arbejde bag kulisserne for at reducere arbejdsbyrden på programmereren. Med S .ift foretager programmerere mindre bogføring og kan bruge mere tid på at oprette applogik. S .ift skærer standardpladearbejde ud og forbedrer kvaliteten af kode, kommentarer og funktioner, der understøttes.,

Swift er sikrere

Et interessant aspekt af Objective-C er den måde, hvorpå henvisninger—især nul (null) henvisninger—håndteres. I Objective-C sker der intet, hvis du prøver at kalde en metode med en markørvariabel, der er nul (uninitialiseret). Udtrykket eller kodelinjen bliver en no-operation (no-op), og selvom det kan virke gavnligt, at det ikke går ned, har det været en enorm kilde til fejl. En no-op fører til uforudsigelig adfærd, som er fjenden for programmører, der forsøger at finde og rette et tilfældigt nedbrud eller stoppe uberegnelig adfærd.,

valgfrie typer gør muligheden for en nul valgfri værdi meget klar i S .ift-kode, hvilket betyder, at det kan generere en compilerfejl, når du skriver dårlig kode. Dette skaber en kort feedback loop og giver programmører mulighed for at kode med hensigt. Problemer kan rettes, når kode er skrevet, hvilket i høj grad reducerer mængden af tid og penge, du vil bruge på at rette fejl relateret til pointerlogik fra Objective-C.,

traditionelt i Objective-C, hvis en værdi blev returneret fra en metode, var det programmørens ansvar at dokumentere opførslen af den returnerede markørvariabel (ved hjælp af kommentarer og metodenavnskonventioner). I S .ift gør de valgfrie typer og værdityper det eksplicit klart i metodedefinitionen, om værdien findes, eller om den har potentialet til at være valgfri (dvs.værdien kan eksistere, eller den kan være nul).

for at give forudsigelig adfærd udløser s .ift et runtime-nedbrud, hvis der anvendes en nul valgfri variabel., Dette nedbrud giver konsekvent adfærd, hvilket letter fejlfindingsprocessen, fordi det tvinger programmereren til at løse problemet med det samme. S .ift runtime crash stopper på kodelinjen, hvor der er brugt en nul valgfri variabel. Dette betyder, at fejlen vil blive rettet før eller helt undgås i S .ift-kode.

s .ift er forenet med hukommelsesstyring

S .ift forener sproget på en måde, som Objective-C aldrig har. Støtten til automatisk Referencetælling (ARC) er komplet på tværs af de proceduremæssige og objektorienterede kodeveje., I Objective-C understøttes ARC inden for Cocoa API ‘er og objektorienteret kode; det er dog ikke tilgængeligt for proceduremæssig C-kode og API’ er som Kernegrafik. Det betyder, at det bliver programmørens ansvar at håndtere hukommelsesstyring, når man arbejder med Core Graphics API ‘er og andre lavniveau-API’ er, der er tilgængelige på iOS. De enorme hukommelseslækager, som en programmør kan have i Objective – C, er umulige i S .ift.

en programmør skal ikke tænke på hukommelse for hvert digitalt objekt, han eller hun opretter., Fordi ARC håndterer al hukommelsesstyring på kompileringstidspunktet, kan hjernestyrken, der ville være gået mod hukommelsesstyring, i stedet fokusere på core app-logik og nye funktioner. Fordi ARC i Swift arbejder på tværs af såvel de processuelle og objekt-orienteret kode, det kræver ikke mere mental forbindelse switches for programmører, selvom de skrive kode, der rører lavere niveau Api ‘ er—et problem med den nuværende version af Objective-C.

Automatisk og high-performance memory management er et problem som er blevet løst, og Apple har bevist, at det kan øge produktiviteten., Den anden bivirkning er, at både Objective-C og Swift ikke lider af en Garbage Collector kører rengøring op for, at ubrugt hukommelse, som Java, Gå, eller C#. Dette er en vigtig faktor for ethvert programmeringssprog, der bliver brugt for lydhør grafik og bruger-input, især på en taktil enhed som iPhone, Apple Ur, eller iPad (hvor lag ‘ en er frustrerende og gør brugerne opfatter, at en app er brudt).

s .ift kræver mindre kode

S .ift reducerer mængden af kode, der kræves til gentagne udsagn og strengmanipulation., I Objective-C er arbejdet med tekststrenge meget verbose og kræver mange trin for at kombinere to stykker information. Hurtig vedtager moderne programmeringssprog, der har lyst til at tilføje to strenge sammen med et “+” operatør, som er savnet i Objective-C. Støtte for kombination af tegn og strenge som dette er grundlæggende for ethvert programmeringssprog, der viser tekst for en bruger på en skærm.

typesystemet I S .ift reducerer kompleksiteten af kodeopgørelser — da kompilatoren kan finde ud af typer., Som et eksempel kræver Objective – C programmører at huske specielle string-tokens (%s, %d, %@) og give en kommasepareret liste over variabler, der skal erstatte hvert token. S .ift understøtter strenginterpolation, hvilket eliminerer behovet for at huske tokens og giver programmører mulighed for at indsætte variabler direkte inline til en brugervendt streng, såsom en etiket eller knaptitel. Typen inferencing system og streng interpolation afbøde en fælles kilde til nedbrud, der er almindelige i Objective-C.,

med Objective-C, messing op ordren eller bruge den forkerte streng token får app til at gå ned. Her, Hurtig igen frigør dig fra bogholderi arbejde, oversætte til mindre kode til at skrive (kode, der er nu mindre risiko for fejl) på grund af dens inline støtte til at manipulere tekst og data.

s .ift er hurtigere

at droppe legacy C-konventioner er meget forbedret s .ift under hætten. Benchmarks for S .ift-kodens ydeevne peger fortsat på Apples dedikation til at forbedre den hastighed, hvormed s .ift kan køre applogik.,

ifølge Primate Labs, skaberne af det populære GeekBench performance tool, nærmede s .ift præstationsegenskaberne for C++ til computerbundne opgaver i December 2014 ved hjælp af Mandelbrot-algoritmen.

I februar 2015, Primate Labs har opdaget, at Xcode 6.3 Beta forbedret Hurtig præstation af GEMM algoritme—en hukommelse-bound algoritme med sekventiel adgang af store arrays—med en faktor på 1,4. Den oprindelige FFT-implementering-en hukommelsesbundet algoritme med tilfældig adgang til store arrays—havde en 2, 6 gange ydelsesforbedring.,

Yderligere forbedringer blev observeret i Swift ved at anvende bedste praksis, hvilket resulterer i en 8,5-fold boost for FFT algoritme resultater (forlader C++ med kun en 1.1-time performance gain). Forbedringerne gjorde det også muligt for S .ift at overgå C++ for Mandelbrot-algoritmen med en faktor på kun 1.03.

s .ift er næsten på niveau med C++ for både FFT og Mandelbrot algoritmer., Ifølge Primate Labs, GEMM algoritme resultater tyder på, Swift-kompileren kan ikke vectorize kode i C eller C++ compiler — en nem ydeevne gevinst, der kunne opnås i den næste version af Swift.

Færre navn kollisioner med open source-projekter

Et problem, der har plaget Objective-C kode, er dens mangel på en formel støtte til navnerum, som blev C++’s løsning på at kode filnavn kollisioner. Når dette navn kollision sker i Objective-C, det er en linker fejl, og den app kan ikke køre. Løsninger findes, men de har potentielle faldgruber., Den fælles konvention er at bruge en to-eller tre-bogstav præfikser til at differentiere Objective – C-kode, der er skrevet, sige, af Facebook versus din egen kode.

Swift giver implicit navnerum, der giver den samme kode filen eksisterer på tværs af flere projekter, uden at forårsage en bygge fejl og kræve, at navne som NSString (Næste Trin — Steve Jobs’ virksomhed, efter at være blevet fyret fra Apple) eller CGPoint (Core-Grafik). I sidste ende holder denne funktion i S C.ift programmører mere produktive og betyder, at de ikke behøver at udføre den bogføring, der findes i Objective-C., Du kan se Swift ‘ s indflydelse med enkle navne som Array, Ordbog, og Strengen i stedet for NSArray, NSDictionary, og NSString, som blev født ud af den mangel på navnerum i Objective-C.

Med Hurtig, navnerum er baseret på det mål, at en kode fil tilhører. Dette betyder, at programmerere kan differentiere klasser eller værdier ved hjælp af navneområdeidentifikatoren. Denne ændring i S .ift er enorm. Det letter i høj grad inkorporering af open source-projekter, rammer og biblioteker i din kode., Navnerummet gør det muligt for forskellige soft .arevirksomheder at oprette de samme kodefilnavne uden at bekymre sig om kollisioner, når de integrerer open source-projekter. Nu både Facebook og Apple kan bruge et objekt kode fil kaldet FlyingCar.s .ift uden fejl eller bygge fejl.

Swift understøtter dynamiske biblioteker

Den største ændring i Swift, der ikke har fået nok opmærksomhed, er skiftet fra statiske biblioteker, som er opdateret på vigtige punkt udgivelser (iOS 8, iOS 7, og så videre), at dynamiske biblioteker., Dynamiske biblioteker er eksekverbare bidder af kode, der kan knyttes til en app. Denne funktion gør det muligt for nuværende s .ift-apps at linke mod nyere versioner af S .ift-sproget, når det udvikler sig over tid.

udvikleren sender appen sammen med bibliotekerne, som begge er digitalt underskrevet med udviklingscertifikatet for at sikre integritet (Hej, NSA). Dette betyder, at s .ift kan udvikle sig hurtigere end iOS, hvilket er et krav til et moderne programmeringssprog. Ændringer i bibliotekerne kan alle inkluderes i den seneste opdatering af en app i App Store, og alt fungerer simpelthen.,

dynamiske biblioteker er aldrig blevet understøttet på iOS før lanceringen af S .ift og iOS 8, selvom dynamiske biblioteker er blevet understøttet på Mac i meget lang tid. Dynamiske biblioteker er eksterne til app eksekverbare, men er inkluderet i app bundt do .nloadet fra App Store. Det reducerer den oprindelige størrelse på en app, da den indlæses i hukommelsen, da den eksterne kode kun er knyttet, når den bruges.

muligheden for at udskyde indlæsning i en mobilapp eller en indlejret app på Apple Watchatch forbedrer den opfattede ydelse for brugeren., Dette er en af de sondringer, der får iOS-økosystemet til at føle sig mere lydhør. Apple har været fokuseret på at indlæse kun aktiver, ressourcer, og nu kompileret og knyttet kode på flue. On-the-fly-indlæsningen reducerer de indledende ventetider, indtil en ressource faktisk er nødvendig for at blive vist på skærmen.

dynamiske biblioteker i S .ift gør det muligt for ændringer og forbedringer af programmeringssprog at udbrede sig hurtigere end nogensinde før. Brugere behøver ikke længere at vente på, at iOS-punktopdateringer drager fordel af forbedringer af ydeevne eller pålidelighed, som Apple introducerer I S .ift.,

s .ift Playgrounds opfordrer til interaktiv kodning

S .ifts nyligt introducerede Playgrounds er en velsignelse for erfarne udviklere. Legepladserne blev delvist inspireret af arbejdet fra den tidligere Apple-medarbejder Brett Victor. Legepladser gør det muligt for programmerere at teste en ny algoritme eller grafikrutine, siger 5 til 20 linjer kode, uden at skulle oprette en hel iphone-app.

Apple har tilføjet inline-kodeudførelse til Playgrounds for at hjælpe programmerere med at oprette en del kode eller skrive en algoritme, mens de får feedback undervejs., Denne feedbacksløjfe kan forbedre hastigheden, hvormed kode kan skrives, fordi den mentale model, som en traditionel programmør har brug for, kan erstattes med datavisualiseringer på legepladser. Programmering er en iterativ proces, og enhver stamme, der kan blive reduceret eller anvendes til at supplere den kreative proces vil gøre programmører mere produktive og give dem mulighed for at løse større problemer, snarere end at fokusere på kedelige detaljer, som traditionelle oversættere, der har pålagt programmører.,

Bemærk: fra min erfaring med at undervise nybegyndere programmører, legepladser er ikke så magtfulde for begyndere, som de er for erfarne programmører. Bare det at vise, hvordan en variabel fungerer på S .ift playground, hjælper ikke en nybegynder med at forstå behovet for en flydende punktvariabel versus en Heltalsvariabel. Behovet bliver tydeligt, når du viser en app, der kan huske din sidste rulleposition i Facebook ne .s feed. For begyndere kan spørgsmålet “hvorfor” kun besvares med et fungerende eksempel: en iPhone-app.,

Swift er en fremtid du kan påvirke

Objective-C er ikke at gå nogen steder, men det vil ikke se så mange store ændringer, takket være indførelsen af Swift. Nogle s .ift-funktioner vil sandsynligvis migrere til Objective-C, men Objective-C ‘ s arv i C betyder, at den kun kan absorbere så meget.

Swift giver den en direkte måde at påvirke et sprog, der skal bruges til at skabe apps, indlejrede systemer (hvis Apple nogensinde licenser en integreret ramme og chip til tredje partier), og enheder som Apple Ur.,

Apple er fokuseret på at give den bedste forbrugeroplevelse og bygger kun de funktioner, der anses for værdige opmærksomhed. Med S .ift 1.2-udgivelsen i 6.3code 6.3 har Apple allerede rettet tusindvis af fejl rapporteret med det populære Apple Bug Reporter-værktøj. Holdet, der støtter udvikling og udviklingen af Swift er meget interesseret i, hvordan det sprog, der kan forbedres for bedre at støtte udviklingen samfund, der bygger apps og systemer, der anvender Swift.,

Swift: Den mere imødekommende, full-featured sprog

størstedelen af de ændringer, der tillader Hurtig til at stige over Objective-C stammer fra, at en sænkelse af den ældre sprog som Objective-C blev bygget på. Apple bevæger sig ikke væk fra Cocoa, som er deres API og kodebibliotek til at skabe de oplevelser, der føles Apple-es .ue. I stedet leverer de komplet paritet og gør det lettere at interagere med nye API ‘ er, der understøtter funktioner som Force Touch eller Taptic Feedback.

mange gamle beslutninger blev designet til at gøre compiler design lettere., S .ift fokuserer på at gøre appudviklerens job lettere ved at sprænge den mentale belastning af ældre kodningspraksis. Efterhånden som moderne kompilatorer forbedres, kan der udledes mere information fra mindre kode.

med S .ift har programmerere halvt så mange kodefiler at vedligeholde, nul manuel kodesynkronisering og langt mindre tegnsætning til mistype—hvilket fører til mere tid til at skrive kvalitetslinjer med kode., Kode er nu selvdokumenterende I S .ift med tilføjelsen af valgfrie typer: en kompileringstidssikkerhedsmekanisme til returnering af en værdi eller ingen værdi, hvilket er et almindeligt problem med asynkrone operationer, netværksfejl, ugyldig brugerinput eller datavalideringsfejl. ARC er samlet i S .ift mellem både proceduremæssig C-stil kode, samt objektorienteret kode ved hjælp af Apples Cocoa ramme.

udviklere vil opdage, at de skriver mindre kode i S .ift, og moderne sprogfunktioner understøtter dem med at holde kodelinjer mere læsbare., Swift vil holde hele Apple økosystem på forkant af teknologi, som det fortsætter med at udvikle sig, takket være dynamisk bibliotek støtte i iOS og Hurtig. Open source-projekter, tredjeparts SDK ‘ er og rammer, der integreres med hjemmeautomatisering, enheder og Sociale tjenester, vil være lettere at integrere uden at øge byggetiderne. Swift er næsten lige så hurtigt som C++ i nogle algoritmer, og den seneste udgave af Xcode 6.3 og Swift 1.2 pege på yderligere optimering af ydeevnen i horisonten.,

Føj til det faktum, at Playgrounds og S .ift muliggør en ny måde at programmere med visuel feedback, der hjælper udviklingen af algoritmer ved hjælp af inline datavisualiseringer. En kortere tilbagekoblingssløjfe og grafiske beskrivelser gør den iterative kodningsproces endnu lettere at starte.

i sidste ende er S .ift et mere tilgængeligt komplet programmeringssprog, der giver udviklere mulighed for ikke kun at opbygge apps, men også målrette indlejrede systemer som den nye Apple Watchatch med lavere effekt i mange år fremover.,

  • 10 funktioner Apple ‘stjal’ til Hurtig programmering sprog
  • 9 ting vi hader ved Objective-C
  • Bedømmelse: 7 gode mobile app bygherrer
  • Revision: AppStudio er som Visual Basic for mobil-dev
  • Revision: Appery.io par mobile app builder med back-end-tjenester
  • Revision: Alpha Overalt esser offline mobile apps

Share

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *