- Uma linguagem compilada de tipagem estática escrita com palavras-chave em coreano, que gera binários nativos por meio de LLVM IR
- Fornece tanto compilador quanto interpretador implementados em Rust, com suporte a build, execução, REPL e LSP via CLI
hgl
- Todas as palavras-chave são em coreano, como
함수, 만약, 반복, 변수, e nomes de variáveis e funções também podem ser definidos em coreano
- Inclui recursos práticos integrados como entrada/saída de arquivos, JSON, HTTP, expressões regulares, data/hora e chamadas de sistema, além de 18 exemplos
- Implementa a estrutura científica do Hangul e sua difusão cultural em uma linguagem de programação, chamando atenção como uma nova tentativa de combinar aprendizado de coreano com programação
Visão geral da linguagem Han
- Han é uma linguagem compilada de tipagem estática escrita com palavras-chave em coreano, que gera binários nativos por meio de LLVM IR
- Inclui um toolchain de compilador e um interpretador tree-walking escritos em Rust
- Com o comando
hgl, é possível executar o interpretador, fazer build, usar REPL e iniciar um servidor LSP
- Todas as palavras-chave são compostas em Hangul, por exemplo:
함수, 만약, 반복, 변수, 출력 etc.
- Busca implementar o sistema científico de escrita do Hangul em uma linguagem de programação, com o objetivo de unir beleza linguística e precisão técnica
Principais recursos
- Suporte a palavras-chave e identificadores em Hangul: nomes de variáveis, funções e structs podem ser escritos em coreano
- Sistema de tipos estático: oferece 5 tipos básicos —
정수, 실수, 문자열, 불, 없음
- Modos compilado e interpretado: LLVM IR → clang → geração de binário, ou execução imediata
- REPL e servidor LSP: os comandos
hgl repl e hgl lsp oferecem execução interativa e autocompletar de código
- Recursos integrados
- Arrays, structs, closures, pattern matching, tratamento de exceções e genéricos
- I/O de arquivos, JSON, HTTP, expressões regulares, data/hora e chamadas de sistema
- Strings formatadas, hashmap e funções matemáticas integradas
- Inclui 18 programas de exemplo: Hello World, chamadas a HTTP API etc.
Instalação e execução
- Pré-requisitos: Rust (1.70+), clang
- Procedimento de instalação
- Há uma extensão para VS Code: suporte a syntax highlighting e LSP
- Comandos CLI
hgl interpret <file.hgl> — executa o interpretador
hgl build <file.hgl> — compila um binário nativo
hgl run <file.hgl> — compila e executa imediatamente
hgl repl — modo interativo
hgl lsp — executa o servidor LSP
Estado atual da implementação
- Recursos totalmente funcionais
- Tipos de dados, fluxo de controle, funções, strings, arrays, hashmap, structs, tratamento de erros e verificação de tipos
- JSON, HTTP, expressões regulares, data/hora, sistema, I/O de arquivos, funções matemáticas, módulos e genéricos
- Recursos parcialmente implementados
- Em
hgl build, a geração de código para closures, strings e métodos de array ainda não está concluída
- Recursos não implementados
- Segurança contra null (sem tipo
Option), processamento assíncrono/paralelo, garbage collection e otimização de tail recursion
Hangul e programação
- O Hangul é um sistema de escrita científico que expressa visualmente a estrutura fonológica, criado pelo rei Sejong em 1443
- Han reflete essa clareza estrutural do Hangul na sintaxe da linguagem
- Mais de 16 milhões de pessoas no mundo estão aprendendo coreano, e Han oferece um meio de aprender Hangul por meio da programação
- Exemplos de palavras-chave
함수(function), 만약(if), 반복(for), 반환(return), 변수(variable), 출력(print) etc.
Design e estrutura
- Pipeline de compilação baseado em Rust
- Lexer → Parser → AST → Interpreter / CodeGen → LLVM IR → clang → Binary
- Estrutura do projeto
src/ — código central do compilador e do interpretador
editors/vscode/ — extensão para VS Code
- Inclui
examples/, spec/, tests/
- Motivos das escolhas de design
- Em vez da LLVM C API, usa geração de IR baseada em texto para simplificar o build
- O interpretador prioriza rapidez de execução, e o compilador prioriza desempenho
- O pattern matching e a segurança de memória de Rust são adequados para implementar a linguagem
Testes e licença
- Executa 46 testes com
cargo test (41 unitários, 5 de integração)
- Disponibilizada sob a licença MIT
Significado cultural
- Han é uma linguagem experimental que combina a beleza do Hangul com a precisão da programação
- Propõe uma nova abordagem que rompe as fronteiras entre idioma e código tanto para estudantes de coreano quanto para desenvolvedores
11 comentários
Graças a isso, consegui obter informações úteis. O GeekNews, que seleciona as notícias mais essenciais, é uma alegria de visitar todos os dias. Eu também, na posição de alguém que atualmente está desenvolvendo uma linguagem de programação em coreano, vejo com muito bons olhos a continuidade dessas tentativas.
Tendo vivido muitos anos no exterior e acompanhado as mudanças da Coreia, sempre achei lamentável o fenômeno da penetração excessiva do inglês no cotidiano e em toda a indústria. O “dialeto de Pangyo”, nomes de apartamentos difíceis de entender, menus deformados como MSGR e letreiros repletos de inglês parecem enfraquecer a capacidade de sobrevivência da nossa língua. Mesmo que a educação precoce tenha reduzido a barreira do inglês, a intuitividade proporcionada pela língua materna é insubstituível. Assim como uma placa em coreano salta imediatamente aos olhos no exterior, nosso cérebro consome menos energia ao processar a língua materna.
print("Hello, world!");
saída "Olá!"
Qual dos dois entra mais naturalmente nos seus olhos?
A IA está derrubando as barreiras linguísticas, mas a pesquisa sobre linguagens de programação em coreano é um trabalho de remover camadas desnecessárias de “tradução” do nosso sistema de pensamento para maximizar a eficiência do cérebro. É natural que
saídapareça mais intuitivo do queprint. Embora seja difícil que isso se torne mainstream de imediato por causa da lógica da universalidade e do mercado de trabalho, espero que no futuro surjam linguagens em coreano mais maduras e diversas, enriquecendo o ecossistema.Em hangul... não consigo parar de
밯망히질.Isso me lembra o projeto Ssiat.
Parece ser alguém que trabalhou por muito tempo com contabilidade, não com desenvolvimento, e ainda assim criou um compilador e conseguiu mais de 100 estrelas no GitHub..
Realmente chegamos à era da IA
Pensando em programar com
assíncrono-esperaem vez deasync-await, até que fica mais confortável.Linguagens de programação precisam ser versáteis...
É engraçado como a reação no Hacker News está sendo favorável kkk
Uau, que incrível
Olá, manhã forte e poderosa!
Uau
Uau, também é legal ver algo assim no Hacker News. Obrigado, Rei Sejong.