Metaprogramowanie
Z Wikipedii
Metaprogramowanie jest techniką która umożliwia programom tworzenie lub modyfikację kodu innych programów (lub ich samych).
Metaprogram to program będący w stanie modyfikować lub generować kod innego programu. Wykorzystanie zasad metaprogramowania pozwala na przykład na dynamiczną modyfikację programu podczas jego kompilacji.
Metaprogramy pisze się w metajęzykach. Jeśli język jest jednoczesnie swoim metajęzykiem to taką ceche nazywamy refleksyjnością (ang. reflexivity).
Przykładem prostego metaprogramu jest ten skrypt w bashu:
#!/bin/bash # metaprogram echo '#!/bin/bash' >program for ((I=1; I<=992; I++)); do echo "echo $I" >>program done chmod +x program
Program ten generuje 993 linie, wypisujące liczby od 1 do 992. Nie jest to zbyt efektywny sposób na wypisanie liczb 1-992, ale ilustruje jak w kilka minut można stworzyć program o długości 1000 linii.
Metaprogramowanie może polegać nie tylko na generowaniu kodu, ale również na modyfikacach w czasie wykonania programu. Takie możliwości dają języki LISP, Smalltalk, PHP, Python i Ruby.