La programmazione automatica in informatica e ingegneria informatica si riferisce alla produzione di codice di programmazione informatica da parte di un sistema o software in risposta a input o comandi utente più astratti. In un certo senso, la programmazione automatica descrive qualsiasi situazione in cui un computer o un software sostituirà un’istruzione immessa da un programmatore con un blocco di codice in grado di eseguire concretamente le azioni descritte nell’istruzione. Se utilizzata in un altro senso, la programmazione automatica può descrivere l’obiettivo di creare un linguaggio o un sistema di programmazione in grado di assemblare intuitivamente un’applicazione completa basata solo sulla minima direzione del programmatore. La programmazione automatica può essere utilizzata in alcuni campi della ricerca informatica per fare riferimento al processo di progettazione di un sistema di intelligenza artificiale (AI) in grado di produrre autonomamente un programma per completare un’attività o di modificare autonomamente il proprio codice per migliorarne la funzionalità.
La definizione di programmazione automatica è alquanto vaga. Originariamente era usato durante i primi anni della programmazione di computer per descrivere la traduzione di istruzioni astratte simili a linguaggio assembly in codice macchina espanso. Questa era chiamata programmazione automatica perché il compilatore sostituiva automaticamente una singola istruzione leggibile dall’uomo con dozzine o più istruzioni di codice macchina, essenzialmente scrivendo automaticamente il programma in modo primitivo. Nella maggior parte dei casi, le stesse azioni vengono ancora eseguite dai compilatori di linguaggi, indipendentemente dal linguaggio di programmazione utilizzato per la sovrapposizione.
Un altro uso del termine “programmazione automatica” è descrivere la generazione di codice automatizzata. Questo è quando un ambiente di sviluppo integrato (IDE) o un altro strumento può essere utilizzato visivamente, o in un modo molto semplice, per specificare come un utente finale vedrebbe un programma. Una volta creato il risultato desiderato, il software o l’IDE possono quindi produrre automaticamente codice sorgente funzionale per ottenere il risultato senza ulteriori input da parte del programmatore.
In alcuni casi, la programmazione automatica si riferisce anche allo studio di come implementare linguaggi a un livello così elevato che il codice sorgente sembra un linguaggio naturale. Un linguaggio di programmazione come questo quindi produrrebbe automaticamente l’applicazione in base all’ampio input del programmatore. Non importa quanto automatico diventi un linguaggio, tuttavia, va notato che il programmatore ha bisogno a un certo punto di modificare manualmente il codice per funzionalità specifiche utilizzando il linguaggio di programmazione stesso.
Nel campo dell’intelligenza artificiale, vengono svolte alcune ricerche sullo sviluppo di un sistema in grado di programmarsi automaticamente per aggiungere funzionalità che originariamente non erano state fornite. Ciò si estende anche alle IA in grado di scrivere software indipendente in grado di risolvere un problema specifico. Un’applicazione sarebbe quella di creare un linguaggio di programmazione che potrebbe utilizzare l’intelligenza artificiale per generare prototipi di programmi veloci.