Kotlin vs. Swift: ¿Android e iOS avanzan hacia un lenguaje universal?



Amigos, hola a todos. En contacto Dmitry Kozhevin es profesor del curso básico "Desarrollador de Android" en OTUS. Especialmente para los lectores de nuestro blog, he preparado una traducción de un artículo tan provocativo. Su opinión es muy interesante, por lo tanto, después de leer, invito a todos a comentar sobre esta publicación.



Una vez que Kotlin obtuvo el soporte de Google, la gran reacción de los fanáticos de Kotlin no fue la única reacción. Aquellos que no están familiarizados con Kotlin estaban muy preocupados por su nivel de compatibilidad con Java, el tiempo promedio necesario para aprenderlo y los beneficios de usar Kotlin en general.

En sus intentos de explicar y presentar el lenguaje de la manera más corta y clara, muchos desarrolladores de Kotlin se refirieron al paralelo de tres años entre Kotlin y el segundo lenguaje oficial de iOS, Swift. Al llamar a Kotlin "Swift of Android", todo simplificó la tarea y ayudó a crear una imagen para el idioma. Sin embargo, esta imagen también causó controversia en la comunidad de iOS, ya que algunos desarrolladores de iOS no encontraron la comparación halagadora y vieron a Kotlin solo como un imitador.

Al menos debe tenerse en cuenta que aunque Swift apareció en 2013, Kotlin apareció en 2011. En consecuencia, incluso si comparar Kotlin y Swift (en ese orden exacto) puede ser conveniente debido a la exposición anterior de Swift a un público más amplio, cualquier reclamo que Kotlin imite no está justificado.

Sin embargo, ¿vale la pena comparar? Si es así, ¿cuánto se extiende la similitud? ¿Y su existencia insinúa el hecho de que el lanzamiento de aplicaciones para iOS y Android inicialmente puede volverse más simple y rápido en el futuro? La vasta experiencia de ScienceSoft en servicios de desarrollo de aplicaciones móviles permite la especulación en este punto. Echemos un vistazo a eso.

Sintaxis


La sintaxis rápida no solo recuerda a la sintaxis de Kotlin: en pequeños fragmentos de código puede haber hasta un 77% de similitud de línea .

Las principales diferencias se pueden resumir en la siguiente tabla:

KotlinVeloz
divertidofunc
valdejar
nulonulo
rasgoprotocolo
constructorinit
:->
CualquierAnyobject
!!!

Los fundamentos, las clases y las funciones tienen formas muy similares de expresarse. A diferencia de Objective-C, las llamadas al método Swift son similares a las llamadas Java y Kotlin, con su sistema de espacio de nombres y estilo de notación de puntos. Por ejemplo, así es como se ve una llamada a función en dos idiomas:

KotlinVeloz
pronóstico divertido (día: Cadena, clima: Cadena): Cadena {pronóstico de funciones (_ día: String, _ weather: String) -> String {
return "Hoy es $ día, es $ clima".return "Hoy es \ (día), es \ (clima)".
}}
pronóstico ("lunes", "lloviendo")pronóstico ("lunes", "lloviendo")

Y así es como se declaran las clases en ambos:

KotlinVeloz
Residencia de clase {Residencia de clase {
var numberOfRooms = 0var numberOfRooms = 0
Descripción divertida () =func Descripción () -> Cadena {
"Una casa con $ numberOfRooms".return "Una casa con \ (numberOfRooms)".
}}
}

Puede encontrar muchos otros ejemplos en este artículo , y si nos dicen algo, es que ambos idiomas tienen un objetivo común: ser lo más concisos y transparentes posible, lo que facilita la vida de los desarrolladores. Los sistemas de sintaxis de Kotlin y Swift son bastante efectivos a este respecto, ya que los equipos de desarrollo valoran mucho su elegancia.

Seguridad


Aunque Swift y Kotlin son fuertes y estáticos en términos de escritura, también le permiten trabajar con tipos dinámicos. De esta forma, los idiomas permanecen concisos y flexibles, lo que permite la eliminación temprana de errores e inconsistencias. Por lo tanto, se consideran muy seguros y especialmente confiables para grandes proyectos.
Además, estos dos idiomas combinan enfoques para manejar valores opcionales y seguridad nula / nula utilizando el operador de navegación segura "?" o tipos de opciones. Precauciones marcadas con un "?" expresado casi idénticamente en Kotlin y Swift:

KotlinVeloz
ejemplo val: String? = nuloejemplo var: String? = nulo

Caracteristicas


Además de la seguridad nula (nula), funciones y clases, Kotlin y Swift tienen muchas funciones similares, incluidas constants, variables, generics, protocols/traits (el rasgo se reemplaza por interfaz , nota del traductor), enumerated types, any (anyobject) , manejo de errores y otros Algunas funciones implementadas en dos idiomas comparten el enfoque, pero se llaman de manera diferente debido al idioma original al que regresan estas funciones.

Por ejemplo, en Kotlin puedes encontrar expresiones lambda de Java. En Swift, estos son bloques o cierres, términos de Objective-C. La forma en que se llaman ambas expresiones al código es similar a cómo funcionan.
KotlinVeloz
{{_in
println ("Expresión Lambda")print ("Expresión de cierre")
}}

Una función conocida como propiedades calculadas en Swift, que es una declaración de propiedad específica con una llamada para obtener, también se incluye en Kotlin:

KotlinVeloz
clase Animal (clase animal {
Var Género: Cadena,Var Género: Cadena
var Especie: Cadena) {var Especie: Cadena
val binomialName: Stringvar binomialName: String {
get () = "$ Genus $ Species"obtener {
}volver "\ (Género) \ (Especie)"
}
}
}

Los parámetros de nombre (o argumentos con nombre) también se usan en ambos idiomas:
KotlinVeloz
días libres divertidos (vacaciones: Int, fines de semana: Int): Int = vacaciones + fines de semanafunc daysoff (vacaciones: Int, fines de semana: Int) -> Int {
vacaciones de regreso + fines de semana
}
días libres (5, fines de semana = 8)días libres (vacaciones: 5, fines de semana: 8)

De hecho, en lugar de enumerar las funciones que existen en ambos idiomas, sería más fácil enumerar las que no. A saber, solo Kotlin admite:

  • clases de importación
  • constructores primarios y clases de datos
  • @anotaciones

Al mismo tiempo, a diferencia de Kotlin, Swift tiene:

  • tuplas
  • typealias
  • declaración de guardia

Valor de similitud


Las dos lenguas claramente separan la ideología, ya que resuelven los mismos problemas que fueron creados por las lenguas de sus antepasados: son menos verbosas y de función limitada, más legibles y convenientes para trabajar. Al mismo tiempo, Kotlin y Swift siguen siendo compatibles con Java y Objective-C, respectivamente, lo que les permite ser utilizados tanto en proyectos nuevos como en el mantenimiento de proyectos antiguos.

Además, las fuertes similitudes entre los dos idiomas pueden ayudar en el desarrollo de aplicaciones nativas para iOS y Android. Por supuesto, no se puede decir que las aplicaciones en ambas plataformas puedan compartir el mismo código, ya que los idiomas y las bibliotecas para sistemas operativos específicos no son idénticos. Sin embargo, los enfoques de la lógica y la funcionalidad de la aplicación pueden ser muy similares, gracias a las similitudes sintácticas y funcionales entre Swift y Kotlin. Esto puede hacer que el desarrollo, las pruebas y el mantenimiento sean más rápidos y fáciles.

Lenguaje universal para iOS y Android?


Teóricamente, Google ya podría aceptar Swift como idioma oficial en lugar de Kotlin; Incluso en 2016 hubo rumores sobre esta posibilidad. Tal paso probablemente no crearía una situación en la que las herramientas de desarrollo multiplataforma serían irrelevantes, pero la diferencia entre las dos plataformas se volvería borrosa.

Sin embargo, ese paso tampoco sería razonable, y no solo por la competitividad del negocio. Aunque Swift y Kotlin son similares, son más similares a sus predecesores. En otras palabras, Swift y Kotlin cierran la brecha entre Objective-C y Java. Sin embargo, cambiar de Java a Kotlin es aún más natural y sencillo que cambiar de Java a Swift.

En general, no a todos les gusta la idea de adaptarse a algo nuevo; algunos desarrolladores se toman el tiempo para comenzar a usar un nuevo lenguaje, como fue el caso con la adopción de Swift . Asegurarse de que la transición a un nuevo idioma no sea una prueba tan difícil significa que el idioma finalmente gana popularidad, y para un nuevo idioma esto es importante en primer lugar.

Pensamiento de despedida


A medida que el desarrollo móvil evoluciona constantemente, también lo hacen las tecnologías. Es por eso que en 5-10 años, tanto Kotlin como Swift pueden convertirse en algo completamente diferente. Todavía no se sabe si los idiomas continuarán cerrando la brecha entre ellos. Sin embargo, dado que iOS y Android están buscando la herramienta de desarrollo móvil más conveniente, segura y rápida, pueden terminar hablando el mismo idioma algún día.

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


All Articles