Kotlin, Android e além – Hipsters #110

Trabalha ou estuda na área de tecnologia?

Participe da Pesquisa Nacional de Carreira em Tecnologia! Queremos entender quais as suas preferências profissionais. Sua participação é muito importante!

Responda e contribua com a comunidade, os resultados serão abertos a todos: https://carreira.tech/

Depois de muitos pedidos, reunimos um time bacana pra finalmente falar sobre essa linguagem que se tornou extremamente popular nos últimos tempos: Kotlin!

Hora de descobrir o porque de tanta popularidade, o que tem de tão legal nessa linguagem e as razões para você usá-la.

Participantes:

Links:

Produção e conteúdo:

  • Alura Cursos online de Tecnologia
  • Caelum Ensino e Inovação

Edição e sonorização: Radiofobia Podcast e Multimídia

Leave a Reply

37 Comentários

  1. André Kauling Justi

    Eita, demorou mas chegou, parabéns pela iniciativa

  2. Augusto Santos

    Excelente episódio.
    Bom ponto observado quanto a legibilidade por volta dos 35m, isso conta bastante e o kotlin pode perder um pouco dessa clareza mesmo, olha que os convidados tentaram dar um drible na resposta kkk. Claro que todas as linguagens tem seus ganhos e percas e cabe ao utilizador delas ter tudo isso em mente.
    Extensions são fantásticas mesmo mas os puristas da OO podem ter um baita coceira ao ver isso haha

  3. Carlos Henrique Barbosa

    Não tem link para a pesquisa?

  4. Javan Torres

    Como o tema englobava o Android/Google poderiam ter falado sobre o Flutter e quais são as expectativas em relação a ele, de qualquer forma foi um ótimo podcast, parabéns.

  5. Javan Torres

    Como o tema englobava o Android/Google poderiam ter falado sobre o
    Flutter e quais são as expectativas em relação a ele, de qualquer forma
    foi um ótimo podcast, parabéns, muito bom.

    • walmyrcarvalho

      Javan, como Flutter não usa muito Kotlin a gente preferiu não entrar em muitos detalhes, mas com certeza vale fazer um episódio só sobre Flutter e Fuchsia! 🙂

      • Diego Botelho

        não usa nada de kotlin na verdade.

  6. Rafael Felipe

    Uma coisa que está me fazendo muito considerar o kotlin é das mais simples.
    Trabalhar com cálculos financeiros no java é um parto, as expressões de bigdecimal usando chamadas de funções são contra intuitivas. Parece que com kotlin vc usa operadores pra bigdecimal, o que faria eu ganhar muito.

  7. leonidas

    no minuto 38:12 fala sobre over kotlin, então nao posso criar um app usando somente kotlin?

  8. Nyo

    Ainda vale a pena aprender Kotlin, com o avanço de frameworks javascript que fazem aplicativos para duas plataformas, como o React Native e o Ionic?????????

  9. Ray da Costa

    Bom… sem querer puchar saco, sem qrer levar para lado de religião… Mas Kotlin, é uma linguagem nova, nada mais justo e inteligente de nascer com tudo de bom que NÃO TEM de bom no java. Simples assim. Outro ponto, java é bem maduro e bem completo, muitos recursos é lento mesmo VIRAR tudo de uma so vez para se adaptar ou se modernizar. Tem q ter calma. (A Oracle AINDA ajuda a fd mais…). Agora gente… a linguagem ser melhor pq não ocorre nullpointer!?Pq escreve menos (lembrando que PARA ANDROID tem que escrever muito, framework ANDROID).Não podemos confundir, JAVA de java para adroid onde vc É OBRIGADO A CRIAR X objetos para a coisa ocorrer. Em resumo, fica FÁCIL PARA KCT, criar uma coisa com base em outra que já está pronta e FUNCIONA, ENTÃO, vamos na calma. Pessoal tem muito medo de java. Tem q ter medo do que a Oracle está fazendo com o Java…. isto sim…. Minha opinião…

    • Ray da Costa

      Paulo, EXCELENTE observação… (escrever os métodos para acesso as variáveis), pois, o que NÃO é escrito… como vc vai saber o q faz…. cara vc criando método, fica mais educado, explicito, claro, evidente, claro, documentado,,,, seu la,,,,, deixar de criar método para escrever menos,,, COLOCA o atributo PUBLICO! Pronto,,, sei la…. sei la…. A ÚNICA coisa que faz eu olhar Kotln é a ORCLE acabar com o Java…. Pq d resto, o q faz em Kotlin java TAMBÉM FAZ…. e faz bem…

  10. Eu não gosto do Kotlin… Swift e TS patrolam ele qualquer dia da semana… Muitas decisões bestas da JetBrains/Comunidade…

    • Falando mais sério agora, infelizmente esse podcast faz zero criticismo ao Kotlin, quem ouve acha tudo lindo… Mas a verdade é que sem o menor motivo os desenvolvedores fazem uma série de mudanças sem nomeclaturas, metodos e soluções que funcionam em várias linguagens, e que não tem motivo pra ser descartado.

      Eu penso que foi perdida uma excelente oportunidade pra trazer o Kotlin pra perto do Swift, TS/JS, e etc… com uma notação mais comum, com estruturas mais próximas, para ajudar o desenvolvedor a aproveitar boas lógicas de programação que ele já usa em uma linguagem na outra, sem ter que perder tempo aprendendo que fun == func == function e que when ≈ switch, e que construtor se declara de outra forma deferente das outras linguagens de uso parecido, isso pra citar alguns problemas…

      • João falou tudo, e add..
        Elixir – Erlang
        Kotlin – Java
        Type Script – Java Script
        Angular – Inferno JS ops aqui é outra coisa… kkk

      • walmyrcarvalho

        Bom dia João, tudo bem?

        Qual são os pontos negativos que você vê na linguagem, em geral? Nosso objetivo no podcast foi falar um pouco dos benefícios da linguagem em geral, principalmente pelo pouco tempo, mas penso que esses problemas que você citou não são tão críticos pra adoção da linguagem, mas queria entender o que te incomoda e podemos discutir sobre, se quiser. 🙂

        Abraço!

        • Bom, para contextualizar meu criticismo, penso que uma linguagem tem que antes de tudo priorizar a intenção de ser o mais transparente possível, de ser “straightforward”, e ficar fora do caminho do desenvolvedor.

          Tendo dito isso, considero que o Kotlin sacrifica esses preceitos em troca de “inovar”, e que vocês, ao avaliar a linguagem, levam muito mais em conta a comparação com o Java, que foi concebido na década de 80, do que a comparação com outras linguagens contemporâneas ao Kotlin, e que fazem um trabalho bem melhor em relação a curva de aprendizado para quem já lida com a programação no dia a dia.

          Eu venho de um background trabalhando com PHP, também trabalhei com Java Web e Android, e sempre quis aprender a programar para iOS, porém nunca tive saco para aprender objC, e larguei de mão. Quando saiu o Swift 2, decidi pegar, e foi faca quente na manteiga. Não tive problema em entender muitos dos conceitos, e a cada interação da linguagem tudo fica mais simples e fácil.

          Quando peguei o Kotlin, tive mais problema pra me adequar a ele do que tive para me adequar ao Swift, por conta da falta de métodos estáticos, para, por exemplo aplicar pequenas transformações em bitmaps usando um método estático. Ok, você pode estender a classe com seu método, mas quando você deixa de ter a classe “Util” e passa a ter um arquivo “Extensions”, a gente evoluiu mesmo?

          Também não gosto que você possa declarar funções direto no namespace, num arquivo .kt qualquer, acho que isso é algo que pode ser abusado por um iniciante, e pode ser uma receita para problemas futuros. Até acho interessante a parte das Corrotinas, mas penso que o RxJava fica mais elegante.

          Foi mencionado de leve a questão de não se saber se estamos acessando getter e setters ou a propriedade em sí, mas isso foi tratado como um preciosismo, mas isso pode gerar mal entendidos, em certos contextos e situações, como um code review, por exemplo. Acho que o código deveria ser o menos ambíguo possível.

          Pra não me delongar, também não gosto da forma que construtores são declarados, no Swift, no TS e no C# eu nunca nem tive que pensar em como se declara isso, como se chama o construtor superior. Eles são diferentes, mas a teoria é simples, e os componentes sintáticos os mesmos, então ao olhar uma documentação você saca rapidamente. No Kotlin eu tenho um construtor declarado lá no alto, e se tiver outro, dependendo da circunstância, pode ficar embaixo de um monte de declarações, e eu acho isso meio errado. Se os construtores fossem declarados apenas dentro, como é nos outros, meio que ficaria organizado, já que adotaram o estilo parecido com o do C# na declaração dos construtores adicionais…

          Enfim, queria que o Kotlin fosse menos diferentão nas coisas que não precisa ser diferentão, ou que pelo menos suportasse o jeito menos diferentão de fazer as coisas…

  11. Vinicius Giacomelli

    Olá, eu participei da pesquisa e gostaria de saber se teria como acessar os resultados gerais, seria ótimo entender quais são as tendências até mesmo para afinar meu próprio desempenho e aspirações. Obrigado pelo programa.

  12. Renato Bezerra

    em 2014 a moda era aprender Scala. Não foi pra frente. Hoje vejo muita gente usando Clojure. Então, qual escolher em meio a tantas opções? Lembrando que o Google lancou o framework Flutter, que usa a linguagem Dart como padrão.

    • Felipe Torres

      Oi Renato, não há uma resposta definitiva para a sua pergunta. A escolha da linguagem, ao meu ver, é mais do que simplesmente pegar a mais moderna. Deve-se levar em consideração o projeto, a experiência do time, a comunidade que mantém e contribui com bug fixes…

      Eu faço assim: se vou começar um projeto Android do zero, vou de Kotlin. Se é um projeto já existente, mantenho o Java e penso com muito carinho se vale a pena migrar (uma classe de cada vez) para Kotlin.

      No fim das contas, a linguagem tem influência num projeto, mas pra mim o código que é escrito importa mais. Para Android, seja Java ou Kotlin, o importante é sempre manter um código bem escrito, pensando em baixo acoplamento, coesão e todas aqueles conceitos de orientação a objetos.

  13. Matheus Eduardo Machado Moreir

    Paulo, bacana o episódio mas acho que houve uma falta fundamental: alguém para fornecer um contra-ponto a Kotlin. Existe muito hype a respeito da linguagem atualmente e ter alguém que vê além dele enriqueceria a discussão.

    Comecei a estudar Kotlin mas em pouco tempo senti que não valia meu tempo. Pra mim, uma linguagem que valha a pena estudar (não necessariamente adotar) tem que trazer uma abordagem nova para pensar e solucionar problemas, não apenas sintaxes ou funcionalidades extras. Veja só, quando você perguntou aos participantes quais as características de alto nível que Kotlin tem, nenhuma resposta foi “na mosca”, elas foram esses “extras” que você consegue ou com bibliotecas ou com boas práticas de programação: null-safety, código verboso, código clean, segurança para o desenvolvedor, (i)mutabilidade… Interessante que você mesmo comparou alguns desses pontos com Scala, e acrescentou que a adoção da linguagem já não avança. Meu ponto é que Scala, na época em que foi lançada, trouxe novidades em relação à forma de pensar os problemas por causa da novidade (ao menos se considerarmos visibilidade no mercado de desenvolvimento) do OO + funcional. Clojure também traz uma forma diferente de pensar na modelagem e abordagem de problemas. Kotlin não.

    Gosto muito do programa, a inclusão da Roberta como co-host foi muito bacana, as participações do Linhares sempre misturam polêmica, informação e bom-humor, e deixo a sugestão de que em assuntos mais polêmicos possa participar alguém com contra-pontos inteligentes para enriquecer a conversa.

    Abraços!

    • Desv

      A linguagem Java é tao ruim que fica difícil ter contra-ponto a Kotlin, em relação a Java.

      • Matheus Eduardo Machado Moreir

        Em quais aspectos em relação a Kotlin Java é ruim?

    • Felipe Torres

      Oi Matheus, acho importante essa visão mais crítica para não entrar em hypes que podem acabar dando em nada. Concordo bastante com elas, mas acho a comparação com Scala, Clojure, (até Erlang) meio injusta pois essas linguagens apresentaram, como você disse perfeitamente, novidades de “paradigmas”. Porém a ideia do Kotlin, ao meu ver, é “atualizar” o mundo do Java principalmente para o desenvolvimento Android e não criar um novo paradigma, por exemplo.

      Arrisco dizer que o Kotlin foi inspirado nessas linguagens citadas acima, mas a inspiração se deu mais no tocante à sintaxe e não necessariamente na apresentação de novas formas de se modelar problemas.

      Quando você diz que “esses ‘extras’ […] você consegue ou com bibliotecas ou com boas práticas de programação” é verdade para grande parte das features do Kotlin, mas algumas são um pouco mais trabalhosas de serem obtidas por esses meios:

      – Coroutines (https://kotlinlang.org/docs/reference/coroutines-overview.html): programação assíncrona como se fosse síncrona.
      – Kotlin/Native (https://kotlinlang.org/docs/reference/native-overview.html): compilar o código para ser executado fora de uma VM.

      (deixei os links, pra resposta não ficar maior ainda…)

      Kotlin/Native é particularmente interessante para que o mesmo código Kotlin feito para o Android seja utilizado no mundo do iOS, de uma forma beeeem mais simples que alternativas “híbridas”.

  14. jallisson jallis oliveira band

    Muito bom esse episodio, escutei no carro enquanto levava meu filho para a escola, programo em Java e estou pensando muito querendo aprender Kotlin.

  15. @mauriciolinhares:disqus pod sem você não é a mesma coisa ! @peasilveira:disqus faça o linhares bater ponto, além de conteúdo técnico senso de humor e visão Nietzschianiana !

  16. darioajr

    Kotlin é uma boa proposta, mas em iOS? e com a chagada do Flutter ?

  17. darioajr

    O Java cresceu e esta liberando do core as bibliotecas, já o Kotlin ainda esta com todas as libs agregada, futuramente isso pode mudar?, ou só demonstra a imaturidade do Kotlin?

  18. Filipe de Holanda

    Os cursos da Alura para Android já estão atualizados? com Kotlin, Room entre outrar novidades do jetpack?

  19. Ouvindo as características do Kotlin eu como fui desenvolvedor de Groovy no Grails vi diversas coisas que já tinham no Groovy há anos atrás.

    Aí fico pensando o que o coitado do Groovy não tem que o Kotlin tem?

    Além de sorte e ter sido feito pela galera certa. Tem algo técnico que coloca o Groovy abaixo do Kotlin?

    • Felipe Torres

      Oi Tiago, não vejo uma relação de superioridade entre as linguagens pois o Groovy tem até mais coisas que o Kotlin (por exemplo, metaprogramação) mas o que você disse é bem verdade: “sorte e ter sido feito pela galera certa”. Pra mim, que sou dev Android/iOS, são duas vantagens bem específicas que o Kotlin tem sobre o Groovy:

      1) Tooling: por ter sido criado pela JetBrains, o IntelliJ IDEA (que pra mim é uma das melhores IDEs) já vem com diversas facilidades para se criar e desenvolver um projeto usando Kotlin de forma bem produtiva.
      2) Tempo de menor no build de scripts do Gradle: como o Kotlin é estaticamente tipado, sem nenhuma otimização já há um menor tempo na compilação de um script do Gradle quando comparado com um script usando Groovy, sem nenhuma otimização. Para o mundo do Android, em projetos grandes, isso pode fazer diferença.

Next ArticleTrabalho Remoto - Hipsters #111