Kotlin vs Swift: Android et iOS évoluent-ils vers un langage universel?



Amis, bonjour à tous. En contact Dmitry Kozhevin est professeur du cours de base «Android Developer» à OTUS. Surtout pour les lecteurs de notre blog, j'ai préparé une traduction d'un article en partie provocateur. Votre avis est très intéressant, donc, après lecture, j'invite tout le monde à commenter cette publication.



Une fois que Kotlin a obtenu le soutien de Google, l'enthousiasme des fans de Kotlin n'a pas été la seule réaction. Ceux qui ne connaissent pas Kotlin étaient très préoccupés par son niveau de compatibilité avec Java, le temps moyen nécessaire pour l'apprendre et les avantages de l'utilisation de Kotlin en général.

Dans leurs tentatives d'expliquer et de présenter le langage de la manière la plus courte et la plus claire, de nombreux développeurs de Kotlin ont fait référence au parallèle de trois ans entre Kotlin et le deuxième langage iOS officiel, Swift. En appelant Kotlin «Swift of Android», tout a simplifié la tâche et aidé à créer une image pour la langue. Cependant, cette image a également suscité la controverse dans la communauté iOS, car certains développeurs iOS n'ont pas trouvé la comparaison flatteuse et ont vu Kotlin juste un copieur.

Au moins, il convient de noter que bien que Swift soit apparu en 2013, Kotlin est apparu en 2011. Par conséquent, même si la comparaison de Kotlin et de Swift (dans cet ordre exact) peut être pratique en raison de l'exposition antérieure de Swift à un public plus large, toute affirmation que Kotlin imite n'est pas justifiée.

Mais vaut-il la peine de comparer? Si oui, dans quelle mesure la similitude s'étend-elle? Et son existence laisse-t-elle entendre que la publication d'applications pour iOS et Android pourrait initialement devenir plus simple et plus rapide à l'avenir? La vaste expérience de ScienceSoft dans les services de développement d'applications mobiles permet à ce stade de spéculer. Jetons un coup d'oeil à cela.

Syntaxe


La syntaxe Swift ne fait pas seulement penser à la syntaxe Kotlin - dans de petits morceaux de code, il peut y avoir jusqu'à 77% de similitude de ligne .

Les principales différences peuvent être résumées dans le tableau ci-dessous:

KotlinRapide
amusantfunc
vallaisse
nulnul
traitprotocole
constructeurinit
:->
ToutAnyobject
!!!

Les fondamentaux, les classes et les fonctions ont des manières très similaires d'exprimer. Contrairement à Objective-C, les appels de méthode Swift sont similaires aux appels Java et Kotlin, avec leur système d'espace de noms et leur style de notation par points. Par exemple, voici à quoi ressemble un appel de fonction en deux langues:

KotlinRapide
prévisions amusantes (jour: String, météo: String): String {prévisions func (_ jour: String, _ météo: String) -> String {
return "Aujourd'hui, c'est $ jour, c'est $ météo."return "Aujourd'hui c'est \ (jour), c'est \ (météo)."
}}
prévisions ("lundi", "pluie")prévisions ("lundi", "pluie")

Et voici comment les classes sont déclarées dans les deux:

KotlinRapide
Résidence de classe {Résidence de classe {
var numberOfRooms = 0var numberOfRooms = 0
amusant Description () =func Description () -> Chaîne {
"Une maison avec $ numberOfRooms."return "Une maison avec \ (numberOfRooms)."
}}
}

Vous pouvez trouver de nombreux autres exemples dans cet article , et s'ils nous disent quelque chose, c'est que les deux langues ont un objectif commun - être aussi concis et transparent que possible, ce qui facilite la vie des développeurs. Les systèmes de syntaxe de Kotlin et Swift sont assez efficaces à cet égard, car les équipes de développement accordent une grande importance à leur élégance.

La sécurité


Bien que Swift et Kotlin soient solides et statiques en termes de frappe, ils vous permettent également de travailler avec des types dynamiques. De cette façon, les langues restent concises et flexibles, ce qui permet d'éliminer rapidement les erreurs et les incohérences. Par conséquent, ils sont considérés comme très sûrs et particulièrement fiables pour les grands projets.
De plus, ces deux langues combinent des approches de gestion des valeurs facultatives et de la sécurité nulle / nulle en utilisant l'opérateur de navigation sécurisée "?" ou types d'options. Précautions marquées d'un "?" exprimé de manière presque identique dans Kotlin et Swift:

KotlinRapide
exemple val: String? = nullexemple var: String? = nul

CARACTÉRISTIQUES


En plus de la sécurité, des fonctions et des classes nulles, Kotlin et Swift ont de nombreuses fonctions similaires, y compris les constants, variables, generics, protocols/traits (le trait est remplacé par l'interface , la note du traducteur), enumerated types, any (anyobject) , la gestion des erreurs et d'autres. Certaines fonctions implémentées en deux langues partagent l'approche, mais sont appelées différemment en raison de la langue d'origine à laquelle ces fonctions reviennent.

Par exemple, dans Kotlin, vous pouvez trouver des expressions lambda Java. Dans Swift, il s'agit de blocs ou de fermetures, termes tirés d'Objective-C. La façon dont les deux expressions sont appelées dans le code est similaire à la façon dont elles fonctionnent.
KotlinRapide
{{_in
println ("Expression Lambda")impression ("Expression de fermeture")
}}

Une fonction connue sous le nom de propriétés calculées dans Swift, qui est une déclaration de propriété spécifique avec un appel à obtenir, est également incluse dans Kotlin:

KotlinRapide
classe Animal (classe Animal {
var Genre: String,var Genus: String
var Espèce: String) {var Espèce: String
val binomialName: Stringvar binomialName: String {
get () = "$ Genus $ Species"obtenir {
}retourner "\ (Genre) \ (Espèce)"
}
}
}

Les paramètres de nom (ou arguments nommés) sont également utilisés dans les deux langues:
KotlinRapide
jours fériés amusants (vacances: Int, week-ends: Int): Int = vacances + week-endsfunc daysoff (vacances: Int, week-ends: Int) -> Int {
retour vacances + week-end
}
jours fériés (5, week-ends = 8)jours fériés (vacances: 5, fins de semaine: 8)

En fait, au lieu de lister les fonctions qui existent dans les deux langues, il serait plus facile de lister celles qui n'en ont pas. À savoir, seul Kotlin prend en charge:

  • classes d'importation
  • constructeurs principaux et classes de données
  • @annotations

Dans le même temps, contrairement à Kotlin, Swift a:

  • tuples
  • typealias
  • déclaration de garde

Valeur de similitude


Les deux langues séparent clairement l'idéologie, car elles résolvent les mêmes problèmes créés par les langues de leurs ancêtres: elles sont moins verbeuses et limitées en fonction, plus lisibles et plus pratiques à utiliser. Dans le même temps, Kotlin et Swift restent respectivement compatibles avec Java et Objective-C, ce qui leur permet d'être utilisés à la fois dans de nouveaux projets et dans l'entretien d'anciens.

De plus, de fortes similitudes entre les deux langues peuvent aider au développement d'applications natives pour iOS et Android. Bien sûr, on ne peut pas dire que les applications sur les deux plates-formes peuvent partager le même code, car les langues et les bibliothèques pour des systèmes d'exploitation spécifiques ne sont pas identiques. Cependant, les approches de la logique et des fonctionnalités de l'application peuvent être très similaires, grâce aux similitudes syntaxiques et fonctionnelles entre Swift et Kotlin. Cela peut accélérer et faciliter le développement, les tests et la maintenance.

Langage universel pour iOS et Android?


Théoriquement, Google pourrait déjà accepter Swift comme langue officielle au lieu de Kotlin; même en 2016, il y avait des rumeurs sur cette possibilité. Une telle étape ne créerait probablement pas une situation où tout outil de développement multiplateforme deviendrait hors de propos, mais la différence entre les deux plates-formes deviendrait sans aucun doute floue.

Cependant, une telle étape serait également déraisonnable, et pas seulement en raison de la compétitivité de l'entreprise. Bien que Swift et Kotlin soient similaires, ils sont surtout similaires à leurs prédécesseurs. En d'autres termes, Swift et Kotlin comblent le fossé entre Objective-C et Java. Cependant, le passage de Java à Kotlin est encore plus naturel et fluide que le passage de Java à Swift.

En général, tout le monde n'aime pas l'idée de s'adapter à quelque chose de nouveau; certains développeurs prennent le temps de commencer à utiliser un nouveau langage, comme ce fut le cas avec l'adoption de Swift . S'assurer que la transition vers une nouvelle langue ne sera pas un test aussi difficile signifie que la langue finit par gagner en popularité, et pour une nouvelle langue, cela est important en premier lieu.

Pensée d'adieu


Le développement mobile étant en constante évolution, les technologies aussi. C'est pourquoi en 5 à 10 ans, Kotlin et Swift peuvent devenir quelque chose de complètement différent. On ne sait pas encore si les langues continueront de combler le fossé entre elles. Cependant, comme iOS et Android recherchent l'outil le plus pratique, le plus sécurisé et le plus rapide pour le développement mobile, ils finiront par parler un jour la même langue.

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


All Articles