Swift vs. Objective-C: 10 redenen waarom de toekomst Swift

verkiest programmeertalen sterven niet gemakkelijk, maar ontwikkelingsshops die zich vastklampen aan vervagende paradigma ‘ s wel. Als je apps ontwikkelt voor mobiele apparaten en je hebt Swift nog niet onderzocht, let dan op: Swift vervangt niet alleen Objective-C als het gaat om het ontwikkelen van apps voor de Mac, iPhone, iPad, Apple Watch en apparaten die komen, maar het vervangt ook C voor embedded programmering op Apple platforms.,

dankzij een aantal belangrijke functies heeft Swift het potentieel om de de-facto programmeertaal te worden voor het creëren van meeslepende, responsieve, consumentgerichte toepassingen voor de komende jaren.

Apple lijkt grote doelen te hebben voor Swift. Het heeft de compiler geoptimaliseerd voor prestaties en de taal voor ontwikkeling, en het verwijst naar Swift “ontworpen om op te schalen van ‘Hallo, wereld’ naar een volledig besturingssysteem” in Swift ‘ s documentatie., Hoewel Apple nog niet alle doelen voor de taal heeft gesteld, geven de lanceringen van Xcode 6, Playgrounds en Swift samen aan dat Apple de ontwikkeling van apps eenvoudiger en toegankelijker wil maken dan met elke andere ontwikkeltoolketen.

Hier zijn 10 redenen om het spel voor te zijn door nu met Swift te beginnen.

Swift is makkelijker te lezen

Objective-C lijdt aan alle wratten die je zou verwachten van een taal gebouwd op C., Om keywords en types te onderscheiden van C types, Objective-C introduceerde nieuwe keywords met behulp van het @ symbool. Omdat Swift niet op C is gebouwd, kan het alle trefwoorden verenigen en de talrijke @ -symbolen voor elk object-c-type of object-gerelateerd trefwoord verwijderen.

Swift laat verouderde conventies vallen. U hebt dus niet langer puntkomma ‘ s nodig om lijnen of haakjes te sluiten om voorwaardelijke expressies in if/else-statements te omringen. Een andere grote verandering is dat methodeaanroepen niet in elkaar nestelen wat resulteert in bracket hell—bye-bye, ]]., Methode en functie oproepen in Swift gebruik maken van de industrie-standaard komma gescheiden lijst van parameters tussen haakjes. Het resultaat is een schonere, meer expressieve taal met een vereenvoudigde syntaxis en grammatica.

Swift-code lijkt meer op natuurlijk Engels, naast andere moderne populaire programmeertalen. Deze leesbaarheid maakt het makkelijker voor bestaande programmeurs van JavaScript, Java, Python, C# en C++ om Swift in hun tool keten—in tegenstelling tot het lelijke eendje dat objectief was-C.,

Swift is gemakkelijker te onderhouden

Legacy is wat Objective-C achterhoudt—de taal kan niet evolueren zonder dat C evolueert. C vereist dat programmeurs twee codebestanden onderhouden om de bouwtijd en efficiëntie van het aanmaken van een uitvoerbaar app te verbeteren, een vereiste die overgaat naar Objective-C.

Swift laat de twee-bestandseisen vallen. Xcode en de LLVM-compiler kunnen afhankelijkheden achterhalen en incrementele builds automatisch uitvoeren in Swift 1.2., Als gevolg daarvan is de repetitieve taak van het scheiden van de inhoudsopgave (header-bestand) van het lichaam (implementatiebestand) een ding van het verleden. Swift combineert de Objective-C header (.h) en uitvoeringsdossiers (.m) in een enkel codebestand (.snel).

Objective-C ‘ s twee-bestandssysteem legt extra werk op aan programmeurs—en het is werk dat programmeurs afleidt van het grotere plaatje., In Objective-C moet je methode namen en opmerkingen tussen bestanden handmatig synchroniseren, hopelijk met behulp van een standaard conventie, maar dit is niet gegarandeerd, tenzij het team regels en code reviews op zijn plaats heeft.

Xcode en de LLVM-compiler kunnen achter de schermen werken om de werklast van de programmeur te verminderen. Met Swift doen programmeurs minder boekhouding en kunnen ze meer tijd besteden aan het maken van applogica. Swift snijdt boilerplate werk en verbetert de kwaliteit van de code, opmerkingen, en functies die worden ondersteund.,

Swift is veiliger

een interessant aspect van Objective-C is de manier waarop pointers—met name nihil (null) pointers—worden behandeld. In Objective-C gebeurt er niets als je een methode probeert aan te roepen met een pointer variabele die nihil is (niet geïnitialiseerd). De expressie of regel code wordt een no-operatie (no-op), en hoewel het misschien nuttig lijkt dat het niet crasht, is het een enorme bron van bugs geweest. Een no-op leidt tot onvoorspelbaar gedrag, wat de vijand is van programmeurs die proberen een willekeurige crash te vinden en te repareren of grillig gedrag te stoppen.,

optionele types maken de mogelijkheid van een nul optionele waarde zeer duidelijk in Swift-code, wat betekent dat het een compilerfout kan genereren als je slechte code schrijft. Dit creëert een korte feedback loop en stelt programmeurs in staat om te coderen met Intentie. Problemen kunnen worden opgelost als code is geschreven, die sterk vermindert de hoeveelheid tijd en geld die u zult besteden aan het oplossen van bugs in verband met pointer logica van Objective-C.,

traditioneel, in Objective-C, als een waarde werd geretourneerd van een methode, was het de verantwoordelijkheid van de programmeur om het gedrag van de geretourneerde pointervariabele te documenteren (met behulp van opmerkingen en method-naming conventions). In Swift maken de optionele typen en waardetypen expliciet duidelijk in de methode definitie of de waarde bestaat of als het de potentie heeft om optioneel te zijn (dat wil zeggen, de waarde kan bestaan of het kan nihil zijn).

om voorspelbaar gedrag te bieden, triggert Swift een runtime-crash als een optionele variabele nul wordt gebruikt., Deze crash zorgt voor consistent gedrag, wat het bug-fixing proces vergemakkelijkt omdat het de programmeur dwingt om het probleem meteen op te lossen. De Swift runtime crash zal stoppen op de regel code waar een nul optionele variabele is gebruikt. Dit betekent dat de bug eerder zal worden opgelost of volledig vermeden in Swift-code.

Swift is verenigd met geheugenbeheer

Swift verenigt de taal op een manier die Objective-C nooit heeft gedaan. De ondersteuning voor automatische referentietelling (ARC) is compleet over de procedurele en objectgeoriënteerde codepaden., In Objective-C, ARC wordt ondersteund binnen de Cocoa API ’s en object-georiënteerde code; het is niet beschikbaar, echter, voor procedurele C-code en API’ s zoals Core Graphics. Dit betekent dat het de verantwoordelijkheid van de programmeur wordt om het geheugenbeheer af te handelen bij het werken met de Core Graphics API ’s en andere low-level API’ s die beschikbaar zijn op iOS. De enorme geheugenlekken die een programmeur kan hebben in Objective-C zijn onmogelijk in Swift.

een programmeur zou niet aan geheugen moeten denken voor elk digitaal object dat hij of zij creëert., Omdat ARC alle geheugenbeheer tijdens het compileren behandelt, kan de brainpower die in de richting van geheugenbeheer zou zijn gegaan in plaats daarvan worden gericht op core app-logica en nieuwe functies. Omdat ARC in Swift werkt voor zowel procedurele als objectgeoriënteerde code, vereist het geen mentale contextschakelaars meer voor programmeurs, zelfs als ze code schrijven die API ‘ s van lager niveau raakt-een probleem met de huidige versie van Objective—C.

automatisch en high-performance geheugenbeheer is een probleem dat is opgelost, en Apple heeft bewezen dat het de productiviteit kan verhogen., Het andere neveneffect is dat zowel Objective-C als Swift geen last hebben van een Garbage Collector die opruimt voor ongebruikt geheugen, zoals Java, Go of C#. Dit is een belangrijke factor voor elke programmeertaal die zal worden gebruikt voor responsieve graphics en input van de gebruiker, vooral op een tactiel apparaat zoals de iPhone, Apple Watch, of iPad (waar de vertraging is frustrerend en maakt gebruikers waarnemen dat een app is gebroken).

Swift vereist minder code

Swift vermindert de hoeveelheid code die nodig is voor herhaalde statements en string manipulatie., In Objective-C is het werken met tekstreeksen zeer uitgebreid en vereist veel stappen om twee stukjes informatie te combineren. Swift neemt moderne programmeertaal functies zoals het toevoegen van twee strings samen met een ” + ” operator, die ontbreekt in Objective-C. ondersteuning voor het combineren van tekens en strings als dit is fundamenteel voor elke programmeertaal die tekst weergeeft aan een gebruiker op een scherm.

het type systeem in Swift vermindert de complexiteit van code statements-zoals de compiler types kan achterhalen., Als voorbeeld vereist Objective-C dat programmeurs speciale tekenreekstokens onthouden (%s, %d, %@) en een door komma ‘ s gescheiden lijst van variabelen geven om elk teken te vervangen. Swift ondersteunt string interpolatie, die elimineert de noodzaak om tokens te onthouden en stelt programmeurs in staat om variabelen direct inline in te voegen aan een gebruiker gerichte string, zoals een label of knop titel. Het type inferencing systeem en string interpolatie beperken een gemeenschappelijke bron van crashes die gemeenschappelijk zijn in Objective-C.,

met Objective-C, verknoeien van de volgorde of het gebruik van de verkeerde tekenreeks token zorgt ervoor dat de app te crashen. Hier, Swift weer verlicht u van boekhouding werk, vertalen in minder code te schrijven (code die nu minder foutgevoelig) vanwege de inline ondersteuning voor het manipuleren van tekstreeksen en gegevens.

Swift is sneller

Het laten vallen van oudere C conventies heeft Swift onder de motorkap sterk verbeterd. Benchmarks voor de prestaties van Swift-code blijven wijzen op Apple ‘ s toewijding aan het verbeteren van de snelheid waarmee Swift App logic kan uitvoeren.,volgens Primate Labs, makers van de populaire GeekBench performance tool, benaderde Swift de prestatiekenmerken van C++ voor compute-bound taken in December 2014 met behulp van het Mandelbrot algoritme.in februari 2015 ontdekte Primate Labs dat de Xcode 6.3 Beta Swift ‘ s prestaties van het GEMM—algoritme-een geheugengebonden algoritme met sequentiële toegang tot grote arrays—met een factor 1,4 verbeterde. De eerste FFT-implementatie-een geheugengebonden algoritme met willekeurige toegang tot grote arrays—had een 2,6-voudige prestatieverbetering.,

verdere verbeteringen werden waargenomen in Swift door het toepassen van best practices, resulterend in een 8,5-voudige boost voor FFT algoritme prestaties (waardoor C++ met slechts een 1,1-tijd prestatiewinst). Door de verbeteringen kon Swift ook beter presteren dan C++ Voor het Mandelbrot-algoritme met een factor van slechts 1,03.

Swift is bijna gelijk aan C++ voor zowel de FFT-als Mandelbrot-algoritmen., Volgens Primate Labs, de GEMM algoritme prestaties suggereert de Swift compiler kan niet vectorize code de C++ compiler kan – een gemakkelijke prestatiewinst die kan worden bereikt in de volgende versie van Swift.

minder naambotsingen met open source projecten

een probleem dat Objective-C-code heeft geteisterd is het gebrek aan formele ondersteuning voor naamruimten, wat C++’S oplossing was voor het coderen van bestandsnaambotsingen. Wanneer deze naam botsing gebeurt in Objective-C, Het is een linker fout, en de app kan niet draaien. Tijdelijke oplossingen bestaan, maar ze hebben potentiële valkuilen., De gemeenschappelijke conventie is om een twee-of drie-letter voorvoegsels te gebruiken om Objective-C-code die is geschreven, laten we zeggen, door Facebook versus je eigen code te onderscheiden.

Swift biedt impliciete namespaces waarmee hetzelfde codebestand over meerdere projecten kan bestaan zonder een build-fout te veroorzaken en waarvoor Namen nodig zijn zoals NSString (Next Step — Steve Jobs’ bedrijf na ontslag van Apple) of CGPoint (Core Graphics). Uiteindelijk houdt deze functie in Swift programmeurs productiever en betekent dat ze niet de boekhouding hoeven te doen die bestaat in Objective-C., U kunt de invloed van Swift zien met eenvoudige namen zoals Array, Dictionary en String in plaats van NSArray, NSDictionary en NSString, die ontstaan zijn uit het ontbreken van naamruimten in Objective-C.

bij Swift zijn naamruimten gebaseerd op het doel waartoe een codebestand behoort. Dit betekent dat programmeurs klassen of waarden kunnen onderscheiden met behulp van de naamruimte-identifier. Deze verandering in Swift is enorm. Het vergemakkelijkt sterk de integratie van open source projecten, frameworks, en bibliotheken in uw code., De namespaces stellen verschillende softwarebedrijven in staat om dezelfde code bestandsnamen te maken zonder zich zorgen te maken over botsingen bij het integreren van open source projecten. Nu kunnen zowel Facebook als Apple een objectcode bestand genaamd FlyingCar gebruiken.snel zonder fouten of bouwfouten.

Swift ondersteunt dynamische bibliotheken

De grootste verandering in Swift die niet genoeg aandacht heeft gekregen is de overstap van statische bibliotheken, die worden bijgewerkt bij belangrijke uitgaves (iOS 8, ios 7, enzovoort) naar dynamische bibliotheken., Dynamische bibliotheken zijn uitvoerbare stukjes code die kunnen worden gekoppeld aan een app. Met deze functie kunnen huidige Swift-apps worden gekoppeld aan nieuwere versies van de Swift-taal naarmate deze zich in de loop van de tijd ontwikkelt.

de ontwikkelaar verzendt de app samen met de bibliotheken, die beide digitaal ondertekend zijn met het ontwikkelingscertificaat om de integriteit te garanderen (Hallo, NSA). Dit betekent dat Swift sneller kan evolueren dan iOS, wat een vereiste is voor een moderne programmeertaal. Wijzigingen in de bibliotheken kunnen allemaal worden opgenomen met de nieuwste update van een app in de App Store, en alles werkt gewoon.,

dynamische bibliotheken zijn nooit ondersteund op iOS tot de lancering van Swift en iOS 8, hoewel dynamische bibliotheken worden ondersteund op Mac voor een zeer lange tijd. Dynamische bibliotheken zijn extern aan het app-uitvoerbare, maar zijn opgenomen in de app-bundel gedownload van de App Store. Het vermindert de initiële grootte van een app als het wordt geladen in het geheugen, omdat de externe code is gekoppeld alleen wanneer gebruikt.

de mogelijkheid om het laden uit te stellen in een mobiele app of een ingesloten app op Apple Watch zal de waargenomen prestaties voor de gebruiker verbeteren., Dit is een van de verschillen die het iOS-ecosysteem gevoel meer responsief. Apple is gericht op het laden van alleen activa, middelen, en nu gecompileerd en gekoppeld code on the fly. Het on-the-fly Laden vermindert de eerste wachttijden tot een bron daadwerkelijk nodig is om weer te geven op het scherm.

dynamische bibliotheken in Swift maken het mogelijk dat wijzigingen en verbeteringen in de programmeertaal sneller dan ooit tevoren worden doorgegeven. Gebruikers hoeven niet langer te wachten tot iOS point releases om te profiteren van de prestaties of betrouwbaarheid verbeteringen Apple introduceert in Swift.,

Swift Playgrounds moedigt interactieve codering aan

Swift ‘ s nieuw geïntroduceerde Playgrounds zijn een zegen voor ervaren ontwikkelaars. De speeltuinen zijn deels geïnspireerd door het werk van voormalig Apple-medewerker Brett Victor. Playgrounds stellen programmeurs in staat om een nieuw algoritme of grafische routine uit te testen, zeg 5 tot 20 regels code, zonder een hele iPhone-app te maken.

Apple heeft inline-code-uitvoering toegevoegd aan speeltuinen om programmeurs te helpen een stuk code te maken of een algoritme te schrijven terwijl ze onderweg feedback krijgen., Deze feedback loop kan de snelheid waarmee code kan worden geschreven verbeteren omdat het mentale model dat een traditionele programmeur nodig heeft kan worden vervangen door datavisualisaties in speeltuinen. Programmeren is een iteratief proces, en elke belasting die kan worden verminderd of gebruikt om het creatieve proces aan te vullen zal programmeurs productiever maken en hen bevrijden om grotere problemen op te lossen, in plaats van zich te concentreren op saaie details die traditionele compilers hebben opgelegd aan programmeurs.,

opmerking: vanuit mijn ervaring in het onderwijzen van beginnende programmeurs, zijn speeltuinen niet zo krachtig voor beginners als voor ervaren programmeurs. Gewoon laten zien hoe een variabele werkt in de Swift playground helpt een beginner niet om de noodzaak van een Floating point variabele versus een Integer variabele te begrijpen. De behoefte wordt duidelijk wanneer u een app die uw laatste scroll positie in de Facebook news feed kan onthouden tonen. Voor beginners kan de” waarom ” – vraag alleen worden beantwoord met een werkend voorbeeld: een iPhone-app.,

Swift is een toekomst die u kunt beïnvloeden

Objective-C gaat nergens heen, maar het zal niet zoveel grote veranderingen zien, dankzij de introductie van Swift. Sommige Swift functies zullen waarschijnlijk migreren naar Objective-C, maar Objective-C ‘ s erfenis in C betekent dat het kan slechts zo veel absorberen.

Swift biedt de ontwikkelingsgemeenschap een directe manier om een taal te beïnvloeden die zal worden gebruikt voor het maken van apps, embedded systemen (als Apple ooit een embedded framework en chip voor derden in licentie geeft), en apparaten zoals de Apple Watch.,

Apple is gericht op het bieden van de beste consumentenervaring en bouwt alleen die functies die aandacht verdienen. Met de Swift 1.2-release in Xcode 6.3 heeft Apple al duizenden bugs opgelost die zijn gemeld met het populaire Apple Bug Reporter-hulpprogramma. Het team dat de ontwikkeling en evolutie van Swift ondersteunt, is zeer geïnteresseerd in hoe de taal kan worden verbeterd om de ontwikkelingsgemeenschap die apps en systemen bouwt met Swift beter te ondersteunen.,

Swift: de meer benaderbare, full-featured taal

Het grootste deel van de veranderingen die Swift mogelijk maken boven doelstelling-C komen voort uit het laten vallen van de oude taal waarop doelstelling-C was gebouwd. Apple is niet weg van Cocoa, dat is hun API en code bibliotheek voor het creëren van de ervaringen die voelen Apple-achtige. In plaats daarvan, ze zijn het verstrekken van full-featured pariteit en waardoor het gemakkelijker om te communiceren met nieuwe API ‘ s die functies zoals Force Touch of Taptic Feedback ondersteunen.

veel oudere beslissingen zijn ontworpen om compilerontwerp gemakkelijker te maken., Swift richt zich op het makkelijker maken van het werk van de app-ontwikkelaar door de mentale belasting van oude coderingspraktijken af te stoten. Naarmate moderne compilers verbeteren, kan meer informatie worden afgeleid uit minder code.

met Swift hebben programmeurs half zoveel codebestanden te onderhouden, nul handmatige codesynchronisatie, en veel minder interpunctie naar mistype—wat leidt tot meer tijd besteed aan het schrijven van kwaliteitsregels code., Code is nu zelf-documenteren in Swift met de toevoeging van optionele types: een compile-time veiligheidsmechanisme voor het retourneren van een waarde of geen waarde, dat is een veel voorkomend probleem met asynchrone bewerkingen, netwerkfouten, ongeldige invoer van de gebruiker, of data validatie fouten. ARC is verenigd in Swift tussen zowel procedurele C-stijl code, evenals object-georiënteerde code met behulp van Apple ‘ s Cocoa framework.

ontwikkelaars zullen merken dat ze minder code schrijven in Swift, en moderne taalfuncties ondersteunen hen om regels code leesbaarder te houden., Dankzij dynamic library support in iOS en Swift blijft het hele Apple-ecosysteem in de voorhoede van programmeren. Open source-projecten, SDK ‘ s van derden en frameworks die integreren met domotica, apparaten en sociale diensten zullen gemakkelijker te integreren zijn zonder de bouwtijden te verlengen. Swift is bijna net zo snel als C++ in sommige algoritmen en de nieuwste release van Xcode 6.3 en Swift 1.2 punt om extra prestaties optimalisaties aan de horizon.,

voeg daaraan toe dat Playgrounds en Swift een nieuwe manier mogelijk maken om te programmeren met visuele feedback die de ontwikkeling van algoritmen ondersteunt met behulp van inline datavisualisaties. Een kortere feedbacklus en grafische beschrijvingen maken het iteratieve coderingsproces nog gemakkelijker te starten.

Uiteindelijk is Swift een meer benaderbare volledige programmeertaal die ontwikkelaars in staat zal stellen om niet alleen apps te bouwen, maar ook embedded systemen zoals de nieuwe lower-power Apple Watch voor vele jaren te richten.,

  • 10 functies Apple ‘stole’ voor de Swift-programmeertaal
  • 9 dingen die we haten aan Objective-C
  • Review: 7 uitstekende mobiele app-bouwers
  • Review: AppStudio is als Visual Basic voor mobiele dev
  • Review: Appery.io combineert mobiele App builder met back-end services
  • beoordeling: Alpha Anywhere aces offline mobiele apps

Share

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *