Swift vs. Objective-C: Der aufstrebende Nachwuchs gegen den Dinosaurier

Eine kurze Geschichte von Swift

Ich erinnere mich, wie wichtig es war, als Swift auf der WWDC (Worldwide Developers Conference) 2014 von Apple vorgestellt wurde. Es war das Gespräch der Stadt und alle Entwickler, mit denen ich zusammengearbeitet habe, konnten es kaum erwarten, es auszuprobieren. Die iOS-Community brummte und die neue Sprache war sehr aufregend.

Es wurde entwickelt, um einige Konzepte, die wir in Objective-C gesehen haben, wie die erweiterbare Programmierung, fortzusetzen. Es wurde jedoch ein anderer Ansatz für die Codierung mit dem protokollorientierten Design und eine erhöhte Sicherheit durch statische Typisierung angestrebt.

Es war ein großer Erfolg und sah seine Wachstumsrakete in den Jahren nach der Einführung. Es war die beliebteste Programmiersprache im Jahr 2015, die zweitbeliebteste im Jahr 2016, die elftbeliebteste Programmiersprache im Jahr 2017, die Objective-C besiegte, und die Objective-C im Jahr 2018.

Swift ist auch eine Wette von Apple darauf, Neulinge für iOS-Entwickler zu gewinnen. Die Hoffnung ist, dass neue Entwickler die Sprache lernen und damit iOS-Apps erstellen. Dies erhöht dann das Ökosystem des App Stores. Da Swift für die Arbeit mit iOS-Apps optimiert ist, wird sichergestellt, dass die zu schreibenden Apps von hoher Qualität sind.

Die Popularität von Swifts nimmt weiter zu, insbesondere bei kleineren Apps und Start-ups. Die Kluft zwischen Swift und Objective-C wird nur noch größer. Die Zukunft dieser jungen Sprache ist vielversprechend.

Eine kurze Geschichte von Objective-C

Objective-C ist eine objektorientierte Programmiersprache, die eine Obermenge von C ist, wie der Name der Sprache möglicherweise verrät. Dies bedeutet, dass jedes gültige C-Programm mit einem Objective-C-Compiler kompiliert wird. Es leitet seine gesamte nicht objektorientierte Syntax von C und seine objektorientierte Syntax von SmallTalk ab. Es wurde 1984 entwickelt, hatte also Zeit, als Sprache zu reifen und ist viel stabiler als Swift.

Die meisten Menschen kennen Objective-C als die Sprache, mit der Apps für das iPhone entwickelt werden, aber die Geschichte geht viel tiefer. Ich würde empfehlen, diesen Artikel zu lesen, um einen genaueren Blick darauf zu werfen.

Die Stärken von Swift

Swift ist aus einigen wichtigen Gründen enorm populär geworden. Zunächst einmal gibt es viele großartige Entwicklungstools, die Apple für die Zusammenarbeit mit Swift bereitgestellt hat. Einer meiner persönlichen Favoriten ist der Spielplatz, der nur mit Swift kompatibel ist. Apple hat Playgrounds im Jahr 2016 eingeführt. Sie wurden eingeführt, um das Codieren zu lernen, aber ich habe sie aus einem anderen Grund geliebt.

Die mobile Entwicklung hatte immer mehr Hindernisse als die Webentwicklung. Sie benötigen einen Simulator, normalerweise eine proprietäre integrierte Entwicklungsumgebung (IDE) und ein ganzes Projekt, um nur einen kleinen Prototyp zu testen. In Apples Fall benötigen Sie außerdem ein Entwicklerkonto. Das Schöne an Playgrounds ist, dass Sie einiges davon umgehen können. Sie benötigen Xcode oder die Playgrounds-App, aber das ist alles. Und Sie können sofort mit dem Codieren und Kompilieren Ihres Codes beginnen.

Ein weiterer großer Vorteil von Swift ist die Tatsache, dass es Open Source ist. Wenn Sie sich jemals gefragt haben, wie eine Programmiersprache unter der Haube funktioniert, können Sie sich selbst davon überzeugen! Dies ist eine großartige Möglichkeit, die Programmiersprache, mit der Sie täglich arbeiten, auf einer tieferen Ebene zu verstehen.

Eine lobende Erwähnung gilt einem netten Dienstprogramm, das nur Swift, dem Swift Package Manager, zur Verfügung steht. Der Swift Package Manager ist einfach ein Abhängigkeitsmanager, der in das Swift-Buildsystem integriert ist. Es ist keineswegs ein Game Changer, da CocoaPods und Carthage diesen Job vor langer Zeit gemacht haben, aber es ist eine andere Lösung, die bei Bedarf verfügbar ist.

Viele Beweise stützen die Tatsache, dass Apple viel unternimmt, um Swift als Programmiersprache der Wahl für iOS-Entwickler begehrenswerter zu machen. Sie schaffen nette Dienstprogramme und Hilfsmittel, um die Leute dazu zu verleiten, die Sprache zu benutzen. Dies zeigt, dass Apple mit voller Kraft auf Swift drängt.

Sprachmerkmale

Kommen wir zu einigen Details der Sprache. Swift ist aufgrund seiner statischen Typisierung und der Verwendung von Optionen sicherer. Wenn in Swift für Ihren Code eine Zeichenfolge erforderlich ist, garantieren die Funktionen von Swift, dass Ihr Code eine Zeichenfolge und keinen anderen Typ wie int erhält. Dies hängt natürlich davon ab, ob Sie die beabsichtigte Sprache verwenden und nicht das Auspacken erzwingen.

Ein weiteres großartiges Merkmal von Swift ist seine Syntax. Besonders im Vergleich zu Objective-C. Das beste Wort, um die Syntax zu beschreiben, wäre "prägnant". Es sind keine Semikolons, Aufrufe an sich selbst oder Klammern um if-Anweisungen erforderlich. Es fühlt sich an, als würden Sie viele Dinge überspringen, die Sie sowieso nicht wirklich brauchen. Dies kann den Prozess des Eingebens von viel Code "fließen" verbessern.

Einige Leute sagen, dass dies zu Verbesserungen der Entwicklungsgeschwindigkeit führt, aber das würde ich selbst nicht genau sagen. Die ständige Notwendigkeit, Objekte auszupacken, um die Sicherheit des Swifts-Typs zu gewährleisten, gleicht die mit der Prägnanz verbundenen Entwicklungsgewinne aus.

Swift hat auch viele großartige Kontrollflussoptionen mit Guard, If-Let, erweiterten Switch-Anweisungen, Repeat-While und Defer. Ich mag all die verschiedenen Optionen, weil sie es den Leuten ermöglichen, den Fluss ihres Codes auf eine Weise zu steuern, die für sie sinnvoll ist. Viele Menschen hassen Verschiebungen, lieben aber Wachen und umgekehrt. Es spielt keine Rolle, was Sie mögen oder nicht mögen, aber die Optionen sind vorhanden und Sie können so codieren, wie es sich für Sie am besten anfühlt.

Ich kann nicht alle funktionalen Programmierfunktionen wie Filtern, Zuordnen und Reduzieren vergessen. Dies eignet sich hervorragend für die Handhabung von Sammlungen und ist häufig nützlich.

Die Schwächen

Swift ist eine junge Sprache, und damit einher geht eine gewisse Veränderung. Die Migrationen zwischen den Versionen sind einfach ein Schmerz. In einem kleinen Unternehmen kann das von Apple bereitgestellte Migrationstool hilfreich sein und die meisten Fälle abdecken. Je mehr Code Sie haben, desto weniger hilfreich wird es. Es ist noch schlimmer, wenn Ihre Codebasis sowohl Objective-C- als auch Swift-Code enthält, die zusammenarbeiten.

In meiner letzten Firma dauerte die Migration ein ganzes Wochenende. Sie mussten es am Wochenende tun, damit sie nicht auf Zusammenführungskonflikte anderer Entwickler stießen, die Code pushen. Das war für alle Beteiligten unglaublich schmerzhaft.

Ein Grund für diese Migrationen ist die Tatsache, dass Swift nicht ABI-stabil ist. Das bedeutet, dass neuere Versionen von Swift nicht mit älteren Versionen von Swift funktionieren können. Das bedeutet auch, dass die Sprache nicht mit dem Betriebssystem gepackt werden kann. Dies ist eine große Sache für Unternehmen mit großen Apps, die die App-Größe aktiv bekämpfen, da Swift mit der App gebündelt wird und die Größe erhöht.

Ein weiteres Problem ist, dass Swift mit Xcode nicht gut spielt. Xcode fühlt sich bei der Arbeit mit Swift sehr abgehackt an und die automatische Vervollständigung funktioniert manchmal einfach nicht. Dies ist seltsam, wenn man bedenkt, wie stark Apple Swift vorantreibt. Sie würden denken, dass sie die Erfahrung mit Swift mit Xcode zu einer Freude machen möchten.

Swift hat auch Probleme mit der Handhabung von Zeichenfolgen, siehe das obige Codebeispiel. Es ist höllisch klobig. In Ihrem Alltag ist das nicht so schlimm. Wo dies am meisten ins Spiel kommt, ist während der Interviews. Unglücklicherweise für Swift-Entwickler lieben es Interviewer, Fragen zu stellen, bei denen es um die Manipulation von Strings geht. Hinzu kommt, dass sich die Art und Weise, wie mit Zeichenfolgen umgegangen wird, zwischen den Swift-Versionen geändert hat.

Die Stärken von Objective-C

Objective-C ist eine hochdynamische, objektorientierte Sprache. Es ist so dynamisch, dass Sie Methodenaufrufe zur Laufzeit mithilfe von Techniken wie Swizzling austauschen können. Es ist in der Lage, solche Dinge aufgrund seines Paradigmas für das Senden von Nachrichten zu tun. Auf diese Weise können Objekte zur Laufzeit Nachrichten an andere Objekte senden, um den Aufruf der aufgerufenen Methode zu bestimmen.

Was bedeutet das in der Praxis? Ein großer Vorteil ist die Anpassungsfähigkeit zur Laufzeit. Dies bedeutet, dass der Zugriff auf private APIs oder das Verspotten von Objekten zur Laufzeit möglich wird. Dies kann besonders nützlich sein, wenn es um Unit-Tests geht. Bibliotheken wie OCMock machen dies noch einfacher und ermöglichen sehr aufwändige Testaufbauten. Gute Unit-Tests machen Ihre App stabiler und zuverlässiger.

Apropos Stabilität: Objective-C gibt es schon seit langer Zeit, was es zu einer sehr stabilen Sprache macht. Mit Swift stoßen Sie auf Fehler, die ziemlich überraschend sind und die Stabilität Ihrer App beeinträchtigen. In dem Beispiel, das ich oben verlinkt habe, wird dieser Absturz durch die tatsächliche Sprache verursacht, die Sie zum Codieren Ihrer App verwenden, und nicht durch einen Fehler, der durch den von Ihnen geschriebenen Code verursacht wurde. Das kann frustrierend sein.

Der letzte Punkt, der für bestimmte Unternehmen wichtiger ist, ist die Kompatibilität mit C- und C ++ - Bibliotheken. Da Objective-C eine Obermenge von C ist, ist es einfach, C- und C ++ - Code mit Objective-C zu verwenden. Sie können sogar Objective-C ++ verwenden, wenn Sie dies wünschen. Dies ist wichtig, wenn Sie von C- und C ++ - Bibliotheken von Drittanbietern abhängig sind.

Die Schwächen

Die erste Hauptbeschwerde, die ich über Objective-C höre, ist die Syntax. Ich habe meine berufliche Laufbahn mit Objective-C begonnen, daher habe ich keine Probleme damit. Es ist ausführlich und etwas unkonventionell bei der Verwendung von eckigen Klammern. Aber Meinungen zur Syntax sind genau das, Meinungen. Ich dachte mir, ich würde diesen Punkt auflisten, da dies eines der ersten Dinge ist, die auftauchen, wenn Sie Objective-C erwähnen.

Eine Sache, der ich jedoch zustimme, ist, dass die Blocksyntax frustrierend ist. Es gibt sogar eine Website, die sich der Entschlüsselung der Geheimnisse von Blöcken in Objective-C widmet. Ich benutze diese Website eigentlich ziemlich oft als Referenz.

Das größte Problem, mit dem Objective-C derzeit konfrontiert ist, ist die Tatsache, dass Apple eines Tages möglicherweise die Unterstützung für Objective-C mit Cocoa und anderen gängigen Bibliotheken, die zum Erstellen von iOS-Apps verwendet werden, einstellen wird. Da Objective-C hauptsächlich zum Erstellen von iOS-Apps verwendet wird, wäre dies ein Todesstoß für die Sprache. Dies bedeutet auch, dass Neulinge in der iOS-Community Angst haben, Objective-C jetzt zu lernen, da es in Zukunft möglicherweise nicht mehr verwendet wird.

Kommen wir zurück zur Sprache. Aufgrund der Dynamik der Sprache kann es zu Problemen beim Debuggen kommen. Die Möglichkeit, Nachrichten an nil zu senden und nicht zusätzlich zum Fehlen einer strengen Eingabe abzustürzen, sind einige Beispiele für Dinge, die zu diesen schwer zu debuggenden Problemen führen.

Objective-C hält auch bei diesen Dingen nicht die Hand. Obwohl es schön ist, dass die App nicht abstürzt, wenn Sie eine Nachricht an nil senden, kann dies Ihre App in einen seltsamen Zustand versetzen. Es ist sehr schwer, solche Probleme zu debuggen. Die Tatsache, dass Swift strikt tippt und Optionen zum Auspacken verwendet, verhindert diese Dinge beim Kompilieren.

Soll ich Swift oder Objective-C lernen?

Die Antwort für die meisten Menschen wird schnell sein. Apple drängt Swift eindeutig als die Sprache der Wahl für seine iOS-Anwendungsentwickler-Community. Swift wird erst dann leistungsfähiger, wenn die ABI-Stabilität eingeführt wird und Swift mit dem Betriebssystem selbst verpackt wird.

Wenn Sie einen Job als iOS-Entwickler suchen, ist Swift die Sprache, die Sie lernen möchten. Die meisten Startups für mittelständische Unternehmen haben ihre iOS-Apps vollständig in Swift geschrieben. Dies bedeutet, dass Sie sich für weitere Jobs bewerben und ein Vorstellungsgespräch führen können, wenn Sie Swift lernen.

Selbst in größeren Unternehmen, in denen Objective-C immer noch stark genutzt wird, können Interviews in Swift durchgeführt werden. So können Sie Objective-C lernen, sobald Sie in das Unternehmen eintreten, und müssen sich nicht darum kümmern, sich vor dem Vorstellungsgespräch mit weiteren Lerninhalten zu belasten.

Sie möchten Objective-C lernen, wenn Sie bereits in einem Start-up- oder mittelständischen Unternehmen arbeiten und zu einem größeren Unternehmen wechseln möchten. Fähigkeiten mit Objective-C geben Ihnen Fachwissen und einen Vorteil gegenüber anderen Interviewkandidaten.

Hat dir gefallen, was du gelesen hast? Schauen Sie sich einige meiner anderen Artikel an:

Tipps für Ihr erstes Tech-Interview.

Eine Tech-Karriere aus dem Nichts beginnen.

Sollten Sie einen Abschluss in Informatik machen?