Freunde, hallo alle zusammen. In Kontakt Dmitry Kozhevin ist Lehrer des Grundkurses „Android Developer“ bei OTUS. Speziell für die Leser unseres Blogs habe ich eine Übersetzung eines solchen teilweise provokanten Artikels vorbereitet. Ihre Meinung ist sehr interessant, daher lade ich nach dem Lesen alle ein, diese Veröffentlichung zu kommentieren.
Nachdem Kotlin Google-Unterstützung erhalten hatte, war die Aufregung der Kotlin-Fans nicht die einzige Reaktion. Diejenigen, die mit Kotlin nicht vertraut sind, waren sehr besorgt über die Kompatibilität mit Java, die durchschnittliche Lernzeit und die
Vorteile der Verwendung von Kotlin im Allgemeinen.
Bei ihren Versuchen, die Sprache auf kürzeste und klarste Weise zu erklären und zu präsentieren, verwiesen viele Kotlin-Entwickler auf die dreijährige Parallele zwischen Kotlin und der zweiten offiziellen iOS-Sprache, Swift. Als Kotlin „Swift of Android“ bezeichnet, vereinfachte alles die Aufgabe und half dabei, ein Bild für die Sprache zu erstellen. Dieses Bild sorgte
jedoch auch in der iOS-Community für
Kontroversen , da einige iOS-Entwickler den Vergleich nicht als schmeichelhaft empfanden und Kotlin nur als Nachahmer betrachteten.
Zumindest sollte angemerkt werden, dass, obwohl Swift 2013 erschien, Kotlin 2011 erschien. Selbst wenn der Vergleich von Kotlin und Swift (in genau dieser Reihenfolge) aufgrund der früheren Exposition von Swift gegenüber einem breiteren Publikum zweckmäßig sein könnte, ist eine Behauptung, die Kotlin nachahmt, nicht gerechtfertigt.
Lohnt es sich jedoch zu vergleichen? Wenn ja, um wie viel erstreckt sich die Ähnlichkeit? Und deutet seine Existenz darauf hin, dass die Veröffentlichung von Anwendungen für iOS und Android in Zukunft zunächst einfacher und schneller werden könnte? Die langjährige Erfahrung von ScienceSoft im
Bereich der Entwicklung mobiler Anwendungen ermöglicht derzeit Spekulationen. Schauen wir uns das an.
Syntax
Die schnelle Syntax erinnert nicht nur an die Kotlin-Syntax - in kleinen Codeteilen kann eine Zeilenähnlichkeit von bis zu
77% bestehen .
Die Hauptunterschiede können in der folgenden Tabelle zusammengefasst werden:
Grundlagen, Klassen und Funktionen haben sehr ähnliche Ausdrucksformen. Im Gegensatz zu Objective-C ähneln Swift-Methodenaufrufe Java- und Kotlin-Aufrufen mit ihrem Namespace-System und dem Punktnotationsstil. So sieht beispielsweise ein Funktionsaufruf in zwei Sprachen aus:
Und so werden die Klassen in beiden deklariert:
In diesem
Artikel finden Sie viele andere Beispiele. Wenn sie uns etwas sagen, haben beide Sprachen ein gemeinsames Ziel - so präzise und transparent wie möglich zu sein, was das Leben der Entwickler erleichtert. Die Syntaxsysteme von Kotlin und Swift sind in dieser Hinsicht sehr effektiv, da die Entwicklungsteams ihre Eleganz sehr schätzen.
Sicherheit
Obwohl Swift und Kotlin in Bezug auf die Eingabe stark und statisch sind, können Sie auch mit dynamischen Typen arbeiten. Auf diese Weise bleiben Sprachen präzise und flexibel, sodass Fehler und Inkonsistenzen frühzeitig beseitigt werden können. Daher gelten sie als sehr sicher und besonders zuverlässig für große Projekte.
Darüber hinaus kombinieren diese beiden Sprachen Ansätze zum Umgang mit optionalen Werten und zur Null / Null-Sicherheit mit dem sicheren Navigationsoperator "?" oder Arten von Optionen. Vorsichtsmaßnahmen mit einem "?" fast identisch ausgedrückt in Kotlin und Swift:
Eigenschaften
Zusätzlich zu null (null) Sicherheit, Funktionen und Klassen haben Kotlin und Swift viele ähnliche Funktionen, einschließlich
constants, variables, generics, protocols/traits
(
Merkmal wird durch Schnittstelle ersetzt , Anmerkung des Übersetzers),
enumerated types, any (anyobject)
, Fehlerbehandlung und andere. Einige in zwei Sprachen implementierte Funktionen teilen den Ansatz, werden jedoch aufgrund der Originalsprache, in die diese Funktionen zurückkehren, unterschiedlich aufgerufen.
In Kotlin finden Sie beispielsweise Java-Lambda-Ausdrücke. In Swift sind dies Blöcke oder Verschlüsse, Begriffe aus Objective-C. Die Art und Weise, wie beide Ausdrücke in Code aufgerufen werden, ähnelt der Funktionsweise.
Eine Funktion,
die in Swift als
berechnete Eigenschaften bezeichnet wird und eine bestimmte Eigenschaftsdeklaration mit einem Aufruf zum Abrufen darstellt, ist auch in Kotlin enthalten:
Namensparameter (oder benannte Argumente) werden auch in beiden Sprachen verwendet:
Anstatt die Funktionen aufzulisten, die in beiden Sprachen vorhanden sind, wäre es einfacher, diejenigen aufzulisten, die dies nicht tun. Nur Kotlin unterstützt nämlich:
- Klassen importieren
- Primärkonstruktoren und Datenklassen
- @annotations
Gleichzeitig hat Swift im Gegensatz zu Kotlin:
- Tupel
- Typealien
- Wachaussage
Ähnlichkeitswert
Die beiden Sprachen trennen die Ideologie klar voneinander, da sie dieselben Probleme lösen, die durch die Sprachen ihrer Vorfahren verursacht wurden: Sie sind weniger ausführlich und in ihrer Funktion eingeschränkt, lesbarer und bequemer zu bearbeiten. Gleichzeitig bleiben Kotlin und Swift mit Java bzw. Objective-C kompatibel, sodass sie sowohl in neuen als auch in alten Projekten verwendet werden können.
Darüber hinaus können starke Ähnlichkeiten zwischen den beiden Sprachen bei der Entwicklung nativer Anwendungen für iOS und Android hilfreich sein. Natürlich kann nicht gesagt werden, dass Anwendungen auf beiden Plattformen denselben Code verwenden können, da Sprachen und Bibliotheken für bestimmte Betriebssysteme nicht identisch sind. Die Ansätze zur Logik und Funktionalität der Anwendung können jedoch aufgrund der syntaktischen und funktionalen Ähnlichkeiten zwischen Swift und Kotlin sehr ähnlich sein. Dies kann die Entwicklung, das Testen und die Wartung schneller und einfacher machen.
Universelle Sprache für iOS und Android?
Theoretisch könnte Google Swift bereits als Amtssprache anstelle von Kotlin akzeptieren. Auch im Jahr 2016 gab es Gerüchte über diese Möglichkeit. Ein solcher Schritt würde wahrscheinlich keine Situation schaffen, in der plattformübergreifende Entwicklungstools irrelevant würden, aber der Unterschied zwischen den beiden Plattformen würde zweifellos verschwimmen.
Ein solcher Schritt wäre jedoch auch unangemessen, nicht nur wegen der Wettbewerbsfähigkeit des Unternehmens. Obwohl Swift und Kotlin ähnlich sind, ähneln sie vor allem ihren Vorgängern. Mit anderen Worten, Swift und Kotlin schließen die Lücke zwischen Objective-C und Java. Der Wechsel von Java zu Kotlin ist jedoch immer noch natürlicher und reibungsloser als der Wechsel von Java zu Swift.
Im Allgemeinen mag nicht jeder die Idee, sich an etwas Neues anzupassen; Einige Entwickler nehmen sich die Zeit, um eine neue Sprache zu verwenden, wie dies
bei der Einführung von Swift der Fall war. Um sicherzustellen, dass der Übergang zu einer neuen Sprache kein so schwieriger Test ist, gewinnt die Sprache letztendlich an Popularität, und für eine neue Sprache ist dies in erster Linie wichtig.
Abschiedsgedanke
Da sich die mobile Entwicklung ständig weiterentwickelt, entwickeln sich auch die Technologien ständig weiter. Deshalb können sowohl Kotlin als auch Swift in 5-10 Jahren etwas völlig anderes werden. Es ist noch nicht bekannt, ob Sprachen weiterhin die Lücke zwischen sich schließen werden. Da iOS und Android jedoch nach dem bequemsten, sichersten und schnellsten Tool für die mobile Entwicklung suchen, können sie eines Tages dieselbe Sprache sprechen.