Cos'è la programmazione automatica?
La programmazione automatica in informatica e ingegneria informatica si riferisce alla produzione di codice di programmazione informatica da parte di alcuni sistemi o software in risposta a input o comandi dell'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 che può concretamente eseguire 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 in modo intuitivo un'applicazione completa basata solo sulla direzione minima del programmatore. La programmazione automatica può essere utilizzata in alcuni campi di 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 auto-modificare il proprio codice per migliorare la funzionalità.
La definizione di programmazione automatica è piuttosto vaga. È stato originariamente utilizzato durante i primi anni della programmazione per computer per descrivere la traduzione di istruzioni astratte simili a linguaggi di assemblaggio in codice macchina espanso. Questo era chiamato programmazione automatica perché il compilatore avrebbe sostituito automaticamente una singola istruzione leggibile dall'uomo con dozzine o più istruzioni di codice macchina, essenzialmente scrivendo automaticamente il programma in modo primitivo. Le stesse azioni vengono ancora eseguite dai compilatori di linguaggio nella maggior parte dei casi, indipendentemente dal linguaggio di programmazione sovrapposto utilizzato.
Un altro uso del termine "programmazione automatica" è descrivere la generazione automatica di codice. Questo è quando un ambiente di sviluppo integrato (IDE) o altri strumenti possono essere utilizzati 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 può quindi produrre automaticamente il codice sorgente funzionale per ottenere il risultato senza ulteriori input dal programmatore.
In alcuni casi, la programmazione automatica si riferisce anche allo studio di come implementare le lingue a un livello così alto che il codice sorgente assomiglia al linguaggio naturale. Un linguaggio di programmazione come questo produrrebbe quindi automaticamente l'applicazione in base all'ampio input del programmatore. Indipendentemente da quanto automatico diventi un linguaggio, tuttavia, va notato che a un certo punto il programmatore deve modificare manualmente il codice per funzionalità specifiche utilizzando il linguaggio di programmazione stesso.
Nel campo dell'intelligenza artificiale, alcune ricerche sono condotte allo sviluppo di un sistema in grado di programmare automaticamente se stesso per aggiungere capacità che in origine non erano state fornite. Ciò si estende anche agli IA in grado di scrivere software indipendenti in grado di risolvere un problema specifico. Un'applicazione sarebbe quella di creare un linguaggio di programmazione che potesse usare l'IA per generare prototipi di programmi veloci.