Hice un lenguaje de programación chileno
Wena cabros, hace un tiempo venía con ganas de entender cómo funcionan los lenguajes de programación por dentro, no solo usarlos, sino construir uno desde cero. Así por puro webeo hice Piola, un lenguaje de programación chileno, lo cree en mi tiempo libre. Es un lenguaje interpretado, ya que no tenia mucho sentido hacerlo compilado.
https://cuervolu.github.io/piola/
La idea en cierto modo era simple: ¿se puede diseñar un lenguaje que se sienta natural para alguien que creció hablando chileno? No una traducción literal del inglés, sino palabras que ya usamos y que además tienen sentido en un contexto de programación. Por ejemplo, `wea` para variables (porque una variable es literalmente "un algo")
Algunas palabras pueden sonar raro al principio, lo sé. Pero la idea no fue meter chilenismos al azar, cada keyword se eligió porque su significado en chileno mapea bien al concepto técnico que representa. Dicho eso, estoy abierto a que me digan si algo suena forzado o si se les ocurre algo mejor. Intente pedirle ayuda a la IA en su momento para que me diera mas "chilenismos" pero la wea charcha me daba cualquier cosa que nunca en mi vida habia escuchado hablar proveniente de un chileno.
Está implementado en Rust y el pipeline completo funciona: lexer, parser, AST e intérprete tree-walking. Es claramente un toy language por ahora, pero corre, tiene REPL, se instala con un script, y tiene documentación.
Esta es la versión 1 así que cualquier sugerencia es bienvenida, errores, keywords que no convencen, features que echarían de menos, lo que sea. También si se les ocurren palabras en chileno que queden mejor para algún concepto, los escucho.
Estoy estudiando más sobre compiladores y lenguajes compilados de verdad para eventualmente hacer algo más serio que un toy language. Piola fue el primer paso para entender cómo funciona todo por debajo. Es todo un mundo pero hasta ahora he aprendido bastante, especialmente sobre el diseño de los lenguajes, más que la programación en si.
El repo está en GitHub si quieren revisar el código o contribuir: https://github.com/cuervolu/piola
Un ejemplo de como se ve el lenguaje:
// Simulador oficial de fin de mes chileno
duro SUELDO = 500000
duro PRECIO_MICRO = 800
wea dias_para_el_15 = 8
wea plata_en_el_bolsillo = 3500
wea deudas = ["arriendo", "cuenta de la luz", "el Rodrigo que nunca me paga"]
altiro("=== FIN DE MES ===")
altiro("Días para el 15: " + dias_para_el_15)
altiro("Plata disponible: $" + plata_en_el_bolsillo)
wea viajes_posibles = plata_en_el_bolsillo / PRECIO_MICRO
cachai (viajes_posibles < dias_para_el_15 * 2) {
altiro("Mala semana. Hay que ir a pata.")
} si no {
altiro("Zafai, por mientras.")
}
altiro("Deudas pendientes:")
para (deuda en deudas) {
altiro(" - " + deuda)
}
ojo {
wea ahorro = plata_en_el_bolsillo / 0
} cago(error) {
altiro(error)
altiro("Exactamente.")
}