Ferrugem - Rust, só que em Português

Recentemente eu vi um projeto no GitHub chamado Rouille, que é a linguagem Rust, mas com as keywords e algumas coisas totalmente traduzidas pro francês. Logo, se seguiram várias derivadas, como Rost (alemão), Rdza (Polonês), Ruggine (Italiano), e vários outros projetos no mesmo estilo.

Eu não tinha visto ninguém fazer em português, então eu resolvi fazer minha própria versão, usando como base o código do Rost.

É aí que surgiu o Ferrugem, a versão em PT-BR do Rust, e como qualquer versão PT-BR de qualquer coisa, eu dei um toque bem mais HUE BR pro README, ainda seguindo um pouco o padrão de todos os outros idiomas.

É um projeto interessante que mostra o poder das macros do Rust, e como você pode escrever uma linguagem inteira só usando macros:

ferrugem::ferrugem! {
    usar pdr::coleções::Dicionário como Dicio;

    atributo Eae {
        função escrever(&eu, chave: Texto, valor: Texto);
        função obter(&eu, chave: Texto) -> Resultado<Opção<&Texto>, Texto>;
    }

    estático mutável DICIONARIO: Opção<Dicio<Texto, Texto>> = Nenhum;

    estrutura Concreto;

    implementar Eae para Concreto {
        função escrever(&eu, chave: Texto, valor: Texto) {
            eis dicio = inseguro {
                DICIONARIO.obter_ou_inserir_com(Padrão::padrão)
            };
            dicio.inserir(chave, valor);
        }

        função obter(&eu, chave: Texto) -> Resultado<Opção<&Texto>, Texto> {
            se eis Algum(dicio) = inseguro { DICIONARIO.como_ref() } {
                TaMec(dicio.obter(&chave))
            } senão {
                Erro("Deu ruim, rapaziada ".para_texto())
            }
        }
    }
}

Vendo como as macros funcionam pra substituir as keywords por palavras e gírias em outras línguas dá uma boa noção de como as procedural macros do Rust funcionam, mesmo com um projeto de brincadeira assim.

O único problema é que dentro das macros você acaba perdendo algumas das funcionalidades do rust-analyzer, então é difícil saber se seu código tá certo enquanto você escreve.

Pra quem quiser testar e escrever algum programa totalmente em português usando Ferrugem/Rust, sintam-se à vontade pra testar e sugerir novas keywords. Eu não publiquei o projeto no Crates.io, mas talvez o faça em breve.

será que vemos um substituto para o portugol nas faculdades nascendo? rs brincadeiras a parte, muito legal😎

Se alguém tiver interesse em utilizar isso pra algo sério, pra ensinar programação, é possível que sim 😆.

O interessante é ter uma noção como os americanos enxergam um software já que está na sua língua nativa.

Boa iniciativa. Se me permite, eu gostaria de fazer uma observação :)

Eu sou da época em que, tirando a linguagem, programávamos em português aqui no Brasil, e eu sempre achei que o padrão de tradução poderia ser diferente.

Usou-se o nome do verbo e não a sua ação, que seria mais adequado, na minha opinião. Por exemplo, implementar ficaria como implementa, escrever ficaria como escreve, obter ficaria como obtém, etc.

De qualquer forma, está legal, e eu diria que este tipo de projeto poderia mesmo ser olhado com mais "carinho". Trabalhar em inglês é bom devido a consistência, mas vira e mexe, enche o saco de quem está buscando o termo ideal para tudo, especialmente para termos de negócio :)

Sim, a origem do verbo, e não a ação dele. Também acho mais adequado e é a que prefiro. Mudar essas keywords é um tanto quanto simples (todas as modificações ficam em um único arquivo, lib.rs), ou seja, modificar isso não dá tanto trabalho. Eu fiz um fork e modifiquei a maioria para que ficassem em sua forma de origem, apesar de ser não ser apropriado ainda, já é uma grande melhora. Também removi algumas coisas que considero informais. No entanto, e de qualquer maneira, não está de prontidão para o uso em produção. (Talvez haja erros, não ortográficos, mas na consistência de keywords) https://github.com/gitdesk-richard/ferrugem
Ótima contribuição! Na minha cabeça a ideia do projeto era ser uma brincadeira com as macros, e a informalidade é parte da brincadeira. Se quiser subir um Pull Request pra olhar com mais carinho pras alterações, e pra gente discutir sobre melhorias. Se tiver gente realmente interessada em usar isso pra alguma finalidade, a gente pode fazer uma versão mais séria.
Opa! É uma boa sugestão. Eu não tenho muito costume de escrever código em português, então geralmente utilizo o verbo no infinitivo, mas não é tanto problema alterar. Só pra deixar claro também, esse projeto não é um compilador novo, não estou reescrevendo a sintaxe do Rust. É só uma macro que pega as keywords de Ferrugem e substitui por keywords do Rust. Então é algo bem simples de modificar no fim das contas. Sugestões e melhorias são sempre bem vindas!

eu ficava pensando como seria liguagens traduzidas como python,js,C,C++ e outras achei que era um ideia aletoria minha mas não é não é tenho muitas outras ideias só no papel por que sou iniciante d estou aprendendo mas quando eu aprender mais eu faço.

Essas outras linguagens até dá pra traduzir pro português. Teria que ter um bom conhecimento de compiladores pra alterar as keywords, mas em tese é possível sim. No caso aqui, eu só utilizo um recurso do próprio Rust chamado macro. Tudo o que tá dentro dessa macro é substituído por um código válido Rust durante a compilação, então não precisei editar o compilador.