Programação visual é um tipo de linguagem de programação que permite ao ser humano descrever processos usando ilustração. Enquanto uma típica linguagem de programação baseada em texto faz o programador pensar como um computador, uma linguagem de programação visual permite ao programador descrever o processo em termos que fazem sentido para os humanos.
O tamanho da lacuna entre programação visual e programação tradicional depende da ferramenta de programação visual. Num extremo, a ferramenta protege o programador quase inteiramente do espaço entre o pensamento humano e os computadores baralhando bits em torno da memória.
Aqui está um exemplo. Para criar uma lista de afazeres com uma ferramenta de programação visual, o programador desenha o fluxo da aplicação. O fluxograma resultante descreve telas, interações do usuário e o que acontece com os dados em cada estágio. A ferramenta então transforma isso em software.
Como desenvolvedores, sabemos que as linguagens de programação baseadas em texto focam inteiramente na implementação: é tudo sobre os passos precisos que o computador deve tomar para criar a experiência que queremos dar ao usuário. Claro, linguagens de nível superior e frameworks modernos nos dão atalhos convenientes. Mas, o trabalho do desenvolvedor é traduzir as necessidades humanas em processos que se ajustem às capacidades limitadas do computador.
Outras ferramentas de codificação visual seguem os mesmos processos e paradigmas da programação baseada em texto. Imagine desenhar uma classe e sua relação com os objetos instanciados, ao invés de digitar tudo isso em um editor de texto.
Tudo isso parece ótimo! Mas, você pode perguntar, onde estão todos os programadores visuais? Porque é que ainda estamos a escrever código à mão? Isso significa que a programação visual é uma má ideia?
Antes de responder a estas perguntas e mergulhar no estado da programação visual de hoje, precisamos entender o que é realmente programação visual: de onde veio, como evoluiu e porquê.
Descobre a próxima geração de ferramentas de desenvolvimento visual
Um breve histórico de software de programação visual
Embora a história pareça mostrá-la, não é justo dizer que a programação visual nos anos 90 estava confinada a kits de criação de jogos, ferramentas multimídia e bancos de dados. A Rational Software (que foi adquirida pela IBM em 2003) vinha construindo uma IDE Ada não-GUI desde meados da década de 80. Além disso, eles também viraram sua mão para definir o processo de desenvolvimento de software. O trabalho no seu Processo Racional Unificado e os esforços relacionados acabaram por conduzir à Linguagem Unificada de Modelação que tinha o potencial de documentar cada última parte de um sistema sem nunca escrever uma linha de código. Parecia programação visual mas sem produzir software executável.
UML forneceu uma linguagem padronizada e abrangente para descrever sistemas orientados a objetos. No entanto, a febre UML atingiu alguns arquitectos. O co-autor de The Pragmatic Programmer, Andy Hunt, conta a história de um projeto de software onde um arquiteto passou dois anos criando diagramas UML antes mesmo que uma linha de código fosse escrita.
Apenas como o ágil estava ganhando força, UML parecia habilitar todos os piores aspectos das antigas maneiras de construir software: muito planejamento e muito pouca implementação. UML executável era uma tentativa de adicionar aquela peça que faltava – o software executável. Várias implementações surgiram, mas sem causar muito impacto em um mundo que estava rapidamente mudando seu foco para PHP, Ruby on Rails e outras linguagens de script dinâmico.
Interessantemente, uma forma de UML executável que ficou por aí também saiu da Rational Software. Rational Rose é um conjunto de ferramentas para criar software usando UML e gerar código executável em uma linguagem de destino, como C++ ou Java.
Back to the Future: O Estado da Programação Visual Hoje
Baseado no que a história nos mostra, você pode estar se perguntando: a programação visual está morta? Os entusiastas da programação visual dir-lhe-ão que está longe de estar morto. Pergunte-lhes “o que é programação visual?” e primeiro, eles vão nomear uma obscura ferramenta específica de domínio. Depois, dir-lhe-ão que essa ferramenta é a prova de que está viva e a dar pontapés. Enquanto isso, você estará procurando por ela freneticamente no Google. Como resultado, você aprenderá não apenas sobre a ferramenta que eles mencionaram, mas também sobre o mundo altamente especializado no qual ela existe.
Sem dúvida, a programação visual tem o seu papel, quer seja programar sintetizadores ou dar aos entusiastas da UML uma sensação de realização. Para o software de propósito geral, no entanto, o mundo é demasiado complexo para modelar puramente visualmente. Quando seu “código” parece um diagrama de circuito da CPU, talvez seja hora de repensar a adequação da programação visual à tarefa.
Simplesmente, software de programação visual tende a ser limitado pela imaginação do criador de uma forma que não atrapalhe as linguagens de programação textuais de propósito geral.
E ainda ferramentas como Visual Basic, Delphi, e seus descendentes nos mostraram que construir software visualmente pode ser enormemente eficiente; é que existe um trade-off pragmático onde, às vezes, código escrito a mão é a solução certa.
Superstars vs. Teams: Uma Nova Vida para as Linguagens de Programação Visual?
Os primeiros dias de programação foram difíceis, isso é certo. Mas uma pessoa podia entender e ser especialista em tudo o que era necessário para criar aquele software. Se você tem idade suficiente, pense nos títulos dos softwares dos anos 80. Era comum um único programador tornar-se uma marca por direito próprio.
Sid Meier, Mitch Kapor e Jeff Minter ganharam algum nível de fama ao criar aplicações ou jogos bem conhecidos de uma só mão ou, no máximo, com um outro colaborador. Naquela época, os ciclos de atualização de software e hardware levavam anos. Hoje, nós brincamos que há uma nova biblioteca JavaScript todos os dias. No entanto, há alguma verdade na ideia de que o desenvolvimento de software moderno se move a um ritmo que muitos de nós não conseguem acompanhar.
Hoje, o software é largamente construído por equipas de especialistas. Enquanto os primeiros desenvolvedores faziam tudo eles mesmos, uma equipe moderna de desenvolvimento de software poderia ter uma pessoa cujo único trabalho é cuidar da ferramenta de IC. Desenvolvedores passam carreiras inteiras focadas em um framework ou plataforma. Desenvolvedores iOS são desenvolvedores iOS, não desenvolvedores móveis. Uma ou duas vezes por década, talvez, um desenvolvedor web possa mudar seu framework preferido. Muito poucas pessoas estão escrevendo manualmente linguagem de montagem profissionalmente.
Não é apenas que o escopo do software tenha mudado. Até certo ponto, os próprios desenvolvedores também mudaram. Engenheiro de software é apenas mais uma carreira hoje em dia. Em décadas passadas, foi uma paixão mantida por algumas pessoas que tiveram a dedicação de aprender um sistema inteiramente novo para poderem escrever o porto Atari ST, por exemplo, do seu bem sucedido jogo Amiga. Mas isso é compreensível: a informática já não é um nicho.
Hoje em dia, temos um mundo onde o desenvolvimento de software é composto por partes cada vez mais complexas e onde os programadores são pessoas comuns com especializações extraordinárias. Essa complexidade e especialização são mal adaptadas à programação visual pura dessas primeiras ferramentas, mas também torna cada vez mais difícil construir equipes arredondadas de engenharia de software.
Onde os ambientes de programação visual pura falharam, há toda uma cache de ferramentas similares que pegam o melhor da programação visual e a combinam com codificação baseada em texto. Enquanto a programação visual era “sem código”, estas novas ferramentas são de código baixo.
Ferramentas como a OutSystems permitem aos desenvolvedores criar software visualmente desenhando fluxos de interação, UIs e as relações entre objetos, mas complementando-o com código escrito à mão onde isso é o melhor a fazer.
Esta mistura pragmática de programação visual e programação baseada em texto é bem adequada às necessidades do desenvolvimento de software moderno. Plataformas de código baixo reduzem a complexidade do desenvolvimento de software e nos devolvem a um mundo onde um único desenvolvedor pode criar sistemas ricos e complexos, sem ter que aprender todas as tecnologias subjacentes.
Próxima Geração de Programação Visual: Cumprindo a Promessa
A programação visual foi tão promissora e os problemas que ela queria resolver não desapareceram. Na verdade, eles são mais relevantes do que nunca.
Mas os problemas do mundo real exigem maior flexibilidade do que a programação visual poderia oferecer. O código baixo leva essa promessa e aplica-a para reduzir a complexidade que encontramos no desenvolvimento de software moderno. Então, não pergunte “o que é programação visual?”. Ao invés disso, pergunte “o que é low-code?”. Você também pode agendar uma demonstração online ou até mesmo experimentar OutSystems (é gratuito).