Skip to content

Instantly share code, notes, and snippets.

@colltoaction
Created April 8, 2021 18:52
Show Gist options
  • Save colltoaction/adb37863ad03eb6dd48853207f487999 to your computer and use it in GitHub Desktop.
Save colltoaction/adb37863ad03eb6dd48853207f487999 to your computer and use it in GitHub Desktop.
yaml.ar lightning talk

Intro

hace diez años más o menos manijeo con la programación, y en ese tiempo siempre me interesó tanto la parte práctica de la ingeniería de software como la parte teórica de la ciencia de la computación.

en este último año encerrado en cuarentena aprendí mucho sobre programación funcional incluyendo cálculo lambda, teoría de categorías y categorías aplicadas a la programación. al mismo tiempo, trabajando en Medallia hice el paralelismo de la teoría con mi propia práctica.

mi hipótesis es que yaml va a dar un salto de lenguaje de configuración a lenguaje de programación. esto se va a dar principalmente por:

  • su ubicuidad
  • lo fácil de interpretar como código su grafo de representación
  • lo fácil que los programadores manipulan su flujo de presentación

hasta ahora todas las pruebas de concepto fueron muy buenas.

lisp

yo veo yaml y veo el mejor vehículo posible para transmitir lisp. las listas tienen el formato más legible que vi:

- lista
- de
- cuatro
- elementos
[o, también, inline]
- o
- - a
  - ni
  - [ da ]
  - da

es decir que todo código lisp, al estar basado en S-expressions, tiene una representación en yaml de dichas expresiones. no es casualidad que estos ejemplos sean muy legibles. el modelo de presentación de yaml fue pensado para ser legible por humanos.

es trivial escribir un intérprete de yaml-lisp en muchos lenguajes en que existen bibliotecas open source para ambos. hice una implementación en rust usando serde y risp.

cálculo lambda

ya vimos que yaml es legible y ejecutable como código lisp. pasará lo mismo con el cálculo lambda?

esta rama de la matemática / computación nos da una herramienta más teórica que un programa escrito en un lenguaje de programación de la industria. en mi clase de programación funcional emulamos el cálculo lambda en clojure, pero encuentro yaml mucho más legible:

user=>
- println
- "What is this:"
- - +
  - 1
  - 2

What is this: 3

entonces implementé cosas en una sintaxis inventada, y validaba si me parecía legible. fue imposible no ver una semilla del lenguaje haskell al empezar a encontrar papers y hacer mapeos desde la sintaxis de yaml. en este punto me topé con de bruijn que todavía no sé bien cómo encaja.

Conclusiones

creo que lo más destacable es la efectividad del information model. el yaml representation graph nos da un grafo acíclico dirigido con la información necesaria para generar, por ejemplo, código. el presentation stream nos permite a los humanos comprender y manipular yaml.

como me parece importante entender más de yaml como herramienta de programación compartí yaml.ar en el grupo de software libre abierto de la fiuba y ahora las invito a todas y a todos a que se sumen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment