- Un lenguaje compilado de tipado estático escrito con palabras clave en coreano, que genera binarios nativos a través de LLVM IR
- Ofrece tanto compilador como intérprete implementados en Rust, y el CLI
hgl soporta compilación, ejecución, REPL y funciones de LSP
- Todas las palabras clave están en coreano, como
함수, 만약, 반복, 변수, y también es posible definir nombres de variables y funciones en coreano
- Incluye funciones prácticas integradas como entrada/salida de archivos, JSON, HTTP, expresiones regulares, fecha/hora y llamadas al sistema, además de 18 ejemplos
- Implementa en un lenguaje de programación la estructura científica del alfabeto coreano y su expansión cultural, llamando la atención como un nuevo intento que combina aprendizaje de coreano y programación
Resumen del lenguaje Han
- Han es un lenguaje compilado de tipado estático escrito con palabras clave en coreano que genera binarios nativos a través de LLVM IR
- Incluye una toolchain de compilador y un intérprete de recorrido de árbol escritos en Rust
- Con el comando
hgl se puede ejecutar el intérprete, compilar, usar el REPL e iniciar el servidor LSP
- Todas las palabras clave están compuestas en hangul, por ejemplo:
함수, 만약, 반복, 변수, 출력
- Busca implementar en un lenguaje de programación el sistema científico de escritura del hangul, con el objetivo de combinar belleza lingüística y precisión técnica
Funciones principales
- Soporte para palabras clave e identificadores en coreano: nombres de variables, funciones y structs pueden escribirse en coreano
- Sistema de tipos estático: ofrece 5 tipos básicos,
정수, 실수, 문자열, 불, 없음
- Modo compilado e intérprete: LLVM IR → clang → generación de binario o ejecución inmediata
- REPL y servidor LSP: soporte para ejecución interactiva y autocompletado con los comandos
hgl repl, hgl lsp
- Funciones integradas
- Arreglos, structs, closures, pattern matching, manejo de excepciones, genéricos
- I/O de archivos, JSON, HTTP, expresiones regulares, fecha/hora, llamadas al sistema
- Cadenas con formato, hash maps, funciones matemáticas integradas
- Incluye 18 programas de ejemplo: Hello World, llamadas a APIs HTTP, etc.
Instalación y ejecución
- Requisitos: Rust (1.70+), clang
- Proceso de instalación
- Ofrece una extensión para VS Code: resaltado de sintaxis y soporte LSP
- Comandos CLI
hgl interpret <file.hgl> — ejecutar el intérprete
hgl build <file.hgl> — compilar a binario nativo
hgl run <file.hgl> — compilar y ejecutar de inmediato
hgl repl — modo interactivo
hgl lsp — ejecutar el servidor LSP
Estado actual de la implementación
- Funciones completamente operativas
- Tipos de datos, flujo de control, funciones, cadenas, arreglos, hash maps, structs, manejo de errores, verificación de tipos
- JSON, HTTP, expresiones regulares, fecha/hora, sistema, I/O de archivos, funciones matemáticas, módulos, genéricos
- Funciones implementadas parcialmente
- Al usar
hgl build, la generación de código para closures, cadenas y métodos de arreglos aún no está terminada
- Funciones no implementadas
- Seguridad nula (sin tipo
Option), procesamiento asíncrono/paralelo, recolección de basura, optimización de recursión de cola
Hangul y programación
- El hangul es un sistema de escritura científico que representa visualmente la estructura fonológica, creado por el rey Sejong en 1443
- Han refleja esa claridad estructural del hangul en la sintaxis del código
- Más de 16 millones de personas en todo el mundo están aprendiendo coreano, y Han ofrece un medio para aprender hangul a través de la programación
- Ejemplos de palabras clave
함수(function), 만약(if), 반복(for), 반환(return), 변수(variable), 출력(print), etc.
Diseño y estructura
- Pipeline de compilador basado en Rust
- Lexer → Parser → AST → Interpreter / CodeGen → LLVM IR → clang → Binary
- Estructura del proyecto
src/ — código central del compilador e intérprete
editors/vscode/ — extensión de VS Code
- Incluye
examples/, spec/, tests/
- Razones de las decisiones de diseño
- Se simplificó la compilación mediante generación de IR basada en texto en lugar de la API C de LLVM
- El intérprete se enfoca en ejecución rápida y el compilador en rendimiento
- El pattern matching y la seguridad de memoria de Rust son adecuados para implementar el lenguaje
Pruebas y licencia
- Se ejecutan 46 pruebas con
cargo test (41 unitarias, 5 de integración)
- Publicado bajo licencia MIT
Significado cultural
- Han es un lenguaje experimental que combina la belleza del hangul y la precisión de la programación
- Propone un nuevo enfoque que rompe la frontera entre lenguaje y código tanto para estudiantes de coreano como para desarrolladores
12 comentarios
Gracias, me llevé información muy útil. GeekNews, que selecciona las noticias clave, es una alegría para visitar todos los días. Yo también, desde la posición de alguien que actualmente está desarrollando un lenguaje de programación en coreano, veo muy positivamente que este tipo de intentos continúen.
Tras vivir muchos años en el extranjero y observar los cambios en Corea, siempre me dio pena ver cómo el inglés se ha metido en exceso en la vida cotidiana y en toda la industria. El llamado "dialecto de Pangyo", los nombres de apartamentos difíciles de entender, menús deformes como MSGR y los letreros llenos de inglés parecen dañar la capacidad de nuestra lengua para sostenerse por sí misma. Aunque la educación temprana haya bajado la barrera del inglés, la intuición que brinda la lengua materna es irremplazable. Así como en el extranjero un letrero en coreano resalta de inmediato ante los ojos, nuestro cerebro consume la menor cantidad de energía cuando procesa su lengua materna.
print("Hello, world!");
imprime "¡Hola!"
¿Cuál de los dos entra mejor de un vistazo?
Aunque la IA está derribando las barreras del idioma, la investigación sobre lenguajes de programación en coreano consiste en eliminar esa "capa de traducción" innecesaria dentro de nuestro sistema de pensamiento para maximizar la eficiencia cerebral. Es natural que
imprimeresulte más intuitivo queprint. Puede que, por razones de universalidad o de mercado laboral, sea difícil que se vuelva dominante de inmediato, pero espero que en el futuro aparezcan lenguajes coreanos más pulidos y diversos que enriquezcan el ecosistema.¿En coreano, eh...? No puedo dejar de detener la insolencia.
Me recuerda al proyecto Ssiat.
Parece más bien alguien que trabajó mucho tiempo en contabilidad, no en desarrollo, pero aun así hizo un compilador y consiguió más de 100 estrellas en GitHub..
De verdad ya llegó la era de la IA
Pensar en programar con
비동기-대기en lugar de async-await sí se siente más cómodo.Lo importante en un lenguaje de programación es que sea de propósito general...
Da risa que la reacción en Hacker News sea favorable jajaja
Wow, qué genial.
¡Hola, mañana poderosa y fuerte!
Guau
Vaya, también da gusto ver algo así en Hacker News. Gracias, rey Sejong.
Comentarios en Hacker News
Si te interesan los lenguajes de programación en coreano, recomiendo el lenguaje funcional "Nuri"
Enlace a Nuri en GitHub
No se limita a traducir palabras clave, sino que puede reflejar la estructura gramatical coreana real en el código
Por ejemplo, si escribes "dividir 10 entre 5 e imprimir", el resultado que se muestra es "2"
También existe otro lenguaje llamado "Yaksok". El código de ejemplo completo del juego 2048 está escrito enteramente en coreano
Me parece una idea realmente genial. El hangul es un sistema de escritura diseñado de forma lógica, así que se puede aprender en una tarde
Respuesta de StackExchange para aprender hangul
El hangul tiene una cantidad de letras parecida al alfabeto inglés, así que se aprende rápido, pero memorizar vocabulario es un poco más difícil. Por eso estoy usando Anki junto con la app de aprendizaje gamificada que hice
Como hablante nativo de coreano, quería compartir una opinión breve
Los sustantivos se traducen de manera natural, pero los verbos imperativos del inglés requieren cuidado al pasarlos al coreano. Por ejemplo, "find" puede convertirse en "chatda", "chatgi" o "chajeum", pero según el contexto puede sonar poco natural
También está el problema del plural. El inglés distingue claramente entre singular y plural, pero el coreano no. Si se marca el plural de forma explícita, como en "palabras", muchas veces hasta puede sonar poco natural
Si se toman en cuenta las diferencias estructurales entre el inglés y el coreano, en vez de hacer un simple reemplazo de palabras clave, creo que el proyecto podría volverse mucho más potente
Cuando estudiaba ingeniería en la universidad, sentía que el hecho de que los lenguajes de programación estuvieran basados en inglés era una gran ventaja para quienes hablaban inglés
Mis amigos estudiantes internacionales, como no estaban familiarizados con el inglés, tenían más dificultades para aprender. Por eso el chiste de que programar debería contar como crédito de idioma extranjero me parecía bastante gracioso
Lo realmente difícil es aprender programación en sí. Eso sí, que los temas avanzados o la documentación estén solo en inglés sí es una gran barrera para quienes aprenden ESL
No sé coreano, pero gracias a este hilo aprendí muchas ideas lingüísticas
El diseño fonológico del hangul (enlace),
las características del plural en coreano (enlace),
el problema de compresión de tokens entre los tokenizers de LLM y el coreano (enlace),
y el ritmo del teclado hangul, donde consonantes y vocales están separadas según la posición de las manos (enlace), me parecieron especialmente interesantes
Creo que este tipo de intento puede provocar fragmentación lingüística
Si cada quien hace lenguajes de programación en su propio idioma, colaborar o contratar se volverá más difícil, y compartir tecnología también sería complicado
Personalmente, creo que si todo el mundo usara un solo idioma habría menos guerras y malentendidos. Claro, habría menos diversidad cultural, pero la eficiencia de la comunicación sería mayor
Me parece interesante el enfoque de simplemente traducir palabras clave
Como en el código de ejemplo:
Escrito así, el código podría volverse más conciso. Aunque se perdería la ventaja de distinguir mayúsculas y minúsculas
He oído que, sin importar la densidad del idioma, la velocidad de procesamiento de la información es parecida
Entrada de blog relacionada
Pero no tuvo éxito. La mayoría de los entornos informáticos ya exigen entrada en caracteres latinos, y memorizar unas pocas palabras clave no es difícil
Incluso en la era de los LLM, la mayor parte de los datos de entrenamiento siguen siendo código en inglés, así que es probable que el código en inglés siga siendo más eficiente
Es un gran proyecto. Estudié en una universidad coreana hace como 190 años (!) y ahora solo mantengo un coreano básico, pero al ver el código de ejemplo siento que estoy aprendiendo palabras nuevas
Este proyecto realmente me encanta. Al ver las muestras de código y no entender nada, pude empatizar con cómo debieron sentirse los desarrolladores no angloparlantes cuando vieron por primera vez un lenguaje basado en inglés
Lisp sigue siendo un paraíso de paréntesis de todos modos :-)
Me recuerda a Easy Programming Language de China
Enlace al wiki de EPL
Hace unos 15 años, muchos niños en China aprendieron programación por primera vez con este lenguaje