🇪🇸 Marlowe 2: lenguajes de dominio específico

:es: Traducción al español de “Marlowe 2: domain-specific languages”

Publicado en el canal de Youtube de Simon Thompson el 15 de Abril de 2020

Enlace a la versión doblada al español


En este video quiero hablar de lenguajes de dominio específico y para comenzar, vamos a ver un poco de historia de computación, esta es una de las primeras computadoras utilizadas en un contexto comercial, se llamaba Leo, construida por científicos e ingenieros de la Universidad de Cambridge para la compañía bancaria Lions, esto estaba en uso alrededor de 1950 en el Reino Unido y se usó para automatizar todo tipo de aspectos de los procesos de esta empresa, es notable que estuviera en acción en ese momento, pero la gente que programó esto tuvo que programarla en el lenguaje de la máquina, las personas que la programaron no eran economistas, banqueros o expertos en transporte, había personas que tenían que entender los intrincados detalles de la computación de la máquina. Y las cosas han continuado así, moviéndose a los 60 fue la época en que los primeros lenguajes de programación de alto nivel como Fortran y Algol y COBOL fueron desarrollados, pero incluso entonces los lenguajes eran lenguajes de máquina a un nivel más alto. Pero aún así fue la máquina la que estaba siendo programada en lugar de escribir los programas a nivel de la cosa que estaba siendo modelada. Y hemos visto una cosa similar en el mundo blockchain, el lenguaje de programación de Bitcoin, Solidity, etc, nos dice mucho sobre la tecnología subyacente, sobre la máquina subyacente si quieres. Tal vez no tan amigable, definitivamente no tan amigable para el usuario como podría ser, así que a medida que los lenguajes de programación se han desarrollado, estos lenguajes de programación de propósito general también se han suplementado con lo que la gente llama lenguajes de dominio específico y la idea aquí es que el lenguaje debería estar más cerca del lenguaje utilizado en el dominio donde se aplica, así que el lenguaje está cerca de lenguaje ¿ven aquí?, personas que están hablando de contratos financieros por ejemplo.

Y hay dos buenas razones para hacer eso, como dije, principalmente significa que podemos escribir programas en el idioma del usuario, no en el de la máquina, en términos generales. Así que pensando sobre lenguajes de dominio específico para contratos financieros lo que queremos hacer es pensar en términos de pagos, queremos pensar en términos de los depósitos que se hacen, tal vez las elecciones que se hacen como parte del contrato, en lugar de pensar en transacciones en la blockchain por ejemplo, así que queremos intentar expresar esas cosas a ese nivel superior.

Así que eso es lo que estamos buscando en el lenguaje que estamos diseñando, pero hay otras ventajas, no es simplemente que hablamos de alto nivel, simplemente por la forma en que diseñamos el lenguaje algunos errores son imposibles porque no podemos, por ejemplo, pensar en hacer algo que no tiene nada que ver con algo financiero, no podemos porque hemos restringido el lenguaje, hemos restringido lo que la gente puede escribir, eso es útil, podemos descartar algunos errores. Pero también podemos entonces tomar los programas y podemos analizarlos en una forma mucho más poderosa, de una forma mucho más precisa de lo que podríamos para un contrato inteligente general de blockchain, lenguaje de programación blockchain. Porque tenemos un número pequeño de construcciones entendemos exactamente lo que deberían hacer y podemos hacer análisis mucho más fácilmente, porque sabemos, por ejemplo, que un contrato financiero, como está modelado en nuestro lenguaje, dejará de estar activo después de una cantidad de tiempo, no se llevará a cabo para siempre. Así que podemos ayudar a la gente, podemos darles más información útil acerca de lo que escriben que si lo hubieran escrito en un lenguaje general. También podemos diseñar herramientas de programación que ayudan y esas herramientas pueden diseñarse para que se ajusten al DSL directamente. Podemos hacer la programación más fácil, más precisa y más agradable.

Es un lenguaje, pero podemos conseguir lo mejor de ambos mundos a veces incrustándolo en un lenguaje de programación completo, para que podamos usar, esto es lo que hacemos con Marlowe, lo incrustamos en Haskell, así que podemos utilizar selectivamente características de uso del lenguaje de programación anfitrión, porque es un lenguaje en el que podemos ejecutar programas y demás, pero también podemos hacer otras cosas con ellos, podemos simplificarlo podemos decir "oh ¿podemos simplificar este contrato con este otro contrato?, ¿tienen estos dos contratos el mismo comportamiento?, podemos preguntar por ejemplo.

Y también podemos pensar en vez de ejecutar un contrato, podemos pensar en hacer una valoración de un contrato, así que porque tenemos un lenguaje aquí, estábamos expresando nuestros contratos en esta manera de alto nivel, podemos hacer otras cosas además de simplemente ejecutarlos. Así que espero que esto les haya dado un sentido del valor de escribir un DSL, en general, y tal vez te ayude a entender por qué queremos escribir este DSL para contratos financieros ejecutándolos en la blockchain Cardano. Ok lo que haremos a continuación es echar un vistazo a cómo se ven los contratos financieros y después de eso pensaremos en cómo necesitan ser adaptados para funcionar en un contexto blockchain.