プログラムの[[ランタイム]]時に、プログラム自身の構造を読み取ったり書き換えたりする技術。 [[C++]]や[[Rust]]のように機械語へ[[コンパイル]]される言語ではサポートされることは少ない。これは、ソースコードが[[コンパイル]]されると、構造などの[[メタデータ]]は低レベルコードに変換される過程で失われてしまうからである。