programmeringsspråk dör inte lätt, men utvecklingsbutiker som klamrar sig fast vid blekande paradigmer gör. Om du utvecklar appar för Mobila enheter och du inte har undersökt Swift, notera: Swift kommer inte bara att ersätta Objective-C när det gäller att utveckla appar för Mac, iPhone, iPad, Apple Watch och enheter som kommer, men det kommer också att ersätta C för inbäddad programmering på Apple-plattformar.,
Tack vare flera viktiga funktioner, Swift har potential att bli de-facto programmeringsspråk för att skapa uppslukande, lyhörd, konsument inför applikationer för kommande år.
Apple verkar ha stora mål för Swift. Den har optimerat kompilatorn för prestanda och språk för utveckling, och det anspelar på att Swift är ”utformad för att skala från” hej, värld ”till ett helt operativsystem” i Swifts dokumentation., Medan Apple inte har sagt alla sina mål för språket ännu, lanserar Xcode 6, lekplatser och Swift together signal Apples avsikt att göra apputveckling enklare och mer lättillgänglig än med någon annan utvecklingsverktygskedja.
här är 10 Skäl att komma före spelet genom att börja arbeta med Swift nu.
Swift är lättare att läsa
Objective-C lider alla vårtor du förväntar dig av ett språk byggt på C., För att skilja nyckelord och typer från C-typer introducerade Objective-C nya sökord med @ – symbolen. Eftersom Swift inte är byggt på C kan det förena alla sökord och ta bort de många @ -symbolerna framför varje mål-C-typ eller objektrelaterat sökord.
Swift drops legacy conventions. Således behöver du inte längre semikoloner för att avsluta linjer eller parentes för att omge villkorliga uttryck inuti if/else-uttalanden. En annan stor förändring är att metodanrop inte bo inuti varandra vilket resulterar i fäste hell—bye-bye, ]]
., Metod – och funktionsanrop i Swift använd branschstandard kommaseparerad lista över parametrar inom parentes. Resultatet är ett renare, mer uttrycksfullt språk med en förenklad syntax och grammatik.
Swift-koden liknar närmare naturlig engelska, förutom andra moderna populära programmeringsspråk. Denna läsbarhet gör det lättare för befintliga programmerare från JavaScript, Java, Python, C# och C++ att anta Swift i sin verktygskedja—till skillnad från den fula ankungen som var objektiv-C.,
Swift är lättare att underhålla
Legacy är vad som håller Objective-C tillbaka—språket Kan inte utvecklas utan C utvecklas. C kräver programmerare att upprätthålla två kodfiler för att förbättra byggtiden och effektiviteten i den körbara app skapande, ett krav som bär över till Objective-C.
Swift droppar två-fil kravet. Xcode och LLVM kompilatorn kan räkna ut beroenden och utföra inkrementella bygger automatiskt i Swift 1.2., Som ett resultat är den repetitiva uppgiften att separera innehållsförteckningen (rubrikfilen) från kroppen (implementeringsfilen) en sak av det förflutna. Swift kombinerar mål – C-huvudet (.h) och genomförandefiler (.m) i en enda kodfil (.Snabb).
Objective-C: s tvåfilssystem innebär ytterligare arbete på programmerare-och det är arbete som distraherar programmerare från den större bilden., I mål – C måste du manuellt synkronisera metodnamn och kommentarer mellan filer, förhoppningsvis med hjälp av en standardkonvention, men det är inte garanterat om laget har regler och kodrecensioner på plats.
Xcode och LLVM-kompilatorn kan arbeta bakom kulisserna för att minska arbetsbelastningen på programmeraren. Med Swift gör programmerare mindre bokföring och kan spendera mer tid på att skapa applogik. Swift skär ut boilerplate arbete och förbättrar kvaliteten på kod, kommentarer och funktioner som stöds.,
Swift är säkrare
en intressant aspekt av mål-C är det sätt på vilket pekare—särskilt noll (null) pekare—hanteras. I Objective-C händer ingenting om du försöker ringa en metod med en pekarvariabel som är noll (oinitierad). Uttrycket eller kodraden blir en no-operation (no-op), och även om det kan tyckas fördelaktigt att det inte kraschar, har det varit en stor källa till buggar. En no-op leder till oförutsägbart beteende, vilket är fienden av programmerare som försöker hitta och fixa en slumpmässig krasch eller stoppa oregelbundet beteende.,
valfria typer gör möjligheten till ett nollvalsvärde mycket tydligt i Swift code, vilket innebär att det kan generera ett kompilatorfel när du skriver dålig kod. Detta skapar en kort återkopplingsslinga och tillåter programmerare att koda med avsikt. Problem kan lösas som kod skrivs, vilket kraftigt minskar den tid och pengar som du kommer att spendera på att fixa buggar relaterade till pointerlogik från Objective-C.,
traditionellt, i Objective-C, om ett värde returnerades från en metod, var det programmerarens ansvar att dokumentera beteendet hos pekarvariabeln som returnerades (med kommentarer och metodnamnkonventioner). I Swift gör de valfria typerna och värdetyperna det uttryckligen klart i metoddefinitionen om värdet finns eller om det har potential att vara frivilligt (det vill säga värdet kan finnas eller det kan vara noll).
för att ge förutsägbart beteende Swift utlöser en runtime krasch om en noll valfri variabel används., Denna krasch ger konsekvent beteende, vilket underlättar buggfixeringsprocessen eftersom det tvingar programmeraren att åtgärda problemet direkt. Swift runtime crash kommer att stanna på raden av kod där en noll valfri variabel har använts. Detta innebär att felet kommer att rättas förr eller undvikas helt i Swift-kod.
Swift är förenat med minneshantering
Swift förenar språket på ett sätt som Objective-C aldrig har. Stödet för automatisk referensräkning (ARC) är komplett över procedurmässiga och objektorienterade kodvägar., I mål-C stöds ARC inom Kakaoapis och objektorienterad kod; den är dock inte tillgänglig för procedurkod och API: er som Kärngrafik. Detta innebär att det blir programmerarens ansvar att hantera minneshantering när man arbetar med Core Graphics API: er och andra låg nivå API: er tillgängliga på iOS. De enorma minnesläckor som en programmerare kan ha i mål-C är omöjliga i snabb.
en programmerare ska inte behöva tänka på minne för varje digitalt objekt han eller hon skapar., Eftersom ARC hanterar all minneshantering vid kompileringstid kan den hjärnkraft som skulle ha gått mot minneshantering istället fokuseras på kärnprogrammlogik och nya funktioner. Eftersom ARC i Swift fungerar över både processuell och objektorienterad kod, kräver det inga fler mentala kontextväxlar för programmerare, även när de skriver kod som berör APIs på lägre nivå-ett problem med den nuvarande versionen av Objective—C.
automatisk och högpresterande minneshantering är ett problem som har lösts, och Apple har visat att det kan öka produktiviteten., Den andra bieffekten är att både Objective-C och Swift inte lider av en sophämtare som kör städa upp för oanvänt minne, som Java, Go eller C#. Detta är en viktig faktor för alla programmeringsspråk som kommer att användas för responsiv grafik och användarinmatning, särskilt på en taktil enhet som iPhone, Apple Watch eller iPad (där fördröjning är frustrerande och gör att användarna uppfattar en app är trasig).
Swift kräver mindre kod
Swift minskar mängden kod som krävs för repetitiva uttalanden och strängmanipulation., I mål-C är arbetet med textsträngar mycket utförligt och kräver många steg för att kombinera två bitar av information. Swift antar moderna programmeringsspråk funktioner som att lägga till två strängar tillsammans med en ” + ” -operatör, som saknas i Objective-C. stöd för att kombinera tecken och strängar som detta är grundläggande för alla programmeringsspråk som visar text till en användare på en skärm.
typsystemet i Swift minskar komplexiteten i kod uttalanden — som kompilatorn kan räkna ut typer., Som ett exempel kräver Objective-C programmerare att memorera speciella sträng tokens (%s
,%d
,%@
) och tillhandahålla en kommaseparerad lista med variabler som ersätter varje token. Swift stöder stränginterpolation, vilket eliminerar behovet av att memorera tokens och tillåter programmerare att infoga variabler direkt inline till en användarvänd sträng, till exempel en etikett eller knapptitel. Typ inferencing-systemet och stränginterpolation mildrar en vanlig källa till krascher som är vanliga i Objective-C.,
med Objective-C orsakar det att appen kraschar om du förstör ordern eller använder fel strängtoken. Här lindrar Swift dig igen från bokföringsarbete och översätter till mindre kod för att skriva (kod som nu är mindre felbenägen) på grund av sitt inline-stöd för att manipulera textsträngar och data.
Swift är snabbare
att släppa äldre C-konventioner har förbättrats snabbt under huven. Riktmärken för Swift code performance fortsätter att peka på Apples engagemang för att förbättra hastigheten vid vilken Swift kan köra applogik.,
enligt Primate Labs, tillverkare av det populära Geekbench-prestandaverktyget, närmade sig Swift prestandaegenskaperna hos C++ för beräkningsbundna uppgifter i December 2014 med Mandelbrot-algoritmen.
i februari 2015 upptäckte Primate Labs att Xcode 6.3 Beta förbättrade Swifts prestanda för GEMM-algoritmen—en minnesbunden algoritm med sekventiell åtkomst av stora arrayer—med en faktor 1.4. Den ursprungliga FFT-implementeringen-en minnesbunden algoritm med slumpmässig åtkomst av stora arrayer—hade en 2,6-faldig prestandaförbättring.,
ytterligare förbättringar observerades i Swift genom att tillämpa bästa praxis, vilket resulterade i en 8,5-faldig ökning för FFT algoritm prestanda (lämnar C++ med endast en 1.1-tid prestanda vinst). Förbättringarna gjorde det också möjligt för Swift att överträffa C++ för Mandelbrot-algoritmen med en faktor på bara 1,03.
Swift är nästan i nivå med C++ för både FFT och Mandelbrot algoritmer., Enligt Primate Labs föreslår GEMM-algoritmens prestanda Swift-kompilatorn inte att vektorisera koden C++ – kompilatorn kan – en enkel prestandaökning som kan uppnås i nästa version av Swift.
färre namnkollisioner med open source-projekt
ett problem som har plågat Objective-C-koden är dess brist på formellt stöd för namnområden, vilket var c++: s lösning på kodfilnamnkollisioner. När detta namn kollision händer i Objective-C, det är en linker fel, och appen kan inte köras. Lösningar finns, men de har potentiella fallgropar., Den gemensamma konventionen är att använda en två-eller tre bokstäver prefix för att skilja Objective-C-kod som är skriven, säg, av Facebook kontra din egen kod.
Swift ger implicita namnområden som tillåter samma kodfil att existera över flera projekt utan att orsaka ett byggfel och kräver namn som NSString (nästa steg — Steve Jobs företag efter att ha avfyrats från Apple) eller CGPoint (Core Graphics). I slutändan håller den här funktionen i Swift programmerare mer produktiva och betyder att de inte behöver göra bokföringen som finns i Objective-C., Du kan se Swifts inflytande med enkla namn som Array, Dictionary och String istället för NSArray, NSDictionary och NSString, som föddes ur bristen på namnrymder i Objective-C.
med Swift baseras namnrymder på målet som en kodfil tillhör. Detta innebär att programmerare kan skilja klasser eller värden med namespace identifierare. Denna förändring i Swift är enorm. Det underlättar i hög grad att införliva open source-projekt, ramar och bibliotek i din kod., Namnrymderna gör det möjligt för olika mjukvaruföretag att skapa samma kodfilnamn utan att oroa sig för kollisioner när de integrerar open source-projekt. Nu kan både Facebook och Apple använda en objektkodfil som heter FlyingCar.swift utan några fel eller bygga misslyckanden.
Swift stöder dynamiska bibliotek
den största förändringen i Swift som inte har fått tillräckligt med uppmärksamhet är omkopplaren från statiska bibliotek, som uppdateras vid stora punktutgåvor (iOS 8, iOS 7 och så vidare) till dynamiska bibliotek., Dynamiska bibliotek är körbara bitar av kod som kan kopplas till en app. Den här funktionen gör det möjligt för nuvarande Swift-appar att länka mot nyare versioner av Swift-språket när det utvecklas över tiden.
utvecklaren skickar in appen tillsammans med biblioteken, som båda är digitalt signerade med utvecklingscertifikatet för att säkerställa integritet (hej, NSA). Detta innebär att Swift kan utvecklas snabbare än iOS, vilket är ett krav på ett modernt programmeringsspråk. Ändringar i biblioteken kan alla inkluderas i den senaste uppdateringen av en app på App Store, och allt fungerar helt enkelt.,
dynamiska bibliotek har aldrig stödts på iOS tills lanseringen av Swift och iOS 8, även om dynamiska bibliotek har stödts på Mac under mycket lång tid. Dynamiska bibliotek är externa till App körbara, men ingår i App bunt laddas ner från App Store. Det minskar den ursprungliga storleken på en app som den laddas i minnet, eftersom den externa koden är kopplad endast när den används.
möjligheten att skjuta upp lastning i en mobilapp eller en inbäddad app på Apple Watch kommer att förbättra den upplevda prestandan för användaren., Detta är en av de skillnader som gör iOS ekosystem känner mer lyhörd. Apple har fokuserats på att ladda endast tillgångar, resurser, och nu sammanställt och länkad kod i farten. Den on-the-fly lastning minskar initiala väntetider tills en resurs faktiskt behövs för att visa på skärmen.
dynamiska bibliotek i Swift gör det möjligt att programmera språkändringar och förbättringar för att sprida sig snabbare än någonsin tidigare. Användare behöver inte längre vänta på iOS point-utgåvor för att dra nytta av prestanda eller tillförlitlighetsförbättringar Apple introducerar till Swift.,
Swift Playgrounds uppmuntrar interaktiv kodning
Swifts nyintroducerade lekplatser är en välsignelse för erfarna utvecklare. Lekplatserna inspirerades delvis av arbetet hos tidigare Apple-anställd Brett Victor. Lekplatser gör det möjligt för programmerare att testa en ny algoritm eller grafikrutin, säg 5 till 20 rader kod, utan att behöva skapa en hel iPhone-app.
Apple har lagt inline kod exekvering till lekplatser för att hjälpa programmerare att skapa en bit kod eller skriva en algoritm samtidigt få feedback på vägen., Denna återkopplingsslinga kan förbättra hastigheten på vilken kod som kan skrivas eftersom den mentala modell som en traditionell programmerare behöver kan ersättas med data visualiseringar på lekplatser. Programmering är en iterativ process, och alla påfrestningar som kan minskas eller användas för att komplettera den kreativa processen kommer att göra programmerare mer produktiva och befria dem att lösa större problem, snarare än att fokusera på tråkiga detaljer som traditionella kompilatorer har ålagts programmerare.,
notera: från min erfarenhet av att undervisa nybörjare programmerare är lekplatser inte lika kraftfulla för nybörjare som för erfarna programmerare. Att bara visa hur en variabel fungerar i Swift playground hjälper inte en nybörjare att förstå behovet av en Flyttalvariabel jämfört med ett Heltalvariabel. Behovet blir uppenbart när du visar en app som kan komma ihåg din sista rullningsposition i Facebook-nyhetsflödet. För nybörjare kan frågan” varför ” endast besvaras med ett fungerande exempel: en iPhone-app.,
Swift är en framtid Du kan påverka
Objective-C kommer inte någonstans, men det kommer inte att se så många stora förändringar, tack vare införandet av Swift. Vissa snabba funktioner kommer sannolikt att migrera över till Objective-C, men Objective-C: s arv i C betyder att det bara kan absorbera så mycket.
Swift ger utvecklingsgemenskapen ett direkt sätt att påverka ett språk som kommer att användas för att skapa appar, inbyggda system (om Apple någonsin licensierar en inbäddad ram och chip för tredje part) och enheter som Apple Watch.,
Apple är inriktat på att ge den bästa konsumentupplevelsen och bygger bara de funktioner som anses vara värda uppmärksamhet. Med Swift 1.2-utgåvan i Xcode 6.3 har Apple redan fixat tusentals buggar rapporterade med det populära Apple Bug Reporter-verktyget. Teamet som stöder utvecklingen och utvecklingen av Swift är mycket intresserad av hur språket kan förbättras för att bättre stödja utvecklingsgemenskapen som bygger appar och system med Swift.,
Swift: det mer lättillgängliga, fullfjädrade språket
huvuddelen av förändringarna som gör det möjligt för Swift att stiga över mål-C beror på att det äldre språket som mål-C byggdes på drogs ned. Apple flyttar inte bort från kakao, vilket är deras API och kodbibliotek för att skapa de erfarenheter som känner Apple-esque. Istället ger de fullfjädrad paritet och gör det lättare att interagera med nya API: er som stöder funktioner som Force Touch eller Taptic Feedback.
många äldre beslut utformades för att göra kompilatordesignen enklare., Swift fokuserar på att göra apputvecklarens jobb enklare genom att jettisoning den mentala belastningen av äldre kodningspraxis. När moderna kompilatorer förbättras kan mer information härledas från mindre kod.
med Swift har programmerare hälften så många kodfiler att underhålla, noll Manuell kodsynkronisering och mycket mindre skiljetecken till mistype—vilket leder till mer tid att skriva kvalitetslinjer av kod., Koden är nu självdokumenterande i Swift med tillägg av valfria typer: en kompilering-Time säkerhetsmekanism för att returnera ett värde eller inget värde, vilket är ett vanligt problem med asynkrona operationer, nätverksfel, ogiltig användarinmatning eller datavalideringsfel. ARC är förenad i Swift mellan både procedurkod C-stil, liksom objektorienterad kod med Apples Kakaoramverk.
utvecklare kommer att upptäcka att de skriver mindre kod i Swift, och moderna språkfunktioner stöder dem för att hålla kodrader mer läsbara., Swift kommer att hålla hela Apple ekosystemet i spetsen för programmering som det fortsätter att utvecklas, tack vare dynamic library support i iOS och Swift. Open source-projekt, SDK från tredje part och ramar som integreras med hemautomatisering, enheter och sociala tjänster blir lättare att integrera utan att öka byggtiden. Swift är nästan lika snabb som C++ i vissa algoritmer och den senaste versionen av Xcode 6.3 och Swift 1.2 pekar på ytterligare prestandaoptimeringar i horisonten.,
Lägg till det faktum att lekplatser och Swift möjliggör ett nytt sätt att programmera med visuell feedback som hjälper utvecklingen av algoritmer med hjälp av inline data visualiseringar. En kortare återkopplingsslinga och grafiska beskrivningar gör den iterativa kodningsprocessen ännu enklare att starta.
Swift är i slutändan ett mer lättillgängligt fullfjädrad programmeringsspråk som gör det möjligt för utvecklare att inte bara bygga appar utan också rikta inbäddade system som den nya Apple Watch med lägre effekt i många år framöver.,
- 10 funktioner Apple ”stal” för Swift programmeringsspråk
- 9 saker vi hatar om Objective-C
- recension: 7 utmärkta mobila app byggare
- recension: AppStudio är som Visual Basic för mobile dev
- recension: Appery.io par Mobile App builder med back-end tjänster
- Review: Alpha Anywhere aces offline mobilappar