• Tecnologia
  • Equipamento elétrico
  • Indústria de Materiais
  • Vida digital
  • política de Privacidade
  • Ó nome
Localização: Casa / Tecnologia / 11 novas linguagens de programação para fazer o coração de um codificador cantar

11 novas linguagens de programação para fazer o coração de um codificador cantar

techserving |
1978

Foi Alexander Pope quem disse: “A esperança brota eternamente no peito humano”? Pope era um poeta, não um hacker, mas acredito que ele entenderia a expectativa envolvida na descoberta de uma nova linguagem de programação. Ele saberia que os desenvolvedores de software estão sempre esperançosos de que essa linguagem, com sua combinação única de caracteres Unicode, finalmente resolverá todos os nossos problemas, facilitando a codificação com apenas alguns cliques.

Pope certamente entenderia o desejo de uma nova sintaxe tão intuitiva que bastasse imaginar uma resposta e vê-la traduzida em regras lógicas maravilhosas, elaboradas e, acima de tudo, corretas. Ele apreciaria o desejo em nossos dedos de girar um novo código que pareça tão fácil e elegante quanto um eixo triplo, um três e meio interno na posição de pique ou uma corrida de slalom gigante nas Olimpíadas.

No entanto, a maioria das linguagens modernas não são criadas para extravagâncias ou para demonstrar nossa proeza de codificação. Eles são feitos em resposta a um problema comum que os criadores estão ansiosos para resolver. Embora a maioria dos desenvolvedores continue a codificar diariamente em uma ou mais linguagens mais antigas e estabelecidas, estamos sempre à procura de novas ferramentas para nos ajudar a resolver nossos problemas de codificação. Podemos ver essa tendência, especialmente, no surgimento de linguagens de domínio específico, ou DSLs. Essas linguagens são compactas e focadas. Eles não se destinam ao uso geral. Mas alguns podem ganhar um lugar especial em sua caixa de ferramentas exatamente por esse motivo.

Aqui estão 11 idiomas mais recentes que encontraram seu nicho. Alguns são DSLs, projetados para fazer uma coisa e fazê-la bem. Outros, aparentemente, aspiram salvar o mundo. Mesmo que não sejam o que você precisa agora, todos eles têm algo a ensinar sobre como fazer nossos computadores fazerem o que fazem, mas melhor.

Clojure reativo

Quando você casa Clojure com React, é isso que você obtém: um sistema que combina todas as possibilidades de front-ends reativos com a força sólida e funcional de Clojure. Na melhor das hipóteses, o Reactive Clojure permite criar uma coleção complexa de componentes front-end e encadeá-los com funções. A estrutura reativa preenche os detalhes e garante que os dados do aplicativo fluam sem problemas entre seus componentes e o banco de dados. Clojure traz a base funcional para tornar possíveis casos de uso fora do comum - e depuráveis.

É uma combinação perfeita? O tempo vai dizer. Clojure reativo é uma boa opção para escrever o código cola que une os componentes front-end. Seu modelo multithread é uma combinação natural para painéis complexos e reativos que relatam várias tarefas simultaneamente.

Níquel

Um dos jogos mais irônicos que os programadores jogam é empurrar a maior parte do nosso trabalho para arquivos de configuração. Esses arquivos, geralmente codificados em JSON, YAML ou até mesmo XML, são uma boa ideia de codificação que é metastatizada em um ritual elaborado. Em alguns casos, você nem precisa escrever código real; apenas balanceie infinitamente os vários arquivos de configuração para fazer o que você precisa.

Faz sentido, então, termos o Nickel: uma linguagem de programação para criação de arquivos de configuração. O níquel é como um modelo com lógica incorporada, que você pode usar para criar arquivos de configuração que não sejam estáticos. Um parâmetro pode ser um valor durante a semana e outro diferente nos finais de semana. Ao ser executado, o Nickel cria um novo arquivo de configuração que se ajusta a todos os parâmetros recebidos.

A estrutura do Nickel é amplamente funcional, e a verificação de tipos está disponível, se isso ajudar. Um grande tema é a “correção” porque um código Nickel bem escrito praticamente garante que a saída obedecerá às regras sintáticas e a quaisquer outras regras que você precise aplicar. O compilador do Nickel permite escrever contratos e, em seguida, verifica se a saída os obedece. Claro, há algo engraçado em escrever código para criar arquivos de configuração que controlam seu código. Mas é uma solução muito prática para arquiteturas modernas.

Kobra

Os criadores do Kobra queriam uma linguagem que abrisse o aprendizado de máquina para engenheiros, cientistas e outros programadores não tão profissionais. O resultado é o que eles chamam de linguagem visual para aprendizado de máquina. O editor do Kobra compõe sequências semelhantes a código com blocos de arrastar e soltar representando rotinas integradas comuns para análise estatística e aprendizado de máquina. O processo parece R com quadros de dados construídos a partir de dados tabulares e uma coleção de funções de exibição gráfica para criar painéis e papéis.

11 novas linguagens de programação para tornar um codificador heart sing

Bíceps

Um dos recursos mais úteis da nuvem é a capacidade de inicializar e desativar servidores para lidar com surtos de dados. Antigamente, uma equipe de hardware de data center levava semanas para requisitar, instalar, testar e configurar uma máquina. Agora, a nuvem permite que você faça tudo isso em minutos ou até mesmo em segundos.

Muitas equipes de devops começaram a escrever código para as várias APIs suportadas pelas diferentes nuvens. A Microsoft decidiu ir um pouco além e criar uma linguagem simplificada para inicialização de máquinas no Azure, como parte de sua filosofia de infraestrutura como código.

A linguagem, chamada Bicep, oferece um formato declarativo eficiente para explicar a maioria dos diferentes bits que um desenvolvedor pode querer inverter em uma nova instância. Alguns tipos básicos de segurança podem ajudar a evitar erros e há um editor com reconhecimento de sintaxe disponível no VS Code. A linguagem em si foi projetada para pensar em infraestrutura de alto nível, com uma estrutura fortemente declarativa que permite incluir instruções em qualquer ordem e, em seguida, permitir que o gerenciador de recursos do Azure otimize a execução.

Frink

Um amigo afirma que seu único requisito para escolher um banco é garantir que o software de contabilidade do banco use números inteiros para contar centavos e não números de ponto flutuante para frações de um dólar. Os perigos de erros com ponto flutuante são bem conhecidos e muito grandes. Quantos bugs foram causados ​​por jogar números sem muito cuidado?

Frink é uma linguagem “consciente de unidades” criada justamente para este problema. Cada variável em Frink não contém apenas um número, mas também uma indicação da unidade de medida, seja toneladas, watts, pés ou metros. A conversão da unidade é fácil graças ao arquivo de configuração Frink. O mecanismo principal de Frink também usa números de precisão arbitrária para reduzir problemas com arredondamento. É como a verificação de tipos, mas para unidades numéricas de medida.

Faust

A síntese de som pode parecer um foco limitado, mas é muito útil para desenvolvimento de jogos, realidade virtual e qualquer aplicativo que dependa de boa qualidade de som. Digite Faust, uma linguagem específica de domínio que recebe seu nome de um amálgama de fluxo de áudio funcional. A estrutura de Faust é puramente funcional e todas as suas funções constroem um pipeline de processamento de som. Seu back-end divide o som recebido em uma representação numérica, e o próprio código é um conjunto de funções que podem ser compostas ou combinadas em um resultado final. Por exemplo, você pode criar um eco ou uma reverberação dividindo a saída do código e introduzindo um atraso. O código de Faust é transcompilado em C++, C, código de bits LLVM, WebAssembly, Rust e algumas outras linguagens, para que você possa usá-lo com praticamente qualquer projeto.

Melrōse e Glicol

Qualquer um que escreva código sabe como um programador começaria uma banda: Em vez de colocar um anúncio para encontrar um baterista e depois entrevistar todos que responderem, basta escrever algum código para soletrar os ritmos para uma bateria eletrônica. Feito isso, você também pode substituir todos os outros membros da banda por sub-rotinas. Você pode até construir uma orquestra sinfônica inteira dessa maneira.

Melrōse e Glicol são duas linguagens de programação musical desenhadas para este estilo de criação musical. Ambos permitem que você crie composições elaboradas com apenas algumas teclas. Melrōse trabalha em um alto nível em torno da oitava de doze tons padrão comum na música ocidental. As notas são agrupadas em sequências e o software lida com grande parte do trabalho de scut como transposição. A saída vai para qualquer instrumento compatível com MIDI e o código também pode reagir aos sinais recebidos pela porta MIDI, de modo que o código Melrōse pode ser um membro da banda.

Glicol é uma ferramenta baseada em Rust que realiza muitas das mesmas tarefas, mas de um nível inferior. O código se integra ao processamento de sinal digital para oferecer uma ampla gama de opções musicais. A ferramenta foi projetada para produzir sons prontos para o navegador com seu mecanismo de áudio de código aberto. O desenvolvedor do Glicol diz que a linguagem tem “uma taxa de entrada baixa e tetos altos” para encorajar a colaboração com outras pessoas de todos os níveis de habilidade.

WebAssembly e Wase

A maneira mais eficiente de enviar instruções para o computador é codificá-las em binário e limitá-las ao conjunto básico de operações usadas pelas CPUs. Cada chip tem sua própria sintaxe binária favorita e algumas linguagens como Pascal ou Java têm um formato binário neutro destinado a rodar em uma máquina virtual local. O WebAssembly (Wasm) segue esses passos, oferecendo aos navegadores web código binário pré-digerido combinado com texto em um formato padrão. O objetivo do WebAssembly é substituir o código JavaScript minificado que forma a espinha dorsal dos aplicativos da Web por algo ainda mais pronto para ser executado, com velocidade quase nativa.

Muitos desenvolvedores usarão o WebAssembly sem escrevê-lo diretamente, usando compiladores que convertem linguagens de alto nível em WebAssembly que serão executados em navegadores. Há também um movimento para criar linguagens de baixo nível que exponham grande parte da estrutura básica do WebAssembly em um formato legível por humanos. Wase é uma dessas opções, oferecendo uma sintaxe semelhante a C com digitação forte.

O WebAssembly também está encontrando uso fora dos navegadores da web, como uma forma geral de codificar instruções com uma máquina de pilha semelhante à JVM do Java. Redpanda, por exemplo, é uma plataforma de streaming de dados que oferece aos desenvolvedores a chance de ajustar ou modificar os dados à medida que descem com o código escrito em WebAssembly.

Java 17

Tecnicamente, Java não é uma linguagem nova. De fato, uma das melhores coisas sobre Java é que seus desenvolvedores fizeram um ótimo trabalho mantendo a compatibilidade com versões mais antigas. Geralmente é muito fácil compilar código de 10 ou até 20 anos para as JVMs mais recentes. Não é garantido que o código funcione, mas ainda é mais fácil de compilar do que quase qualquer outra linguagem. A equipe Java tem um conjunto de milhões de testes de integração e mostra.

Eu incluo o Java 17 nesta lista porque ele foi tão modernizado que seria quase irreconhecível para um viajante do tempo dos anos 90. Java 17 tem tantos recursos extras e extensões que mudam a forma como codificamos.

Alguns, como o gerador de números aleatórios aprimorado ou a semântica matemática de ponto flutuante mais rígida, abordam os desafios de escrever códigos numéricos muito complexos. Os desenvolvedores que escrevem sistemas de contabilidade podem usar números inteiros para manter o número de centavos, mas aqueles que lidam com algoritmos de IA e álgebra linear complexa precisam de ponto flutuante.

Outros, como encapsulamento forte e semântica de switch estendida, trazem uma mistura de disciplina e flexibilidade para a linguagem principal. Ao todo, é mais fácil do que nunca escrever um código mais forte, seguro e protegido graças a todas essas melhorias. Ainda é Java em sua essência, mas os extras fazem a diferença.