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. Minuto a minuto:
http://codely.tv/entrevistas/juanma-cto-habla-computing/
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
* 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?