What we're about

Scala es un lenguaje de programación orientado a objetos y, a la vez, un lenguaje funcional. La combinación de estos dos paradigmas hace especialmente atractiva la programación con Scala, y lo convierte en un lenguaje idóneo para la programación paralela y distribuida. Si además estás interesado en los lenguajes específicos de dominio (DSLs), encontrarás en Scala un candidato ideal para implementar tu DSL de manera embebida. Además, ¡Scala ejecuta sobre la máquina virtual de Java! Este grupo se ha creado con el propósito de compartir experiencias sobre Scala y las distintas tecnologías que forman parte de su ecosistema: frameworks de desarrollo Web como Play o Lift, la infraestructura de middleware basada en actores Akka, frameworks de prueba BDD como Scalatest o Specs, etc. Si te gusta programar y estás interesado en las técnicas más novedosas como la type-level computation, macros para lenguajes estáticamente tipados, etc., te gustará Scala. Y si estás interesado en las últimas tecnologías para el desarrollo de aplicaciones empresariales (programación basada en actores, sistemas orientados a eventos, etc.), no lo dudes, Scala te va a encantar. Únete a nuestro grupo, aprende y comparte con nosotros tus experiencias con Scala.

Upcoming events (1)

Tagless-final o la abstracción sin culpa (I/III)

Online event

Este es el primero de una serie de eventos que dedicaremos a la aproximación tagless-final, y al diseño de DSLs, en general. Comenzamos dando respuesta a preguntas como: ¿es el tagless-final algo más que programar con type classes?, en particular, ¿es lo mismo que lo que llaman MTL? ¿Y qué gano en cualquier caso con tanta abstracción?, ¿no me estaré perdiendo algo ...? Por ejemplo, ¿puedes garantizarme que mi código va a ser igual de eficiente?, ¿que va a ser igualmente usable y mantenible? ¿que si se me ocurre utilizar esto, cuando me vaya de la empresa no dirán mis compañeros: "tanta paz lleve, como descanso deja"? ¿Es posible, en definitiva, conseguir la abstracción sin culpa? Ilustraremos las respuestas a estas preguntas utilizando un ejemplo de Language-Integrated Query (LINQ), analizando distintas posibilidades de implementar la funcionalidad que en una sencilla query SQL no son más que un par de líneas de código ... Veremos cómo hacer esto mismo con DAOs, MTL-based repositories, Quoted DSLs (Quill) y, finalmente, QUEΛ (tagless final). Para cada aproximación enfatizaremos las virtudes de los distintos tipos de abstracciones utilizadas en ellas, pero, especialmente también, sus limitaciones, mostrando las razones por las que deberíamos sentirnos culpables de alejarnos del metal ... o, por el contrario, no arrepentirnos de ello :). Esta primera sesión será impartida por Juan Manuel Serrano, profesor de la Universidad Rey Juan Carlos y responsable técnico en Habla Computing. El objetivo es que al final de la misma tengamos información suficiente para ubicar tagless-final en el universo de posibilidades de diseño a las que nos enfrentamos día a día, y decidir si nos adentramos o no en el proceloso y apasionante mundo del diseño de DSLs de la mano de esta poderosa técnica. Y si te decides a profundizar más, ¡que esperamos que sí!, en sesiones posteriores, Juan José Vázquez, CTO de Tecsisa, ofrecerá una introducción a tagless-final a un mayor nivel de detalle, mostrando paso a paso cómo es posible crear DSLs embebidos en Scala sin recurrir a GADTs u otros tipos sofisticados. Sobre el mismo código, nos remangaremos para trabajar sobre los aspectos que se esperan de un buen DSL: que admita distintas interpretaciones, que sea extensible y retro-compatible, que podamos serializarlo y deserializarlo para pasarlo por la red e interpretarlo de forma distribuida, etc. Y ya que estamos, lo haremos todo con Scala 3! Sesión 1 (9 de Junio): Tagless-final o la abstracción sin culpa Sesión 2 (16 de Junio): Tagless-final en Scala 3: first-order DSLs Sesión 3 (23 de Junio): Tagless-final en Scala 3: higher-order DSLs

Past events (74)

Introducción a Scala (IV-IV): Implícitos

Online event

Photos (73)

Find us also at