Kotlin: El nuevo lenguaje del emperador (1 de 3)

Hace unas semanas, Google anunció con bombo y platillo que ya soportan oficialmente Kotlin en Android. Para mucha gente, esta fue la primera vez que escucharon algo acerca del lenguaje y, como era de esperarse, a partir de ese momento han salido supuestos expertos en Kotlin hasta debajo de las piedras, ofreciendo seminarios y cursos y demás.

Yo llevo unos años siguiéndole la pista a Kotlin medio de lejos, por mi trabajo en Ceylon; así que creo que es un buen momento para contarles mi opinión al respecto. No les voy a decir si deben usar Kotlin o no; escribo esto porque estoy seguro que muchos lo van a probar y probablemente lo empiecen a usar en proyectos reales, pero tal vez por razones muy simples como la sintaxis o que si no tiene punto y coma o, simplemente, porque no es Java (esta es la razón más popular por la que recibió tan cálida bienvenida en el mundo de Android).

Bien, pues primero que nada: Kotlin es un lenguaje de tipado estático (igual que Java), que compila directo a bytecode, y también se puede compilar a Javascript. Tiene varias características que pueden parecer azúcar sintáctica para Java, y otras que ya lo diferencían de manera más significativa. Empecemos por cosas simples, como la sintaxis.

En Kotlin no se usa punto y coma para terminar sentencias. Es por cambio de línea. El punto y coma es opcional; pueden usarlo si les parece mejor, o por ejemplo si quieren poner dos sentencias o expresiones en la misma línea.

Una diferencia donde se van a dar de topes cuando inicien en Kotlin, es que las declaraciones son al revés de en Java; son como en Scala. Es decir, primero se pone el nombre de la variable, y luego su tipo.

En Java hacemos esto:

String hola = "mundo";
int foo(String bar) {
  return bar.length();
}

En Kotlin se escribe así:

val hola:String = "mundo"
fun foo(bar:String):Int {
  return bar.length
}
//O bien
fun foo(bar:String) = bar.length

La palabra reservada val es para declar un valor. Le llamo valor porque no es realmente una variable, ya que es inmutable; Kotlin favorece la inmutabilidad. val x:String es equivalente a un final String x en Java. Si quieren definir una variable de verdad, es decir, a la que puedan asignarle distintos valores más de una vez, utilicen var.

Las funciones se declaran con la palabra reservada fun. El tipo de retorno de la función va después de la lista de argumentos. Los parámetros de la función también son inmutables.

Kotlin tiene inferencia de tipos. Esto significa que el compilador puede determinar el tipo de retorno de una función, o el tipo de un valor o variable, a partir del tipo de la expresión que se le asigne. Por lo tanto el código se puede abreviar a esto:

val hola = "mundo"
fun foo(bar:String) {
  return bar.length
}
//O bien
fun foo(bar:String) = bar.length

Las funciones que consisten en una sola expresión, se pueden definir con un = en vez de llaves, y omitir el return. A las funciones de una expresión se les conoce como lambdas (no sólo en Kotlin, esto es un concepto de programación funcional).

Hasta aquí lo dejamos por ahora. En la siguiente parte de esta serie hablaré del famoso typesafe null, una de las características más sonadas del lenguaje, los beneficios que nos trae, y una desagradable sorpresa que viene incluida.

Ir a la segunda parte de la serie

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Shadonwk

Excelente aporte!!!

Como siempre aportando las nuevas noticias ya masticaditas por así decirlo, voy a seguir tu serie de cerca.
Saludos.