Como a minha irritação com o JavaScript me levou a criar uma linguagem de programação
Em 2020, eu comecei no mundo da programação, mais especificamente na área de desenvolvimento Front-End, e foi ali que começou meu primeiro contato e meu rápido estranhamento com o JavaScript. Pra um iniciante, lidar com os "nuances" do JS era muito difícil, como a diferença entre null e undefined, o comportamento do this mudando completamente entre functions e arrow functions, a coerção de tipos imprevisível etc. Essa estranheza, vinda de uma linguagem que foi criada em apenas 10 dias, fez com que eu evitasse ao máximo o uso do JavaScript, fazendo eu buscar refúgio no Python, que é uma linguagem com uma sintaxe bem mais simples. Com o passar do tempo, consegui entender melhor o JS, mas mesmo assim, toda essa estranheza dele, me irrita até hoje.
WebAssembly e a busca por uma alternativa
Recentemente, eu estava pensando comigo mesmo, se existia alguma alternativa ao JavaScript para o navegador. Eu queria algo mais simples de se usar, e até mesmo mais rápido. Foi aí que eu descobri que existe o WebAssembly (Wasm). Foi aí que surgiu uma ideia de criar uma linguagem de programação que compila pra Wasm, para que eu possa usar como uma alternativa ao JavaScript. Eu não tenho o objetivo de fazer o SimpleScript desbancar o JavaScript, mas servir como uma alternativa viável e performática pra sites que não precisam de um framework, compilando diretamente pra Wasm.
Por que Zig e LLVM?
Quando decidi que queria criar essa linguagem, eu decidi que queria simplicidade, mas não queria abrir mão da performance. Foi assim que cheguei ao Zig e ao LLVM, com o Zig sendo usado pra gerenciar a memória de forma manual e segura, e o LLVM otimizando e transformando em binário nativo de alta performance a Representação Intermediária (IR) no qual o código SimpleScript é traduzido.
Um dado curioso de performance: Em testes iniciais de estresse aritmético, uma lógica que levou cerca de 41 segundos no Python foi processada em menos de 1 segundo no SimpleScript.
Como é o código hoje?
Aqui está um exemplo de um código feito em SimpleScript:
const LIMITE: int = 18
var idade: int = 20
if idade >= LIMITE {
say("Acesso permitido")
} else {
say("Acesso negado")
}
for i in 0..5 {
say("Iteração número:", i)
}
O que vem por aí?
O SimpleScript ainda está dando os seus primeiros passos, ele ainda possui alguns bugs e muitas funcionalidades básicas faltando, mas o foco agora é estabilizar o núcleo da linguagem pra depois focar 100% no backend para WebAssembly.
Eu sou novato no Zig e no LLVM, algumas coisas eu vou aprendendo através de tutoriais no YouTube ou com a IA.
O projeto é open-source e adoraria receber feedback (e as críticas construtivas) de vocês: https://github.com/VictorFrancelino/simplescript