{
 "id": 36923,
 "slug": "2023-05-03_usar-ia-para-gerar-codigo",
 "url": "https://agents.willem.com/pt/posts/2023-05-03_usar-ia-para-gerar-codigo/",
 "source_url": "https://willem.com/pt/2023-05-03_usar-ia-para-gerar-codigo/",
 "language": "pt",
 "date": "2023-05-03",
 "published": "2023-05-03T00:00:00+02:00",
 "created": "2025-06-26T22:09:21.076000+02:00",
 "updated": "2026-10-20T09:19:38.502000+02:00",
 "title": "Usar IA para gerar código",
 "subtitle": "Programar com superpoderes",
 "summary": "No âmbito dos meus esforços de otimização de software para reduzir os custos da nuvem, precisava de substituir um software de servidor ineficiente por algo que use ferramentas mais robustas (embora fragmentadas) disponíveis no Debian GNU/Linux. Será que o modelo de linguagem GPT4 me ia dar um pouco de magia de IA? Acompanha-me!",
 "topics": [
  "AI",
  "cloud",
  "data",
  "programming",
  "server",
  "work"
 ],
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "provenance": {
  "kind": "model",
  "method": "Claude Sonnet, two passes (translation, then proofreading) against a glossary and hunspell (pt_PT)",
  "date": "2026-10-20",
  "reviewed_by_native_reader": false,
  "language": "pt",
  "source_language": "en"
 },
 "translations": [
  {
   "language": "en",
   "title": "Using AI to generate code",
   "url": "https://agents.willem.com/en/posts/2023-05-03_using-ai-to-generate-code/",
   "source_url": "https://willem.com/en/2023-05-03_using-ai-to-generate-code/"
  },
  {
   "language": "nl",
   "title": "AI gebruiken om code te genereren",
   "url": "https://agents.willem.com/nl/posts/2023-05-03_ai-gebruiken-om-code-te-genereren/",
   "source_url": "https://willem.com/nl/2023-05-03_ai-gebruiken-om-code-te-genereren/"
  },
  {
   "language": "de",
   "title": "KI-gestützte Codegenerierung",
   "url": "https://agents.willem.com/de/posts/2023-05-03_ki-gestutzte-codegenerierung/",
   "source_url": "https://willem.com/de/2023-05-03_ki-gestutzte-codegenerierung/"
  },
  {
   "language": "es",
   "title": "Usando IA para generar código",
   "url": "https://agents.willem.com/es/posts/2023-05-03_usando-ia-para-generar-codigo/",
   "source_url": "https://willem.com/es/2023-05-03_usando-ia-para-generar-codigo/"
  },
  {
   "language": "fr",
   "title": "Générer du code avec l'IA",
   "url": "https://agents.willem.com/fr/posts/2023-05-03_generer-du-code-avec-l-ia/",
   "source_url": "https://willem.com/fr/2023-05-03_generer-du-code-avec-l-ia/"
  },
  {
   "language": "it",
   "title": "Usare l'AI per generare codice",
   "url": "https://agents.willem.com/it/posts/2023-05-03_usare-l-ai-per-generare-codice/",
   "source_url": "https://willem.com/it/2023-05-03_usare-l-ai-per-generare-codice/"
  },
  {
   "language": "pap",
   "title": "Usa AI pa generá kòdigo",
   "url": "https://agents.willem.com/pap/posts/2023-05-03_usa-ai-pa-genera-kodigo/",
   "source_url": "https://willem.com/pap/2023-05-03_usa-ai-pa-genera-kodigo/"
  },
  {
   "language": "fy",
   "title": "AI brûke om koade te generearjen",
   "url": "https://agents.willem.com/fy/posts/2023-05-03_ai-bruke-om-koade-te-generearjen/",
   "source_url": "https://willem.com/fy/2023-05-03_ai-bruke-om-koade-te-generearjen/"
  }
 ],
 "image": "https://willem.com/global/images/a12a765046fa.webp",
 "image_width": 2560,
 "images": [
  {
   "url": "https://willem.com/global/images/6054ff996aac.webp",
   "description": "Gerar código é tão fácil como escrever uma instrução descritiva",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36923_images-1.png"
  },
  {
   "url": "https://willem.com/global/images/03aeba6c5949.webp",
   "description": "O código gerado pelo GPT4, “auto_rotate.sh”, que roda imagens com o ImageMagick com base na orientação EXIF",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36923_images-2.png"
  },
  {
   "url": "https://willem.com/global/images/fba52b536d22.webp",
   "description": "As instruções da IA sobre como usar o código gerado: a maioria dos programadores a sério pode aprender com a sua clareza de comunicação",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36923_images-3.png"
  },
  {
   "url": "https://willem.com/global/images/887c6d5c5349.webp",
   "description": "Um programador do futuro, imaginado pelo DALL-E da OpenAI",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36923_images-4.jpg"
  }
 ],
 "text": "Parte dos serviços na nuvem da minha empresa é o chamado “Lemmid Manager”, um sistema integrado de gestão de conteúdos que pega em material em bruto (texto, vídeos, imagens) e gera sites estáticos bonitos e de alto desempenho. Perante o aumento_dos_custos_da_nuvem (https://willem.com/en/2023-04-05_cutting-cloud-costs/), estou a reescrever partes do software para o tornar mais eficiente: usar menos poder de computação para obter os mesmos resultados.\nRotação de imagens\nPodes não ter noção disso, mas sempre que usas o telemóvel para tirar uma fotografia, ela é guardada sempre na horizontal (ou em formato panorâmico). Quando tiras uma fotografia na vertical, o telemóvel limita-se a acrescentar um bocadinho de informação extra que regista a forma como seguraste a câmara, para que, quando voltas a ver a fotografia, ela apareça com a orientação certa. É mais rápido escrever um único bit de informação (extra) do que rodar os bits e bytes que compõem a imagem.\nIsto não tem problema enquanto a fotografia não sai do telemóvel, mas quando a carregas para um site, tem de ser otimizada para a web. Os bits e bytes da imagem têm então de refletir o conteúdo real da fotografia. Depois, a imagem pode ser otimizada_ainda_mais_para_a_velocidade_de_carregamento (https://willem.com/en/2018-09-26_optimising-images-for-the-web-and-performance/) e para diferentes ecrãs.\nRotação automática de imagens com base no EXIF\nAs câmaras modernas (dos smartphones) guardam a orientação no chamado EXIF, que acompanha os dados da imagem. Para que a imagem (os bits e bytes) reflita corretamente a orientação da câmara, é preciso ler os dados EXIF e, com base na orientação, aplicar um algoritmo de rotação aos bits e bytes da imagem.\nImplementação atual\nA implementação original (escrita à mão) usa NodeJS e um módulo chamado “lwip” (LightWeight ImageProcessor) para fazer isto. Funciona bem na maioria das situações, mas, à medida que as imagens cresceram (com mais megapíxeis), as necessidades de memória aumentaram bastante. O senão de fazer tudo num único processo NodeJS é que o conjunto se torna um verdadeiro devorador de memória, e todo o backend NodeJS sofre quando o levas ao limite a processar milhares de fotografias.\nUma estratégia comum para otimizar os pontos de estrangulamento de um software é tirá-los do programa principal. Em vez de processar as imagens diretamente a partir do NodeJS, quero usar ferramentas comuns do Debian GNU/Linux (com provas dadas) para fazer a rotação automática. A partir do NodeJS posso depois chamar o 'auto_rotator' externo e esperar que acabe a tarefa. Ao fazer um processo NodeJS esperar por um resultado/callback assíncrono, ele fica novamente disponível para outros pedidos.\nGPT4 como gerador de código\nO melhor do software livre (de liberdade, não de preço) é que há imensos blocos de construção à tua disposição para criares os teus próprios programas. Eu sabia que o Debian GNU/Linux tem ferramentas capazes de rodar imagens com base nos dados EXIF. O desafio é criar um único script que use estas várias ferramentas para fazer o trabalho, com alguma robustez no tratamento de exceções.\nEm vez de me enfiar eu próprio em todos os comandos e opções de comando disponíveis, decidi pedir ao GPT4 que gerasse um script que fizesse exatamente o que eu queria, usando ferramentas padrão do Debian GNU/Linux:\nEm poucos segundos, o GPT4 da OpenAI gerou um script bash que usa o ImageMagick (https://imagemagick.org/) (uma ferramenta gráfica comum) para fazer alterações com base nos dados EXIF de um determinado ficheiro de imagem. A IA escolheu o “exiftool” para ler os dados de orientação e, com base no resultado dessa ferramenta, executar o comando “convert” do ImageMagick para aplicar a rotação certa.\nO código completo (gerado em segundos) está lindamente comentado e dá uma ótima ideia do que se passa. Está estruturado e otimizado para ser lido por humanos.\nDocumentação\nAlém do código funcional, a IA entregou documentação a explicar como usar o software acabado de gerar, incluindo instruções de instalação. É algo que a maioria dos programadores descura, eu sei (a documentação técnica costuma ficar para o fim).\nConclusão\nEm poucos minutos tinha um pedaço de código funcional e documentado que me ajuda a resolver um ponto de estrangulamento num software na nuvem. É simplesmente fantástico: poupou-me tempo (que depois usei para escrever este artigo).\nSó nos resta imaginar que efeitos terão os grandes modelos de linguagem, como o ChatGPT/GPT4, na forma como trabalhamos. Abraço totalmente as ferramentas de IA: saber usá-las vai ser essencial num futuro próximo (acho eu)!",
 "word_count": 726,
 "markdown_url": "https://agents.willem.com/pt/posts/2023-05-03_usar-ia-para-gerar-codigo/post.md"
}