Siguiendo con la serie de entrevistas a desarrolladores, hoy os traemos la entrevista a Juan Manuel Serrano. Juanma actualmente tiene un estudio de arquitectura en programación funcional, Habla Computing. Anteriormente intentaron comercializar su propio lenguaje de programación, y también estuvo trabajando como investigador y docente en la universidad. En la primera parte de la entrevista, como de costumbre, reflexionamos acerca del sector de la informática. En este caso y dada la trayectoria de Juanma, tocamos temas relativos a la educación en la informática. En la segunda parte entramos en materia al respecto de la programación funcional. Vemos un ejemplo concreto de aplicación de Type Classes en Scala, un patrón de diseño que nos permite alcanzar el nivel de abstracción necesario para garantizar que nuestras interfaces nos aíslen de la infraestructura.
Desglose de la entrevista
2:40 Educación en la informática
- La educación en la informática: El veredicto es culpable.
- La docencia al final es un trabajo a tiempo completo y actualizar el plan de estudios cuesta mucho.
- Tiene que haber una relación con la industria más cercana.
- ¿Qué hace una persona que no ha puesto una aplicación en producción enseñando Arquitectura de Software?
- La gente que va a la universidad tiene que exigir y demandar que los contenidos estén cercanos al mundo real.
- Sí o sí te vas a tener que formar al acabar. La carrera te da una serie de técnicas y lenguajes que no van a ser un punto y final en tu formación.
9:05 CTO en Habla Computing
- La empresa surge para llevar a la práctica un nuevo lenguaje de programación.
- En resumidas cuentas, nos metimos una leche.
- Comercialmente es muy difícil vender un lenguaje de programación. Eso se debe hacer a través de su ecosistema.
- Se acaba esa primera fase de la empresa. Habíamos aprendido mucha programación funcional. La reconvertimos en un estudio de formación en programación funcional.
14:30 Type Classes en Scala
Extracto de la charla "All roads lead to… lambda" (slides y código)
- Las interfaces abstractas tradicionales se plantean como un muro para separar la infraestructura de tu lógica de negocio.
- Cuando utilizamos implementaciones asíncronas (futuros), las interfaces ya no nos permiten hacer esta separación.
- La solución que plantea la programación funcional que no podríamos conseguir con Java, son las interfaces abstractas parametrizadas (Type Classes).
- La programación funcional se puede hacer con 2 aproximaciones: Type Classes, y Tipos Algebraicos de Datos (ADT). Hay material al respecto de ADTs, no tanto de Type Classes.
- Functional Programming in Scala: Un libro muy bueno pero sólo enfocan la aproximación de Type Classes para el desarrollo de librerías.
- Con "El Programador Orientado a Objetos™" no quiero dar a entender que "El Programador Funcional™" no lo sea también. Cuando programamos funcionalmente en Scala con Type Classes, lo que estamos haciendo esencialmente es programar orientado a objetos.
- Cuando implementamos nuestros métodos con Type Classes y monads, estamos haciendo programación imperativa. Las mónadas son APIs para implementar programas imperativos. Utilizamos técnicas distintas para expresar esos programas, pero no estamos cambiando de paradigma.
32:50 Conclusión
- Cuando ese alumno acabe la carrera y vaya a una empresa, debe seguir siendo crítico. Que haga avanzar el estado del arte en la informática.
- Las técnicas de programación funcional están para solucionar problemas y no para fliparse con las mónadas y los aplicativos.
- Deberíamos ser menos conformistas. La informática es una cosa que está por hacer.
- Dentro de unos años la programación funcional será un debate que no tendrá sentido. Será todo programación funcional. La partida ya está ganada.
- La correspondencia de Curry–Howard establece que la programación funcional y la lógica son lo mismo. Cuando programas estás probando una proposición. ¿Quién quiere programar ilógicamente?
Y próximamente…
https://twitter.com/CodelyTV/status/845330007996186625