Cada idioma tem um ciclo de vida. Às vezes, começa com uma caixa de uso relativamente estreita e escapa de seu recipiente; Às vezes, é destinado a uma linguagem de uso geral, mas encontra um nicho poderoso.

Na última década, mais, três novos idiomas surgiram como atletas de atenção no espaço de desenvolvimento de software. Neste artigo, veremos o que há de tão especial em cada um desses idiomas e para onde eles podem estar indo.

Ir

Com sua sintaxe relativamente mínima, paradigmas simples e ferramentas de implantação convenientes, a linguagem GO, criada pelo Google, facilitou a redação de programas rápidos e compactos que não exigem que os desenvolvedores pensem muito sobre a segurança da memória.

Na década, desde sua introdução, Go encontrou alguns nichos onde floresce. Serviços de rede ou Web, particularmente aqueles com comportamentos assíncronos, são fáceis de escrever no GO. Tornou -se uma alternativa poderosa ao Python a esse respeito. GO pode escalar para lidar com muito mais tráfego do que Python, e com menos esforço. Os aplicativos entregues como binários independentes, como as ferramentas de linha de comando, são outro bom ajuste para ir. Os programas GO compilados podem ser executados sem dependências externos e podem ser construídos para todas as principais plataformas.

Os maiores obstáculos e queixas de desenvolvedores de Go geralmente resultam de um de seus principais pontos de venda: a simplicidade deliberada do idioma. Os mantenedores da Go tentam manter sua sintaxe e recurso o mais não aventurente e imutável possível, com o objetivo de permanecer compatível com a frente.

Mas as escolhas de Go também podem parecer um desprezo calculado dos recursos poderosos que as linguagens de programação ganharam nas últimas décadas. Os genéricos foram adicionados para ir apenas muito recentemente, e o manuseio de erros está mais próximo da maneira de C de fazer as coisas do que qualquer outra coisa. É uma atitude bem -vinda em um mundo de se mover muito rápido e quebrar muitas coisas. Também aplica restrições ao desenvolvimento, o que pode ser difícil superar os projetos dependentes de Go.

Ferrugem

Quando um programa precisa de segurança e velocidade de memória, a ferrugem é o idioma que regularmente borbulha até o topo da lista. O MO inteiro de Rust está entregando código rápido e nativo da máquina que não pode Cometem classes inteiras de erros de segurança de memória, pois eles simplesmente nunca entram em produção.

A explosão de entusiasmo em torno da ferrugem e seus poderes deixou com um amplo reino de casos de uso. A maioria é aplicativos do lado do servidor, computação em nuvem, sistemas distribuídos ou centrados em rede-as coisas que antes são normalmente o domínio de apenas Java ou C ++. Ele também encontrou uma forte presença no mundo da WebAssembly, pois pode compilar nativamente o WASM e, portanto, ser reutilizado em muitos outros contextos.

A aplicação mais interessante da ferrugem, se não a mais usada, é a substituição do código C/C ++ nos projetos existentes “Brownfield”. Os mantenedores do kernel Linux estão se exercitando (embora com algumas dificuldades) para incluir o código de ferrugem estrategicamente no kernel. Isso não é para o uso completamente do uso, mas para empregar ferrugem, onde proporcionará as maiores recompensas com a menor carga de manutenção adicional (por exemplo, drivers de dispositivo). O objetivo é melhorar a segurança da memória sem forçar os desenvolvedores do Kernel C Linux a reformular a ferrugem, se não quiserem.

Alguns desenvolvedores do kernel Linux resistem à mudança, citando queixas comuns sobre o idioma, como sua curva de aprendizado acentuada e complexidade antecipada. A segurança da memória de Rust exige que os programadores pensem adiante sobre como satisfazer as demandas do compilador, e a adaptação a essa mentalidade é um rito comum de passagem para os recém -chegados da ferrugem. Além disso, os projetos de ferrugem geralmente exigem dezenas ou centenas de dependências externas que diminuem os tempos de compilação, um eco de expansão semelhante no mundo do JavaScript.

Não há dúvida sobre a demanda por segurança de memória junto com a velocidade. O ideal seria uma versão mais simplificada da ferrugem, ou um novo idioma que oferecia os mesmos benefícios sem a sobrecarga conceitual de Rust. Por enquanto, porém, não há dúvida de que a ferrugem galvanizou uma geração de desenvolvedores que querem o que ela oferece.

Zig

O projeto de linguagem de programação de um homem de Andrew Kelley, lançado em 2015, está posicionado como um complemento e um concorrente de C. zig, visa o mesmo espaço que C: o mundo de idiomas portáteis de baixo nível e não coletados. O ZIG também se compila com os mesmos tipos de metas que C, incluindo WebAssembly.

Ao contrário de C, porém, o ZIG possui recursos nativos para facilitar a redação do código de baixo nível seguro para a memória. E, diferentemente da ferrugem – a outra linguagem importante nesse espaço – o ZIG não exige que os programadores trabalhem tanto para a correção. O gerenciamento da memória é feito manualmente, mas o idioma fornece mais ferramentas sintáticas do que C para lidar com a memória. Um exemplo é o Zig’s defer Declaração, usada para limpar os recursos no final de um escopo. Muitos problemas comuns de tempo de execução, como o excesso inteiro, estão presos por padrão e podem ser substituídos granularmente (embora apenas em um determinado escopo), mas o padrão é em relação à segurança.

Uma maneira de o Zig pretende substituir C é integrando elegantemente com ele-sentado lado a lado e até usando as próprias bibliotecas de C. Isso oferece aos aplicativos C que desenvolvem um caminho de transição para o ZIG que não requer demolir e refazer tudo. O compilador ZIG pode até funcionar como um compilador C e pode criar bibliotecas em zig com C ABIS para permitir que C use o código ZIG.

Os maiores obstáculos do ZIG são típicos para qualquer novo idioma. O idioma em si está em fluxo (sua versão atual é 0,15), com possíveis mudanças de ruptura em qualquer ponto ao longo do caminho. O mundo legado que pretende deslocar – o “universo cinematográfico” – também é imensamente arraigado, compreendendo não apenas a linguagem, mas a cultura de desenvolvimento de C.

Outra barreira comum a novos idiomas – quendo em editores e IDEs comuns – parecem se dissolver rapidamente, no entanto. Um complemento em zig no código do Visual Studio fornece o próprio compilador, não apenas um servidor de idiomas, como um componente facilmente integrado ao editor.