Kotlin vs. Swift: Android e iOS caminhando para uma linguagem universal?



Amigos, olá pessoal. Dmitry Kozhevin é professor do curso básico "Desenvolvedor Android" da OTUS. Especialmente para os leitores do nosso blog, preparei uma tradução de um artigo tão provocativo. Sua opinião é muito interessante, portanto, após a leitura, convido todos a comentar esta publicação.



Depois que Kotlin conseguiu o suporte do Google, a pura empolgação dos fãs de Kotlin não foi a única reação. Aqueles que não estão familiarizados com o Kotlin estavam muito preocupados com seu nível de compatibilidade com Java, o tempo médio necessário para aprendê-lo e os benefícios do uso do Kotlin em geral.

Em suas tentativas de explicar e apresentar o idioma da maneira mais curta e clara, muitos desenvolvedores do Kotlin se referiram ao paralelo de três anos entre o Kotlin e o segundo idioma oficial do iOS, Swift. Chamando Kotlin de "Swift of Android", tudo simplificou a tarefa e ajudou a criar uma imagem para o idioma. No entanto, essa imagem também causou polêmica na comunidade do iOS, pois alguns desenvolvedores do iOS não acharam a comparação lisonjeira e viram o Kotlin apenas um imitador.

Pelo menos, deve-se notar que, embora Swift tenha aparecido em 2013, Kotlin apareceu em 2011. Consequentemente, mesmo que comparar Kotlin e Swift (nessa ordem exata) possa ser conveniente devido à exposição anterior de Swift a um público mais amplo, qualquer alegação imitada por Kotlin não é justificada.

No entanto, vale a pena comparar? Em caso afirmativo, quanto a similaridade se estende? E sua existência sugere o fato de que o lançamento de aplicativos para iOS e Android pode se tornar inicialmente mais simples e rápido no futuro? A vasta experiência da ScienceSoft em serviços de desenvolvimento de aplicativos móveis permite especulações neste momento. Vamos dar uma olhada nisso.

Sintaxe


A sintaxe rápida não é apenas uma reminiscência da sintaxe do Kotlin - em pequenos pedaços de código, pode haver até 77% de similaridade de linha .

As principais diferenças podem ser resumidas na tabela abaixo:

KotlinSwift
divertidofunc
valdeixar
nulonulo
traçoprotocolo
construtorinit
:->
QualquerAnyobject
!!!

Fundamentos, classes e funções têm maneiras muito semelhantes de se expressar. Diferentemente do Objective-C, as chamadas do método Swift são semelhantes às chamadas Java e Kotlin, com seu sistema de espaço para nome e estilo de notação de ponto. Por exemplo, eis a aparência de uma chamada de função em dois idiomas:

KotlinSwift
previsão divertida (dia: String, tempo: String): String {previsão de funções (_ dia: String, _ weather: String) -> String {
return "Hoje é $ dia, é $ tempo".return "Hoje é \ (dia), é \ (tempo)."
}}
previsão ("segunda-feira", "chovendo")previsão ("segunda-feira", "chovendo")

E é assim que as classes são declaradas em ambas:

KotlinSwift
Residência de classe {Residência de classe {
var numberOfRooms = 0var numberOfRooms = 0
divertido Descrição () =func Descrição () -> String {
"Uma casa com $ numberOfRooms."retornar "Uma casa com \ (numberOfRooms)."
}}
}

Você pode encontrar muitos outros exemplos neste artigo e, se eles nos disserem algo, é que os dois idiomas têm um objetivo comum - ser o mais conciso e transparente possível, o que facilita a vida dos desenvolvedores. Os sistemas de sintaxe de Kotlin e Swift são bastante eficazes nesse sentido, pois as equipes de desenvolvimento valorizam muito sua elegância.

Segurança


Embora Swift e Kotlin sejam fortes e estáticos em termos de digitação, eles também permitem trabalhar com tipos dinâmicos. Dessa maneira, os idiomas permanecem concisos e flexíveis, permitindo a eliminação precoce de erros e inconsistências. Portanto, eles são considerados muito seguros e especialmente confiáveis ​​para grandes projetos.
Além disso, esses dois idiomas combinam abordagens para lidar com valores opcionais e segurança nula / nula usando o operador de navegação segura "?" ou tipos de opções. Precauções marcadas com um "?" expresso quase de forma idêntica em Kotlin e Swift:

KotlinSwift
val exemplo: String? = nulovar exemplo: String? = nulo

Funcionalidades


Além da segurança, funções e classes nulas (nulas), o Kotlin e o Swift têm muitas funções semelhantes, incluindo constants, variables, generics, protocols/traits ( característica substituída pela interface , nota do tradutor), enumerated types, any (anyobject) , manipulação de erros e outros Algumas funções implementadas em dois idiomas compartilham a abordagem, mas são chamadas de maneira diferente devido ao idioma original ao qual essas funções retornam.

Por exemplo, no Kotlin, você pode encontrar expressões lambda do Java. Em Swift, esses são blocos ou fechamentos, termos do Objective-C. A maneira como as duas expressões são chamadas no código é semelhante à forma como elas funcionam.
KotlinSwift
{{_in
println ("Expressão Lambda")print ("Expressão de fechamento")
}}

Uma função conhecida como propriedades computadas no Swift, que é uma declaração de propriedade específica com uma chamada para obter, também está incluída no Kotlin:

KotlinSwift
classe Animal (classe Animal {
var Gênero: String,var Gênero: String
var Espécies: String) {var Espécie: Corda
val binomialName: Stringvar binomialName: String {
get () = "$ Gênero $ Espécies"obtenha {
}retornar "\ (Gênero) \ (Espécies)"
}
}
}

Os parâmetros de nome (ou argumentos nomeados) também são usados ​​nos dois idiomas:
KotlinSwift
dias de folga divertidos (férias: Int, fins de semana: Int): Int = férias + fins de semanafunc daysoff (férias: Int, fins de semana: Int) -> Int {
retorno de férias + fins de semana
}
dias de folga (5, fins de semana = 8)dias de folga (férias: 5, fins de semana: 8)

De fato, em vez de listar as funções existentes nos dois idiomas, seria mais fácil listar as que não existem. Ou seja, apenas o Kotlin suporta:

  • classes de importação
  • construtores primários e classes de dados
  • @annotations

Ao mesmo tempo, ao contrário de Kotlin, Swift tem:

  • tuplas
  • typealias
  • declaração de guarda

Valor de similaridade


As duas línguas separam claramente a ideologia, uma vez que resolvem os mesmos problemas que foram criados pelas línguas de seus ancestrais: são menos verbais e têm funções limitadas, mais legíveis e convenientes para trabalhar. Ao mesmo tempo, Kotlin e Swift permanecem compatíveis com Java e Objective-C, respectivamente, o que permite que sejam usados ​​tanto em novos projetos quanto em serviços antigos.

Além disso, fortes semelhanças entre os dois idiomas podem ajudar no desenvolvimento de aplicativos nativos para iOS e Android. Obviamente, não se pode dizer que aplicativos em ambas as plataformas possam compartilhar o mesmo código, pois idiomas e bibliotecas para sistemas operacionais específicos não são idênticos. No entanto, as abordagens para a lógica e a funcionalidade do aplicativo podem ser muito semelhantes, graças às semelhanças sintáticas e funcionais entre Swift e Kotlin. Isso pode tornar o desenvolvimento, teste e manutenção mais rápido e fácil.

Idioma universal para iOS e Android?


Teoricamente, o Google já podia aceitar o Swift como idioma oficial em vez do Kotlin; mesmo em 2016, houve rumores sobre essa possibilidade. Essa etapa provavelmente não criaria uma situação em que qualquer ferramenta de desenvolvimento de plataforma cruzada se tornasse irrelevante, mas a diferença entre as duas plataformas seria indubitavelmente obscurecida.

No entanto, esse passo também seria irracional, e não apenas por causa da competitividade dos negócios. Embora Swift e Kotlin sejam semelhantes, acima de tudo, são semelhantes aos seus antecessores. Em outras palavras, Swift e Kotlin preenchem a lacuna entre Objective-C e Java. No entanto, mudar de Java para Kotlin ainda é mais natural e suave do que mudar de Java para Swift.

Em geral, nem todo mundo gosta da idéia de se adaptar a algo novo; alguns desenvolvedores dedicam tempo para começar a usar um novo idioma, como foi o caso da adoção do Swift . Garantir que a transição para um novo idioma não seja um teste tão difícil significa que o idioma ganha popularidade e, para um novo idioma, isso é importante em primeiro lugar.

Pensamento de despedida


À medida que o desenvolvimento móvel está em constante evolução, o mesmo ocorre com as tecnologias. É por isso que em 5 a 10 anos, Kotlin e Swift podem se tornar algo completamente diferente. Ainda não se sabe se os idiomas continuarão a preencher a lacuna entre si. No entanto, como o iOS e o Android estão procurando a ferramenta de desenvolvimento móvel mais conveniente, segura e rápida, eles podem acabar falando o mesmo idioma um dia.

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


All Articles