Kotlin é o Swift da Google?

Depois de ler parte da documentação de referência oficial do Kotlin este final de semana, como Dev iOS (Swift) estava bastante espantado com algumas semelhanças entre as duas linguagens. Eu “até mesmo” lancei meu primeiro PR para master e consequentemente para produção no KAMBA. Tudo isso graças ao nível de compatibilidade ou interoperabilidade com Java.

Vários desenvolvedores da comunidade Kotlin já se referiram à mesma como o Swift do Android o que repercurtiu várias discussões em ambas comunidades, iOS e Android. Então provavelmente não é uma novidade. Não sou o único aqui!

Deve-se notar também que Kotlin surgiu em 2011 enquanto a que Swift em 2013, então não é justo tomar qualquer atitude de que a linguagem é um ‘copycat’ em relação ao Swift. É simplesmente não justificável.

Vamos dar uma olhada em algumas similaridades que encontrei e desejo compartilhar.

O tão famoso “Hello, world”.

// Swift
print("Hello, world.")
// Kotlin
println("Hello, world.")

As variáveis e constantes, let e val.

// Swift
var firstname = "Amarildo"
let age = 26
// Kotlin
var firstname = "Amarildo"
val age = 26

Os tipos também podem ser explícitos.

// Swift
var firstname: String = "Amarildo"
let age: Int = 26
// Kotlin
var firstname: String = "Amarildo"
val age: Int = 26

Imprimindo Strings e conversão de tipos.

// Swift
let balanceDescription = "Seu saldo é inferior à "
let balance: Double = 500.00
let showBalance = balanceDescription + String(balance)
// Kotlin
val balanceDescription = "Seu saldo é inferior à "
val balance: Double = 500.00
val showBalance = balanceDescription + balance

E quanto a interpolação de Strings?

// Swift
let amountReceived: Double = 500.00
let availableBalance: Double = 1000.00
let notification = "Seu saldo total é \(amountReceived + availableBalance)."
// Kotlin
val amountReceived: Double = 500.00
val availableBalance: Double = 1000.00
val notification = "Seu saldo total é ${amountReceived + availableBalance}."

Arrays, Maps e outras coleções… Introdução e inicialização?

// Swift
var bankAccountTypes = [String]()
var user = [String: Any]()
// Kotlin
var bankAccountTypes = arrayOf<String>()
var user = mapOf<String, Any>()

Arrays

// Swift
var bankAccountTypes = ["Conta corrente", "Conta poupança", "Conta coletiva"]
bankAccountTypes[0] = "Conta empresa"
// Kotlin
var bankAccountTypes = arrayOf(
  "Conta corrente",
  "Conta poupança",
  "Conta coletiva"
)
bankAccountTypes[0] = "Conta empresa"

Maps

// Swift
var user = [
  "firstname": "Amarildo",
  "lastname": "Lucas",
  "email": "hi@amarildolucas.com"
]
user["deviceId"] = "1136affs-ds139489-ds849177-zXzaa14"
// Kotlin
var user = mutableMapOf(
  "firstname" to "Amarildo",
  "email" to "hi@amarildolucas.com",
  "deviceId" to "1136affs-ds139489-ds849177-zXzaa14"
)
user["deviceId"] = "1136affs-ds139489-ds849177-zXzaa00"

Ficou muito por comparar ainda. Eu irei ir atualizando esse artigo e republicando com outras diversas similaridades como ranges, funções, tuplas, classes, herança, delegação, pattern matching, protocolos, extensões e interoperabilidade com Java tal como Swift com Objective-C até que se torne um guia de comparação.

Mas por agora, o que você acha das duas linguagens? Kotlin será tão adotado quanto Java e crescerá tão rápido para manter-se padrão entre os Devs Android?

Mande um Oi! 👍