Swift vs. Objective-C: 10 Gründe, warum die Zukunft Swift

– Programmiersprachen bevorzugt, sterben nicht leicht, aber Entwicklungsgeschäfte, die an verblassenden Paradigmen festhalten, tun dies. Wenn Sie Apps für mobile Geräte entwickeln und Swift nicht untersucht haben, beachten Sie: Swift wird Objective-C nicht nur ersetzen, wenn es um die Entwicklung von Apps für Mac, iPhone, iPad, Apple Watch und Geräte kommt zu kommen, aber es wird auch C für Embedded-Programmierung auf Apple-Plattformen ersetzen.,

Dank mehrerer Schlüsselfunktionen hat Swift das Potenzial, die De-facto-Programmiersprache für die Erstellung immersiver, reaktionsschneller, verbraucherorientierter Anwendungen für die kommenden Jahre zu werden.

Apple scheint große Ziele für Swift zu haben. Es hat den Compiler für die Leistung und die Sprache für die Entwicklung optimiert und spielt darauf an, dass Swift in Swifts Dokumentation „von ‚Hallo, Welt‘ auf ein ganzes Betriebssystem skaliert werden soll“., Während Apple noch nicht alle seine Ziele für die Sprache angegeben hat, signalisieren die Einführung von Xcode 6, Playgrounds und Swift zusammen Apples Absicht, die App-Entwicklung einfacher und zugänglicher zu machen als mit jeder anderen Entwicklungstoolkette.

Hier sind 10 Gründe, dem Spiel einen Schritt voraus zu sein, indem Sie jetzt mit Swift arbeiten.

Swift ist einfacher zu lesen

Objective-C leidet unter allen Warzen, die Sie von einer auf C basierenden Sprache erwarten würden., Um Schlüsselwörter und Typen von C-Typen zu unterscheiden, führte Objective-C neue Schlüsselwörter mit dem @ – Symbol ein. Da Swift nicht auf C basiert, kann es alle Schlüsselwörter vereinheitlichen und die zahlreichen @ -Symbole vor jedem Objective-C-Typ oder objektbezogenen Schlüsselwort entfernen.

Swift Tropfen legacy Konventionen. Daher benötigen Sie keine Semikolons mehr, um Zeilen oder Klammern zu beenden, um bedingte Ausdrücke in if / else-Anweisungen zu umgeben. Eine weitere große Änderung besteht darin, dass Methodenaufrufe nicht ineinander verschachtelt sind, was zu einem hell—bye-bye, ]]., Methoden – und Funktionsaufrufe in Swift verwenden die durch Kommas getrennte Liste von Parametern in Klammern. Das Ergebnis ist eine sauberere, ausdrucksstärkere Sprache mit vereinfachter Syntax und Grammatik.

Swift-Code ähnelt neben anderen modernen gängigen Programmiersprachen dem natürlichen Englisch. Diese Lesbarkeit erleichtert es bestehenden Programmierern aus JavaScript, Java, Python, C# und C++, Swift in ihre Toolkette aufzunehmen—im Gegensatz zu dem hässlichen Entlein, das Objective-C war.,

Swift ist einfacher zu pflegen

Legacy hält Objective-C zurück—die Sprache kann sich nicht entwickeln, ohne dass sich C weiterentwickelt. C erfordert, dass Programmierer zwei Codedateien verwalten, um die Erstellungszeit und Effizienz der Erstellung ausführbarer Apps zu verbessern, eine Anforderung, die auf Objective-C übertragen wird.

Swift lässt die Anforderung für zwei Dateien fallen. Xcode und der LLVM-Compiler können Abhängigkeiten ermitteln und inkrementelle Builds in Swift 1.2 automatisch ausführen., Infolgedessen gehört die sich wiederholende Aufgabe, das Inhaltsverzeichnis (Header-Datei) vom Hauptteil (Implementierungsdatei) zu trennen, der Vergangenheit an. Swift kombiniert den Objective-C-Header (.h) und Implementierungsdateien (.m) in eine einzelne Codedatei (.rasch).

Das Zwei-Dateisystem von Objective-C erlegt Programmierern zusätzliche Arbeit auf—und es ist Arbeit, die Programmierer vom Gesamtbild ablenkt., In Objective-C müssen Sie Methodennamen und Kommentare manuell zwischen Dateien synchronisieren, hoffentlich unter Verwendung einer Standardkonvention, aber dies ist nicht garantiert, es sei denn, das Team verfügt über Regeln und Codeüberprüfungen.

Xcode und der LLVM-Compiler können hinter den Kulissen arbeiten, um die Arbeitsbelastung des Programmierers zu reduzieren. Mit Swift führen Programmierer weniger Buchhaltung durch und können mehr Zeit damit verbringen, App-Logik zu erstellen. Swift schneidet Boilerplate Arbeit und verbessert die Qualität von Code, Kommentare und Funktionen, die unterstützt werden.,

Swift ist sicherer

Ein interessanter Aspekt von Objective-C ist die Art und Weise, wie Zeiger—insbesondere null (null) Zeiger—behandelt werden. In Objective-C passiert nichts, wenn Sie versuchen, eine Methode mit einer Zeigervariablen aufzurufen, die null ist (nicht initialisiert). Der Ausdruck oder die Codezeile wird zu einer No-Operation (No-op), und obwohl es vorteilhaft erscheinen mag, dass es nicht abstürzt, war es eine große Fehlerquelle. Ein No-Op führt zu unvorhersehbarem Verhalten, das der Feind von Programmierern ist, die versuchen, einen zufälligen Absturz zu finden und zu beheben oder unregelmäßiges Verhalten zu stoppen.,

Optionale Typen machen die Möglichkeit eines optionalen Nil-Werts im Swift-Code sehr deutlich, was bedeutet, dass beim Schreiben von fehlerhaftem Code ein Compilerfehler generiert werden kann. Dies erzeugt eine kurze Rückkopplungsschleife und ermöglicht es Programmierern, mit Absicht zu codieren. Probleme können behoben werden, wenn Code geschrieben wird, was die Zeit und das Geld, die Sie für die Behebung von Fehlern im Zusammenhang mit der Zeigerlogik von Objective-C aufwenden, erheblich reduziert.,

Wenn traditionell in Objective-C ein Wert von einer Methode zurückgegeben wurde, lag es in der Verantwortung des Programmierers, das Verhalten der zurückgegebenen Zeigervariablen zu dokumentieren (unter Verwendung von Kommentaren und Methodennamenskonventionen). In Swift machen die optionalen Typen und Werttypen in der Methodendefinition explizit deutlich, ob der Wert vorhanden ist oder ob er optional sein kann (dh, der Wert kann vorhanden oder null sein).

Um vorhersehbares Verhalten bereitzustellen, löst Swift einen Laufzeitabsturz aus, wenn eine optionale Variable nil verwendet wird., Dieser Absturz bietet ein konsistentes Verhalten, was den Fehlerbehebungsprozess erleichtert, da er den Programmierer zwingt, das Problem sofort zu beheben. Der schnelle Laufzeitabsturz stoppt in der Codezeile, in der eine optionale Variable null verwendet wurde. Dies bedeutet, dass der Fehler früher behoben oder vollständig im Swift-Code vermieden wird.

Swift ist mit der Speicherverwaltung vereinheitlicht

Swift vereinheitlicht die Sprache auf eine Weise, die Objective-C nie hat. Die Unterstützung für die automatische Referenzzählung (ARC) ist vollständig über die prozeduralen und objektorientierten Codepfade., In Objective-C wird ARC innerhalb der Cocoa-APIs und des objektorientierten Codes unterstützt; Es ist jedoch nicht für prozeduralen C-Code und APIs wie Core Graphics verfügbar. Dies bedeutet, dass der Programmierer für die Speicherverwaltung verantwortlich ist, wenn er mit den Core Graphics-APIs und anderen unter iOS verfügbaren Low-Level-APIs arbeitet. Die großen Speicherlecks, die ein Programmierer in Objective-C haben kann, sind in Swift unmöglich.

Ein Programmierer sollte nicht für jedes digitale Objekt, das er erstellt, an Speicher denken müssen., Da ARC die gesamte Speicherverwaltung zur Kompilierungszeit übernimmt, kann sich die Gehirnleistung, die in Richtung Speicherverwaltung gegangen wäre, stattdessen auf die Kernlogik der App und neue Funktionen konzentrieren. Da ARC in Swift sowohl für prozeduralen als auch für objektorientierten Code funktioniert, sind keine mentalen Kontextwechsel mehr für Programmierer erforderlich, selbst wenn sie Code schreiben, der APIs auf niedrigerer Ebene berührt-ein Problem mit der aktuellen Version von Objective-C.

Automatische und leistungsstarke Speicherverwaltung ist ein Problem, das gelöst wurde, und Apple hat bewiesen, dass es die Produktivität steigern kann., Der andere Nebeneffekt ist, dass sowohl Objective-C als auch Swift nicht unter einem Garbage Collector leiden, der für nicht verwendeten Speicher wie Java, Go oder C#bereinigt wird. Dies ist ein wichtiger Faktor für jede Programmiersprache, die für reaktionsschnelle Grafiken und Benutzereingaben verwendet wird, insbesondere auf einem taktilen Gerät wie dem iPhone, der Apple Watch oder dem iPad (wo die Verzögerung frustrierend ist und die Benutzer wahrnehmen, dass eine App defekt ist).

Swift benötigt weniger Code

Swift reduziert die Menge an Code, die für sich wiederholende Anweisungen und String-Manipulation erforderlich ist., In Objective-C ist die Arbeit mit Textzeichenfolgen sehr ausführlich und erfordert viele Schritte, um zwei Informationen zu kombinieren. Swift verwendet moderne Programmiersprachenfunktionen wie das Hinzufügen von zwei Zeichenfolgen zusammen mit einem Operator“+“, was in Objective-C fehlt Unterstützung für die Kombination von Zeichen und Zeichenfolgen wie diese ist von grundlegender Bedeutung für jede Programmiersprache, die einem Benutzer Text auf einem Bildschirm anzeigt.

Das Typsystem in Swift reduziert die Komplexität von Codeanweisungen-da der Compiler Typen herausfinden kann., Zum Beispiel erfordert Objective-C, dass Programmierer spezielle String-Token speichern (%s, %d, %@) und eine durch Kommas getrennte Liste von Variablen bereitstellen, um jedes Token zu ersetzen. Swift unterstützt die Zeichenfolgeninterpolation, wodurch Token nicht mehr gespeichert werden müssen, und Programmierer können Variablen direkt inline in eine vom Benutzer zugewandte Zeichenfolge einfügen, z. B. in einen Beschriftungs-oder Schaltflächentitel. Das Typinferenzierungssystem und die Zeichenfolgeninterpolation mildern eine häufige Ursache für Abstürze, die in Objective-C häufig vorkommen.,

Bei Objective-C führt das Durcheinander der Reihenfolge oder die Verwendung des falschen Zeichenfolgentokens zum Absturz der App. Hier entlastet Swift Sie erneut von der Buchhaltung und übersetzt in weniger zu schreibenden Code (Code, der jetzt weniger fehleranfällig ist), da er Textzeichenfolgen und Daten inline unterstützt.

Swift ist schneller

Das Löschen von Legacy-C-Konventionen hat Swift unter der Haube erheblich verbessert. Benchmarks für die Leistung von Swift-Code weisen weiterhin auf Apples Engagement hin, die Geschwindigkeit zu verbessern, mit der Swift App-Logik ausführen kann.,

Laut Primate Labs, den Machern des beliebten GeekBench-Performance-Tools, näherte sich Swift im Dezember 2014 mit dem Mandelbrot-Algorithmus den Leistungsmerkmalen von C++ für rechengebundene Aufgaben.

Im Februar 2015 entdeckten Primate Labs, dass die Xcode 6.3 Beta Swifts Leistung des GEMM—Algorithmus-einen speichergebundenen Algorithmus mit sequentiellem Zugriff auf große Arrays—um den Faktor 1.4 verbesserte. Die anfängliche FFT-Implementierung—ein speichergebundener Algorithmus mit zufälligem Zugriff großer Arrays—hatte eine 2,6-fache Leistungsverbesserung.,

Weitere Verbesserungen wurden in Swift durch Anwendung bewährter Verfahren beobachtet, was zu einem 8,5-fachen Anstieg der Leistung des FFT-Algorithmus führte (so dass C++ nur einen 1,1-fachen Leistungsgewinn verzeichnete). Die Verbesserungen ermöglichten es Swift auch, C++ für den Mandelbrot-Algorithmus um den Faktor 1.03 zu übertreffen.

Swift ist sowohl für den FFT-als auch für den Mandelbrot-Algorithmen fast mit C++ vergleichbar., Laut Primate Labs deutet die Leistung des GEMM — Algorithmus darauf hin, dass der Swift-Compiler Code, den der C++ – Compiler vektorisieren kann, nicht vektorisieren kann-ein einfacher Leistungsgewinn, der in der nächsten Version von Swift erzielt werden könnte.

Weniger Namenskollisionen mit Open-Source-Projekten

Ein Problem, das Objective-C-Code geplagt hat, ist der Mangel an formaler Unterstützung für Namespaces, die C++’s Lösung für Dateinamen-Kollisionen zu codieren. Wenn diese Namenskollision in Objective-C auftritt, handelt es sich um einen Linker-Fehler, und die App kann nicht ausgeführt werden. Problemumgehungen existieren, aber sie haben potenzielle Fallstricke., Die übliche Konvention besteht darin, ein Präfix mit zwei oder drei Buchstaben zu verwenden, um Objective – C-Code, der beispielsweise von Facebook geschrieben wird, von Ihrem eigenen Code zu unterscheiden.

Swift bietet implizite Namespaces, mit denen dieselbe Codedatei in mehreren Projekten vorhanden sein kann, ohne dass ein Build — Fehler auftritt und Namen wie NSString (Nächster Schritt-Steve Jobs‘ Firma nach dem Entlassen von Apple) oder CGPoint (Core Graphics) erforderlich sind). Letztendlich hält diese Funktion in Swift Programmierer produktiver und bedeutet, dass sie nicht die Buchhaltung in Objective-C durchführen müssen., Sie können Swifts Einfluss mit einfachen Namen wie Array, Dictionary und String anstelle von NSArray, NSDictionary und NSString sehen, die aus dem Fehlen von Namespaces in Objective-C

Mit Swift entstanden sind, basieren Namespaces auf dem Ziel, zu dem eine Codedatei gehört. Dies bedeutet, dass Programmierer Klassen oder Werte mithilfe der Namespace-ID unterscheiden können. Diese Veränderung in Swift ist riesig. Es erleichtert die Integration von Open-Source-Projekten, Frameworks und Bibliotheken in Ihren Code erheblich., Mit den Namespaces können verschiedene Softwareunternehmen dieselben Code-Dateinamen erstellen, ohne sich bei der Integration von Open-Source-Projekten um Kollisionen kümmern zu müssen. Jetzt können sowohl Facebook als auch Apple eine Objektcodedatei namens FlyingCar verwenden.swift ohne Fehler oder build-Fehler.

Swift unterstützt dynamische Bibliotheken

Die größte Änderung in Swift, die nicht genügend Aufmerksamkeit erhalten hat, ist der Wechsel von statischen Bibliotheken, die bei wichtigen Punktversionen aktualisiert werden (iOS 8, iOS 7 usw.), zu dynamischen Bibliotheken., Dynamische Bibliotheken sind ausführbare Codeblöcke, die mit einer App verknüpft werden können. Mit dieser Funktion können aktuelle Swift-Apps im Laufe der Zeit mit neueren Versionen der Swift-Sprache verknüpft werden.

Der Entwickler sendet die App zusammen mit den Bibliotheken, die beide digital mit dem Entwicklungszertifikat signiert sind, um die Integrität zu gewährleisten (hallo, NSA). Dies bedeutet, dass sich Swift schneller entwickeln kann als iOS, was eine Voraussetzung für eine moderne Programmiersprache ist. Änderungen an den Bibliotheken können alle mit dem neuesten Update einer App im App Store enthalten sein, und alles funktioniert einfach.,

Dynamische Bibliotheken wurden unter iOS bis zum Start von Swift und iOS 8 nie unterstützt, obwohl dynamische Bibliotheken seit langem auf dem Mac unterstützt werden. Dynamische Bibliotheken befinden sich außerhalb der ausführbaren App, sind jedoch im App-Bundle enthalten, das aus dem App Store heruntergeladen wurde. Es reduziert die Anfangsgröße einer App, wenn sie in den Speicher geladen wird, da der externe Code nur bei Verwendung verknüpft wird.

Die Möglichkeit, das Laden in einer mobilen App oder einer eingebetteten App auf der Apple Watch zu verschieben, verbessert die wahrgenommene Leistung für den Benutzer., Dies ist eine der Unterscheidungen, die das iOS-Ökosystem reaktionsschneller machen. Apple hat sich darauf konzentriert, nur Assets, Ressourcen und jetzt kompilierten und verknüpften Code im laufenden Betrieb zu laden. Das Laden im laufenden Betrieb reduziert die anfänglichen Wartezeiten, bis eine Ressource tatsächlich auf dem Bildschirm angezeigt werden muss.

Dynamische Bibliotheken in Swift ermöglichen es, Änderungen und Verbesserungen der Programmiersprache schneller als je zuvor zu verbreiten. Benutzer müssen nicht länger auf iOS Point-Versionen warten, um von Leistungs-oder Zuverlässigkeitsverbesserungen zu profitieren, die Apple in Swift einführt.,

Swift Playgrounds fördert interaktives Codieren

Swifts neu eingeführte Spielplätze sind ein Segen für erfahrene Entwickler. Die Spielplätze wurden teilweise von der Arbeit des ehemaligen Apple-Mitarbeiters Brett Victor inspiriert. Mit Playgrounds können Programmierer einen neuen Algorithmus oder eine neue Grafikroutine testen, z. B. 5 bis 20 Codezeilen, ohne eine ganze iPhone-App erstellen zu müssen.

Apple hat Playgrounds eine Inline-Codeausführung hinzugefügt, um Programmierern zu helfen, einen Codeabschnitt zu erstellen oder einen Algorithmus zu schreiben, während sie unterwegs Feedback erhalten., Diese Rückkopplungsschleife kann die Geschwindigkeit verbessern, mit der Code geschrieben werden kann, da das mentale Modell, das ein herkömmlicher Programmierer benötigt, durch Datenvisualisierungen auf Spielplätzen ersetzt werden kann. Programmierung ist ein iterativer Prozess, und jede Belastung, die reduziert oder verwendet werden kann, um den kreativen Prozess zu ergänzen, wird Programmierer produktiver machen und sie dazu bringen, größere Probleme zu lösen, anstatt sich auf langweilige Details zu konzentrieren, die traditionelle Compiler Programmierern auferlegt haben.,

Hinweis: Aus meiner Erfahrung im Unterrichten von Programmieranfängern sind Spielplätze für Anfänger nicht so leistungsfähig wie für erfahrene Programmierer. Einfach zu zeigen, wie eine Variable auf dem Swift Playground funktioniert, hilft einem Anfänger nicht, die Notwendigkeit einer Gleitkommavariablen im Vergleich zu einer ganzzahligen Variablen zu verstehen. Das Bedürfnis wird offensichtlich, wenn Sie eine App anzeigen, die sich im Facebook-Newsfeed an Ihre letzte Bildlaufposition erinnern kann. Für Anfänger kann die Frage „Warum“ nur mit einem funktionierenden Beispiel beantwortet werden: einer iPhone-App.,

Swift ist eine Zukunft, die Sie beeinflussen können

Objective-C geht nirgendwohin, aber dank der Einführung von Swift werden nicht so viele wichtige Änderungen vorgenommen. Einige Swift-Funktionen werden wahrscheinlich auf Objective-C migrieren, aber Objective-C ‚ s Vermächtnis in C bedeutet, dass es nur so viel aufnehmen kann.

Swift bietet der Entwicklungsgemeinschaft eine direkte Möglichkeit, eine Sprache zu beeinflussen, die zum Erstellen von Apps, eingebetteten Systemen (falls Apple jemals ein eingebettetes Framework und einen eingebetteten Chip für Dritte lizenziert) und Geräten wie der Apple Watch verwendet wird.,

Apple konzentriert sich darauf, das beste Verbrauchererlebnis zu bieten und baut nur die Funktionen auf, die als beachtenswert erachtet werden. Mit der Swift 1.2-Version in Xcode 6.3 hat Apple bereits Tausende von Fehlern behoben, die mit dem beliebten Apple Bug Reporter-Dienstprogramm gemeldet wurden. Das Team, das die Entwicklung und Entwicklung von Swift unterstützt, ist sehr daran interessiert, wie die Sprache verbessert werden kann, um die Entwicklungsgemeinschaft, die Apps und Systeme mit Swift erstellt, besser zu unterstützen.,

Swift: Die mehr ansprechbar, full-featured Sprache

der Großteil Der änderungen, die es ermöglichen, Swift rise above Objective-C Stamm fallen die legacy-Sprache Objective-C wurde auf gebaut. Apple bewegt sich nicht weg von Cocoa, das ist ihre API und Code-Bibliothek für die Schaffung der Erfahrungen, die Apple-esque fühlen. Stattdessen bieten sie eine voll funktionsfähige Parität und erleichtern die Interaktion mit neuen APIs, die Funktionen wie Force Touch oder Taptic Feedback unterstützen.

Viele Legacy-Entscheidungen wurden entwickelt, um das Compiler-Design zu vereinfachen., Swift konzentriert sich darauf, die Arbeit des App-Entwicklers zu erleichtern, indem es die mentale Belastung älterer Codierungspraktiken beseitigt. Wenn sich moderne Compiler verbessern, können mehr Informationen aus weniger Code abgeleitet werden.

Mit Swift, programmierer haben halb so viele code dateien zu pflegen, null manuelle code synchronisation, und weit weniger interpunktion zu mistype—was zu mehr zeit verbrachte schreiben qualität linien von code., Code wird jetzt in Swift selbstdokumentiert, indem optionale Typen hinzugefügt werden: ein Sicherheitsmechanismus zur Kompilierzeit zum Zurückgeben eines Werts oder ohne Wert, der bei asynchronen Vorgängen, Netzwerkfehlern, ungültigen Benutzereingaben oder Daten häufig auftritt Validierungsfehler. ARC ist in Swift sowohl zwischen prozeduralem Code im C-Stil als auch objektorientiertem Code mit Apples Cocoa Framework vereinheitlicht.

Entwickler werden feststellen, dass sie weniger Code in Swift schreiben, und moderne Sprachfunktionen unterstützen sie dabei, Codezeilen besser lesbar zu halten., Swift wird das gesamte Apple-Ökosystem dank der dynamischen Bibliotheksunterstützung in iOS und Swift an der Spitze der Programmierung halten. Open-Source-Projekte, SDKs von Drittanbietern und Frameworks, die in die Heimautomation, Geräte und soziale Dienste integriert werden können, sind einfacher zu integrieren, ohne die Erstellungszeiten zu verlängern. Swift ist in einigen Algorithmen fast so schnell wie C++ und die neueste Version von Xcode 6.3 und Swift 1.2 weist auf zusätzliche Leistungsoptimierungen am Horizont hin.,

Hinzu kommt die Tatsache, dass Playgrounds und Swift eine neue Art der Programmierung mit visuellem Feedback ermöglichen, die die Entwicklung von Algorithmen mithilfe von Inline-Datenvisualisierungen unterstützt. Eine kürzere Rückkopplungsschleife und grafische Beschreibungen erleichtern den Start des iterativen Codierungsprozesses.

Letztendlich ist Swift eine zugänglichere Programmiersprache mit vollem Funktionsumfang, die es Entwicklern ermöglicht, nicht nur Apps zu erstellen, sondern auch eingebettete Systeme wie die neue Apple Watch mit geringerer Leistung für viele Jahre anzuvisieren.,

  • 10 Funktionen, die Apple für die Swift-Programmiersprache „gestohlen“ hat
  • 9 Dinge, die wir an Objective-C hassen
  • Review: 7 ausgezeichnete mobile App Builder
  • Review: AppStudio ist wie Visual Basic für mobile Entwickler
  • Review: Appery.io pairs mobile App Builder mit Back-End-Services
  • Bewertung: Alpha Anywhere Asse offline mobile Apps

Share

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.