¿Por qué se cambió la programación estructurada por la programación orientada a objetos?, Un experto responde: para administrar la complejidad.
Resulta que los programadores tienen una posición muy curiosa en la vida. Todos usan computadores y por lo tanto, todos usan programas, pero la habilidad especifica de crear un programa no los prepara para tan siquiera empezar a entender muchas de las aplicaciones que los demás necesitan. Ellos, los profesionales de todo el resto de asuntos, recurren a los programadores y les dicen sus necesidades, y se supone que de algún modo, ellos los programadores, van a poder traducir esas ideas a código. Un día pueden estar trabajando en un banco, al otro en una petrolera, y unos años después de pronto en una automotriz (y solo estoy mencionando algunos ejemplos posibles) entonces, te pregunto yo, ¿Cómo le haces? ¿Cómo pones orden en tan variados asuntos?
Las técnicas de programación son todas ellas, intentos de organizar la complejidad. La programación estructurada dejaba presentar diagramas de flujo a los clientes, y entender nuestros programas mejor gracias a que todo era una aplicación de tal o cual estructura de control. Sin embargo, con el tiempo, las aplicaciones desbordaron la capacidad de la programación estructurada de mantener algún sentido de orden sobre el códigos.
Otro tanto pasó con la programación orientada a objetos. Si todo se reduce a tal o cual objeto, quizás podríamos hacer programas más grandes y complejos. Funcionó. Por un tiempo. Hoy en día hay aplicaciones cuya complejidad excede a lo que se puede trabajar con la programación orientada a objetos.
Sea lo que sea que estemos usando en unos diez años (programación funcional es el tema hot del momento, quizás la lógica se imponga en una década o dos) estoy seguro que la excusa para asumir esa técnica será la administración de la complejidad.
¿Qué es la programación funcional?
El nombre ya lo sugiere: la programación funcional o functional programming se centra en las funciones. En un programa funcional, todos los elementos pueden entenderse como funciones y el código puede ejecutarse mediante llamadas de función secuenciales. Por el contrario, no se asignan valores de forma independiente. Una función se imagina mejor como una variante especial de un subprograma. Esta es reutilizable y, a diferencia de un procedimiento, devuelve directamente un resultado.
Por supuesto, en muchos lenguajes de programación superiores hay funciones que se definen y después se aplican. Por esto, esta no es la característica especial de la programación funcional. Lo que hace que la estrategia funcional sea tan importante para la informática y a la vez tan versátil es el hecho de que las funciones dentro de este paradigma de programación pueden adoptar diferentes “formas”: estas pueden enlazarse entre sí como los datos y utilizarse como parámetro y como resultado de la función. Este tratamiento especial de las funciones permite a los programadores implementar y procesar tareas computacionales muy complejas (especialmente las de naturaleza simbólica).