റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ്

കമ്പ്യൂട്ടർ ശാസ്ത്രത്തിൽ, റൺടൈമിൽ സ്വന്തം ഘടനയും പെരുമാറ്റവും പരിശോധിക്കുന്നതിനും, ബോധ്യപ്പെടുത്തുന്നതിനും, മാറ്റം വരുത്തുന്നതിനുമുള്ള ഒരു കമ്പ്യൂട്ടർ പരിപാടിയുടെ പ്രതിഫലനമാണ് റിഫ്ലക്ഷൻ(reflection).
ചരിത്രപരമായ പശ്ചാത്തലം
ആദ്യകാല കമ്പ്യൂട്ടറുകൾ പ്രാദേശിക അസംബ്ലി ഭാഷയിൽ പ്രോഗ്രാം ചെയ്തിരുന്നു, അവ ആധികാരികമായി പ്രതിഫലിപ്പിക്കുന്നവയാണ്, ഈ നിർദ്ദിഷ്ട ആർക്കിറ്റക്ചറുകൾ ഡാറ്റ പോലെ നിർദ്ദേശങ്ങൾ നിർവ്വചിച്ച് സ്വയം പരിഷ്കരണ കോഡ് ഉപയോഗിച്ചുകൊണ്ടാണ് പ്രോഗ്രാം ചെയ്തത്. പ്രോഗ്രാമുകൾ അൽഗോൾ, കോബോൾ, ഫോർട്രാൻ തുടങ്ങിയ ഉയർന്ന തലത്തിലുള്ള ഭാഷകളിലേക്ക് കംപൈൽ ചെയ്തു(അതുമാത്രമല്ല പാസ്കൽ, സി , മറ്റു പല ഭാഷകളും ഉൾപ്പെടുന്നു)പ്രോഗ്രാമിങ് ഭാഷകൾ തങ്ങളുടെ തരത്തിലുള്ള സംവിധാനത്തിലേക്ക് പുനർനിർമ്മിക്കുന്നതുവരെ ഈ പ്രതിഫലന ശേഷി വലിയതോതിൽ അപ്രത്യക്ഷമായി. 

1982-ൽ ബ്രയാൻ കാന്റ് വെൽ സ്മിത്തിന്റെ ഡോക്ടറേറ്റ് പ്രബന്ധം,  പ്രോസീജറൽ പ്രോഗ്രാമിങ് ഭാഷകളിൽ കംപ്യൂട്ടേഷണൽ പ്രതിഫലനം എന്ന ആശയവും, 3-ലിസ്പിന്റെ ഘടകമായി മെറ്റാ-സർകുലർ ഇന്റർപ്രെറ്റർ എന്ന ആശയവും അവതരിപ്പിച്ചു.Brian Cantwell Smith, Procedural Reflection in Programming Languages, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, PhD dissertation, 1982.Brian C. Smith. Reflection and semantics in a procedural language. Technical Report MIT-LCS-TR-272, Massachusetts Institute of Technology, Cambridge, Massachusetts, January 1982.
ഉപയോഗങ്ങൾ
പ്രതിഫലനം എന്നത് ഡാറ്റ പ്രദർശിപ്പിക്കുന്നതിന് സാധാരണ സോഫ്റ്റ്‌വേർ ലൈബ്രറികൾ, പ്രോഗ്രാമർമാരെ സഹായിക്കുന്നു. ഡാറ്റയുടെ വ്യത്യസ്ത ഫോർമാറ്റുകൾ പ്രോസസ്സ് ചെയ്യുക, ആശയവിനിമയത്തിനുള്ള ഡാറ്റയുടെ സീരിയലൈസേഷൻ അല്ലെങ്കിൽ ഡിസീരിയലൈസേഷൻ നടപ്പിലാക്കുക, അല്ലെങ്കിൽ കണ്ടെയ്നറുകൾക്ക് ഡാറ്റ കൂട്ടിച്ചേർക്കാനും ഒത്തുചേരുകയും അല്ലെങ്കിൽ ആശയവിനിമയത്തിന്റെ ആവിർഭാവം.

പ്രതിഫലനം ഫലപ്രദമായി ഉപയോഗിക്കുന്നതിന് എപ്പോഴും ഒരു പ്ലാൻ ആവശ്യമാണ്: ഒരു ഡിസൈൻ ചട്ടക്കൂട്, എൻകോഡിംഗ് വിവരണം, ഒബ്ജക്ട് ലൈബ്രറി, ഒരു ഡാറ്റാബേസ് അല്ലെങ്കിൽ എന്റിറ്റി റിലേഷൻസ് എന്നിവയുടെ ഒരു മാപ്പ്.

പ്രതിഫലനം നെറ്റ് വർക്ക് ഓറിയന്റഡ് കോഡിനായുള്ള ഭാഷ കൂടുതൽ അനുയോജ്യമാക്കും. ഉദാഹരണത്തിന്, സീരിയലൈസേഷൻ, ബണ്ടിൽ ചെയ്യൽ, ഡാറ്റാ ഫോർമാറ്റുകൾ വ്യത്യാസങ്ങൾ എന്നിവയ്ക്കായി ലൈബ്രറികൾ പ്രാപ്തമാക്കുന്നതിലൂടെ ജാവ പോലുള്ള ഭാഷകൾ നന്നായി പ്രവർത്തിക്കാൻ ഇത് സഹായിക്കുന്നു. പ്രതിഫലനമില്ലാത്ത ഭാഷകൾ (ഉദാ. സി) സഹായക കമ്പൈലറുകൾ ഉപയോഗിക്കണം, ഉദാ. അമൂർത്ത വാക്യഘടന ചിഹ്നങ്ങൾ, സീരിയലൈസേഷനും ബണ്ടിൽ ചെയ്യലിനുമുള്ള കോഡ് സൃഷ്‌ടിക്കുക എന്നിവ.

റൺടൈമിൽ പ്രോഗ്രാം എക്സിക്യൂഷൻ നിരീക്ഷിക്കാനും പരിഷ്ക്കരിക്കാനും റിഫ്ലക്ഷക്ഷൻ ഉപയോഗപ്പെടുത്താം. ഒരു പ്രതിഫലന-ഓറിയെന്റഡ് പ്രോഗ്രാം ഘടകം കോഡിന്റെ പരിധി നിർവ്വഹണം നിരീക്ഷിക്കാൻ കഴിയും, ആ അനുബന്ധവുമായി ബന്ധപ്പെട്ട ഒരു ലക്ഷ്യത്തിനനുസരിച്ച് സ്വയം പരിഷ്കരിക്കാനും കഴിയും. റൺടൈമിൽ പ്രോഗ്രാം ഡൈനാമിക് അസൈൻ ആയി ഇത് സാധാരണയായി പൂർത്തിയാകുന്നത്. ജാവ പോലുള്ള ഓബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ് ഭാഷകളിൽ, പ്രതിഫലനം ക്ലാസുകളുടെ പരിശോധന നടത്തുന്നു, ഫീൽഡുകൾ, കംപൈൽ സമയത്തെ രീതികൾ എന്നിവ ഇന്റർഫെയിസിന്റെ പേരുകൾ അറിയാതെ തന്നെ, പ്രവർത്തന സമയത്തു് ഇന്റർഫെയിസുകൾ, ഫീൽഡുകൾ, രീതികൾ എന്നിവ പരിശോധിച്ചുറപ്പിക്കാൻ സാധിക്കുന്നതാണ്.

അവലംബം

വർഗ്ഗം:കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ്ങ്