Como saber un leng funcional me ayuda si soy un triste desarrollador en un lenguaje OO o aun peor en Java.
El estilo de programación funcional, combinado con un sistema de tipos realmente poderoso, va a cambiar tu manera de enfrentar tanto el diseño como la implantación de los programas, hasta en lenguajes como Java. Incluso si piensas que nunca vas a querer/poder trabajar con lenguajes enteramente funcionales, el cambio de mentalidad te hará progresar.
Es igual que aprender a hablar otro idioma: expande tu mente porque agrega nuevas formas de construir ideas. Hay personas que intentan aprender idiomas tratando de traducir en su mente, o usando equivalencias desde el idioma que conocen. Estos son los que van de «gato» a «cat», y luego quieren ir de «tuqueque» a «you what what» con resultados inesperados. También hay personas que optan por la inmersión total en el nuevo idioma, viéndose obligadas a cambiar su estructura mental de forma abrupta. Hay suficientes estudios que confirman que la segunda forma es mucho más efectiva, sin excluir a los que usan la primera forma y han avanzado lo suficiente para ser «comprensibles».
Si eres del primer tipo de personas, puedes comenzar por aprender Scala, que funciona sobre la máquina virtual de Java. De allí sacarás unas cuántas nociones como para que puedas «defenderte» en el estilo funcional, sin embargo todavía estarás sometido a los grilletes de la JVM, y la creencia de que OO jerárquica es el molde donde hay que meter todas las galletas.
Si eres del último tipo de personas, puedes comenzar por aprender Racket o Haskell. En el primero vas a sentir mucha «libertad», porque el sistema de tipos no te restringe; en el segundo vas a sentir mucha «presión», porque el sistema de tipos no te va a dejar escribir estupideces. Llegará un momento en que dejarás de llamarlo «presión» para llamarlo «razón». Con cualquiera de los dos seguro te vas a sentir extraño al inicio, porque lo que «sabes» (y no lo escribo peyorativamente) no te va a servir de mucho. Sin embargo, el shock será sumamente revelador si tienes la actitud adecuada acerca del aprendizaje.
Te va a servir para darte cuenta que aunque esté muy bien sentirse a gusto con un lenguaje de programación y un estilo de escribir programas, estás dejando de aprovechar maneras de comprender y expresar los programas que son mucho más naturales y notablemente superiores en términos de reusabilidad, que los «patrones» artificiales que existen para poder usar OO efectivamente.
There's no «functional programming» without «fun».
Es igual que aprender a hablar otro idioma: expande tu mente porque agrega nuevas formas de construir ideas. Hay personas que intentan aprender idiomas tratando de traducir en su mente, o usando equivalencias desde el idioma que conocen. Estos son los que van de «gato» a «cat», y luego quieren ir de «tuqueque» a «you what what» con resultados inesperados. También hay personas que optan por la inmersión total en el nuevo idioma, viéndose obligadas a cambiar su estructura mental de forma abrupta. Hay suficientes estudios que confirman que la segunda forma es mucho más efectiva, sin excluir a los que usan la primera forma y han avanzado lo suficiente para ser «comprensibles».
Si eres del primer tipo de personas, puedes comenzar por aprender Scala, que funciona sobre la máquina virtual de Java. De allí sacarás unas cuántas nociones como para que puedas «defenderte» en el estilo funcional, sin embargo todavía estarás sometido a los grilletes de la JVM, y la creencia de que OO jerárquica es el molde donde hay que meter todas las galletas.
Si eres del último tipo de personas, puedes comenzar por aprender Racket o Haskell. En el primero vas a sentir mucha «libertad», porque el sistema de tipos no te restringe; en el segundo vas a sentir mucha «presión», porque el sistema de tipos no te va a dejar escribir estupideces. Llegará un momento en que dejarás de llamarlo «presión» para llamarlo «razón». Con cualquiera de los dos seguro te vas a sentir extraño al inicio, porque lo que «sabes» (y no lo escribo peyorativamente) no te va a servir de mucho. Sin embargo, el shock será sumamente revelador si tienes la actitud adecuada acerca del aprendizaje.
Te va a servir para darte cuenta que aunque esté muy bien sentirse a gusto con un lenguaje de programación y un estilo de escribir programas, estás dejando de aprovechar maneras de comprender y expresar los programas que son mucho más naturales y notablemente superiores en términos de reusabilidad, que los «patrones» artificiales que existen para poder usar OO efectivamente.
There's no «functional programming» without «fun».
Liked by:
Cesar Rada
Alejandro Do Nascimento
Marcos Mora