Coder Lifestyle

El Recorrido de un Ingeniero de Scala: Giovanny Sissa

October 04, 2023 Alfonso & Raymond Season 3 Episode 9
El Recorrido de un Ingeniero de Scala: Giovanny Sissa
Coder Lifestyle
More Info
Coder Lifestyle
El Recorrido de un Ingeniero de Scala: Giovanny Sissa
Oct 04, 2023 Season 3 Episode 9
Alfonso & Raymond

¿Estás listo para dar el salto a los lenguajes de programación funcionales? En nuestro último episodio, tuvimos una conversación fascinante y reveladora con Giovanny Sissa, un ingeniero de software experimentado apasionado por la programación funcional y Scala. Giovanny nos brindó un análisis detallado de su trayectoria profesional, compartiendo sus experiencias y conocimientos sobre cómo pasó de Java a Scala y los beneficios que este cambio ha traído a su carrera.

Al sumergirnos en el mundo de la programación funcional, Giovanny nos llevó a través de sus desafíos y limitaciones, especialmente cuando se trabaja a escala. Nos proporcionó una visión única de la complejidad de los frameworks y lo que realmente sucede detrás de escena en los notebooks. Más importante aún, nos enseñó a cómo desaprender lo que sabemos para adaptarnos a un nuevo paradigma, un consejo valioso tanto para los novatos como para los veteranos de la programación.

Finalmente, Giovanny nos guió por cómo aplicar la programación funcional a escala y las ventajas que ello conlleva. Discutimos la importancia de establecer reglas al comienzo de un proyecto y cómo la librería CATS puede ser una herramienta invaluable para los que desean profundizar en la programación funcional. Para aquellos que quieran continuar aprendiendo sobre este tema, Giovanny compartió su experiencia con un curso de YouTube y otros recursos útiles. Sin lugar a dudas, este episodio está lleno de conocimientos valiosos sobre la programación funcional y te ofrece las herramientas para aplicarla en tus propios proyectos. ¡No te lo pierdas!

Bienvenidos a la temporada #3 de Coder Lifestyle, el podcast donde discutimos y compartimos con nuestros invitados y amigos sus experiencias en el área de sistemas, comencemos!

Eso fue todo por hoy, dejanos tus comentario o preguntas en nuestras redes, los links los puedes encontrar en la descripción

Gracias por escucharnos y nos vemos en el próximo episodio! 


Support the Show.

Recuerden escribir sus comentario y sugerencias a contacto@coderlifestyle.net donde les estaremos respondiendo a sus inquietudes.

disponible en las plataformas de audio🎧 @spotifypodcasts #applepodcasts #googlepodcasts (Link en la bio de @coder_life_style 🔝)

Síguenos por twitter en @coder_lifestyle o en instagram por @coder_life_style. Si deseas apoyarnos recuerda compartir el podcast con tu amigos.

Pueden visitarnos en https://www.coderlifestyle.net/

Coder Lifestyle +
Get a shoutout in an upcoming episode!
Starting at $3/month
Support
Show Notes Transcript Chapter Markers

¿Estás listo para dar el salto a los lenguajes de programación funcionales? En nuestro último episodio, tuvimos una conversación fascinante y reveladora con Giovanny Sissa, un ingeniero de software experimentado apasionado por la programación funcional y Scala. Giovanny nos brindó un análisis detallado de su trayectoria profesional, compartiendo sus experiencias y conocimientos sobre cómo pasó de Java a Scala y los beneficios que este cambio ha traído a su carrera.

Al sumergirnos en el mundo de la programación funcional, Giovanny nos llevó a través de sus desafíos y limitaciones, especialmente cuando se trabaja a escala. Nos proporcionó una visión única de la complejidad de los frameworks y lo que realmente sucede detrás de escena en los notebooks. Más importante aún, nos enseñó a cómo desaprender lo que sabemos para adaptarnos a un nuevo paradigma, un consejo valioso tanto para los novatos como para los veteranos de la programación.

Finalmente, Giovanny nos guió por cómo aplicar la programación funcional a escala y las ventajas que ello conlleva. Discutimos la importancia de establecer reglas al comienzo de un proyecto y cómo la librería CATS puede ser una herramienta invaluable para los que desean profundizar en la programación funcional. Para aquellos que quieran continuar aprendiendo sobre este tema, Giovanny compartió su experiencia con un curso de YouTube y otros recursos útiles. Sin lugar a dudas, este episodio está lleno de conocimientos valiosos sobre la programación funcional y te ofrece las herramientas para aplicarla en tus propios proyectos. ¡No te lo pierdas!

Bienvenidos a la temporada #3 de Coder Lifestyle, el podcast donde discutimos y compartimos con nuestros invitados y amigos sus experiencias en el área de sistemas, comencemos!

Eso fue todo por hoy, dejanos tus comentario o preguntas en nuestras redes, los links los puedes encontrar en la descripción

Gracias por escucharnos y nos vemos en el próximo episodio! 


Support the Show.

Recuerden escribir sus comentario y sugerencias a contacto@coderlifestyle.net donde les estaremos respondiendo a sus inquietudes.

disponible en las plataformas de audio🎧 @spotifypodcasts #applepodcasts #googlepodcasts (Link en la bio de @coder_life_style 🔝)

Síguenos por twitter en @coder_lifestyle o en instagram por @coder_life_style. Si deseas apoyarnos recuerda compartir el podcast con tu amigos.

Pueden visitarnos en https://www.coderlifestyle.net/

Speaker 1:

Bienvenidos a Color Lifestyle, el podcast donde compartimos y discutimos con nuestros invitados de amigos sus experiencias en el área sistema. Muy buenos días a todos. Hoy nos encontramos con Giovanni Cisa. Él es un ingeniero de software con más de cuatro años de experiencia en el diseño y desarrollo. Hoy vamos a hablar con él de un tema muy interesante acerca de los lenguajes de programación funcionales. Hola, giovanni, ¿cómo estás?

Speaker 2:

Hola, Ren gracias.

Speaker 1:

Dale Giovanni. Cuéntanos un poco acerca de ti. De dónde vienes?

Speaker 2:

Soy Giovanni Cisa. Vivo en Bogotá, colombia, y ingeniero de sistemas en la universidad que te llamas la escuela colombiana ingeniería. Hace cuatro o cinco años ya vengo trabajando en el ingeniería del software.

Speaker 1:

Perfecto. Revisando tu experiencia pasada, has tenido oportunidad de tocar un lenguaje de programación muy particular, un lenguaje de programación conocido como escala. Sea de hecho que, inicialmente, escala es lenguaje de programación funcional¿. Cómo comenzó tu viaje con escala? Cómo fueron tus primeros inicios con escala?

Speaker 2:

La verdad mucho sin buscarlo, pero muy casual, como llegará a hacer ese campo en la industria, y encontré una oportunidad a laborar en la que trabajaba en escala, pero yo no tenía ni idea, ni siquiera sabía que existía el lenguaje. Bueno, inicialmente la oferta era para trabajar en Java, pero salió la oportunidad de escala y fue bueno aceptar el reti y así.

Speaker 1:

En principio me decazo de la curiosidad, porque yo puedo definirme como un chico o, para las personas que han escuchado el podcast, sabrán que soy un fanboy de Java. Pero ¿cómo fue ese primer encuentro con un lenguaje funcional? Al momento tuve entrar a la compañía y verás que tendrías que programar en escala. ¿cuáles fueron tus primeras impresiones? ¿Cómo hubo un choque allí de paradigmas? ¿Cómo lo enfrentaste?

Speaker 2:

Sí, al principio se ve un poco intimidante porque es algo que uno no tiene mucho control, es algo nuevo y lo que uno siempre trae como insertiumbre ¿qué hacemos, ¿qué hago con esto? Entonces el primer momento fue un poco intimidante, pero la misma curiosidad de ver como la gente vendió la idea de programa funcional fue realmente muy buena. Me llamó la atención y eso hizo que me empezara a interesar en el tema. Creo que tuve suerte en tener a unos buenos mentores, o alguien que supo vender muy bien la idea y lo empecé a optar y así, como que uno hago, enfrentando lo desconocido y hasta el momento, el bien que no me arrepienta el paso Ciertamente.

Speaker 1:

Cuando te enfrentas a algo nuevo, puedes buscar las herramientas y tener mentores. Es algo que ayuda. Recuerdo, antes de yo comenzar con escala per se en la actual compañía donde estoy. Yo lo toqué por primera vez, pero fue con un curso, fue el curso de cursera de introducción a escala, con el creador de escala. En este caso, entonces, vamos a pasar para atruir a las personas como que ¿cuáles son los básicos de escala Para aquellos en nuestra audiencia que son nuevos en lenguaje funcional o que están entrando a escala? ¿cómo describiría en comparación con otros lenguajes de programación?

Speaker 2:

Pues, como estaba familiarizado el parte como el ecosistema de Java.

Speaker 2:

Entonces, la transición entre los programadores de Java, que son muchísimos al mundo de escala, no es tan chocante, entonces cierra como esa brecha de lo desconocido, pero como que hay algo ahí que yo medio sé, entonces lo puedo aplicar. si es mucho problema, entonces esa es una ventaja y ese es un plus que tiene escala. Se han clavado un ecosistema muy grande y empezó a poner sus ideas ahí, entonces es como que empezó a llamar gente de Java y pues eso hace que sea un poco más fácil como la transición entre para ellos.

Speaker 1:

Claro, la sintaxis, en este caso son muy similares y eso ayuda a que la transición o la familiaridad haga más fácil la adopción del lenguaje como tal. Usualmente, para ese entonces yo recuerdo Java, como para desmargar objetos, que es como bien es. tu creas tu conjunto de clases y con eso tu jerarquías, y detrás de eso hay patrones de diseño en los cuales te te soportas y por medio de eso vas construyendo tu tu sistema, o desbar desarrollando sus sistemas. Ahora, cuáles consideras que son las principales ventajas de usar escala con respecto, por ejemplo en este caso con Java?

Speaker 2:

Es otra aproximación a resolver problemas que tiene la industria de una forma un poco más soportada teóricamente y eso hace que uno pueda construir su soporte, mejor calidad, partiendo obviamente de la misma base. Esa base que uno se interese en eso, en resolver problemas de forma un poco más elegante, sin decir que el otro paraíg más sea malo y mejor, es como la aproximación que uno tiene para resolver un problema de forma funcional. Creo que es la principal venta, como a desgarse y ver que no es como el monstruo, puede, como se ve de la literatura, es amigable y es como fácil de empezar, como entrar al mundo, de funcionar a través de su lengua.

Speaker 1:

Sí, sobre todo ya que llevo un tiempo ya, ya tengo como más o menos tres años trabajando aquí. Algo que llama mucho la atención Con trabajando con escala es que tú vienes y encadenas funciones. Algo que llama mucho la atención es la posibilidad de encadenar funciones para ir transformando la data Y al final, obtener un resultado. Eso genera ciertas ventajas, como el hecho de que cada transformación no es acelerada por algo externo Podíais llamarse así tratar que el objeto se mantenga único o inalterable a través de todo su procesamiento, porque lo que estamos hablando es que una de las parte importante de la programación funcional es evitar que el estado no objeto sea alterado. ¿certo, correcto?

Speaker 2:

es decir, es una nueva forma de pensar. No, entonces eso hace que no tenga que acostumbrar a las cosas que se pueden. Y no es como entrar a cualquier juego o cualquier deporte para ver un conjunto de reglas que hay que seguir, y entre deportes se dice muy similar pues a ver cosas particulares que, por qué no les guste, es como eso mismo como de forma segunda, análoga y de pequeña análoga.

Speaker 1:

Ya entrando con los conceptos de programación funcional, ¿cómo definirías tú la programación funcional, alguien que es nuevo en el concepto?

Speaker 2:

yo definiría una otra forma de pensar el software, ¿sabes?

Speaker 1:

otra forma de pensar.

Speaker 2:

el software es básicamente es ver desde otra perspectiva, utilitaria, como uno hace para construir software usando ese nuevo conjunto de reglas y de nuevos patrones, y por qué conlleva un paradigma perfecto ¿por qué crees, en este caso, que la programación funcional ha ganado tanta tracción en los últimos años?

Speaker 1:

y aquí aquí hablamos un poco de que no solamente escala es un lenguaje funcional. En el pasado también ha existido otros lenguajes funcionales, solo que, por ejemplo, no o han sido como para nichos muy específicos. En este caso, ¿por qué crees que la programación funcional ha ganado tanta tracción en los últimos años?

Speaker 2:

yo creo que es por ese mismo atractivo que yo decidí cómo entrar al mundo. Le venden a uno que es fuertemente fundamentadas de forma teórica, es decir que uno puede construir soluciones muy bien soportadas. Y eso no es sólo aplica para, digamos, desarrollar productos en el baquete. Empezaron a ver que eso se puede aplicar en muchos campos. Por ejemplo, si uno quisiera escribir infraestructura, como puedo decir? creo que está terraform que usa un paradigma más o menos funcional de forma declarativa. Yo digo que pretendo hacer si quiero entrar en el mundo UI. Existe flotter para hacer programación medio funcional.

Speaker 1:

Utiliza un paradigma declarativo, pero parece que se enfocan en esa aproximación se facilita mucho esa construcción de productos de software cuando uno ya lo empieza a entender es mucho más cómodo trabajar claro, es un proceso, un proceso en lo cual tienes que ir aprendiendo, educándote de tal manera de tomar esa nueva forma de programar que, adicionalmente, creo que te direcciona a tomar cierta forma de programar que, como tú dices, es elegante pero a la vez hace que sea más como estable. Podemos decir o se que esta forma de programar me va a ayudar a hacer mejor programación en mi código. Hablando de la programación funcional, pues hay problemas específicos que la programación tradicional resuelve y que nos puedes comentar, qué problemas puede resolver la programación funcional que otros paradigmas no pueden resolver? que en el caso aquí creo que el contraste viene siendo contra los lenguajes orientados objetos.

Speaker 2:

Realmente no hay mucha diferencia entre esto. Realmente podría ser lo mismo con la aproximación orientado que es con la aproximación funcional, pero siempre hay un pero uno empieza a ver que ahorita se enfoca todo. Por ejemplo, hay un marco yo diría que es un marco de referencia o es una forma de también hacer software que se llama diseño dirigido al dominio. Eso permite que no se centren en crear un lenguaje ubico a partir de un dominio específico que uno tenga. Si uno usa una aproximación funcional, ya por si tiene eso ganado, no tiene que hacer un poquito de mar o más con el lenguaje. Entonces lo tiene como de forma orgánica y eso hace que sea más simple como interactuar con eso.

Speaker 2:

Cuando uno empieza a ver que eso encaja más fácil, pues entonces ya su código debería ser legible por un manager o por alguien que no trabaje en el sector de ahí, porque como no nos enfocamos en qué hacer, sino como, es decir, no nos enfocamos en cómo resolver algo, sino qué de ahí hacer eso produce mucha carga en el código. El código es lo más simple. Entonces se vuelve elegible y si uno le da al código, a alguien que no trabaje en de ahí, sólo por el hecho de ver qué está haciendo podría darse una idea de cómo funciona, sin ir al detalle, pues, de el código y de que aquí sumo, aquí resto, y un espacio, un memoria esas cosas se eliminan.

Speaker 1:

Entiendo tu punto porque, hablando de lo que estamos hablando, antes de que tú puedes, como que, encadenar funciones, entonces tú estarías leyendo como ese código a muy alto nivel que básicamente tú estarías pasando data sin necesidad de entrar en el detalle, y sabrías que lo que está haciendo esa lógica en negocios, sin entrar al detalle, que es bueno, voy a incrementar la cantidad de productos, lo voy a reducir si hay tantos porcentajes, etcétera, pero como estoy programando a nivel funcional, si no fuese del date, me lo da. pudeis entender de qué se trata más o menos.

Speaker 2:

Porque está enfocado en qué tiene que hacer antes que cómo. En un paraígmo, habiendo objetos, tenemos que imaginar ese cómo. Si queremos por ejemplo entrar a una RAI, tenemos que definir el índice inicial y el índice final y tener cuidado que no se vaya a salir. Eso genera ruido y eso no es entendible para alguien que no trabaje en el sector.

Speaker 2:

Entonces eso empieza a generar una brecha de comunicación entre los expertos de negocio y los expertos en tecnología Y por eso, no vea, es inconsistencia en ese paraígmo de la forma funcional, eso empieza a crecer más organicamente. Perfecto perfecto.

Speaker 1:

Ok, ya hablamos un poco acerca de la programación funcional. Y qué es lo que trata de resolver Ahora? específico, con escala y la programación funcional, basado en tu experiencia que en librerías existen herramientas específicas en escala que le hacen la experiencia en programación funcional que yo al entrar por primera vez a este mundo, pues tenemos lo que es la librería básica, pero algo que a tu diga oye, quizás deberías utilizar esto porque esto, a pesar de que ya tiene un frango por debajo, pero ésta te va a ayudar en el camino. Basado en tu experiencia, cuáles son las que tú dices y qué son las más recordadas por ti o las que te han ayudado más y que y cuál es ha sido su función?

Speaker 2:

Hay una librería muy popular en escala. Se llama CATS, como gatos en inglés, pero no por gatos, sino categoriteori. Entonces resumieron las dos palabras y se llama CATS. Esa librería implementa por debajo toda la teoría de categorías que al final es lo que soporta la mayoría de conceptos de programación funcional. Afortunadamente no tiene que aprender teoría de categorías para programar funcionales, como ya está hecho. Uno empieza a usarlo y en la medida que uno se va enrolando, pues va entrando en los detalles, pero para arrancar no es no, no toca saberlo. Esa librería facilita mucho la implementación de esos conceptos funcionales. Hay otra que se llama escala zeta, esca la zeta ok.

Speaker 2:

También tiene un approach funcional muy parecida a CATS. Esas dos diría que son las más úpiles cuando no quiere programar en escala desde la perspectiva funcional.

Speaker 1:

Recuerdo que en algunos de los proyectos que estábamos usando la librería CATS se estaba utilizando Oltame. No recuerdo en qué proyecto específico, pero si sé que la estamos utilizando. Ok, y en este caso puedes dar a la audiencia un ejemplo de cómo la programación funcional y en este caso, en escala, ha influenciado un proyecto real en el cual hayas trabajado?

Speaker 2:

Pablo, tuvimos una experiencia muy enrepreciadora en compañía de trabajaba anteriormente. Es que decidimos construir nuestro framework de una arquitectura totalmente funcional. Eso nos obligó a definir nuestros propios tipos, por ejemplo nuestra forma de empezar a encadenar esa secuencia de computos, y lo hicimos todo casi de cero, utilizando solo la librería. Eso hizo que empezaron a entender muchas cosas de cómo funciona, por ejemplo yo entendí el concepto de inyección de dependencias, pero usaban el pasado Spring Boot, pero en realidad no sabía cómo sucedía esa magia.

Speaker 2:

simplemente yo iba definiendo cosas y funcionaba Y uno empieza a entender ese por qué en escala. ya, cuando uno lo hace como a mano, se da cuenta que esa inyección de dependencias es una función Yo tengo un parámetro de entrada.

Speaker 2:

Espero no hay salida, pero de entrada lo puedo cambiar por lo que yo quiera, siempre que respete la regla que yo lo decida. Y así ya se empieza a entender todos los conceptos más profundamente y puede empezar a tomar decisiones de por qué me conviene hacer una cosa, por qué no. Eso ha sido como lo más enriquecedor de ese proceso.

Speaker 1:

Excelente, es un buen comentario que has dicho Sobre todo porque es verdad que hoy en día están saliendo muchos frameworks y ciertamente parte del trabajo del framework es como que ocultar toda esa complejidad. Correcto Para que tú te dedique a la lógica del negocio, pero ciertamente a la ocultar esa complejidad está el detalle de que bueno, que estará pasando por debajo, que estará sucediendo por debajo Y algunas veces es lo que tú dices, esa magia que uno no sabe. Actualmente hago referencia que estamos usando Databricks y ellos utilizan, o sueldo, utilizan notebooks Y cuando tuve el código fuente y lo interesante del notebook es que tú puedes colocar código escala, código escala o código SQL, inclusive Python, allí y puedes invocar otras notebooks. Pero lo interesante de esto, haciendo cotación, algo demás es cuando tú ves pasajes de notebook al código real, las celdas Dice magic, magic, como que bueno, esta es la magia que estamos usando. No, realmente no dicen nada.

Speaker 1:

Es como que magic, y ahí tienes tu código, allí, lo se indicando allí. Que bueno, si hay algo por debajo, ahí que está haciendo todo el proceso. Pero tu no lo sabes Bien. Sabemos que los lenguajes de programación, ya sea con un paradigma orientado a objetos, un paradigma funcional, tiene sus ventajas, pero ahora vamos a hablar un poco de los desafíos y limitaciones que pueden tener estos paradigmas Para ti, joanny. ¿qué desafío enfrentan los nuevos programadores al adaptarse al paradigma funcional en escala?

Speaker 2:

Yo creo que el mayor desafío es intentar desaprender lo que ya sabemos porque, como son otras reglas de juego, hay muchas que de lo que sabemos no van a encajar, Y eso es lo más difícil. a veces es más difícil desaprender algo que aprender algo nuevo, porque para estar como yo encajarlo ahí.

Speaker 2:

Creo que ese es el desafío más grande que tiene alguien que quiere involucrarse un poquito más en el enfoque funcional, que tiene que exprenderse de cosas que sabe que probablemente le han funcionado en su carrera y soltar eso no es fácil. Creo que eso es lo más complicado al momento de entrar y es ver que es un cambio en la mentalidad de cómo yo percibo la construcción de software como ingeniero. Es lo más difícil cambiar la. Cómo hacer switch es lo más complicado.

Speaker 1:

Yo puedo ser un ejemplo que de repente, algo sencillo, como por ejemplo en el paradigma orientado a objeto o el normal, para hacer un for, pues tengo mi arreglo y lo que hago es como índice voy iterando desde el 1 hasta la longitud máxima del arreglo y lo voy iterando con un for Y voy haciendo los cambios o la lógica dentro de ese for. Cuando entras al paradigma funcional, pues te encuentras que la necesidad del for para un arreglo ya no es necesaria. Ya no es necesaria porque ya, precisamente con una función que está asociada al arreglo que automáticamente te vas iterando sobre cada uno de los elementos que están allí. Entonces, ese es el ejemplo que se me viene a la mente porque bueno, precisamente, creo que fue una de las cosas que cuando comencé con el lenguaje funcional, pues dije wow, Y sobre todo también el concepto de map, que te permite transformar teoría, sería que se utilizaría para transformar el objeto entrante a uno nuevo. Pero para mí fue como que al principio, como que oh, cuando lo entendí, ah, es, utiliza para eso Sí es un que acabado de mencionar.

Speaker 2:

Es lo que le empieza a pasar a alguien que entra en el mundo, como que en su cabeza empiezan a salir muchos boom y empieza a despejar la mente y bueno, ya no tengo que preocuparme por el for, por nada. Empieza a reducir la carga cognitiva del desarrollador, Entonces ya me enfoco más en lo que necesita el negocio. Uno empieza a limpiar mucho de esas cosas que realmente son fundamentales, pero el compilador la sabe hacer mejor que bueno. Entonces, cuando no programas funcional, deja que el compilador haga más cosas por uno. Al compilador no se le va a pasar un índice de mágita de lanzamiento.

Speaker 2:

Al compilador no le va a pasar, pero a nosotros sí nos pasa porque somos seres humanos y a veces en nuestro campo se nos olvida o le declaramos mal, o nos toca ver qué pasó, y eso genera un problema.

Speaker 1:

Entonces, es cierto, es el desaprender y aprender. el nuevo paradigm Ahorita, que has utilizado escala y ya igualmente como programación funcional, que tú crees que en específico a este, porque hay otros lenguajes de programación que también son funcionales, pero que tú crees que le hace falta a escala y que debería abordarse en las futuras versiones del lenguaje.

Speaker 2:

Yo creo, que el problema con escala es que en su librería estándar no tiene una librería funcional completamente, sino que le da uno como las herramientas para usarlo. pero lo tiene. Por ejemplo, si uno quiere lidiar en programación funcional, todos son funciones Y lo que es en el mundo ideal, pues las funciones deberían ser puras, o sea que yo recibo un valor y el resultado sea otro valor y que siempre pase. Pero eso impediría que se construya software interesante, porque una función que no tenga la mitad, por ejemplo una base de datos o conectarse, a otros sistemas.

Speaker 2:

No sería muy interesante escribir software si todo fuera puro, entonces hay un concepto que dice que hay algo que puede pasar ahí en la mitad. Si uno, por ejemplo, se quiere conectar a una base de datos, pues tiene que tener cuidado que esos otros son fuera. Puro, es un componente. Hay que conectarse a través de la red. Puede tener problemas en la red o la misma base de datos puede tener problemas. Entonces no hay una relación directa entre los datos de entrada y los datos de salida. Por ejemplo, un lenguaje funcional puro como Haskell tiene en su librería estándar, tiene un gráfaro que se llama IO para modelar ese tipo de cosas de forma nativa En escala. No lo tenemos. Hay librerías que lo soportan, pero no está de forma nativa. Pronto Las transversiones. Si me gustaría que fuera más nativo, para que sea más mejor.

Speaker 1:

En este caso imagino que también tomando el punto que habíamos hablado antes, es también esas librerías que habías mencionado que también de repente implementan por debajo cosas que aún a la base le falta, yo no puedo olvidar de mencionarlo.

Speaker 2:

hay otro librería, hay otro catch catch effects que maneja ese tipo de problemas, no tiene problemas de interoperabilidad, de efectos secundarios que puede tener el juego y esa utilidad lo permite hacer en escala.

Speaker 1:

Mirando un poco aquí que lo mencionaste, saliendo un poco del script, las pruebas, es decir en el mundo, hablando siempre de como quedan el mundo ideal, usualmente hasta el momento. Como hacemos pruebas? es como que, bueno, tengo mis clases, yo quiero probar cierto comportamiento. Si ese comportamiento llama a una algo externo, como una base de datos y todo lo demás, pues tenemos que moquearlo para obtener esa información, o para obtener esa información, para simular que vamos a obtener esa información, y bueno, son varios pasos de tal manera de comprobar qué el comportamiento que estamos esperando es el comportamiento adecuado en un mundo ideal de escala o programación funcional, pues las pruebas, viéndolo de ese punto de vista, debería ser un poco más sencilla, viéndolo de punto de vista, y de ahí sabemos que igualmente tendremos que moquear.

Speaker 1:

Pero dado que estamos llamando funciones, pues estamos como que concatenando, es decir yo me estoy imaginando y como que la programación, la prueba de la programación ideal sería como que declaro mi objeto llama la primera función, esa función me retorna algo llamó a la segunda, en concatenando la información que viene de la primera y así sucia mente. Y si por algún motivo una de esas llama a un componente externo, yo lo que hago es moquearlo y al final obtengo el resultado a nivel de pruebas. Tú crees que ayuda lo que es la parte de programación funcional a decirle. Tú crees que a nivel de las pruebas unitarias no hablando de pruebas de integración y otro tipo de pruebas más complicadas, pero más que todas las pruebas unitarias ves algún tipo de ventaja.

Speaker 2:

Sí, totalmente. Primero porque estamos trabajando funcionales. Generalmente las funcionales son fuertemente tipadas. Entonces yo siempre tengo que ser estricto con los tipos que voy a usar. Esos tipos, pues obviamente hacen parte de funciones y me empieza a encarnar cómputos, y empieza a dar se cuenta que en medio de ese desencarnamiento de las funciones existen propiedades que siempre van a pasar. Entonces yo empiezo a formular mis pruebas no en función de ejemplos sino de propiedades. Por ejemplo en la suma, una propiedad de las sumas que no importan como yo sume, siempre voy a tener el mismo resultado eso es una propiedad de la suma. Entonces, si yo empiezo a ver esas propiedades dentro de mi dominio, por ejemplo en una transacción bancaria que si yo tengo dos débitos entonces tengo que sumar, y no se empieza a apoyar como en esas abstracciones que ya tiene, y se da cuenta que si yo tengo mil débitos y lo sumo de cualquier forma, pues debería hacer una propiedad de los débitos, entonces eso es una prueba. Como empieza a?

Speaker 2:

ver esas propiedades. Ahí digamos que lo difícil acá es encontrar bueno, qué propiedad es esta. Pero si el programa está más allá, bien escrito, si el dominio está bien definido, debería ser medianamente intuitivo, como bueno. Pero si yo sumo esta o a esta, le sumo cero, pues me tiene que dar lo mismo. Entonces, si uno empieza a encontrar esas propiedades, puede formular sus hipótesis en forma de pruebas unitarias. Eso es poderosísimo.

Speaker 1:

Está interesante lo que has comentado, porque estamos hablando un poco más de solamente sentarte y comenzar a programar. Si no hay un paso previo, que es definir bien esas reglas, y creo que al comenzar un proyecto de inicio, pues igualmente tú tienes que sentarte y pensar que es lo que vas a hacer, pero definirlo a ese punto es una tarea o un ejercicio bastante interesante. Sí, totalmente.

Speaker 2:

Eso incrementa la calidad del software que se va a entregar por ese mismo razonamiento, es decir como ya no nos tenemos que preocupar por los índices, pues ahora nuestras preocupaciones van a ser por buscar propiedades pero eso ya está pegado a, digamos, a algo real de negocio. Por ejemplo, podemos encontrar propiedades en su jaina de valor o en su propuesta de valor, y si eso se logra, pues entonces sí tiene sentido que el software acompañe la propuesta de valor de cualquier componida por esos.

Speaker 2:

Es bastante interesante y por eso a mí me gusta mucho el funcional, excelente, excelente.

Speaker 1:

Entonces, para ti que has transitado este mundo de programación funcional, ¿qué recursos recomendaría para aquellos que quieran profundizar en escala y si también la programación funcional?

Speaker 2:

En el ecosistema de la librería de CATS está type-lale. Ellos son como los que mantienen la librería. Es una librería open source. Tienen muchos proyectos open source ahí y tienen muchos recursos para aprender con ejercicios en línea. Hay varias gente que soporta que son los que mantienen la librería, que siempre postean cosas en Twitter o en más toda la novelidad En X, es que me cambió el nombre En X.

Speaker 2:

Hay muchos recursos ahí, generalmente son gratuitos. Uno puede ver tienen muchas conferencias ahí hay una página de type-lale, uno encuentra mucha documentación. El curso que mencionaste. Como inició el curso era como para entrar un poquito al ambiente escala y ver lo básico. También es muy bueno. Y en general en GitHub hay muchas comunidades que ponen sus hallazgos y los discuten, o presentan problemas que son demasiado complejos, pero mucha gente colabora para resolverlos. Entonces hay un buen soporte ahí, bastante interesante, que no queda como enganchado ahí.

Speaker 1:

Sí, porque creo que eso es una parte fundamental de un lenguaje en promoción, en particular la comunidad. Hoy en día que tengo una comunidad activa, que puedes conseguir recursos online para poder ayudarte si tienes algún tipo de duda, recuerdo que una vez tú me pasaste, y me gustó bastante, en GitHub. Tú tienes que registrarte con GitHub y básicamente es un curso online donde tú vas colocando los datos y te vas volvando allí. Es como un curso de escala y pero es online y lo vas haciendo con la página y es súper, súper interesante. Qué lo voy a colocar al final de la descripción del podcast. Mirándose al futuro, cómo ves el futuro de la programación funcional? Tú crees que se va a seguir expandiendo? con respecto a escala, tú crees que va a agarrar más auge?

Speaker 2:

Ahorita, yo lo veo como que está, como esa parte cuando empieza a crecer una tecnología o una forma de para ir. En este caso Están poco quieto, pero seguramente van a empezar a tomar Tal vez lo que influyen, como en ese, en esas desaceleraciones que en la versión 3 de escala, por ejemplo, ya se divorcian de la JVM, se ya se salen de ya y ellos mismos ya tienen su propio compilador que se llama Dati.

Speaker 2:

Desde eso ya empieza a generar una brecha un poquito, como que ya no es tan fácil pasarme. Pero igual, lo que yo tengo de la versión 2, pues me va a servir en la versión 3, no es que me toque aprender de cero, es simplemente como de nuevo desaprenderá a desapegarme de lo que puedo hacer en la máquina virtual de. Ya, ya, no tengo eso, pero pues a cambio voy a tener otras cosas que son también bastante interesantes, un poco más funcionales.

Speaker 1:

Esa versión 3 ya cuando sale, o ya salió.

Speaker 2:

El primer release creo que salió el año pasado. Ok, se mueve un poquito porque ellos tienen que garantizar que lo que yo haga en la versión 2 no funciona en la versión 3. Entonces eso fue lo que retrasó un poquito el release, pero ya está en release. No conozco ahorita ningún proyecto que tenga ni el core la versión 3, en un ambiente productivo, pero seguramente va a empezar a pasar. Y cuando eso pasa, entonces es otra vez como que va a retomar el camino que tenía a escala en la versión 2.

Speaker 1:

Sí, porque usualmente es como cuando de repente sacan un nuevo framework que es si ya la compañía está trabajando, ponte. Voy a hablar en este caso de Spring. Está utilizando Spring en una versión X y hasta el momento lo veían, pero de repente hace ese cambio brusco y sacan Entonces hay un riesgo, hay inerente, de pasar, de trasladar todo tu proyecto, hacen una versión, aunque en este caso me está diciendo que si yo me pasas a la versión número 3, pues todo lo que tengo ya hecho va a funcionar. Entonces creo que hay un tratado de minimizar el riesgo para que, para que lo adopten fácilmente las personas que ya tienen proyectos, que ya han hecho, porque ciertamente pasar de cuando hay muchos cambios así, muy bruscos, pues pueden ocurrir bastantes problemas a largo plazo.

Speaker 2:

Sí, sí, yo concuerdo ahí que esa fue la razón para seguir como nos, soportando el cambio más suave.

Speaker 1:

Correcto. Para concluir, me gustaría saber, para alguien que está considerándose sumergirse en escala de programación funcional, ¿qué consejo le darías?

Speaker 2:

Lo más importante es como darse la posibilidad de ver nuevas formas de hacer nuestro trabajo. Al principio, como te digo, puede ser demasiado agrumador desde el punto de vista que como hay mucha base teórica o matemática, pues eso es como que le da un poquito de pereza, o como que uno empieza a ver que es demasiado complejo entonces es como que mejor no Sí.

Speaker 1:

rechazo a lo desconocido, por ejemplo.

Speaker 2:

Eliminar eso, como que uno no necesita saberse toda la teoría de categorías como mencioné, ¿no, pero si tiene herramientas muy poderosas que están muy bien soportadas, ya, si uno está muy interesado puede ver como la forma formal, la demostración de que eso funciona. Y ya es una teoría bastante profunda, bastante compleja. Pero la gente que le gusta saber cómo funciona todo, entonces van y miran la demostración de por qué un flat map siempre ha funcionado.

Speaker 1:

Pero pues eso ya es un gusto Correcto.

Speaker 2:

Lo importante es que está ahí, que está bien soportado, que es confiable. Entonces, cuando uno tiene algo que lo que confía, simplemente cuando lo empieza a usar puede hacer cosas muy interesantes. Es lo mismo con las matemáticas no confía que todas esas tracciones ya funcionan, aún no le interesa por qué la multiplicación no es el distribuptivo asociativo, bueno, todas las propiedades que pueda tener, aún ya no le interesa eso, pero simplemente ya lo assume que eso es verdad. Ok, aquí pasa lo mismo. Al principio el choque es duro, pero si uno lo piensa largo plazo puede empezar a sentirse muy cómodo con el software que me escribo.

Speaker 1:

Perfecto. Por último, ¿dónde lo oyentes Pueden seguir esto, aprender más sobre tu trabajo?

Speaker 2:

Yo usualmente tengo proyectos, entonces en escala hay un kit hop yo voy a necesitar ¿Tutulito? Trato como si veo que algo ha funcionado y lo mando allá y lo dejo ahí. Hay muchos repositores de los que he jalado y he mirado cómo funcionan, es decir darse ideas de qué podría hacer. Mi Twitter también. Siempre retrito cosas de la escala, cosas acerca de lo que sale en Nueva York o alguna discusión. Yo no creo contenido, pero los podría dirigir a los que si están muy enfocados en eso.

Speaker 1:

Aunque por ahí tienes algo oculto. ¿tienes un curso en YouTube de escala de promoción funcional?

Speaker 2:

Ah, claro, si yo compro de la compañía de trabajo, también le pueden dar un vistazo, mirar si les interesa Y las puertas del link hop están abiertas por si tienen dudas o si quieren explorar algo más o darles el input, que creo que es lo que lo he enganchado. Si no tiene un movimiento, que en mi caso cuando se enganche empieza a andar, a andar ya por uno mismo y a usar sus propios recursos. Creo que es más eso Excelente.

Speaker 1:

Bueno, giovanni, muchas gracias por tu participación en el podcast, dando este abre boca acerca de lo que es la programación funcional y, sobre todo, aplicada a lenguaje de programación escala.

Speaker 2:

Muchas gracias, Ayer no iba a tirar de muy claro la invitación muchas veces

Lenguajes De Programación Funcionales Y Scala
Limitaciones Del Paradigma Funcional en Scala
La Programación Funcional Y Sus Ventajas
La Programación Funcional Aplicada a Scala