![Fortificando a cadeia de suprimentos de software](https://optimuscloud.com.br/wp-content/uploads/2024/04/1713896526_Fortificando-a-cadeia-de-suprimentos-de-software-150x150.jpg)
Fortificando a cadeia de suprimentos de software
23 de abril de 2024![O que o WebAssembly significa para o servidor e GenAI?](https://optimuscloud.com.br/wp-content/uploads/2024/04/1713912245_O-que-o-WebAssembly-significa-para-o-servidor-e-GenAI-150x150.png)
O que o WebAssembly significa para o servidor e GenAI?
23 de abril de 2024Este ano assistimos ao lançamento de uma nova linguagem de programação que consiste numa estrutura de dados gigante – para que os programadores possam evitar ter de nomear as coisas.
É “uma reação irônica ao sempre presente problema de nomenclatura”, disse o engenheiro de software Oleksandr Kaleniuk em entrevista por e-mail. “Nomear é difícil, então não vamos nomear nada e ver se assim a programação fica mais fácil.”
Spoiler: Ele então acrescentou: “Isso não acontece”.
“A linguagem não tem aplicações no mundo real, mas é divertida de usar tanto como desenvolvedor quanto como usuário.”
Até a própria língua não tem nome.
![A linguagem de programação sem nome – trecho de código](https://optimuscloud.com.br/wp-content/uploads/2024/04/Nova-linguagem-de-programacao-do-codificador-ucraniano-uma-estrutura-de.png)
Um trecho da documentação da linguagem de programação sem nome.
O idioma
“Existe uma e apenas uma estrutura de dados”, explica o repositório da linguagem no GitHub. “Como há apenas um, não precisa de um nome.” No entanto, ramos e sub-ramos dentro dessa estrutura de dados podem representar matrizes e até matrizes menores. Pares de caracteres indicam tudo, desde strings e números – bem como comparação lógica e operações matemáticas. (E há até símbolos para ler ou gravar dados de um arquivo – ou até mesmo excluir esse arquivo.)
“Há também a operação. Não ‘uma operação’, mas ‘a operação’, uma vez que existe apenas uma operação na linguagem.
“Como há apenas um, não precisa de um nome qualquer.”
O interpretador percorre sua estrutura de dados única, adicionando valores à pilha sempre que encontra o _ símbolo, ou operar sobre eles (se o símbolo _ preceder uma operação matemática).
“Como existe apenas uma dessas línguas, ela não precisa de um nome.”
E o par de caracteres para “ajuda” é sim_ (então executando um arquivo chamado the_namingless_programming_linguagem lançaria o menu de ajuda assim que o analisador atingisse o sim_ personagens…)
O conjunto de código-fonte resultante é até usado como nome de arquivo “para evitar o problema de nomenclatura dos programas que você escreve”.
E por fim, o repositório oficial no GitHub também ressalta que até a linguagem em si também não tem nome. Portanto, o ato de referir-se a ela como “a linguagem de programação sem nome” é, em vez disso, apenas falar uma palavra definição do que esta linguagem ainda sem nome está tentando realizar.
“Como existe apenas uma dessas línguas, ela não precisa de um nome.”
Inspirações
No entanto, existem alguns conceitos reais de programação em ação aqui. Kaleniuk diz que sem nome é “apenas um nome sofisticado para orientado a pilha e tácito”.
Isso significa que foi inspirado em linguagens como Forth, APL e Uiua (que Kalenuik diz também incorporar programação de array e orientação de pilha). No entanto, em nossa entrevista por e-mail, ele disse que sua principal inspiração foi outra linguagem orientada a pilha: PostScript.
PostScript é notoriamente uma linguagem de “descrição de página” para a indústria de publicação eletrônica, enviando não apenas dados (sobre onde linhas e curvas devem ser desenhadas), mas também código, de acordo com Kaleniuk – “um programa executável que está aberto para interpretação pela máquina que faz a impressão propriamente dita.” E a mesma necessidade surge no trabalho de Kaleniuk como engenheiro de software para uma empresa global de impressão 3D.
Não seria útil se as formas a serem impressas pudessem ser codificadas em um formato Fórmula em vez de apenas um grande despejo de dados?
Kaleniuk optou por uma linguagem de processamento de array para manter tudo conciso. “Estamos falando de gigabytes de código/dados.” E como é “99% produzido por máquina e 100% consumido por máquina”, também pode ser altamente abstrato (já que, na opinião de Kaleniuk, “ninguém iria querer ler isso de qualquer maneira”). linguagem usando programação tácita altamente abstrata.
Kaleniuk chama isso de “apenas um experimento de design, uma coisa para brincar, um brinquedo…
Codificação em Kyiv
Kaleniuk também escreve um site com tutoriais de programação e matemática (junto com demonstrações e questionários) chamado Palavras e botões on-line. (No mês passado, ele adicionou uma postagem abordando todas as tecnologias que deveriam ter uma vantagem competitiva sobre sua linguagem de programação de longa data, C++.) E no ano passado, Kaleniuk também foi o autor do livro Geometria para Programadores. (“Domine a matemática por trás de CAD, motores de jogos, GIS e muito mais!” diz sua página oficial na Manning Publications (onde o texto completo está disponível online gratuitamente).
Mas desde 2015 ele é engenheiro de software na filial de Kiev da empresa de impressão 3D Materialise, mudando para a função de gerente de projeto há dois anos. “Espero deixar isso de lado assim que a guerra terminar e voltarmos ao normal”, disse Kaleniuk em nossa entrevista por e-mail.
“Para ser honesto, eu esperava que a guerra já estivesse vencida…”
Kaleniuk estava trabalhando no leste da Ucrânia em 2014, então já havia passado alguns meses sob ocupação russa e chegou à conclusão de que “a Rússia não é tão forte, apenas bárbara”. E ele também se lembra do primeiro dia da invasão em grande escala da Rússia. “Em 24 de fevereiro de 2022, acordei com o som de um míssil se aproximando, fui até meu PC, abri meu aplicativo de banco e doei para o exército. Fiz o mesmo em 2014. É como uma regra. Cada vez que você ouve uma explosão, você doa. Isso lhe dá a ilusão de controle…
“Você também verifica se o sistema financeiro ainda está funcionando.”
Hoje ele diz que a maioria dos engenheiros de software que conhece e que não estão no exército pagam os seus impostos “e dividem o resto entre o exército e a família. Embora alguns trabalhem diretamente para a frente… Queremos que a guerra acabe e estamos dispostos a pagar por isso…”
Pairando sobre tudo isso está uma sensação muito clara de que se trata de uma guerra. “Alguns já pagaram com a vida. Meu amigo foi morto em combate alguns dias antes de meu livro ser publicado. Ele também era engenheiro de software.” Kaleniuk tenta dividir suas próprias doações entre o ministério – que ele disse “comprar projéteis e foguetes” – e organizações não-governamentais e voluntários individuais (que “ajudam a atender solicitações urgentes rapidamente, mas não fornecem armas e munições”).
O primeiro pagamento da editora de seu livro ocorreu no início de março de 2022 – poucas semanas após a invasão da Rússia – “e eu imediatamente doei isso também”. E a guerra continuou… Em dezembro, Kaleniuk escreveu em seu site que “Há cerca de uma hora, um míssil russo atingiu algo na minha vizinhança. De novo.”
“Como civil, engenheiro e matemático, não posso fazer muito a respeito. Mas posso ganhar algum dinheiro e doar para quem puder. É isso que venho fazendo desde fevereiro e é isso que pretendo fazer até a vitória”.
Reações
No início deste ano, Kaleniuk encontrou sua linguagem de programação sendo discutida no Hacker News. E Kaleniuk ficou encantado por ter recebido uma “recepção principalmente positiva”.
“Isso me lembra programação de nível superbaixo, manipulação de pilhas de dados, etc.”, escreveu o desenvolvedor web australiano Ben Winding, acrescentando “pode ser uma ferramenta de aprendizagem útil”.
Houve a inevitável discussão sobre como a nomeação melhora a legibilidade, mas vários comentadores apreciaram os esforços de Kaleniuk, com um deles dizendo que viu o verdadeiro valor da experiência. “Pela minha própria experiência, trabalhar em projetos ‘tolos’ como este, com severas restrições artificiais, por exemplo, pode ser bastante interessante e desafiador e levar a lições aprendidas que podem ser aplicadas posteriormente a projetos reais.”
Kaleniuk diz que passou para outros projetos – mas se sente mais rico com a experiência. “Eu mantenho em mente as lições que aprendi, então talvez um dia você veja alguma coisa incrível impressa em 3D e pense ‘Como eles conseguiram imprimir algo tão complexo?’ E você se lembrará daquela pequena linguagem esotérica sem nenhuma aplicação no mundo real…”
Epílogo
No final do arquivo README, Kaleniuk reconhece que a linguagem foi criada “para retirá-la do meu sistema e foi um grande sucesso. Quer dizer, eu consegui tirar isso do meu sistema com sucesso e, de alguma forma, não sinto mais vontade de brincar com isso.”
“É lindo? Não”, postou Kaleniuk no LinkedIn. “É prático?” De jeito nenhum. É divertido? Mais do que você imagina que seria.”
Em nossa entrevista por e-mail, Kaleniuk também nos contou aonde tudo isso leva. “Eu me diverti com isso e agora compartilhei o código para que outras pessoas também pudessem brincar com ele.”
A postagem Nova linguagem de programação do codificador ucraniano: uma estrutura de Big Data apareceu pela primeira vez em The New Stack.