La metaprogrammazione è il processo di scrittura di programmi per computer che, a loro volta, scrivono altri programmi. Il processo di metaprogrammazione consente una maggiore flessibilità ai programmatori di computer perché il lavoro solitamente svolto durante il periodo di runtime è allocato al periodo di compilazione. Questo processo libera il tempo del programmatore per concentrarsi su altre attività perché riduce il tempo necessario per scrivere manualmente il codice di un programma. La ricompilazione non è necessaria perché la metaprogrammazione consente ai programmi di affrontare nuove situazioni con maggiore efficienza. “Metalinguaggio” è il termine dato al linguaggio del computer utilizzato dal metaprogramma.
Il linguaggio degli oggetti è il linguaggio del computer di quei programmi scritti dal processo di metaprogrammazione. La riflessività è un termine dato al metalinguaggio, che può anche portare alla metaprogrammazione. La metaprogrammazione funziona in vari modi. Un modo è che l’interfaccia di programmazione dell’applicazione consenta al codice di programmazione di accedere all’interno del motore di runtime.
Un altro modo in cui funziona la metaprogrammazione è consentire ai programmi di scrivere altri programmi attraverso il processo di esecuzione dinamica. In questo caso, in questo processo vengono utilizzate espressioni di stringa. Sebbene la stessa lingua possa essere utilizzata in questi due processi, non è insolito che le lingue favoriscano un processo rispetto all’altro.
La metaprogrammazione funziona anche aggirando il linguaggio. Consente l’alterazione dei linguaggi attraverso sistemi di trasformazione dei programmi. Questa procedura dà alla metaprogrammazione la libertà di usare i linguaggi anche se il linguaggio non impiega alcuna caratteristica di metaprogrammazione.
Non è necessario un codice sorgente per la metaprogrammazione. Può essere eseguito da una compilazione incrementale o da programmi modificabili in runtime. Il linguaggio informatico Lisp è il linguaggio preferito per il processo di metaprogrammazione. Ciò è dovuto alla semplicità di questo tipo di linguaggio informatico e alla sua potenza.
La metaprogrammazione che utilizza il linguaggio Lisp funziona consentendo la valutazione del codice durante il periodo di definizione del programma, in contrasto con il periodo di runtime. Questo processo rende il linguaggio di metaprogrammazione e il linguaggio di programmazione host lo stesso. Quando ciò si verifica, queste routine Lisp possono essere riciclate per il processo di metaprogrammazione.
Altre lingue hanno utilizzato questo esatto processo con l’integrazione di un interprete di programma. Questo interprete lavora con i dati nel programma. I linguaggi di programmazione specifici del dominio nella metaprogrammazione sono un’altra forma che crea parser e analizzatori lessicali. Questi consentono all’utente di utilizzare espressioni regolari per definire la lingua.