Hablemos de GLEAM

Chip, Violeta, Hexa, and C discuss Gleam, a statically typed programming language that runs on the BEAM virtual machine and compiles to Erlang, JavaScript, and WebAssembly. The language draws from Rust, OCaml, Elm, and Erlang, and has evolved from version 0.1 in 2019 to 1.11 in 2024, with features like pipe operators and type inference.
Chapters
Hemos estado hablando de empresas en los últimos vídeos. Ya toca un vídeo de lenguajes de programación, ¿no?
Chip, no hace mucho tuvimos el vídeo de Lisp.
Uno de los grandes entre los lenguajes de programación.
¿Uno funcional? No, gracias. Yo me refería a un lenguaje de verdad.
¿Algo como Rust o como Go?
Esos lenguajes ya los vimos.
Pero estaría bien revisarlos de nuevo, con mucho más código.
Me gusta más el enfoque de la historia.
A mí me gustaría que el lenguaje fuese fresco.
¿Con una sintaxis que tenga el tipo result como en Rust?
¿O con el operador en cascada como en Dart?
¿No habrás querido decir el operador pipe como en Elixir?
¿Qué tal si hablamos de Grim?
Ese no lo conozco.
Creo que es un lenguaje para transpilar a JavaScript.
No solo eso, es mucho más.
Creo que ya tenemos tema para hoy. Me gusta la elección.
Espero que a nuestros seguidores también. No sé por qué, pero me da que a mí no me gustará mucho.
Antes de continuar, si nos dais un buen me gusta y os suscribís al canal, nos ayudaréis mucho a crecer y a seguir haciendo este contenido que tanto disfrutamos. Y además, si os queréis hacer miembros del canal, ya sea como historiador o cronista, recibiréis contenido exclusivo, como por ejemplo un vídeo al mes especial. Muchas gracias a quien se anime y por supuesto también a los miembros recién llegados. Y ahora sí, dale Hexa.
Grimm y la potencia de los tipos.
¿Cómo? ¿Que es de tipado estático?
Inferido, Chip. Es de tipado estático pero con inferencia de tipos.
Totalmente. Si el lenguaje puede hacerse una idea del tipo de dato que estás usando, no hace falta indicarlo.
Parece una tendencia. Hemos hablado de un lenguaje similar hace poco. Ese lenguaje... ¿cómo era?
Kotlin, Chip. Era Kotlin. Era un vídeo para nuestros miembros.
Cada vez hay más lenguajes de tipado estático con tipos de datos inferidos. Es normal, el código es más fácil de escribir.
¡Discrepo, señoría! El código es más fácil de escribir si no hay que especificar tipos para todo.
Vale, me refería a que es más fácil revisar el contenido de una estructura de datos, un objeto o una variable en concreto y el compilador te avisa en caso de hacer un mal uso.
¡Exacto! Luis Pilfold, el creador de Glimpse, estuvo un tiempo programando en OCaml y cuando volvió a su trabajo con Erlang y Elixir Comenzó a echar de menos los tipos.
¿Por qué los echarías de menos?
Chip, cuando te acostumbras a que tu editor de texto te ayude a identificar cada variable con su tipo y el contenido, ¡eso es magia!
Totalmente. Menos carga cognitiva.
El caso es que Vim, tal y como vimos en el vídeo de Erlang o incluso en el vídeo de Elixir, es una máquina virtual y, como pasa con muchas máquinas virtuales de lenguajes populares, Mucha gente termina haciendo su propio lenguaje.
Beam no era menos que JVM o CLR y disponía de un ecosistema con muchos lenguajes de programación.
Aunque solo brillaban dos: Erlang y Elixir.
Ah, brillan Beam, ya lo pillo.
Luis tuvo la idea de hacer un lenguaje en 2016 con influencias de Rust, OCaml, Elm, Erlang, Elixir y Alpaca.
¿Alpaca?
Un lenguaje sobre Beam. De hecho, Luis se decidió a hacer su lenguaje porque le gustó cómo estaba implementado Alpaca.
Y si tanto le gustó Alpaca, ¿por qué no usar Alpaca?
Pues si nos fijamos en las preguntas frecuentes de la página de Glimpse y su comparación con Alpaca, puedes ver entre las diferencias que Alpaca tiene una sintaxis más afín a los lenguajes ML, mientras que Glimpse es más afín a los lenguajes tipo C.
Best tip: un lenguaje con pretensión funcional pero aspecto de la familia del lenguaje C.
No es que esa familia me haga mucha gracia, la verdad, pero se agradece el esfuerzo por parecer menos funcional.
Tal y como quedó dicho en un capítulo muy anterior, anterior a nosotros mismos, la raíz de la mayoría de lenguajes está en el lenguaje C, e incluso Rust, con su influencia funcional al ser un lenguaje de sistemas, tiene un sabor a C.
Pues además del sabor a C hay otras diferencias, y entre ellas que Glim, aunque inicialmente se pensó para trabajar con Erlang, generando un proyecto muy elegante en Erlang que después se compilaba para su uso, ahora permite transpilar a JavaScript.
¿JavaScript? Es un buen giro, pero entonces, ¿obligas a tener instalado Erlang a todos los programadores de Glim que transpilan a JavaScript?
No, porque el transpilador de Glim está escrito en Rust. Transpilando Glim. Desde muy temprano, el transpilador de Glim fue implementado en Rust, aprovechando las facilidades de este lenguaje para el análisis sintáctico. Semántico y la presentación de errores en el código muy fáciles de leer para el programador.
Aunque según tengo entendido, una de las facilidades y potencias de Erlang y Elixir es precisamente disponer del compilador en la máquina virtual, en Vim. Esto facilita realizar evaluaciones de código en caliente.
Pues me temo que de momento esto no sería posible.
¿De momento? Es decir, si tenemos presente que en WebAssembly Podemos cargar código compilado con Rust. Potencialmente usando solo JavaScript podríamos cambiar el código en caliente de una aplicación en el navegador.
En Erlang el código hecho con lenguajes de sistema como C, C++, Zig o Rust también puede ser incrustado, por lo que es cuestión de tiempo que alguien termine aprovechando esta ventaja y cargue en caliente una modificación del código Glimpse.
Pero estamos hablando de futuros que no son. Ya veo que os fascina este lenguaje, pero no veo cómo puede superar o siquiera igualar a un lenguaje como Elixir. Ese sí que tiene mi respeto.
Porque se parece a Ruby, ¿no?
Tengo mis motivos.
Pues sigamos la línea histórica de Gleam, porque te sorprenderás de que esos futuros que dices que no son ya pasaron. Hello Gleam. Así abría el 15 de abril de 2019 la primera noticia Luis en la página de Gleam. Hola Gleam. Lanzando su versión 0.1, y hay que decir que un vistazo al código expuesto es suficiente para ver cómo ha ido evolucionando.
Esos símbolos, esos pipes, no están actualmente.
Era influencia directa de Alpaca. No obstante, ahí puedes ver las llaves.
Desde 2019 y hasta mayo de 2021 se fueron sucediendo una serie de lanzamientos y justo en la versión 0.15 Luis hizo el anuncio: se dedica a Glim a tiempo completo.
¿Cómo? ¿Heredó dinero de algún familiar?
Los patrocinios. Consiguió suficientes patrocinadores para mantener su economía. Muchos de estos patrocinios los recibe a través de GitHub, por si estás interesado.
¡Exacto! Y gracias a esto, la siguiente versión, la 0.16, fue la primera versión que transpilaba tanto a Erlang como a JavaScript.
Pues vaya follón, no podría mantener el código elegante en ambas plataformas.
¡En eso te equivocas! Te voy a mostrar código.
¡Cómo no!
Si instalamos Grimm en nuestros computadores, que podemos aprovechar que está disponible tanto para Linux como para Mac y Windows, crear un proyecto es muy simple usando grimm new. Podemos ver la plantilla de ejemplo que genera, con código en Glimpse que transpira en Erlang, e incluso si cambiamos el target a JavaScript, vemos el código que genera para JavaScript también.
Nada incomprensible, todo bastante bien escrito y con sus espacios y todo.
Este agregado fue un cambio muy significativo, como Hailey mencionó en la charla de Code Vim en 2024, porque había muchos a los que Glimpse les gustaba pero no querían tener que lidiar con Erlang ni con Vim, al menos inicialmente.
Glimpse tenía un mucho trabajo por delante. En las siguientes versiones fueron mejorando el sistema, pero también agregaron funcionalidades esenciales para un lenguaje de hoy en día.
¿Un sistema de scripting?
Eso no es importante, Chip. Lo importante es el ecosistema.
Ecosistema y comunidad. Una de las partes importantes para que un lenguaje de programación sea atractivo para un programador es que tenga un gran ecosistema y una gran comunidad abierta y en movimiento detrás.
Tal y como Miguel nos dijo en Codeadores acerca de Julia: Sí, Julia, no empecemos. Llegó a Julia por una necesidad y se quedó por su comunidad abierta y colaborativa.
Totalmente. Por eso la comunidad fue llevada a Discord, que es donde se mueven las comunidades más modernas hoy en día.
Yo la veía bien en IRC.
¿IRC? ¿Eso qué es?
¿Ves cómo está mejor en Discord?
Sobre el ecosistema, supongo que la gran potencia está en su herramienta con el mismo nombre del lenguaje.
¡Exacto! Esta herramienta tiene dentro la capacidad de crear nuevos proyectos, compilar para Erlang o JavaScript, iniciar el proceso de pruebas, formatear el código y un largo etcétera.
Pero no está todo ahí. Una gran parte del ecosistema son los paquetes, las dependencias, el código que la comunidad proporciona y que otros pueden utilizar libremente para construir su software, bibliotecas para acceso a bases de datos o frameworks para facilitar la creación de aplicaciones web.
¿Qué utilizaron para publicar sus dependencias? Porque transpilando para JavaScript y Erlang no sería una elección fácil.
Glim siempre estuvo más ligado a la comunidad de Erlang y Elixir, por lo que eligieron la plataforma Hex para publicar sus dependencias. De hecho, ya se marca cuándo un paquete es para Glim.
Además, en abril de 2023 se publicó una página donde se pueden ver todos los paquetes publicados en Hex.
Pero entonces, ¿los paquetes están solo en Hex?
Hexo.
Según el listado hay un botón que dice dónde se encuentra la dependencia, apuntando tanto al repositorio donde se encuentra el código como a Hex. Y de momento sí, todos los paquetes están solo en Hex.
El trabajo se intensificó y el futuro que Chip no creía posible llegó en la versión 0.20, el 23 de febrero de 2022. En la caja de descripción dejamos un enlace para que podáis jugar con Glim en el navegador web compilando en WebAssembly.
Vaya, pues sí que han hecho cosas.
Pues espera, que estamos aún en 2022. En ese mismo lanzamiento, Luis consiguió que GitHub le hiciera caso y agregase el resaltado de sintaxis para Glim.
Y no olvides el Glim Language Server.
¿En nuestro editor de código favorito ya podemos usar las ayudas para escribir en Glim?
¡Totalmente!
No hay que olvidar que Luis ha ido haciendo encuestas a la comunidad En la primera, en 2022, la mayoría de programadores eran de JavaScript. Durante la charla de 2024 dijo que la mayoría de programadores de la encuesta de 2023 vienen principalmente de TypeScript.
Poder transpilar a JavaScript tiene que ser ideal para esta comunidad de programadores que necesita tener código en estas plataformas.
Además de que a partir de la versión 0.22 en la transpilación a JavaScript se pueden agregar declaraciones de TypeScript. Produciendo los famosos ficheros .d.ts.
Y hay mucho más. Desde que Grin se puede utilizar para backend y frontend, la disponibilidad de un buen servidor web se hizo una necesidad en la comunidad, y en septiembre de 2023 llegó Wisp.
Me da que se parece bastante a Go.
Tienes espíritu, aunque Luis dijo que se basó principalmente en Sinatra de Ruby y Flask de Python para su creación, y dice que es más rápido que Go.
Ni hablar, será rápido, pero no más que Go con su implementación de HTTP.
Y con esto llegamos a Glean versión 1, lanzada el 4 de marzo de 2024.
Hace relativamente poco tiempo.
Un gran recorrido, en unos 5 años ha conseguido llegar a su versión estable.
Pero, ¿es realmente estable?
¿A qué te refieres?
¿A que seguramente ha habido cambios? Sintaxis desfasada y quien escribió código en la versión 1.0 tiene que cambiarlo.
Pues no, no es el caso. Se ha mantenido estable en las siguientes versiones lanzadas hasta la fecha.
Actualmente la versión 1.11.
¿Seguro que no se ha roto nada?
¡Seguro! Los principales cambios han sido para mejorar las utilidades, agregar funcionalidades y mejorar los mensajes de error del transpilador.
¿Y su rendimiento? Han implementado transpilado incremental, caché, invalidación de caché...
¡Lo pillamos, Hexa! Han mejorado el rendimiento.
¡Y bastante! En la versión 1.11 el código transpilado en JavaScript ejecuta un 30% más rápido.
Pero después de ver las noticias de la página web parece que no todo son buenas noticias. El soporte del open source. Hay muchos proyectos que consiguen principalmente por donaciones sobrevivir y continuar desarrollando software libre.
Como el caso de WinRAR. Eugene, estamos contigo.
Aunque no le hayas pagado ninguna licencia de uso...
El sentimiento es lo que cuenta, no el dinero.
En fin, Luis comenzó a dedicarse 100% al proyecto. Su fuente de ingresos proviene de Gleam, pero es difícil mantener cierto nivel de ingresos.
Lo entiendo perfectamente, mira lo que nos ha costado a nosotros llegar a los miembros que tenemos.
Sí, en ese punto es similar, aunque aprovechamos para hacer un llamamiento formal: si quieres participar en el soporte de Gleam puedes ir al enlace de la descripción para patrocinar el proyecto. Tan simple como una donación puntual o una periódica. Unos $5 no es mucho, ¿no?
Depende para qué. Si es para comprar un PC, es barato. Para un café, yo lo veo caro.
Dicho queda. Buen mensaje, Violeta. E incluso podemos aprovechar para informar de que Altenwald también publicará un libro sobre Glimm, aunque no nos han dicho cuándo, pero han abierto la posibilidad de suscribirse para recibir noticias acerca de este y otros libros. Y darán fondos de la venta al proyecto. Conclusiones. Pues ya estaría.
Pero no hemos puesto ejemplos de código.
Sí que has ido enseñando, es más, me ha parecido llamativo el lenguaje.
¡No me digas! ¿Lo vas a probar?
Todo se andará. Además, he visto que hay empresas usándolo en producción. Es un buen momento para ir acumulando experiencia y echar algunos currículums, ¿no, Hexa? ¿No te apetecería trabajar en otro sitio?
Estoy bien aquí, pero gracias por por el interés.
Bueno, se intentó. Ahora es el momento, ya podéis ir a la caja de comentarios y probar si sigue funcionando, que con YouTube nunca se sabe. Empiezo yo. ¿Habéis probado Glimpse?
Siendo programadores de JavaScript o TypeScript, ¿no os sentís tentados a utilizar Glimpse?
¿Queréis que hagamos una prueba de rendimiento entre Glimpse y otras opciones?
Tú en tu línea.
¿No os apetece acercaros al mundo de BIM? Déjanos tu comentario.
Pues ala, otro lenguaje funcional a la lista de capítulos. Creo que podríamos hablar un poco más de Flutter y Dart. Lo he estado usando y sinceramente es una muy buena opción.
¿Has estado usando Flutter? ¿Qué has hecho?
Aún no puedo contarlo, pero ve y pregunta a estos, que Hexay Pro se traen también algo entre manos y como los dejemos solos son capaces de hacer un curso a la antigua usanza y en bajo nivel.
No están haciendo eso.
¿Cómo? ¿Tú sabes algo? ¿Por qué a mí nadie me cuenta nada?
Continuará.
More from Manuel

Historia de los Lenguajes de Programación: años 1960-1969 #basic #apl #simula #lisp #logo

¿Compilador o intérprete? La historia de una rivalidad que comenzó en los años 40








