Swift vs. Objective-C: 10 okok miatt a jövő kedvez Swift

programozási nyelvek nem halnak könnyen, de a fejlesztési üzletek, hogy ragaszkodnak halványuló paradigmák csinálni. Ha a fejlődő alkalmazások, a mobil eszközök, de még nem vizsgálták Swift, vegye figyelembe: a Swift nem csak kiváltsa az objective-C, amikor a fejlődő apps for Mac, iPhone, iPad, Apple Órát, eszközök, hogy jöjjön, de azt is cserélni C beágyazott programozási az Apple platformon.,

számos kulcsfontosságú jellemzőnek köszönhetően a Swift képes lesz a de-facto programozási nyelvvé válni a magával ragadó, érzékeny, fogyasztókkal szembeni alkalmazások létrehozásához az elkövetkező években.

Az Apple úgy tűnik, hogy nagy céljai vannak a Swift számára. Optimalizálta a fordítót a teljesítményhez és a fejlesztéshez szükséges nyelvhez, és utal arra, hogy a Swift” úgy lett kialakítva, hogy a “hello, world” – től az egész operációs rendszerig terjedjen ” a Swift dokumentációjában., Amíg az Apple nem nyilatkozott, a célok, a nyelv mégis, az elindul az Xcode 6, Játszóterek, valamint Swift együtt jelet az Apple szándéka, hogy az alkalmazás fejlesztése könnyebb, jobban megközelíthető, mint bármely más fejlesztési eszköz lánc.

itt van 10 ok arra, hogy megelőzzük a játékot a Swift now használatával.

Swift könnyebben olvasható

Objective-C szenved minden szemölcsök, amit elvár egy nyelv épül C., A kulcsszavak és típusok C típusoktól való megkülönböztetéséhez az Objective-C új kulcsszavakat vezetett be a @ szimbólum használatával. Mivel a Swift nem C-re épül, egyesítheti az összes kulcsszót, valamint eltávolíthatja a számos @ szimbólumot minden objektív-C típusú vagy objektumhoz kapcsolódó kulcsszó előtt.

Swift drops legacy conventions. Így már nincs szükség pontosvesszőre a sorok vagy zárójelek befejezéséhez, hogy a feltételes kifejezéseket körülölelje az if / else utasításokban. Egy másik nagy változás, hogy a metódushívások nem fészkelődnek egymás belsejében, így a zárójel pokol—viszlát, ]]., A Swift metódusa és függvényhívásai zárójelben az iparági szabvány vesszővel elválasztott paraméterlistáját használják. Az eredmény egy tisztább, kifejezőbb nyelv, egyszerűsített szintaxissal és nyelvtannal.

a Swift kód jobban hasonlít a természetes angolra, más modern népszerű programozási nyelvek mellett. Ez az olvashatóság megkönnyíti a JavaScript, a Java, A Python, A C# és a C++ programozók számára, hogy elfogadják a Swiftet az eszközláncukba-ellentétben a csúnya kiskacsával, amely objektív volt-C.,

Swift könnyebb fenntartani

Legacy az, ami tartja Objective-C vissza—a nyelv Nem tud fejlődni anélkül, hogy C fejlődik. C megköveteli a programozók, hogy fenntartsák a két kód fájlokat annak érdekében, hogy javítsa a build idő és a hatékonyság a végrehajtható alkalmazás létrehozása, a követelmény, hogy hordozza át objektív-C.

Swift csepp a két fájl követelmény. Az Xcode és az LLVM fordító képes a függőségek felismerésére, és automatikusan végrehajtja a növekményes felépítéseket a Swift 1.2-ben., Ennek eredményeként a tartalomjegyzék (fejlécfájl) elválasztásának ismétlődő feladata a testtől (végrehajtási fájl) a múlté. Swift egyesíti a Objective-C fejléc (.h) és végrehajtási fájlok (.m) egyetlen kódfájlba (.swift).

Objective-C kétfájlos rendszere további munkát ró a programozókra—és ez a munka elvonja a programozókat a nagyobb képtől., Az Objective-C-ben manuálisan kell szinkronizálni a metódusneveket és megjegyzéseket a fájlok között, remélhetőleg egy szabványos egyezmény használatával,de ez nem garantált, kivéve, ha a csapat rendelkezik szabályokkal és kódértékelésekkel.

Xcode and the LLVM compiler can do work behind the scenes to reduce the work on the programmer. A Swifttel a programozók kevesebb könyvelést végeznek, és több időt tölthetnek az alkalmazás logikájának létrehozásával. A Swift megszünteti a boilerplate munkáját, és javítja a támogatott kód, Megjegyzések és funkciók minőségét.,

A Swift biztonságosabb

az objektív egyik érdekes aspektusa-a C az a mód, ahogyan a mutatókat—különösen a nulla (null) mutatókat—kezelik. Az Objective-C-ben semmi sem történik, ha megpróbál egy olyan módszert hívni, amelynek mutató változója nulla (inicializált). A kifejezés vagy a kódsor egy műveletlenné (no-op) válik, és bár hasznosnak tűnhet, hogy nem összeomlik, hatalmas hibaforrás volt. A no-op vezet kiszámíthatatlan viselkedés, amely az ellenség a programozók próbálják megtalálni és kijavítani egy véletlen baleset vagy megállítani kiszámíthatatlan viselkedés.,

opcionális típusok teszik a lehetőséget, hogy egy nil opcionális érték nagyon világos Swift kód, ami azt jelenti, hogy létrehoz egy fordító hiba írásakor rossz kódot. Ez létrehoz egy rövid visszacsatolási hurkot, amely lehetővé teszi a programozók számára, hogy szándékosan kódoljanak. Problémák lehet rögzíteni, mint a kód van írva, ami nagyban csökkenti az időt és a pénzt, hogy fog költeni kijavítására kapcsolatos hibák mutató logika objektív-C.,

hagyományosan, az Objective-C-ben, ha egy értéket egy metódusból adtak vissza, akkor a programozó felelőssége volt a visszaadott mutató változó viselkedését dokumentálni (megjegyzésekkel és módszernév-konvenciókkal). A Swift-ben az opcionális típusok és értéktípusok kifejezetten egyértelművé teszik a módszer definíciójában, hogy létezik-e az érték, vagy van-e lehetősége opcionálisnak lenni (vagyis az érték létezhet, vagy nulla lehet).

kiszámítható viselkedés biztosítása érdekében a Swift futásidejű összeomlást vált ki, ha nulla opcionális változót használ., Ez az összeomlás következetes viselkedést biztosít, ami megkönnyíti a hibajavítási folyamatot, mivel arra kényszeríti a programozót, hogy azonnal megoldja a problémát. A Swift futásidejű összeomlás megáll a kódsoron, ahol egy nil opcionális változót használtak. Ez azt jelenti, hogy a hibát hamarabb kijavítják, vagy teljes egészében elkerülik a Swift kódban.

Swift egyesített memória kezelése

Swift egyesíti a nyelvet oly módon, hogy objektív-C soha. Az automatikus Hivatkozásszámlálás (ív) támogatása az eljárásbeli és objektumorientált kódútvonalak mentén teljes., Az Objective-C-ben az ARC a Cocoa API-kon belül és az objektumorientált kódon belül is támogatott, azonban a procedurális C kód és API-k, mint a Core Graphics esetében nem érhető el. Ez azt jelenti, hogy a programozó felelőssége, hogy kezelje a memória kezelése, ha dolgozik a Core Graphics API-k és más alacsony szintű API-k elérhető iOS. A hatalmas memória szivárgás, hogy a programozó lehet objektív-C lehetetlen Swift.

a programozónak nem kell minden általa létrehozott digitális objektum memóriájára gondolnia., Mert az ARC kezeli a memória kezelése a fordítási időben, a mentalitás, hogy volna felé, memória kezelése ehelyett összpontosított alapvető alkalmazás logika, mind új funkciók. Mert az ARC a Swift működik szerte mind eljárási, illetve az objektum-orientált kód, nem igényel több mentális környezetváltások a programozók, még kódot írni, ami megérinti az alacsonyabb szintű Api—egy probléma a jelenlegi verzió a Cél-C.

Automatikus, magas teljesítményű memória kezelése a probléma megoldódott, az Apple bebizonyította, hogy ez növelheti a termelékenységet., A másik mellékhatás az, hogy mind az Objective-C, mind a Swift nem szenved olyan Szemétgyűjtőtől, amely a fel nem használt memória, például a Java, A Go vagy a C#tisztítását végzi. Ez fontos tényező minden olyan programozási nyelv esetében, amelyet reszponzív grafikákhoz és felhasználói bemenetekhez használnak, különösen olyan tapintható eszközön, mint az iPhone, az Apple Watch vagy az iPad (ahol a késés frusztráló, és a felhasználók érzékelik, hogy egy alkalmazás megszakad).

A Swift kevesebb kódot igényel

A Swift csökkenti az ismétlődő kijelentésekhez és a karakterlánc-manipulációhoz szükséges kód mennyiségét., Az Objective-C-ben a szöveges karakterláncokkal való munka nagyon bőbeszédű, és sok lépést igényel két információ kombinálásához. Swift elfogadja a modern programozási nyelv funkciók, mint a hozzá két karakterlánc együtt ” + ” operátor, ami hiányzik a Objective-C. támogatása kombinálásával karakterek és húrok, mint ez alapvető minden programozási nyelv, amely megjeleníti a szöveget, hogy a felhasználó a képernyőn.

A Swift típusrendszere csökkenti a kódutasítások összetettségét — mivel a fordító típusokat tud kitalálni., Például az Objective-C megköveteli a programozóktól, hogy memorizáljanak speciális karakterláncjeleket (%s, %d, %@), és egy vesszővel elválasztott változók listáját adják meg az egyes tokenek cseréjéhez. A Swift támogatja a karakterlánc interpolációját, ami kiküszöböli a tokenek memorizálásának szükségességét, és lehetővé teszi a programozók számára, hogy a változókat közvetlenül a felhasználó felé mutató karakterláncba, például címkébe vagy gombcímkébe illesszék be. A típus-inferencing rendszer és a karakterlánc-interpoláció az objektív-C-ben gyakori összeomlások közös forrását csökkenti.,

A Objective-C, Messiás a sorrendben, vagy a rossz karakterlánc token okozza az alkalmazás összeomlik. Itt, Swift ismét enyhíti, hogy a könyvelői munka, lefordítva kevesebb kódot írni (kód már kevesebb hiba hajlamos), mert a beágyazott támogatása manipulálni szöveges karakterláncok adatok.

A Swift gyorsabb

a régebbi C konvenciók eldobása jelentősen javult Swift a motorháztető alatt. A Swift kód teljesítményének referenciaértékei továbbra is rámutatnak az Apple elkötelezettségére, hogy javítsa azt a sebességet, amellyel a Swift futtathatja az alkalmazás logikáját.,

A Primate Labs, a népszerű GeekBench performance eszköz készítői szerint a Swift 2014 decemberében a Mandelbrot algoritmus segítségével megközelítette a C++ számítási feladatokhoz szükséges teljesítményjellemzőit.

2015 februárjában a Primate Labs felfedezte, hogy az Xcode 6.3 Beta javította a Swift teljesítményét a GEMM algoritmussal—egy memóriával kötött algoritmussal, nagy tömbök szekvenciális hozzáférésével-1, 4—es tényezővel. A kezdeti FFT végrehajtás—egy emlék kötött algoritmus random access nagy tömbök—volt egy 2.6-szeres teljesítmény javítása.,

További javulás volt megfigyelhető a Gyors alkalmazásával a legjobb gyakorlatokat, ami egy 8,5-szeres növeljék az FFT algoritmus teljesítmény (így a C++ csak egy 1.1-idő teljesítmény nyereség). A fejlesztések lehetővé tették a Swift számára, hogy pusztán 1, 03-as tényezővel felülmúlja a Mandelbrot algoritmus C++ – ját.

A Swift majdnem megegyezik a C++ – val mind az FFT, mind a Mandelbrot algoritmusok esetében., A Primate Labs szerint a gem algoritmus teljesítménye azt sugallja, hogy a Swift fordító nem tudja vektorizálni a kódot a C++ fordító képes — ez egy egyszerű teljesítménynövekedés, amelyet a Swift következő verziójában lehet elérni.

kevesebb névütközés nyílt forráskódú projektekkel

az egyik probléma, amely az Objective-C kódot sújtotta, a névterek formális támogatásának hiánya, amely a C++megoldása volt a fájlnév-ütközések kódolására. Ha ez a név ütközés történik Objective-C, Ez egy linker hiba, az alkalmazás nem tud futni. Megoldások léteznek, de potenciális buktatókkal rendelkeznek., A közös egyezmény az, hogy két-vagy hárombetűs előtagokat használjunk az objektív-C kód megkülönböztetésére, amelyet mondjuk a Facebook ír a saját kóddal szemben.

Swift nyújt implicit névterek, amely lehetővé teszi, ugyanaz a kód, fájl létezik-szerte több projekt anélkül, hogy egy építeni hiba igénylő nevek, mint NSString (Következő Lépés — Steve Jobs cége, miután kirúgták az Apple-től), vagy CGPoint (Core Grafika). Végső soron ez a funkció a Swift tartja programozók termelékenyebb, azt jelenti, hogy nem kell csinálni a könyvelés, hogy létezik objektív-C., Láthatjuk Swift befolyása egyszerű nevek, mint a tömb, Szótár, és String helyett NSArray, NSDictionary, és NSString, amelyek születtek hiánya névterek Objective-C.

A Swift, névterek alapján a cél, hogy egy kódfájl tartozik. Ez azt jelenti, hogy a programozók megkülönböztethetnek osztályokat vagy értékeket a névtérazonosító segítségével. Ez a Swift-változás hatalmas. Ez nagyban megkönnyíti a nyílt forráskódú projektek, keretek, könyvtárak beépítését a kódba., A névterek lehetővé teszik a különböző szoftvercégek számára, hogy ugyanazokat a kódfájlokat hozzák létre anélkül, hogy aggódnának az ütközések miatt a nyílt forráskódú projektek integrálásakor. Most mind a Facebook, mind az Apple használhatja a flyingcar nevű objektumkódfájlt.swift hibák nélkül, vagy építeni hibák.

A Swift támogatja a dinamikus könyvtárakat

A Swift legnagyobb változása, amely nem kapott elég figyelmet, a statikus könyvtárak váltása, amelyeket a főbb kiadásokban frissítenek (iOS 8, iOS 7 stb.), dinamikus könyvtárakra., A dinamikus könyvtárak végrehajtható kóddarabok, amelyek egy alkalmazáshoz kapcsolódhatnak. Ez a funkció lehetővé teszi a jelenlegi Swift alkalmazások számára, hogy összekapcsolódjanak a Swift nyelv újabb verzióival, mivel az idővel fejlődik.

a fejlesztő az alkalmazást a könyvtárakkal együtt nyújtja be, mindkettő digitálisan aláírva van a fejlesztési tanúsítvánnyal az integritás biztosítása érdekében (hello, NSA). Ez azt jelenti, hogy a Swift gyorsabban fejlődhet, mint az iOS, ami a modern programozási nyelv követelménye. A könyvtárak módosításai mind az App Store-ban található alkalmazás legújabb frissítésével együtt érhetőek el, és minden egyszerűen működik.,

A dinamikus könyvtárakat még soha nem támogatták iOS-en a Swift és az iOS 8 megjelenéséig, annak ellenére, hogy a dinamikus könyvtárakat már nagyon régóta támogatják Mac-en. A dinamikus könyvtárak kívül esnek az alkalmazás futtatható fájlján, de az App Store-ból letöltött alkalmazáscsomagba tartoznak. Csökkenti az alkalmazás kezdeti méretét, mivel a memóriába van betöltve, mivel a külső kód csak akkor kapcsolódik össze, ha használják.

az a képesség, hogy elhalasztja a betöltést egy mobilalkalmazásban vagy egy beágyazott alkalmazásban az Apple Watch-on, javítja az észlelt teljesítményt a felhasználó számára., Ez az egyik különbség, amely az iOS ökoszisztémát érzékenyebbé teszi. Az Apple már összpontosított betöltése csak eszközök, források, és most összeállított és kapcsolt kódot menet közben. A menet közbeni Betöltés csökkenti a kezdeti várakozási időt, amíg egy erőforrásra valóban szükség van a képernyőn való megjelenítéshez.

A Swift dinamikus könyvtárai lehetővé teszik a programozási nyelv változásainak és fejlesztéseinek gyorsabb terjedését, mint valaha. A felhasználóknak már nem kell megvárniuk az iOS point kiadásait, hogy kihasználhassák az Apple által a Swiftbe bevezetett teljesítmény-vagy megbízhatósági fejlesztéseket.,

A Swift Playgrounds ösztönzi az interaktív kódolást

A Swift újonnan bevezetett játszóterei áldást jelentenek a tapasztalt fejlesztők számára. A játszótereket részben az Apple korábbi alkalmazottjának, Brett Victornak a munkája ihlette. A játszóterek lehetővé teszik a programozók számára, hogy teszteljenek egy új algoritmust vagy grafikus rutinot, mondjuk 5-20 sornyi kódot, anélkül, hogy egy teljes iPhone alkalmazást kellene létrehozniuk.

Az Apple hozzáadott inline kód végrehajtása játszóterek, hogy segítsen a programozók hozzon létre egy darab kódot, vagy írjon egy algoritmust, miközben egyre visszajelzést az út mentén., Ez a visszacsatolási hurok javíthatja a kód írásának sebességét, mivel a hagyományos programozó által igényelt mentális modell helyettesíthető a játszóterek adatvizualizációival. A programozás egy iteratív folyamat, s minden törzs, amely csökkenthető vagy kiegészítésére használják fel, hogy a kreatív folyamat lesz, hogy a programozók több produktív, illetve ingyenes őket, hogy megoldja a nagyobb problémát, ahelyett, hogy összpontosítva unalmas részleteket, hogy a hagyományos fordítók is bevezetett, a programozók.,

Megjegyzés: A kezdő programozók tanításában szerzett tapasztalataim alapján a játszóterek nem olyan erősek a kezdők számára, mint a tapasztalt programozók számára. Egyszerűen mutatja, hogy egy változó működik a Swift játszótér nem segít a kezdő megérteni, hogy szükség van egy lebegőpontos változó versus egy egész változó. Az igény nyilvánvalóvá válik, ha olyan alkalmazást mutat be, amely emlékszik az utolsó görgetési pozíciójára a Facebook hírcsatornában. A kezdők számára az “miért” kérdésre csak egy működő példával lehet válaszolni: egy iPhone alkalmazás.,

A Swift olyan jövő, amelyet befolyásolhat

Objective-C nem megy sehova, de a Swift bevezetésének köszönhetően nem fog látni annyi jelentős változást. Néhány Swift funkció valószínűleg átkerül az Objective-C-re, de az Objective-C öröksége A C-ben azt jelenti, hogy csak annyira képes felszívni.

A Swift közvetlen módot biztosít a fejlesztői közösség számára egy olyan nyelv befolyásolására, amelyet alkalmazások, beágyazott rendszerek létrehozására használnak (ha az Apple valaha is engedélyez beágyazott keretet és chipet harmadik felek számára), valamint olyan eszközök, mint az Apple Watch.,

Az Apple a legjobb fogyasztói élmény biztosítására összpontosít, és csak azokat a funkciókat építi fel, amelyeket figyelemre méltónak tartanak. Az Xcode 6.3 Swift 1.2 kiadásával az Apple már több ezer hibát javított a népszerű Apple Bug Reporter segédprogrammal. A Swift fejlesztését és fejlődését támogató csapat nagyon érdekli, hogyan lehet javítani a nyelvet annak érdekében, hogy jobban támogassa a Fejlesztőközösséget, amely alkalmazásokat és rendszereket épít a Swift használatával.,

Swift: A jobban megközelíthető, teljes értékű nyelv

A nagy változások, amelyek lehetővé teszik a Gyors fölé emelkedik objective-C erednek, csökken a legacy nyelv az objective-C épült. Az Apple nem távolodik el a Cocoa-tól, ami az API-és kódkönyvtáruk az Apple-esque-nek érző élmények létrehozásához. Ehelyett teljes értékű paritást biztosítanak, megkönnyítve az olyan új API-kkal való interakciót, amelyek támogatják az olyan funkciókat, mint a Force Touch vagy a Taptic Feedback.

számos régebbi döntést úgy terveztek, hogy megkönnyítsék a fordító kialakítását., A Swift arra összpontosít, hogy megkönnyítse az alkalmazásfejlesztő munkáját az örökölt kódolási gyakorlatok mentális törzsének jettisoningjával. Ahogy a modern fordítók javulnak, Több információ levonható kevesebb kódból.

A Swifttel a programozók fele annyi kódfájlt tartanak fenn, nulla kézi kódszinkronizálást, és sokkal kevesebb írásjelet írnak elő-ami több időt tölt a minőségi kódsorok írásával., Kód most önálló dokumentálása Swift azzal a kiegészítéssel, opcionális típusok: a fordítási idejű biztonsági mechanizmus visszatér egy értéket, vagy nincs érték, ami egy gyakori probléma aszinkron műveletek, hálózati hibák, érvénytelen felhasználói bemenet, vagy adatellenőrzési hibák. Az ARC Swift-ben egységes mind az eljárási C-stílusú kód, mind az objektumorientált kód között az Apple Cocoa keretrendszerével.

a fejlesztők rájönnek, hogy kevesebb kódot írnak Swift-ben, a modern nyelvi funkciók pedig támogatják őket abban, hogy a kódsorok olvashatóbbak legyenek., A Swift az iOS és a Swift dinamikus könyvtári támogatásának köszönhetően továbbra is a programozás élvonalában tartja az egész Apple ökoszisztémát. Nyílt forráskódú projektek, harmadik féltől származó SDK-k, valamint az otthoni automatizálással, eszközökkel és szociális szolgáltatásokkal integrálható keretek könnyebben integrálhatók az építési idő növelése nélkül. A Swift néhány algoritmusban majdnem olyan gyors, mint a C++, az Xcode 6.3 és a Swift 1.2 legújabb kiadása pedig további teljesítményoptimalizálásokra mutat a láthatáron.,

hozzáteszik, hogy a játszóterek és a Swift lehetővé teszi a vizuális visszacsatolással történő programozás új módját, amely segíti az algoritmusok fejlesztését inline adatvizualizációkkal. A rövidebb visszacsatolási ciklus és a grafikus leírások még egyszerűbbé teszik az iteratív kódolási folyamatot.

végül a Swift egy megközelíthetőbb teljes funkcionalitású programozási nyelv, amely lehetővé teszi a fejlesztők számára, hogy ne csak alkalmazásokat építsenek, hanem olyan beágyazott rendszereket is célozzanak meg, mint az új, alacsonyabb teljesítményű Apple Watch sok éven át.,

  • 10 funkciók Apple ‘ellopta’ a Gyors programozási nyelv
  • 9 dolog, amit utálok, objective-C
  • Review: 7 kiváló mobil alkalmazás, építők
  • Review: AppStudio, mint a Visual Basic for mobile dev
  • Review: Appery.io pár mobil alkalmazás készítő a back-end szolgáltatások
  • Review: Alfa Bárhol ász offline mobil alkalmazások

Share

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük