A Microsoft Research lançou uma nova linguagem de programação de código aberto chamada Bosque, que aspira a ser simples e fácil de entender, abraçando operações algébricas e evitando técnicas que criam complexidade.
Bosque foi inspirado na sintaxe e tipos de TypeScript e na semântica de ML e Node/JavaScript. É uma ideia do cientista da computação da Microsoft, Mark Marron, que descreve a linguagem como um esforço para ir além do modelo de programação estruturada que se tornou popular nos anos 70.
O paradigma de programação estruturada, no qual o controle de fluxo é gerenciado com loops, condicionais e sub-rotinas, tornou-se popular após um artigo de 1968 intitulado “Ir para a declaração considerada prejudicial” pelo cientista da computação Edsger Dijkstra.
Marron acredita que podemos fazer melhor se nos livrar de fontes de complexidade como loops, estado mutável e igualdade de referência. O resultado disso é a linguagem de programação Bosque, que representa um paradigma de programação que Marron, em um artigo que ele escreveu, chama de “programação regularizada”.
Este modelo baseia-se nos sucessos da programação estruturada e tipos de dados abstratos, simplificando os modelos de programação existentes em uma forma regularizada que elimina as principais fontes de erros, simplifica a compreensão e modificação do código e converte muitas tarefas de raciocínio automatizado em proposições triviais, explica Marron.
Em uma entrevista por e-mail com o The Register, Marron disse que a igualdade de referência – quando duas variáveis apontam para o mesmo objeto na memória – representa um exemplo do tipo de complexidade que pode causar problemas.
Como exemplo, Marron descreve um método que anteriormente sempre retornava um novo objeto, que você gostaria de otimizar para que ele retornasse um novo objeto, como um padrão singleton ou de um cache.
Em uma linguagem onde os objetos têm identidade, isso pode mudar o comportamento do programa. No entanto, em Bosque, que não permite a identidade do objeto, esse tipo de mudança é sempre seguro, disse ele.
Outro exemplo, ele diz, seria várias formas de comportamento indeterminado. “Em JavaScript, a função de classificação não precisa ser estável, então o V8 usou um tipo instável”, disse ele.
Em teoria, isso parece uma coisa trivial, mas na prática significava que toda vez que um desenvolvedor classificava uma lista, eles precisavam lembrar que ela era instável e levar em consideração o possível reordenamento de valores com o mesmo valor de classificação. foi inaugurado em 2008 com um problema de estabilidade de classificação e, antes de ser finalmente fechado no ano passado com muito alarde, este bug tinha mais de 1700 comentários.
Para mais informações acesse o GitHub do Microsoft Bosque.