La programación visual es un tipo de lenguaje de programación que permite a los humanos describir procesos utilizando ilustraciones. Mientras que un lenguaje de programación típico basado en texto hace que el programador piense como un ordenador, un lenguaje de programación visual permite al programador describir el proceso en términos que tienen sentido para los humanos.
La magnitud de la diferencia entre la programación visual y la programación tradicional depende de la herramienta de programación visual. En un extremo, la herramienta protege al programador casi por completo del espacio que existe entre el pensamiento humano y los ordenadores que barajan bits en la memoria.
He aquí un ejemplo. Para crear una lista de tareas con una herramienta de programación visual, el programador dibuja el flujo de la aplicación. El diagrama de flujo resultante describe las pantallas, las interacciones del usuario y lo que ocurre con los datos en cada etapa. A continuación, la herramienta lo convierte en software.
Como desarrolladores, sabemos que los lenguajes de programación basados en texto se centran por completo en la implementación: se trata de los pasos precisos que debe dar el ordenador para crear la experiencia que queremos dar al usuario. Por supuesto, los lenguajes de alto nivel y los frameworks modernos nos ofrecen cómodos atajos. Pero, el trabajo del desarrollador es traducir las necesidades humanas en procesos que se ajusten a las capacidades limitadas del ordenador.
Otras herramientas de codificación visual siguen los mismos procesos y paradigmas que la programación basada en texto. Imagina dibujar una clase y su relación con los objetos que instancias, en lugar de escribirlo todo en un editor de texto.
¡Todo esto suena muy bien! Pero, te preguntarás, ¿dónde están todos los programadores visuales? ¿Por qué seguimos escribiendo código a mano? Significa esto que la programación visual es una mala idea?
Antes de responder a estas preguntas y sumergirnos en el estado de la programación visual hoy en día, tenemos que entender qué es realmente la programación visual: de dónde viene, cómo ha evolucionado y por qué.
Descubra la nueva generación de herramientas de desarrollo visual
Una breve historia del software de programación visual
Aunque la historia parece demostrarlo, no es justo decir que la programación visual en la década de 1990 se limitaba a los kits de creación de juegos, las herramientas multimedia y las bases de datos. Rational Software (que fue adquirida por IBM en 2003) había estado construyendo un IDE de Ada sin interfaz gráfica desde mediados de la década de 1980. Además, también se dedicaron a definir el proceso de desarrollo de software. El trabajo en su Proceso Unificado Racional y otros esfuerzos relacionados acabaron por dar lugar al Lenguaje de Modelado Unificado, que tenía el potencial de documentar hasta la última parte de un sistema sin tener que escribir una línea de código. Se parecía a la programación visual pero sin producir software ejecutable.
UML proporcionó un lenguaje estandarizado y completo para describir sistemas orientados a objetos. Sin embargo, la fiebre de UML afectó a algunos arquitectos. El coautor de The Pragmatic Programmer, Andy Hunt, cuenta la historia de un proyecto de software en el que un arquitecto pasó dos años creando diagramas UML antes de que se escribiera siquiera una línea de código.
Justo cuando la agilidad estaba ganando impulso, UML parecía permitir todos los peores aspectos de las antiguas formas de construir software: demasiada planificación y muy poca implementación. El UML ejecutable fue un intento de añadir esa pieza que faltaba: el software ejecutable. Aparecieron varias implementaciones, pero sin causar demasiado impacto en un mundo que estaba cambiando rápidamente su enfoque a PHP, Ruby on Rails, y otros lenguajes dinámicos de scripting.
Interesantemente, una forma de UML ejecutable que se mantuvo también salió de Rational Software. Rational Rose es un conjunto de herramientas para crear software utilizando UML y generando código ejecutable en un lenguaje de destino, como C++ o Java.
De vuelta al futuro: El estado de la programación visual en la actualidad
En base a lo que nos muestra la historia, puede que te preguntes: ¿está muerta la programación visual? Los entusiastas de la programación visual le dirán que está lejos de estar muerta. Pregúnteles «¿qué es la programación visual?» y, en primer lugar, nombrarán una oscura herramienta específica del sector. Luego, te dirán que esa herramienta es la prueba de que está viva y coleando. Mientras tanto, tú lo buscarás frenéticamente en Google. Como resultado, aprenderás no sólo sobre la herramienta que han mencionado, sino también sobre el mundo altamente especializado en el que existe.
Sin duda, la programación visual tiene su papel, ya sea programando sintetizadores o dando a los entusiastas de UML una sensación de logro. Sin embargo, para el software de propósito general, el mundo es demasiado complejo para modelar de forma puramente visual. Cuando su «código» se parece a un diagrama de circuito de la CPU, tal vez sea el momento de reconsiderar la idoneidad de la programación visual para la tarea.
De manera similar, el software de programación visual tiende a estar limitado por la imaginación del creador de una manera que no obstaculiza los lenguajes de programación textual de propósito general.
Y, sin embargo, herramientas como Visual Basic, Delphi y sus descendientes nos han demostrado que la construcción de software de forma visual puede ser enormemente eficiente; es sólo que hay una compensación pragmática en la que, a veces, el código escrito a mano es la solución correcta.
Superestrellas contra equipos: ¿Una nueva vida para los lenguajes de programación visual?
Esos primeros días de la programación fueron duros, eso es seguro. Pero una sola persona podía entender y ser experta en todo lo necesario para crear ese software. Si eres lo suficientemente mayor, piensa en los títulos de software de los años 80. Era habitual que un solo programador se convirtiera en una marca por derecho propio.
Sid Meier, Mitch Kapor y Jeff Minter alcanzaron cierto nivel de fama al crear aplicaciones o juegos conocidos en solitario o, como mucho, con otro colaborador. En aquella época, los ciclos de actualización del software y el hardware duraban años. Hoy bromeamos diciendo que hay una nueva biblioteca de JavaScript cada día. Sin embargo, hay algo de verdad en la idea de que el desarrollo de software moderno se mueve a un ritmo que muchos de nosotros no podemos seguir.
Hoy en día, el software es construido en gran medida por equipos de especialistas. Mientras que los primeros desarrolladores lo hacían todo ellos mismos, un equipo de desarrollo de software moderno puede tener una persona cuyo único trabajo es ocuparse de la herramienta de CI. Los desarrolladores pasan carreras enteras centradas en un marco o plataforma. Los desarrolladores de iOS son desarrolladores de iOS, no de móviles. Una o dos veces por década, tal vez, un desarrollador web podría cambiar su marco preferido. Muy poca gente escribe manualmente en lenguaje ensamblador de forma profesional.
No es sólo que el ámbito del software haya cambiado. Hasta cierto punto, los propios desarrolladores también han cambiado. Hoy en día, el ingeniero de software es una carrera más. En décadas pasadas, era una pasión de unos pocos que tenían la dedicación de aprender un sistema completamente nuevo para poder escribir el port de Atari ST, por ejemplo, de su exitoso juego de Amiga. Pero eso es comprensible: la informática ya no es un nicho.
Hoy en día, tenemos un mundo en el que el desarrollo de software se compone de partes cada vez más complejas y en el que los desarrolladores son gente corriente con especializaciones extraordinarias. Esa complejidad y especialización se adaptan mal a la programación visual pura de aquellas primeras herramientas, pero también hace cada vez más difícil construir equipos de ingeniería de software redondos.
Donde los entornos de programación visual pura han fracasado, hay todo un alijo de herramientas similares que toman lo mejor de la programación visual y lo combinan con la codificación basada en texto. Mientras que la programación visual era «sin código», estas nuevas herramientas son de bajo código.
Herramientas como OutSystems permiten a los desarrolladores crear software visualmente dibujando los flujos de interacción, las interfaces de usuario y las relaciones entre los objetos, pero complementándolo con código escrito a mano cuando es lo mejor.
Esta mezcla pragmática de programación visual y programación basada en texto se adapta bien a las necesidades del desarrollo de software moderno. Las plataformas de bajo código reducen la complejidad del desarrollo de software y nos devuelven a un mundo en el que un solo desarrollador puede crear sistemas ricos y complejos, sin tener que aprender todas las tecnologías subyacentes.
La próxima generación de programación visual: Cumpliendo la promesa
La programación visual prometía mucho y los problemas que quería resolver no han desaparecido. De hecho, son más relevantes que nunca.
Pero los problemas del mundo real exigen mayor flexibilidad de la que la programación visual podría ofrecer. El código bajo toma esa promesa y la aplica para reducir la complejidad que encontramos en el desarrollo de software moderno. Así que no preguntes «¿qué es la programación visual?». En su lugar, pregunte «¿qué es el low-code?». También puedes programar una demo online o incluso probar OutSystems (es gratis).