Tecnologia além do código.
Régys Borges da Silveira

Delphi na Era da IA – Engenharia de Prompt para Delphi: Como Garantir Código Object Pascal Compilável e Moderno

delphi na era da ia
Neste artigo 13 tópicos

A linguagem Delphi (Object Pascal) possui um histórico de quase 30 anos, abrangendo desde o lendário Delphi 7 até o moderno Delphi 13. Essa longevidade é uma faca de dois gumes para a Inteligência Artificial: o conjunto de dados de treinamento contém tanto código legado (ANSI strings, ponteiros manuais) quanto código moderno (Generics, Inline Variables, métodos anônimos).

Sem uma Engenharia de Prompt precisa, a IA tende a alucinar, misturando sintaxes incompatíveis ou sugerindo componentes que não existem na sua instalação. Este artigo detalha como estruturar seus pedidos para obter código limpo, seguro e compilável.

O Contexto Temporal: Especificando a Versão do Compilador

O erro mais comum ao pedir código Delphi é assumir que “Delphi” é uma entidade única. As diferenças sintáticas e de biblioteca entre as versões são massivas.

O Problema

Se você pedir “Crie uma lista de strings”, a IA pode lhe dar um TStringList (clássico) ou um TList<string> (Genérico). Se você estiver no Delphi 7, o código com Generics não compilará. Se estiver no Delphi Alexandria, usar TStringList para tudo pode ser considerado débito técnico.

A Técnica de Prompt

Sempre inicie seu prompt definindo a “Era do Compilador”.

  • Para código Legado: “Atue como um especialista em Delphi 7. Use apenas sintaxe compatível com ANSI Strings e evite Generics.”
  • Para código Moderno: “Atue como um sênior em Delphi 11 Alexandria ou superior. Utilize Generics, Inline Variables e inferência de tipos sempre que possível.”

Exemplo Prático:

Prompt Ruim: “Como faço um loop numa lista?”

Prompt Bom: “Estou usando Delphi 10.4 Sydney. Escreva um loop for-in para iterar sobre um TObjectList<TPerson>. O código deve compilar nesta versão específica.”

O Ecossistema: RTL/VCL vs. Componentes de Terceiros

O Delphi é famoso por sua vasta gama de componentes (JEDI, TMS, DevExpress). No entanto, a IA frequentemente sugere soluções baseadas em bibliotecas que você pode não ter instaladas, resultando no erro File not found: ‘Jv….dcu’.

O Problema

A IA tenta resolver o problema da forma mais fácil encontrada no seu dataset. Muitas vezes, a solução mais fácil envolve uma função pronta da biblioteca Indy ou JCL, quando você precisa de uma solução nativa System.SysUtils.

A Técnica de Prompt

Defina as Restrições de Dependência explicitamente.

  • Restrição Estrita: “Use apenas a RTL (Runtime Library) e VCL padrão. Não use bibliotecas de terceiros como JEDI ou Indy.”
  • Restrição de Framework: “O código deve ser compatível com FireMonkey (FMX) para cross-platform, não use unidades Vcl.* (como Vcl.Dialogs).”
  • Permissão Explícita: “Você pode utilizar a biblioteca RestRequest4Delphi para a requisição HTTP.”

Higiene de Código: Try/Finally e a Maldição do “With”

Object Pascal não possui Garbage Collection automático para classes (exceto interfaces e strings). O gerenciamento de memória é manual. Além disso, certas construções sintáticas antigas prejudicam a legibilidade e o debug.

A Maldição do With

O uso da cláusula with é amplamente desencorajado na comunidade moderna por tornar o código ambíguo e difícil de depurar. A IA adora usar with para “economizar tokens”.

  • Comando: “Proibido usar a cláusula with. Instancie objetos e acesse suas propriedades explicitamente.”

O Bloco de Proteção (Try/Finally)

A IA frequentemente esquece de liberar a memória ou coloca o Free fora de um bloco de proteção, o que causa Memory Leaks em caso de exceção.

  • Comando: “Garanta que todo objeto instanciado seja protegido por um bloco try...finally para assegurar a chamada do método .Free (ou FreeAndNil), mesmo se ocorrerem erros.”

O Template de Prompt Ideal (“The Golden Prompt”)

Para obter o melhor resultado, combine os tópicos acima em um template estruturado. Copie e adapte o modelo abaixo:

Template:

Role: Atue como um Arquiteto de Software Delphi Sênior. Ambiente: Estou utilizando o Delphi 11 Alexandria. Tarefa: Crie uma função que [Descreva a funcionalidade, ex: leia um JSON e salve em um arquivo CSV]. Restrições Técnicas:

  1. Use apenas bibliotecas nativas (System.JSON, System.Classes). Nada de componentes de terceiros.
  2. NÃO utilize a cláusula with.
  3. Aplique tratamento de exceção robusto e use try...finally para evitar memory leaks.
  4. Use recursos modernos como Inline Variables se aplicável.
  5. Comente o código explicando a lógica.

Referências

Versionamento e Sintaxe

  • Object Pascal Handbook de Marco Cantù (Product Manager do Delphi).
  • O livro explicita a introdução de Generics no Delphi 2009 e Inline Variables no Delphi 10.3 Rio. Pedir código sem especificar a versão pode gerar sintaxe inválida (ex: declarar variáveis no meio do bloco begin..end em versões anteriores ao Rio).

Evitar With

  • Embarcadero Quality Portal e Diretrizes de “Clean Code in Delphi”.
  • O uso de with remove a clareza do escopo. Se você tem with Button1 do Caption := 'X', e o formulário também tem uma propriedade Caption, o compilador pode se confundir ou, pior, o depurador não consegue inspecionar o valor corretamente. É um consenso de Code Smell na comunidade sênior.

Gerenciamento de Memória (Try/Finally)

  • Documentação Oficial (DocWiki) – tópico “Memory Management”.
  • Diferente de Java ou C#, classes em Delphi (herdeiras de TObject) residem no Heap e não são gerenciadas automaticamente (exceto em plataformas móveis com ARC antigo, que foi removido no Delphi 10.4 para unificar o modelo de memória). Portanto, o padrão Create -> Try -> Finally -> Free é mandatório para evitar vazamentos de memória.

RTL/VCL vs. FireMonkey

  • Hierarquia de Units da Embarcadero.
  • Unidades como Vcl.Dialogs dependem da API do Windows (Win32/Win64). Tentar usá-las em um projeto Android (que requer FMX.Dialogs) causará erro de compilação imediato. A distinção explícita no prompt é necessária pois a IA não sabe qual framework você escolheu ao criar o projeto (“VCL Application” vs “Multi-Device Application”).
Compartilhar por e-mail

2 comentário(s)

Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Um próximo passo para cada interesse.

Continue estudando com os livros, acompanhe as videoaulas ou consulte as soluções para o seu projeto.

Descubra mais sobre Régys Borges da Silveira

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo