Refleksiya
Refleksiya – proqramlaşdırmada: proqramın icrası zamanı öz strukturunu və hərəkətlərini izləyə və dəyişdirə bildiyi proses. İnikasın əsaslandığı proqramlaşdırma paradiqması refleksiv proqramlaşdırma adlanır. Bu, metaproqramlaşdırmanın növlərindən biridir.
Müasir kompüter arxitekturalarının əksəriyyətində proqram kodu (CODE) verilənlər (DATA) kimi saxlanır. Kod və verilənlər arasında fərq ondan ibarətdir ki, kompüterlər kodu yerinə yetirməklə verilənləri emal edir. Başqa sözlə, kod (göstərişlər) yerinə yetirilir, verilənlər isə bu göstərişlərə uyğun olaraq emal olunur. Fəqət bəzi dillərdə yazılmış proqramlar öz göstərişlərini (INSTRUCTION) verilənlər kimi emal etmək və, beləliklə də, refleksiv modifikasiyaları yerinə yetirmək imkanına malikdir. Belə özünü modifikasiya edən proqramlar, əsasən, virtual maşından istifadə edən yüksək səviyyəli proqramlaşdırma dilləri (məsələn, SMALLTALK, skriptli dillər) vasitəsilə yaradılır. Refleksiyadan bir az aşağı səviyyədə Java, C, ML, Haskell kimi dillərdə istifadə olunur.
// Refleksiyasız
new Foo().Hello();
// Refleksiya ilə
Type type=System.Type.GetType("Foo");
var foo=Activator.CreateInstance(type);
foo.GetType().GetMethod("Hello").Invoke(foo, null);
R-14.