Kotlin vs. Swift: Android und iOS bewegen sich in Richtung einer universellen Sprache?



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:

KotlinSchnell
Spaßfunc
vallass
nullnull
EigenschaftProtokoll
Konstruktorinit
:->
BeliebigAnyobject
!!!

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:

KotlinSchnell
Spaßvorhersage (Tag: String, Wetter: String): String {Funktionsvorhersage (_ Tag: String, _ Wetter: String) -> String {
return "Heute ist $ Tag, es ist $ Wetter."return "Heute ist \ (Tag), es ist \ (Wetter)."
}}
Vorhersage ("Montag", "Regen")Vorhersage ("Montag", "Regen")

Und so werden die Klassen in beiden deklariert:

KotlinSchnell
Klasse Residenz {Klasse Residenz {
var numberOfRooms = 0var numberOfRooms = 0
Spaß Beschreibung () =func Beschreibung () -> String {
"Ein Haus mit $ numberOfRooms."return "Ein Haus mit \ (numberOfRooms)."
}}
}

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:

KotlinSchnell
val Beispiel: String? = nullvar Beispiel: String? = null

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.
KotlinSchnell
{{_in
println ("Lambda-Ausdruck")print ("Abschlussausdruck")
}}

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:

KotlinSchnell
Klasse Tier (Klasse Tier {
var Gattung: String,var Gattung: String
var Spezies: String) {var Spezies: String
val binomialName: Stringvar binomialName: String {
get () = "$ Genus $ Species"get {
}return "\ (Gattung) \ (Art)"
}
}
}

Namensparameter (oder benannte Argumente) werden auch in beiden Sprachen verwendet:
KotlinSchnell
lustige freie Tage (Urlaub: Int, Wochenenden: Int): Int = Urlaub + Wochenendenfunc daysoff (Urlaub: Int, Wochenenden: Int) -> Int {
Rückkehr Urlaub + Wochenenden
}
Ruhetag (5, Wochenende = 8)Ruhetag (Urlaub: 5, Wochenende: 8)

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.

Source: https://habr.com/ru/post/de474224/


All Articles