Ícone do site Café Codificado

Ai está o 4GL que estávamos esperando?

hands of children reach up to giant soap bubble as it pops against blue sky

Quando eu era um jovem engenheiro, havia um programador velho e áspero chamado Larry que frequentemente nos transmitia sua sabedoria a nós jovens. Um homem aos quarenta anos, ele tinha aquela maneira corajosa e visto, que sobra anos de batalhas duras nas trincheiras de codificação. O dele era um coração de ouro coberto por uma capa de cinismo; Imagine Philip Seymour Hoffman como um programador Perl.

Durante sua décima quarta xícara de café, Larry dispensaria suas ruminações sobre a vida da codificação, as realidades dos projetos (e gerentes de projeto) e as virtudes de vi versus emacs. Uma coisa que ele disse: que ficou comigo todos esses anos foi que as línguas de quarta geração (4GL) nunca haviam funcionado e nunca o faria.

Como a maioria dos desenvolvedores de software, estou brincando nos jardins do código gerado pela IA há alguns anos. Estou começando a me perguntar: é isso? Chegamos à tão esperada utopia de 4GL?

O que é 4GL?

A Wikipedia tem um boa visão geral do conceito de linguagem de quarta geraçãoque deveria varrer o software como uma revelação. Entre outras coisas, o 4GLS às vezes é descrito como “idiomas geradores de programas”. Eles são uma abstração de nível superior de idiomas familiares de terceira geração como Java e JavaScript e tendem a se concentrar na sintaxe de linguagem mais natural.

Termos como Interface de linguagem natural e Geração de programas Certamente soa como IA generativa, não é? Havia até um livro escrito em 1981 chamado Desenvolvimento de aplicativos sem programadoresque previu um futuro em que a inteligência artificial substituiria os desenvolvedores humanos.

Mas 4GLs reais como FOCOjuntamente com derivados modernos, como editores WYSIWYG, estruturas de desenvolvimento de aplicativos Rapid (RAD) e plataformas de baixo código/código sem código, todos não conseguem cumprir essa promessa por um motivo simples: todos eles exigem um desenvolvedor que sabe como usá-los. Mesmo com soluções de codificação de linguagem natural, há momentos em que alguém precisa ser capaz de entrar no sistema subjacente e consertá -lo. (Veja minha recente revisão de código ROO para obter mais informações sobre isso.)

4GL e IA generativa

A maioria dos não programadores concorda que o uso de uma solução derivada de 4GL parece muito com a programação. Mesmo uma estrutura WYSIWYG RAD requer um pensamento considerável e algum conhecimento dos conceitos de programação. Você precisa de um entendimento básico de dados e esquemas (sim, mesmo com o NOSQL), o middleware que conecta um armazenamento de dados à interface e à própria interface. Você também precisa entender a relação entre serviços e APIs e a infraestrutura que os permite e protege.

Isso também parece ser verdade ao usar modelos de idiomas grandes (LLMs) para gerar código, mas em menor grau. As descrições de linguagem natural muito amplas da funcionalidade não são terrivelmente eficazes. O que é mais eficaz ao programar com IA, na minha experiência, é um processo iterativo que entra e sai de graus de granularidade variados.

Quanto mais pressionamos as abstrações para lidar com a complexidade, mais evidente se torna que um ser humano proficiente ainda deve dirigir o próprio trabalho. Compreender os detalhes suavizados pela abstração se tornam mais importantes quando cada uma das peças e todas as suas inter -relações são esticadas.

Ao trabalhar diretamente nos detalhes de um componente, o uso de uma ferramenta 4GL para interagir com ele pode parecer tentar fazer obras detalhadas com luvas volumosas. Eu acho que a maioria dos programadores experientes diria o mesmo sobre o uso de um assistente de codificação de IA.

O que ai acerta

Não me entenda mal: é incrivelmente útil poder pedir a uma ferramenta de IA para cuspir uma função decente que faz exatamente o que você precisa, e um estudo recente mostra que mais desenvolvedores seniores estão aproveitando ao máximo os recursos da IA. Mas quanto mais amplamente a Shotgun AI Power em problemas complexos, mais criamos algo que parece uma dívida técnica. Talvez um termo melhor neste caso seja dívida de compreensão.

A IA é uma ótima ferramenta para interface com o conhecimento geral sobre design e arquitetura. A capacidade de trazer código e conceitos de programação para um quadro comum é uma grande vantagem da IA ​​e 4GL. Mas, para alavancar qualquer ferramenta, o usuário deve ter algum entendimento básico dos conceitos de programação e como eles são aplicados.

Sem a vontade de concluir

As abstrações de ordem superior tendem a se destacar na prototipagem, mas não são tão adequadas ao desenvolvimento do produto final em produção. Esse último ato tende a exigir uma ou mais pessoas que não apenas entendem a infraestrutura subjacente, mas também têm o que chamo de vontade de conclusão.

O que estou dizendo é que você precisa de alguém que aceite qualquer mecanismo fornecido e dirija em direção a uma meta prevista e que continuará se adaptando e avançando até que esse objetivo seja alcançado. Esta é uma característica exclusiva humana que não pode ser abstraída. Como o 4GL, a inteligência artificial pode servir esse fim, mas não pode dirigir.

Um programador humano traz algo para a mesa que eu chamarei cuidadosotambém conhecido como “dando um @#^$”. Todo desenvolvedor experiente já notou da maneira que a IA apenas entregará com confiança a solução errada repetidamente ou quebrará uma coisa enquanto conserta outra. Isso ocorre porque a IA não se importa com o resultado.

Quando a preguiça leva a mais trabalho

É um paradoxo estranho que quanto mais você precisa da IA, menos útil é. Os desenvolvedores de software experientes podem usar com confiança a IA porque, quando der errado, podemos simplesmente pular lá e consertá -lo. Anos de experiência em programação facilitam a ver onde a inteligência da máquina está saindo dos trilhos. Mas quando desenvolvedores menos experientes confiam na IA, eles estão menos equipados para pegar os erros. Este é o perigo de “programação preguiçosa”, por grande escrito.

Como exemplo, considere minha relação disfuncional de longa data com o CSS. A verdade é que não sou muito bom nisso. Por um tempo, eu estava pensando que a assistência de codificação da IA ​​poderia resolver meu problema. Com a IA, de repente eu poderia me tornar um desenvolvedor CSS mais competente e estressado. Em vez disso, ainda sou um desenvolvedor CSS medíocre-e agora também um usuário do CSS gerado pela AI.

Eu posso continuar atrapalhando o CSS e inclinando as ferramentas de IA para me pegar quando falhar. Mas a solução real, eu descobri, é trabalhar com um ser humano Quem realmente entende o CSS de todas as maneiras que não. Tudo bem; Eu gosto dessas pessoas e gosto de trabalhar com elas. Eles são seres mágicos, como aqueles que podem cozinhar massas corretamente.

Conclusão

O sonho da IA ​​se parece muito com o sonho de 4GL. Claramente, a IA alcançou mais significado em seus efeitos práticos do que o 4GLS já o fez. Mas as limitações e as linhas de falha são semelhantes o suficiente para merecer nossa atenção. Gostaria de saber seriamente se os vastos setores do código gerado pela IA apenas aumentarão a demanda por mais conhecimentos de engenharia de software-varia as mãos como Larry, que permanecem céticas, que isso levará a muito.

Sair da versão mobile