Mas leido
Building Stories
Modo Rua: Redefiniendo el desarrollo de aplicaciones mediante iteración centrada en el usuario Ago 23
Building Stories
NuStories: Adaptación de productos para clientes fanáticos en varios países Oct 30
Culture & Values
Cómo los valores y la cultura de Nu dan forma a los productos que creamos Ago 7
Carreras
Reunimos a grandes mentes de diversos orígenes que permiten la discusión y el debate y mejoran la resolución de problemas.
Conoce más sobre nuestras carreras



Si trabajas con tecnología o tiene curiosidad sobre ella, probablemente ya hayas oído hablar de la programación funcional. No es nada nuevo, pero cada vez está recibiendo más atención debido a los cambios tecnológicos que estamos atravesando.
¿Qué es la programación funcional?
La programación funcional es un paradigma de programación, es decir, la forma de hacer algo. En programación, es la metodología utilizada para escribir códigos.
El paradigma funcional se basa en un modelo de cálculo muy antiguo llamado cálculo lambda. El cálculo lambda fue creado en 1930 por Alonzo Church (quien fue profesor del famoso matemático Allan Turing) y fue la base para la creación de LISP, una familia de lenguajes de programación desarrollada por John McCarthy en 1958.
Sin embargo, para saber qué es la programación funcional, es importante comprender otros paradigmas de programación famosos: la programación imperativa y la programación orientada a objetos (OOP).
Descubre las oportunidades
Programación Imperativa
El paradigma de programación más famoso. En lenguajes imperativos, como C y PHP, los códigos se escriben como una lista de acciones o comandos que ejecuta una computadora. Son como órdenes dadas a la máquina, por eso se llama programación imperativa.
Programación Orientada a Objetos
En cuanto a la programación orientada a objetos, un programador crea datos en forma de campos, conocidos como atributos, y códigos en forma de procedimientos, conocidos como métodos. Una de sus características es que el procedimiento de un objeto puede acceder o incluso cambiar los campos de datos del objeto al que está asociado.
Como ejemplo sencillo, imagina que un auto es un objeto y sus atributos son sus puertas, color, etc. Podrías tener un método en el que el procedimiento sería abrir la puerta del auto y otro cerrar la puerta del auto.
Algunos ejemplos de lenguajes de programación orientados a objetos son Java, Python y Ruby. Otros lenguajes, como JavaScript y PHP, admiten la orientación a objetos.
Programación Funcional
Cuando comprendemos otros tipos de paradigmas, resulta más fácil comprender el paradigma funcional.
Eso significa que en el paradigma funcional las funciones son puras, no cambian el estado del objeto y dan énfasis a expresiones y declaraciones, en lugar de seguir instrucciones.
En el ejemplo del auto, si creamos una función pura para abrir la puerta del auto, esa función no cambiará el auto, que es la entrada inicial. Debes utilizar explícitamente el resultado de la función, que sería el coche con la puerta abierta, en lugar de acceder a la entrada inicial, que es el coche con la puerta cerrada.
Además de eso, no hay variables en el paradigma funcional, sólo constantes. Esto se traduce en códigos más objetivos con constantes que, en general, no cambian. Algunos ejemplos de lenguajes funcionales son Clojure, Haskell y Elixir.
¿Cuáles son los beneficios de la programación funcional?
Como se dijo antes, el código en programación funcional tiende a ser más objetivo y más corto que en otros tipos de paradigmas porque puedes aislar las funciones puras que obtendrán la lógica de tu negocio de las funciones que se llaman mutables, que son operaciones que realmente cambian el objeto, como modificar datos en una base de datos, por ejemplo.
Otro beneficio es que, al basarse en funciones matemáticas, el paradigma funcional impulsa el uso del concepto de inmutabilidad. Un ejemplo de esto sería una función matemática simple, como f(x) = x + 2. Siempre que usemos el mismo valor para esa función, proporcionará un resultado igual e inmutable.
Por eso, el mantenimiento del código y los posibles cambios son más fáciles de aplicar. Es más sencillo agregar pruebas y aislar una función para realizar análisis y corregir fallas.
Además de eso, los lenguajes funcionales son más amigables para la implementación de la computación paralela, lo que significa que diferentes procesadores ejecutan sin problemas diferentes partes del sistema. Esto se puede explicar por el hecho de que los códigos son predecibles e inmutables, sin efectos secundarios.
¿Cómo utilizamos la programación funcional en Nubank?
Cuando se fundó Nubank en 2013, buscamos tecnología que pudiera ayudarnos a alcanzar nuestros objetivos comerciales, mantener la eficiencia y crecer de manera segura y sostenible.
En ese momento, el paradigma funcional parecía ser la mejor opción para los desafíos que teníamos que afrontar. Por eso, terminamos adoptando Clojure como lenguaje principal para nuestros servicios y Datomic como nuestra base de datos.
El paradigma funcional también ayuda en el proceso de internacionalización de Nubank. La lógica del sistema financiero de un país puede ser diferente de la lógica de otro, pero no es necesario construirlo desde cero. Basta con reescribir la lógica del sistema financiero y reutilizar las otras partes del sistema.
Es importante decir que utilizar un lenguaje funcional facilita las cosas, pero no es lo único necesario para alcanzar ese objetivo. En ello también influye el concepto de plataforma que utilizamos y el modelo C4.
De esa manera, podemos utilizar todos los beneficios de la programación funcional para crear soluciones que devuelvan a las personas el control sobre su propio dinero, independientemente del país en el que se encuentren.
Descubre las oportunidades