Traducción al español de “Why Cardano chose Haskell — and why you should care”
Publicado en la cuenta Medium de la Fundación Cardano el 16 de Diciembre de 2020
(Escrito por @ElliotHill de la Fundación Cardano)
Si has estado involucrado en el ecosistema Cardano durante un tiempo, habrás aprendido que nuestra blockchain se construye usando un lenguaje de programación funcional llamado ‘Haskell’.
Haskell es la base de Plutus, el lenguaje de programación de contratos inteligentes de Cardano, y también impulsa Marlowe, nuestro lenguaje de dominio específico para contratos financieros inteligentes, sobre los cuales puedes aprender más en nuestro artículo anterior que introduce las aplicaciones descentralizadas.
Sin embargo, Haskell no es uno de los lenguajes de programación más conocidos. Tampoco es muy popular entre aquellos que recién comienzan su camino como desarrolladores. De hecho, el ‘Índice de popularidad de los lenguajes de programación’ clasifica a Haskell como el 27º lenguaje más buscado en Google a partir de Noviembre de 2020, con Python y Java ocupando los primeros puestos.
Así que, con esto en mente, muchos se preguntarán por qué Cardano fue implementado en Haskell en primer lugar. La razón es que Haskell, particularmente en conjunción con métodos formales, está bien adaptado para escribir código que es robusto y correcto. Pero para entender por qué esto es importante para Cardano, primero tenemos que explorar qué es Haskell y examinar su papel como lenguaje de programación funcional.
¿Qué es Haskell?
Nombrado en honor al fallecido matemático estadounidense Haskell Curry, Haskell tiene sus raíces tanto en el mundo académico como en el estudio de la lógica, y también en anteriores iteraciones de lenguajes de programación funcional, como Miranda.
Estas influencias tempranas, que provocaron un interés más amplio en los lenguajes de programación funcional en general, llevaron a que Haskell se definiera formalmente en 1990. Sin embargo, varios investigadores, como el profesor Phillip Wadler, ya habían comenzado a trabajar en componentes proto-Haskell, como las clases de tipos, ya en 1987, antes del lanzamiento de la versión 1.0 de Haskell.
Los lenguajes de programación funcional hacen hincapié en el uso de funciones “puras” siempre que sea posible: funciones que siempre dan el mismo resultado para la misma entrada. Aunque eso es algo que se da por sentado para los matemáticos, los programadores de ordenadores están acostumbrados a la idea de que las “funciones” de un programa de ordenador también dependen del estado interno, de los datos de un disco o de la hora actual. Separando esos “efectos secundarios” de la lógica principal siempre que sea posible, los programadores de Haskell pueden hacer mucho más fácil el razonamiento de su código (“razonamiento ecuacional”). Esto no sólo facilita la escritura de un código correcto, sino que también es invaluable para probar, o incluso comprobar su corrección.
Evolucionando con el tiempo, Haskell ha pasado por varias iteraciones, como Haskell 98 y Haskell 2010, con miembros dedicados de la comunidad añadiendo extensiones, clases de tipos y construyendo compiladores Haskell para apoyar el ecosistema. Ahora existe un vasto cuerpo de trabajo y amplias bibliotecas y herramientas para que los desarrolladores de Haskell las utilicen.
Como uno de los lenguajes de programación funcional más puros, se ha informado que Haskell ha llevado a muchos desarrolladores a transformar la forma en que abordan la programación en general y ha ayudado a mejorar sus habilidades generales como programadores.
De acuerdo con Aaron Contorer, CEO de la compañía de programación de Haskell FP Complete, esto ha llevado a que Haskell sea votado como el lenguaje más recomendado para aprender, incluso si los desarrolladores no tienen una necesidad específica de él, por lo que animamos a todos los desarrolladores a explorar lo que Haskell tiene para ofrecer.
¿Por qué Cardano se implementó en Haskell?
Hemos aprendido que Haskell es un lenguaje de programación funcional, que es muy adecuado para código de alta seguridad y programas que requieren un alto grado de verificación formal.
Como hemos discutido anteriormente, esto permite a los programadores tener un mayor grado de certeza de que el código que han implementado es correcto. Para el futuro que prevemos para Cardano - a saber, convertirse en el próximo sistema operativo social y financiero mundial - la seguridad y la fiabilidad son esenciales.
Con la llegada de las aplicaciones descentralizadas, la “tokenización” y los contratos inteligentes en Cardano, esperamos que surja todo un ecosistema de servicios financieros descentralizados. Esto traerá miles de millones de dólares de valor o más en cadena, bloqueados a través de contratos inteligentes, o gestionados a través de organizaciones autónomas descentralizadas (DAOs).
Sin embargo, la actual infraestructura de contratos inteligentes no ha logrado asegurar este valor en cadena, principalmente implementando nuevos lenguajes de programación diseñados a medida, cada uno de los cuales requiere sus propias cadenas de herramientas, bibliotecas y recursos educativos, lo que hace difícil razonar formalmente sobre el comportamiento de los contratos inteligentes y las aplicaciones construidas sobre ellos.
Sabemos por experiencia que las vulnerabilidades resultantes, los fallos de código o los exploits de contratos inteligentes en otras blockchains y lenguajes de contratos inteligentes han tenido consecuencias desastrosas y han provocado considerables pérdidas financieras, a menudo de miles de millones de dólares. Esto ha llevado a algunos a preguntarse si los contratos inteligentes serán alguna vez viables desde el punto de vista del riesgo para los usuarios institucionales.
Aquí es donde Haskell tiene su importancia. A través de Haskell, los contratos inteligentes de Plutus y Marlowe de Cardano pueden ser cuidadosamente implementados en un código preciso y formalmente verificado que ofrece un alto nivel de seguridad desde el principio.
Plutus y Marlowe se ofrecen como un conjunto de bibliotecas para Haskell, aprovechando la documentación existente de Haskell, los juegos de herramientas y una comunidad altamente profesional para proporcionar una base a partir de la cual construir contratos inteligentes seguros y de calidad empresarial.
Tanto el código fuera de cadena como en cadena de Cardano está escrito en Haskell, lo que permite a Cardano heredar el rico cuerpo de investigación que ya existe dentro del ecosistema de Haskell, en lugar de reinventar la rueda con un lenguaje de contratos inteligentes totalmente nuevo y no probado.
Para proporcionar apoyo a la comunidad Haskell en general, los socios de ingeniería de Cardano, IOHK, han donado recientemente a la Fundación Haskell, una iniciativa que apoya el desarrollo y el crecimiento de Haskell. Puede obtener más información sobre la Fundación Haskell en el discurso de Simon Peyton Jones en el evento virtual Haskell eXchange 2020 aquí.
¿Dónde puedo aprender más sobre Haskell?
Cardano, y por extensión las plataformas Plutus y Marlowe, son de código abierto y están disponibles para su exploración. Puede descubrir más de nuestra base de código a través de Cardano Docs, o visitando directamente el Cardano GitHub.
Si está buscando la mejor guía de Haskell y no está seguro de por dónde empezar, le recomendamos que consulte el libro o la página web 'Learn You a Haskell for Great Good’ de Miran Lipovača. Aprender Haskell es fácil con esta guía ilustrada, una de las formas más atractivas de aprender este fascinante lenguaje de programación.
Otros recursos para los desarrolladores de Haskell incluyen el Glasgow Haskell Compiler (GHC), dirigido por Simon Peyton Jones y Simon Marlow, un compilador de código nativo de código abierto para Haskell.
Si desea unirse a la vibrante comunidad de desarrolladores de Haskell, también le recomendamos que consulte el Haskell Reddit. Si estás interesado en desarrollar en Cardano, ¿por qué no te unes a nuestra lista de espera del portal para desarrolladores? Aquí tendrás acceso a las últimas noticias para desarrolladores del ecosistema de Cardano.
Diviértete y sigue construyendo!