5 novas linguagens de programação que você deve conhecer

Para algumas pessoas, aprender uma nova linguagem de programação é um excesso que deve ser evitado. Por que, oh por que, eles argumentam, precisamos de mais uma linguagem?

Já não temos o suficiente?

As ferramentas existentes não estão fazendo o trabalho?

E depois há aqueles buscadores incansáveis ​​que aproveitam a oportunidade de experimentar coisas novas e tropeçar em pedras preciosas. Aprender é um fim em si mesmo, e eles não precisam de muito convencimento para queimar seus fins de semana construindo um jogo de cartas baseado em console nessa nova linguagem obscura.

Não importa a qual campo você pertença, há algo além do debate: todos nós queremos gastar tempo em algo que terá um futuro brilhante.

Para as pessoas no acampamento legado, seu idioma favorito existente já tem muito impulso e continuará a ter um futuro brilhante. Para eles, devo lembrá-los de que sua cadeia de ferramentas de desenvolvimento preferida, agora madura, já foi “kool-aid” que muitos se recusavam a beber. Então é hoje; novas tecnologias são adicionadas para resolver novos problemas ou para aliviar a dor do desenvolvimento.

Se algo fizer isso de forma suficientemente radical, é provável que continue a arrebatar o mindshare e chegar ao topo. Quando isso acontece, você não quer ficar para trás. 🙂

E para quem gosta de correr com as coisas brilhantes, um aviso: se divertir é essencial como programador, mas devemos ter cuidado para não desperdiçar nossas energias à toa.

Claro, Brainfuck é uma pequena linguagem incrivelmente distorcida, parecida com um quebra-cabeças e divertida, mas é improvável que você se beneficie ao persegui-la a sério. Você quer algo novo, sensato e com uma base sólida.

Como esses idiomas foram selecionados

A seleção de idiomas é um trabalho intimidador, especialmente quando novos idiomas estão sendo considerados para benefícios futuros no emprego e satisfação. Todo autor de linguagem está firmemente convencido de que construiu a linguagem perfeita possível e resolveu todos os problemas que existem para responder. Como, então, você corta?

Para este post, concentrei-me em alguns parâmetros para manter minha pesquisa dentro de limites razoáveis.

Data de lançamento

Eu evitei especificamente linguagens que são muito, muito novas.

Novo, quero dizer idiomas com menos de 5-6 anos de idade, e especialmente aqueles que não atingiram a estabilidade (versão 1.0, ou seja). Isso, infelizmente, exclui algumas jóias reais como Cristal, Mas espero voltar a isso e escrever sobre seu sucesso algum dia. 🙂

Um trecho de código em Crystal (“Fast as C, Slick as Ruby”)

Para mim, 5-12 anos é o ponto ideal, que é quando um idioma se estabiliza e mais refinamentos estão sendo elaborados. Agora, é claro, existem exceções a essa regra, e elas serão consideradas quando for o caso.

Este é um acéfalo, mas muitas vezes é ignorado quando ficamos empolgados com algo novo. Agora, para muitas pessoas, o apoio de uma grande empresa é precedente suficiente para o sucesso, mas nem sempre é verdade.

Sim, o Objective-C da Apple e agora o Swift prosperaram porque essas eram as únicas opções em um ecossistema altamente controlado, mas o Facebook D e Hackear (uma visão feia de uma linguagem já feia, na minha opinião) permanecem pouco mais do que experimentos.

A combinação ideal seria uma linguagem apoiada por uma empresa grande e estável e explodindo em popularidade (como React).

Mas o cerne da questão ainda é a comunidade. Se uma linguagem não está criando um burburinho e não há desenvolvedores suficientes para educar e popularizar, ela não vai sair do túmulo do GitHub.

Para mim, isso exclui linguagens maduras e fascinantes como Raquete e Erlangpois permaneceram estáveis ​​na curva de crescimento.

USP focada e bem definida

A terceira coisa que estou procurando é um objetivo claro para o idioma. Por exemplo, uma versão melhor do PHP que corrige problemas de nomenclatura e compila para PHP nativo não funciona para mim.

Os benefícios são pequenos demais para justificar as rachaduras se todos tentarem mudar para isso. Por esse critério, não posso deixar de descartar tentativas como CoffeeScripte muitas outras linguagens de compilação para JavaScript semelhantes.

Honestamente, sou obrigado a descartar as melhorias apenas de sintaxe imediatamente. A história mostrou que a utilidade supera a simpatia quando se trata de idiomas, então se todos os novos idiomas se concentrarem em uma experiência mais agradável, temo que não entrará nesta lista.

Sintaxe clara e consistente

Sim eu sei. Acabei de dizer que a sintaxe não importa. Bem, para ser preciso, eu disse que “melhorias apenas de sintaxe” não importam. Mas dito isso, a sintaxe continua sendo um dos fatores significativos na produtividade e manutenção do programador, então é algo que deve aparecer em meus cálculos aqui.

  Como desativar a reprodução automática de trailers da Netflix

Junto com a sintaxe vem a ideia de consistência. Nomeação de funções, estruturação de módulos, etc., são coisas-chave que uma linguagem não pode errar. É 2018, pelo amor de Deus, e outro design de linguagem semelhante ao PHP seria uma vergonha para todos nós. Então, sem mais delongas, vamos começar com nossas cinco principais recomendações.

1. Júlia

Para o pessoal do MIT, as linguagens disponíveis para ciência de dados eram, na melhor das hipóteses, um compromisso. Python, apesar de toda sua clareza e popularidade, carecia de construções nativas para lidar com objetos de dados. Além disso, sendo uma linguagem interpretada, o Python era lento para eles (não as bibliotecas, lembre-se, pois elas são escritas principalmente em C).

Mas talvez a maior desativação tenha sido o desajeitado modelo de simultaneidade e a falta de um modelo de computação paralela, o último dos quais é um grampo na supercomputação.

Como resultado, Júlia nasceu.

Julia alcançou seu lançamento estável em 29 de setembro de 2018, apenas alguns dias antes de este artigo ser escrito (fale sobre o tempo!). Aqui está o que o site oficial tem a dizer sobre suas capacidades:

Julia se destaca em computação numérica. Sua sintaxe é ótima para matemática, muitos tipos de dados numéricos são suportados e o paralelismo está disponível imediatamente. O despacho múltiplo de Julia é um ajuste natural para definir tipos de dados numéricos e tipo array.

Em termos de sintaxe, Julia pode ser vista como uma combinação de Python e C. Sim, é provavelmente a primeira vez que uma linguagem visa essas duas qualidades e é bem-sucedida.

Para manter as coisas simples, Julia é incrivelmente rápida e não impõe digitação estrita. Aqui estão alguns benchmarks:

Os benchmarks oficiais de Julia

Como você pode ver, Julia é um pouco pior que C, mas joga Java e Python fora da água. E que tipo de colírio para os olhos Julia oferece?

Bem, aqui está a implementação de uma função para calcular a hipotenusa de um triângulo retângulo:

Finalmente, enquanto a maioria da Julia ecossistema está fortemente inclinado para o trabalho matemático, acredito que tenha um futuro brilhante de propósito geral.

É a primeira linguagem, que eu saiba, que tem suporte de primeira classe para computação paralela, então não será surpresa vê-la ganhando mais popularidade nos domínios da Web e IoT.

2. Ferrugem

Se você já experimentou os novos lançamentos do navegador Firefox, sabe que, finalmente, depois de anos de trabalho, parece que eles podem tirar parte do mercado do Chrome.

Se o navegador parecer leve e ágil e renderizar rapidamente, é tudo graças à linguagem desenvolvida especialmente pela Mozilla: Ferrugem.

Dizer que Rust tem um futuro brilhante será uma mentira; a linguagem já é um grande sucesso, e se você ainda não ouviu falar, é porque sua área de aplicação é especializada, e seu objetivo assustador: substituir o C++! Sim, finalmente temos uma linguagem que não apenas é capaz de fazer isso, mas já está fazendo isso.

Para as pessoas frustradas com o design sobrecarregado do C++ e os desafios de gerenciamento de memória, Rust vem como uma lufada de ar fresco.

Veja como é um programa Rust:

Conciso e elegante, na minha opinião. Rust segue a abordagem de programação funcional, o que torna seu código mais componível e não há hierarquias orientadas a objetos com as quais lutar.

Então, o que dá a Rust a coragem de ir atrás do C++? É o novo modelo de memória. Em vez de confiar na velha dança new()/delete(), Rust introduz a ideia de Propriedade.

Em vez de alocar e acessar a memória diretamente, as variáveis ​​Rust “pegam emprestado” umas das outras, com restrições estritas impostas pelo compilador. O conceito geral é muito complicado para explicar em poucas palavras, então sinta-se à vontade para conferir o documentos oficiais aprender mais.

A questão é que isso resulta em 100% de segurança de memória sem a necessidade de um coletor de lixo, o que é um grande problema.

A ferrugem conquistou o mundo da programação de sistemas. Ele já é suportado em algumas plataformas, os navegadores poderosos e os mecanismos de renderização estão substituindo rapidamente o código C/C++ em sistemas de produção e está sendo usado para escrever sistemas operacionais.

Claro, não é a xícara de chá de todos criar outro navegador ou driver de dispositivo, mas o Rust já está se espalhando para outros domínios. Já temos vários frameworks Web totalmente funcionais e ridiculamente rápidos em Rust, e mais e mais bibliotecas de aplicativos estão sendo desenvolvidas.

Honestamente, se você está interessado em um futuro emocionante, Rust é a linguagem perfeita, e agora é o momento perfeito. Rust é um avião que decolou, mas ainda dá tempo de subir a bordo enquanto se dirige para as estrelas!

Aprender Ferrugem de Dmitri Nesteruk.

3. Elixir

Entre as linguagens que focam na felicidade do desenvolvedor, o primeiro lugar foi permanentemente reservado para Ruby. É uma linguagem que se lê como poesia e tem atalhos suficientes para reduzir o atrito mental por ordem de grandeza.

  Como ajustar a velocidade das teclas de seta do seu Mac

Não é de admirar, então, que o framework Rails continue a dominar o desenvolvimento full stack para desenvolvedores e startups sérios. Mas nem todo mundo estava feliz com Rails, especialmente um de seus principais desenvolvedores – José Valim. Acho que o próprio criador explica melhor a gênese dessa linguagem de uma forma entrevista:

É uma longa história, mas vou tentar torná-la curta e doce. Em 2010, eu estava trabalhando para melhorar o desempenho do Rails ao trabalhar com sistemas multi-core, pois nossas máquinas e sistemas de produção estão sendo enviados com cada vez mais núcleos. No entanto, toda a experiência foi bastante frustrante, pois Ruby não fornece a ferramenta adequada para resolver problemas de simultaneidade. Foi quando comecei a olhar para outras tecnologias e acabei me apaixonando pela Máquina Virtual Erlang.

Comecei a usar cada vez mais o Erlang e, com a experiência, percebi que faltavam algumas construções disponíveis em muitas outras linguagens, inclusive funcionais. Foi quando decidi criar o Elixir, como uma tentativa de trazer diferentes construções e excelentes ferramentas em cima da VM Erlang.

E eis que Elixir nasceu!

Assim como o Scala melhora a linguagem Java, mas tem como alvo a mesma máquina virtual por baixo (a JVM), o Elixir tira proveito da máquina virtual Erlang comprovada por décadas.

Agora, uma discussão sobre Erlang está além do escopo deste artigo, mas o mínimo que você deve saber é que é o segredo mais bem guardado da indústria de telecomunicações: se nossas redes telefônicas são muito mais confiáveis ​​do que nossos sistemas baseados na Web, é tudo graças a Erlang.

Em termos ainda mais simples, o que isso significa é isso. Se você está construindo um sistema em tempo real como chat, Elixir é muito menos faminto de RAM e estável do que Ruby (ou PHP, Python e Java, para esse assunto).

Uma máquina que executa Ruby e atinge o máximo de 10.000 conexões simultâneas pode facilmente lidar com 200.000 ao usar Elixir e ainda ter RAM suficiente para executar jogos 2D!

Fragmento de código Elixir

Em termos de sintaxe, Elixir copia Ruby descaradamente, e seu framework Web dominante, Phoenix, copia Rails descaradamente. Eu diria que isso é uma coisa boa também, porque junto com Laravel, Grails, Masonite, etc., estamos chegando a um ponto em que todas as linguagens têm frameworks do tipo Rails que podem facilitar a transição. Alguns podem zombar da “falta de originalidade”, mas pelo menos não estou reclamando.

Finalmente, Elixir é uma daquelas tecnologias que são refrescantes, agradáveis ​​e muito práticas. Várias lojas Ruby (e até não Ruby) estão migrando para o Elixir, e grandes empresas como o Pinterest estão usando-o na produção com resultados extremamente satisfatórios.

Muitas pessoas pensam que o Node.js foi uma tentativa improvisada de simultaneidade e logo seria substituído pelo Elixir. Devo dizer que concordo com eles. 🙂

4. Kotlin

Em 2017 I/O, o Google lançou uma bomba sobre a multidão desavisada. A empresa anunciou formalmente Kotlin como a linguagem principal para o desenvolvimento do Android, enviando ondas de choque pela indústria.

Agora, que o Google tem procurado ativamente substituir o Java não é surpresa depois de ser mordido por um processo da Oracle; no entanto, a adoção do Kotlin foi um tanto inesperada, e ainda há uma boa chance do Google lançar sua máquina virtual em breve. Por enquanto, porém, Kotlin está desfrutando de um aumento.

Kotlin foi desenvolvido pela JetBrains, uma empresa mais conhecida por seu conjunto de editores de código incrivelmente bons. Um deles, o IntelliJ IDEA, forma a base do Android Studio. Os objetivos de design do Kotlin são segurança, concisão e 100% de interoperabilidade com Java.

Mais do que qualquer outra coisa, o compilador Kotlin trabalha muito duro para eliminar todas as exceções de ponteiro nulo que são tão comuns no mundo Java. Também reduz um pouco a verbosidade proverbial do Java, o que será um alívio para muitos.

Aqui está uma comparação de código maravilhosa entre Java e Kotlin:

Crédito da imagem: hype.codes

O código Kotlin é significativamente mais curto e tem muito menos sobrecarga cognitiva para percorrer.

Mas vamos deixar uma coisa clara: é extremamente improvável que Kotlin substitua o Java, embora esteja rapidamente se tornando um favorito rápido. Acredito que daqui a dez anos, equipes de pequeno e médio porte não procurarão mais do que Kotlin, enquanto grandes grupos continuarão usando Java puramente por motivos de legado.

Dito isto, o Kotlin tem um futuro extremamente brilhante, pois faz tudo o que o Java faz, pode se fundir com o código Java sem que ninguém perceba e é muito mais agradável!

5. TypeScript

Deus sabe que eu tive que me conter para esse lugar! Tudo dentro de mim estava gritando “Elm! Elm!”, mas não importa quão revolucionárias sejam suas ideias ou quão divina seja a sintaxe, Elm ainda não foi visto como uma alternativa mainstream para o trabalho de front-end. 🙁 Enfim, vamos para o que é mainstream: TypeScript.

  Como definir lembretes recorrentes por hora no iPhone e iPad

JavaScript é como frutas silvestres: feio e desagradável, mas você tem que aguentar se quiser sobreviver à selva do desenvolvimento front-end. Muitas tentativas foram feitas para substituí-lo (e muito provavelmente, o novo padrão WebAssembly terá sucesso), mas o que realmente chamou a atenção de todos foi o superconjunto desenvolvido pela Microsoft.

Há excelentes chances de que você já tenha ouvido falar TypeScript: Angular foi o primeiro framework a adotá-lo da versão 2 em diante, e as pessoas foram rápidas em tomar nota. Isso porque o TypeScript adiciona alguns superpoderes fantásticos e necessários à linguagem de programação mais famosa do mundo.

Sim, finalmente é possível escrever código JavaScript nativo sem sofrer e amaldiçoar o nascimento!

Aqui estão os aprimoramentos que o TypeScript traz para a mesa:

✓ Tipo forte: Finalmente, uma string não é um número, e um número não é um objeto, que não é um array vazio!

✓ Verificação de tipo em tempo de compilação: Se o seu código compilar corretamente, é mais ou menos garantido que ele esteja livre das falhas do tempo de execução do JavaScript.

✓ Classes e Módulos: Sim, as classes são padrão no ES6, mas também estão incluídas no TypeScript, além de um sistema de módulos bacana.

✓ Inferência de tipos: Para tipos complexos, o tipo pode ser descoberto facilmente pelo compilador, poupando-lhe alguma dor de cabeça.

✓ Async/await: As palavras-chave e padrões async/await são fundamentais, então não precisa mais brincar com Promises e Callbacks!

Namespaces, genéricos, tuplas . . . Eu poderia continuar, mas deveria ser suficiente dizer que o TypeScript converte uma das piores experiências de desenvolvimento em uma das melhores.

Fragmento de código TypeScript

O impacto do TypeScript não pode ser negado. Ele empurrou tentativas semelhantes, como o Dart do Google, para fora do campo (embora esteja tentando um retorno através do Flutter, uma estrutura de desenvolvimento móvel) e abriu os olhos dos desenvolvedores de JS para os benefícios de tipos mais fortes.

Como resultado, bibliotecas significativas como React, D3, Vue (até jQuery!) agora têm uma versão TypeScript e, nas melhores lojas de software do mundo, todo o código JavaScript está sendo escrito como código TypeScript. Os cabeçalhos TypeScript agora também estão disponíveis para Node.js (honestamente, se um nó puder melhorar sua história de simultaneidade e corrigir seu péssimo gerenciamento de memória, ele durará para sempre).

Você pode se surpreender ao saber que o criador do Node.js, depois de lamentando sua criação, está trabalhando em um novo tempo de execução (não há site oficial no momento; apenas o repositório GitHub) que tem o TypeScript como seu idioma principal.

A melhor notícia? TypeScript é um pequeno idioma para aprender com consideráveis ​​benefícios no futuro. Se você é um desenvolvedor intermediário de JavaScript, você obterá TypeScript suficiente em dois dias para transferir todo o seu código existente!

Conclusão e isenção de responsabilidade

Idiomas específicos estão ganhando tanta popularidade quanto os deste artigo, mas não foram incluídos na lista por vários motivos. Aqui está uma olhada rápida:

  • Golang: Já estabelecido como um idioma mainstream, se não muito popular. Acredito que, neste momento, Golang tem vários concorrentes que manterão sua participação de mercado baixa.
  • R: O R já está em alta entre os cientistas de dados e é improvável que atraia muito os desenvolvedores de aplicativos. Além disso, não devemos esquecer que as bibliotecas de aprendizado de máquina estão lentamente chegando a todas as principais linguagens (pelo amor de Deus, até o PHP as tem agora!), então tudo que você precisa fazer é esperar algum tempo. 🙂
  • Swift: A Apple tem um controle de ferro em seu ecossistema, e Swift é a única linguagem disponível lá. Anteriormente, o Objective C era a moda, como o Swift é agora. Considero trapaça e por isso me recuso a incluí-lo aqui. 😀

O futuro é sempre incerto, e uma maneira de seguir sua carreira é se ater ao que já está funcionando e se recusar a se “distrair”. Se você fizer isso, Java, PHP, Python, Ruby, etc., são todas linguagens excelentes para se manter. No entanto, para alguns de nós, a norma não é suficiente. Eles querem sair e explorar e apostar alto no futuro. Se você se enquadra no último campo, um desses cinco idiomas deve estar no topo da sua lista de tarefas.

Finalmente, ao tentar avaliar um idioma, não deixe que o esforço o domine porque não é muito. Se você já conhece algumas linguagens de programação, pode aprender qualquer uma delas em no máximo dois meses, gastando de 5 a 6 horas por semana. Considerando que a felicidade e os retornos monetários que podem ser gerados no futuro serão várias vezes maiores.

Eu perdi alguma linguagem crítica aqui? Ou talvez eu tenha algo errado sobre os idiomas listados aqui? Se sim, por favor, deixe um comentário e me ajude a melhorar. 🙂