Što je metaprogramiranje?

Metaprogramiranje je proces pisanja računalnih programa koji zauzvrat pišu druge programe. Proces metaprogramiranja omogućuje veću fleksibilnost računalnim programerima jer se rad koji se obično obavlja tijekom razdoblja izvođenja dodjeljuje vremenskom razdoblju kompilacije. Ovaj proces oslobađa programeru vrijeme da se usredotoči na druge zadatke jer smanjuje vrijeme potrebno za ručno pisanje koda programa. Ponovno prevođenje nije potrebno jer metaprogramiranje omogućuje programima da se s većom učinkovitošću rješavaju novih situacija. “Metalanguage” je izraz koji se daje za računalni jezik koji metaprogram koristi.

Objektni jezik je računalni jezik onih programa koji su napisani procesom meta programiranja. Refleksivnost je izraz koji se daje metajeziku, koji također može dovesti do metaprogramiranja. Metaprogramiranje djeluje na različite načine. Jedan od načina je da sučelje za programiranje aplikacije omogući programskom kodu pristup unutrašnjosti stroja za izvršavanje.

Drugi način na koji funkcionira metaprogramiranje je dopuštanje programima da pišu druge programe kroz proces dinamičkog izvršavanja. U ovom se slučaju u ovom procesu koriste izrazi stringova. Iako se isti jezik može koristiti u ova dva procesa, nije neobično da jezici daju prednost jednom procesu u odnosu na drugi.

Metaprogramiranje također funkcionira tako što zaobilazi jezik. Omogućuje promjenu jezika kroz sustave za transformaciju programa. Ovaj postupak daje metaprogramiranju slobodu korištenja jezika čak i ako jezik ne koristi nikakve karakteristike metaprogramiranja.

Za metaprogramiranje nije potreban izvorni kod. To se može učiniti inkrementalnom kompilacijom ili programima koji se mogu mijenjati tijekom izvođenja. Računalni langaugae Lisp je omiljeni jezik za proces metaprogramiranja. To je zbog jednostavnosti ove vrste računalnog jezika kao i njegove snage.

Metaprogramiranje koje koristi jezik Lisp funkcionira tako što omogućuje evaluaciju koda tijekom vremenskog razdoblja definicije programa, za razliku od razdoblja izvođenja. Ovaj proces čini metaprogramski jezik i glavni programski jezik istim. Kada se to dogodi, ove Lisp rutine mogu se reciklirati za proces metaprogramiranja.
Drugi jezici su koristili upravo ovaj proces s integracijom programskog tumača. Ovaj tumač radi s podacima u programu. Programski jezici specifični za domenu u metaprogramiranju su još jedan oblik koji stvara parsere i leksičke analizatore. Oni omogućuju korisniku korištenje regularnih izraza za definiranje jezika.