ഇന്റർപ്രെട്ടർ (കമ്പ്യൂട്ടിംഗ്)
പ്രോഗ്രാം എക്സിക്യൂഷൻ |
---|
പൊതുവായ ആശയങ്ങൾ |
|
ടൈപ്പ്സ് ഓഫ് കോഡ് |
|
കംപലേഷൻ സ്ട്രാറ്റെജീസ് |
|
ശ്രദ്ധേയമായ റൺടൈമുകൾ |
|
ശ്രദ്ധേയമായ കംപൈലറുകളും ടൂൾചെയിനുകളും |
|
കമ്പ്യൂട്ടർ സയൻസിൽ, ഒരു പ്രോഗ്രാമിംഗിലോ സ്ക്രിപ്റ്റിംഗ് ഭാഷയിലോ എഴുതിയ കോഡ് നേരിട്ട് നടപ്പിലാക്കുന്ന ഒരു തരം പ്രോഗ്രാമാണ് ഇൻ്റർപ്രെട്ടർ. മുഴുവൻ പ്രോഗ്രാമും മെഷീൻ കോഡിലേക്ക് വിവർത്തനം ചെയ്യുന്ന കംപൈലറുകളിൽ നിന്ന് വ്യത്യസ്തമായി, ഇൻ്റർപ്രെട്ടർ കോഡ് ലൈൻ-ബൈ-ലൈനായി പ്രവർത്തിപ്പിക്കുന്നു. ഇതിനർത്ഥം പ്രോഗ്രാം മുൻകൂട്ടി കംപൈൽ ചെയ്യേണ്ടതില്ല, പകരം തത്സമയം എക്സിക്യൂട്ട് ചെയ്യുന്നു എന്നാണ്. പൈത്തൺ, റൂബി, ജാവാസ്ക്രിപ്റ്റ് തുടങ്ങിയ ഭാഷകളിൽ ഇന്റർപ്രെട്ടർ സാധാരണയായി ഉപയോഗിക്കാറുണ്ട്, ഇവിടെ കോഡ് ഡൈനാമിക്കായി പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള വഴക്കം പ്രധാനമാണ്. ഒരു പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യുന്നതിന് ഒരു ഇന്റർപ്രെട്ടർ സാധാരണയായി ഇനിപ്പറയുന്ന തന്ത്രങ്ങളിൽ ഒന്ന് ഉപയോഗിക്കുന്നു:
- പാഴ്സ് ചെയ്ത് എക്സിക്യൂട്ട് ചെയ്യുക: ഇൻ്റർമീഡിയറ്റ് ഘട്ടങ്ങളൊന്നും കൂടാതെ അതിൻ്റെ ബിഹേവിയർ എക്സിക്യൂട്ട് ചെയ്ത് ഇന്റർപ്രെട്ടർ സോഴ്സ് കോഡ് നേരിട്ട് വായിക്കുകയും പാഴ്സ് ചെയ്യുകയും ചെയ്യുന്നു.
- ഇൻ്റർമീഡിയറ്റ് കോഡ് എക്സിക്യൂഷൻ: ഇന്റർപ്രെട്ടർ സോഴ്സ് കോഡിനെ കൂടുതൽ കാര്യക്ഷമമായ ഇൻ്റർമീഡിയറ്റ് റെപ്രസെന്റേഷനിലേക്ക് (ബൈറ്റ്കോഡ് പോലെ) വിവർത്തനം ചെയ്യുകയും തുടർന്ന് ആ റെപ്രെസെന്റേഷൻ നടപ്പിലാക്കുകയും ചെയ്യുന്നു.
- പ്രീ കംപൈൽഡ് ബൈറ്റ്കോഡ് എക്സിക്യൂഷൻ: ഇന്റർപ്രെട്ടറിന്റെ സ്പെസിഫിക്കേഷനുകളുമായി പൊരുത്തപ്പെടുന്ന ഒരു വെർച്വൽ മെഷീനിൽ, മുമ്പ് മറ്റൊരു കംപൈലർ കംപൈൽ ചെയ്ത പ്രീ-കംപൈൽഡ് ബൈറ്റ്കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു[1].
ഈ തന്ത്രങ്ങൾ കോഡ് എങ്ങനെ നിർവ്വഹിക്കുന്നു എന്നതിലെ വഴക്കം അനുവദിക്കുന്നു, ഇന്റർപ്രെട്ടഡ് ഭാഷകളെ ഡീബഗ് ചെയ്യുന്നത് എളുപ്പമാക്കുകയും കൂടുതൽ ചലനാത്മകമാക്കുകയും ചെയ്യുന്നു. പ്രോഗ്രാമിംഗിലെ ഈ മൂന്ന് തരം ഇൻ്റർപ്രെറ്റർ സ്ട്രാറ്റജികളുടെ ഉദാഹരണങ്ങൾ ചുവടെ ചേർക്കുന്നു:
- ഏർലി ലിസ്പ്, ബേസിക് ഡയലക്റ്റുകൾ: ഈ ഭാഷകൾ സോഴ്സ് കോഡ് പാഴ്സ് ചെയ്ത് നേരിട്ട് എക്സിക്യൂട്ട് ചെയ്യുന്ന ആദ്യത്തെ തരം ഇൻ്റർപ്രെറ്റർ സ്ട്രാറ്റജിയെ പ്രതിനിധീകരിക്കുന്നു. ഇതിനർത്ഥം, കോഡ് പ്രവർത്തിപ്പിക്കുമ്പോൾ വരി വരിയായി ഇന്റർപ്രെട്ട് ചെയ്യുന്നു എന്നാണ്.
- പേൾ, പൈത്തൺ, മാറ്റ് ലാബ്, റാക്കു(Raku), റൂബി: ഈ ഭാഷകൾ രണ്ടാമത്തെ തരം ഇന്റപ്രെട്ടർ സ്ട്രാറ്റജി ഉപയോഗിക്കുന്നു. ഇത് ആദ്യം സോഴ്സ് കോഡ് ഒരു ഇൻ്റർമീഡിയറ്റ് റെപ്രസെന്റേഷനിലേക്ക് വിവർത്തനം ചെയ്യുന്നു (ബൈറ്റ്കോഡ് പോലെ) തുടർന്ന് ആ ഇൻ്റർമീഡിയറ്റ് കോഡ് ഉടനടി എക്സിക്യൂട്ട് ചെയ്യുന്നു.
- യുസിഎസ്ഡി(UCSD) പാസ്കൽ: കോഡ് ബൈറ്റ്കോഡിലേക്ക് കംപൈൽ ചെയ്ത് ഒരു വെർച്വൽ മെഷീൻ (സോഫ്റ്റ്വെയർ അധിഷ്ഠിത പ്രോസസർ) ഉപയോഗിച്ച് നടപ്പിലാക്കുന്ന മൂന്നാമത്തെ രീതിക്കുള്ള ഒരു ഉദാഹരണമാണിത്.
വിവിധ ഹാർഡ്വെയർ പ്ലാറ്റ്ഫോമുകളിലുടനീളം പോർട്ടബിലിറ്റി നിലനിർത്തിക്കൊണ്ടുതന്നെ വേഗത്തിലുള്ള നിർവ്വഹണം അനുവദിക്കുന്ന കംപൈലറുകളുടെ കാര്യക്ഷമത ഉപയോഗിച്ച് ഈ സമീപനം ഇന്റർപ്രെട്ടറിന്റെ വഴക്കം പ്രയോജനപ്പെടുത്തുന്നു. സ്മോൾടോക് ഒരു വെർച്വൽ മെഷീൻ ഇന്റപ്രെട്ട് ചെയ്യുന്ന ബൈറ്റ്കോഡ് ഉപയോഗിക്കുന്നു, കൂടാതെ ജാവയ്ക്ക് സമാനമായി ജാവ വെർച്ചൽ മെഷീൻ (JVM) നടപ്പിലാക്കുന്ന ബൈറ്റ്കോഡിലേക്ക് കംപൈൽ ചെയ്യുന്നു, വേഗത്തിലുള്ള നിർവ്വഹണത്തിനായി ജസ്റ്റ്-ഇൻ-ടൈം കംപൈലേഷൻ ഓപ്ഷനുമുണ്ട്[2]. അൽഗോൾ, ഫോർട്രാൻ, കോബോൾ, സി, സി++ തുടങ്ങിയ പരമ്പരാഗതമായി കംപൈലിംഗ് ഭാഷകൾക്കായി ഇന്റർപ്രെട്ടർ തീർച്ചയായും സൃഷ്ടിക്കപ്പെട്ടിട്ടുണ്ട്. എളുപ്പത്തിലുള്ള ഡീബഗ്ഗിംഗ്, ടെസ്റ്റിംഗ്, ദ്രുതഗതിയിലുള്ള സോഫ്റ്റ്വയർ വികസിപ്പിക്കൽ എന്നിവ അനുവദിക്കുന്നതിനാണ് ഇത് സാധാരണയായി ചെയ്യുന്നത്. ഈ ഭാഷകൾ പ്രാഥമികമായി അവയുടെ കംപൈൽ ചെയ്ത നിർവ്വഹണങ്ങൾക്ക് പേരുകേട്ടതാണെങ്കിലും (ഇത് മുഴുവൻ കോഡും മെഷീൻ ഭാഷയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു), ഇന്റർപ്രെട്ടേഴ്സ് കോഡ് വരി വരിയായി നടപ്പിലാക്കുന്നതിലൂടെ കൂടുതൽ സംവേദനാത്മക സമീപനം വാഗ്ദാനം ചെയ്യുന്നു, ഇത് വികസന പ്രക്രിയയെ കൂടുതൽ വഴക്കമുള്ളതാക്കുന്നു.
ഉദാഹരണത്തിന്, സി (CINT, Ch പോലുള്ളവ) എന്നതിനായുള്ള ഇൻപ്രെട്ടേഴ്സ് ആദ്യം കംപൈൽ ചെയ്യാതെ തന്നെ സി കോഡ് പ്രവർത്തിപ്പിക്കാൻ ഉപയോക്താക്കളെ അനുവദിക്കുന്നു. അതുപോലെ, ഫോർട്രാൻ ആധുനിക കമ്പ്യൂട്ടിംഗ് പരിതസ്ഥിതികളിലേക്കുള്ള മാറ്റം സുഗമമാക്കുന്നതിന് അല്ലെങ്കിൽ വിദ്യാഭ്യാസ ആവശ്യങ്ങൾക്കായി ഇന്റർപ്രെട്ടഡ് പതിപ്പുകൾ ഉണ്ടായിരുന്നു. ദ്രുത പ്രോട്ടോടൈപ്പിംഗ് പോലുള്ള ജോലികൾക്കോ പൂർണ്ണ കംപൈലിംഗ് പ്രായോഗികമല്ലാത്ത പരിമിതമായ ഉറവിടങ്ങളുള്ള എൺവയൺമെന്റുകൾക്കോ ഈ വഴക്കം വിലപ്പെട്ടതാണ്.
പ്രോഗ്രാമിംഗ് ഭാഷകൾ നടപ്പിലാക്കുന്നതിനുള്ള രണ്ട് പ്രധാന രീതികളാണ് ഇന്റർപ്രെട്ടേഷനും കംപൈലേഷനും, പക്ഷേ അവ പലപ്പോഴും ഓവർലാപ്പ് ചെയ്യുന്നു. ഉദാഹരണത്തിന്, പ്രകടനം മെച്ചപ്പെടുത്തുന്നതിനായി ഒരു പ്രോഗ്രാം ഭാഗികമായി ഇന്റർപ്രെട്ട് ചെയ്യുകയും ഭാഗികമായി കംപൈൽ ചെയ്യുകയും ചെയ്യാം. കോഡ് ലൈൻ ബൈ ലൈൻ എക്സിക്യൂട്ട് ചെയ്യുന്ന ഇൻ്റർപ്രെറ്ററുകൾക്ക് പാഴ്സിംഗ് പോലുള്ള കംപൈലിംഗ് ഘട്ടങ്ങൾ ഉൾപ്പെടുത്താം, അതേസമയം മുഴുവൻ പ്രോഗ്രാമുകളും മെഷീൻ കോഡിലേക്ക് വിവർത്തനം ചെയ്യുന്ന കംപൈലറുകൾ ചിലപ്പോൾ ചില ജോലികൾക്കായി ഇൻ്റർപ്രെറ്ററുകൾ ഉൾപ്പെടുത്തും. "ഇന്റർപ്രെട്ടഡ്", "കംപൈൽഡ്" എന്നീ പദങ്ങൾ സാധാരണയായി ഒരു ഭാഷ എങ്ങനെയാണ് ഏറ്റവും സാധാരണയായി നടപ്പിലാക്കുന്നത് എന്ന് വിവരിക്കുന്നു, അല്ലാതെ അതിൻ്റെ അന്തർലീനമായ സ്വഭാവമല്ല. ഉദാഹരണത്തിന്, പൈത്തൺ ഒരു ഇന്റർപ്രെട്ടഡ് ഭാഷയായി അറിയപ്പെടുന്നു, പക്ഷേ ആ ഭാഷയ്ക്ക് കംപൈൽ ചെയ്യാനും കഴിയും. നിർവ്വഹണ രീതികളിൽ വഴക്കം അനുവദിക്കുന്ന, അബ്സ്ട്രാക്ടായതും(കമ്പ്യൂട്ടിംഗിൽ, അനാവശ്യ വിശദാംശങ്ങൾ മറച്ചുവെച്ച് അവശ്യ സവിശേഷതകളിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ച് സങ്കീർണ്ണമായ സിസ്റ്റങ്ങളെ ലളിതമാക്കുന്ന പ്രക്രിയയാണ് അബ്സ്ട്രാക്ടടിംഗ്. താഴ്ന്ന നിലയിലുള്ള നടപ്പാക്കൽ വിശദാംശങ്ങളേക്കാൾ ഉയർന്ന തലത്തിലുള്ള ആശയങ്ങൾ ഉപയോഗിച്ച് സങ്കീർണ്ണത കൈകാര്യം ചെയ്യാൻ ഇത് പ്രോഗ്രാമർമാരെ അനുവദിക്കുന്നു.) ഇമ്പ്ലിമെന്റേഷൻ-ഇൻഡിപെൻഡന്റുമായതുമാണ്(ഒരു പ്രത്യേക ഹാർഡ്വെയറുമായോ സോഫ്റ്റ്വെയർ സജ്ജീകരണവുമായോ ബന്ധിപ്പിക്കാതെ ഒരു ആശയമോ പ്രക്രിയയോ പ്രയോഗിക്കാനോ നടപ്പിലാക്കാനോ കഴിയും എന്നാണ് ഇംപ്ലിമെൻ്റേഷൻ-ഇൻഡിപെൻഡൻ്റ് അർത്ഥമാക്കുന്നത്. കാര്യമായ മാറ്റങ്ങൾ ആവശ്യമില്ലാതെ വ്യത്യസ്ത പ്ലാറ്റ്ഫോമുകളിലോ പരിതസ്ഥിതികളിലോ പ്രവർത്തിക്കാൻ ഇതിനെ കോഡോ സിസ്റ്റമോ അനുവദിക്കുന്നു.) ഉന്നത തലത്തിലുള്ള ഭാഷകൾ ലക്ഷ്യമിടുന്നത്[3].
ചരിത്രം
[തിരുത്തുക]ആദ്യകാല കമ്പ്യൂട്ടറുകളുടെ ഹാർഡ്വെയർ പരിമിതികൾ കണക്കിലെടുത്ത് പ്രോഗ്രാമിംഗ് ലളിതമാക്കാൻ 1952-ൽ തന്നെ ഇന്റർപ്രെട്ടർ അവതരിപ്പിച്ചു. ഉദാഹരണത്തിന്, പ്രോഗ്രാമുകൾക്കുള്ള സംഭരണ സ്ഥലം പലപ്പോഴും പരിമിതമായിരുന്നു, അല്ലെങ്കിൽ ഫ്ലോട്ടിംഗ് പോയിൻ്റ് അരിത്മെറ്റിക് പോലുള്ള ചില പ്രവർത്തനങ്ങൾക്ക് വേണ്ടിയുള്ള പിന്തുണ മെഷീനുകൾക്ക് ഇല്ലായിരുന്നു. പ്രോഗ്രാമിംഗ് എളുപ്പമാക്കുന്നതിനു പുറമേ, ലോ-ലെവൽ മെഷീൻ ഭാഷകൾ തമ്മിലുള്ള വിടവ് നികത്താൻ ഇന്റർപ്രെട്ടറുകൾ ഉപയോഗിച്ചു, ഇപ്പോഴും നിർമ്മാണത്തിലിരിക്കുന്ന കമ്പ്യൂട്ടറുകൾക്ക് കോഡ് എഴുതാനും നിലവിലുള്ള മെഷീനുകളിൽ ആ പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കാനും പ്രോഗ്രാമർമാരെ അനുവദിക്കുന്നു. ടാർഗെറ്റ് ഹാർഡ്വെയർ ഇതുവരെ പൂർണ്ണമായി ലഭ്യമല്ലാത്ത പരിതസ്ഥിതികളിൽ ആദ്യകാല സോഫ്റ്റ്വെയർ വികസനവും പരിശോധനയും ഇത് എളുപ്പമാക്കി[4]. ഇന്റർപ്രെട്ടഡായ ആദ്യത്തെ ഉന്നത തല പ്രോഗ്രാമിംഗ് ഭാഷയാണ് ലിസ്പ്. ഐബിഎം (IBM) 704 കമ്പ്യൂട്ടറിൽ സ്റ്റീവ് റസ്സലാണ് ഇത് ആദ്യം നടപ്പിലാക്കിയത്. ജോൺ മക്കാർത്തിയുടെ സ്വാധീനമുള്ള പ്രബന്ധം "സിംബോളിക് എക്സ്പ്രഷനുകളുടെ ആവർത്തന പ്രവർത്തനങ്ങളും യന്ത്രം ഉപയോഗിച്ചുള്ള അവയുടെ കണക്കുകൂട്ടലും, ഭാഗം I" വായിച്ചതിനുശേഷം, മക്കാർത്തി വിവരിച്ച ലിസ്പ് `eval` ഫംഗ്ഷൻ നേരിട്ട് മെഷീൻ കോഡിൽ നടപ്പിലാക്കാൻ കഴിയുമെന്ന് റസ്സൽ മനസ്സിലാക്കി. ഈ കണ്ടെത്തൽ മക്കാർത്തിയെപ്പോലും അത്ഭുതപ്പെടുത്തി, ലിസ്പിൻ്റെ പ്രായോഗിക വികസനത്തിൽ ഒരു സുപ്രധാന ചുവടുവെപ്പ് അടയാളപ്പെടുത്തി, അത് എഐ, ഫംഗ്ഷണൽ പ്രോഗ്രാമിംഗ് എന്നിവയ്ക്ക് അടിസ്ഥാനമായി മാറി[5].
ആദ്യകാല സംവേദനാത്മക കമ്പ്യൂട്ടിംഗിന്, പ്രത്യേകിച്ച് 1960-കളിലെ ടൈം ഷെയറിംഗ് സംവിധാനങ്ങളുടെ വരവോടെ, എഡിറ്റിംഗ് ഇൻ്റർപ്രെട്ടേഴ്സിന്റെ വികസനം നിർണായകമായിരുന്നു. ഈ സിസ്റ്റങ്ങൾ ഒന്നിലധികം ഉപയോക്താക്കളെ ഒരു കമ്പ്യൂട്ടറുമായി തത്സമയം സംവദിക്കാൻ അനുവദിച്ചു, ഉടനടി കോഡ് എഡിറ്റിംഗും ഡീബഗ്ഗിംഗും പ്രാപ്തമാക്കുന്നു. എഡിറ്റിംഗ് ഇൻ്റർപ്രെറ്ററിൻ്റെ ആദ്യകാല ഉദാഹരണങ്ങളിലൊന്നാണ് ഇഡിടി(Editor and Debugger for the TECO), ഇത് പിഡിപി-1 കമ്പ്യൂട്ടറിനായി സൃഷ്ടിച്ചതാണ്. ഈ സിസ്റ്റം ആളുകളെ ഒരു കൂട്ടം കമാൻഡുകൾ ഉപയോഗിച്ച് കോഡ് എഴുതുമ്പോൾ വേഗത്തിൽ മാറ്റാൻ അനുവദിക്കുന്നു. കോഡിംഗ് എളുപ്പവും വേഗത്തിലാക്കുന്നതുമായ ടെക്സ്റ്റ് എഡിറ്ററുകളും പ്രോഗ്രാമിംഗ് എൻവയോൺമെൻ്റുകളും പോലെ ഇപ്പോൾ ഉപയോഗിക്കുന്ന ടൂളുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള ആദ്യ ചുവടുകളിൽ ഒന്നായിരുന്നു ഇത്. ടൈം ഷെയറിംഗും എഡിറ്റിംഗ് ഇൻ്റർപ്രെട്ടറുകളും തുടക്കത്തിൽ മെയിൻഫ്രെയിം സിസ്റ്റങ്ങൾക്കായി വികസിപ്പിച്ചെടുത്തു, കൂടുതൽ വഴക്കമുള്ള, തത്സമയ പ്രോഗ്രാം എഡിറ്റിംഗ് എൺവയൺമെന്റിന് വഴിയൊരുക്കാൻ സഹായിച്ചു.
പൊതുവായ പ്രവർത്തനം
[തിരുത്തുക]ഒരു ഇന്റർപ്രെട്ടർ കമാൻഡുകൾ വരി വരിയായി പ്രോസസ്സ് ചെയ്യുന്നു. ഇതിന് കമാൻഡുകളുടെ ഒരു ലിസ്റ്റ് (നിർദ്ദേശങ്ങൾ) ഉണ്ട്, ഓരോന്നും എങ്ങനെ എക്സിക്യൂട്ട് ചെയ്യണമെന്ന് ഇന്റർപ്രെട്ടറിന് അറിയാം. ഉദാഹരണത്തിന്, ഇന്റർപ്രെട്ടർ `ADD Books, 5` പോലെ എന്തെങ്കിലും വായിക്കുകയാണെങ്കിൽ, "Books" എന്ന് വിളിക്കപ്പെടുന്ന ഒരു വേരിയബിളിലേക്ക് നമ്പർ 5 ചേർക്കുന്നതിനുള്ള ഒരു കമാൻഡായി ഇത് മനസ്സിലാക്കുന്നു. ഇന്റർപ്രെട്ടർ ഓരോ കമാൻഡിലൂടെയും കടന്നുപോകുന്നു, അതിൽ ഉള്ള ഡാറ്റ പ്രോസസ്സ് ചെയ്യുകയും അഭ്യർത്ഥിച്ച മാറ്റങ്ങൾ നടപ്പിലാക്കുകയും ചെയ്യുന്നു. കംപൈലറിൽ നിന്ന് വ്യത്യസ്തമായി എല്ലാം ഒറ്റയടിക്ക് മെഷീൻ കോഡിലേക്ക് മാറ്റാതെ തന്നെ ജോലികൾ നിർവഹിക്കാൻ ഇത് കമ്പ്യൂട്ടറിനെ സഹായിക്കുന്നു.
വിവിധ പ്രത്യേക നിർദ്ദേശങ്ങൾ പ്രോസസ്സ് ചെയ്തുകൊണ്ട് കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്ന സോഫ്റ്റ്വെയറാണ് ഇൻ്റർപ്രെട്ടറുകൾ, സാധാരണയായി അടിസ്ഥാന ഗണിതശാസ്ത്ര പ്രവർത്തനങ്ങൾ കൈകാര്യം ചെയ്യുന്നു, തീരുമാനമെടുക്കുന്നതിനുള്ള ബ്രാഞ്ചിംഗ്, മെമ്മറി മാനേജ്മെൻ്റ്, മിക്ക ഇന്റർപ്രെട്ടേഴ്സിന്റെയും ട്യൂറിംഗ് പൂർണ്ണമാക്കുന്നു(ട്യൂറിംഗ് കംപ്ലീറ്റ് എന്നത് ഒരു കമ്പ്യൂട്ടറിന് മതിയായ സമയവും മെമ്മറിയും നൽകിക്കൊണ്ട് ഏത് കണക്കുകൂട്ടലും നടത്താനോ അല്ലെങ്കിൽ പരിഹരിക്കാനാകുന്ന ഏതെങ്കിലും പ്രശ്നം പരിഹരിക്കാനോ ഉള്ള ഒരു സിസ്റ്റത്തിൻ്റെ കഴിവിനെ സൂചിപ്പിക്കുന്നു. ലളിതമായി പറഞ്ഞാൽ, സിസ്റ്റത്തിന് ഏതെങ്കിലും അൽഗോരിതം പ്രവർത്തിപ്പിക്കാനോ ഏതെങ്കിലും പ്രോഗ്രാമിനെ അനുകരിക്കാനോ കഴിയും, ഇത് മറ്റേതൊരു കമ്പ്യൂട്ടർ അല്ലെങ്കിൽ പ്രോഗ്രാമിംഗ് ഭാഷയെ പോലെ ശക്തമാക്കുകയും ചെയ്യുന്നു.). മതിയായ ഉറവിടങ്ങൾ നൽകിയിട്ടുള്ള ഏത് കണക്കുകൂട്ടലും അവയ്ക്ക് അനുകരിക്കാനാകും. ഓട്ടോമാറ്റിക് മെമ്മറി മാനേജ്മെൻ്റിനായി പല ഇന്റർപ്രെട്ടേഴ്സും ഗാർബേജ് കളക്ടേഴ്സുമായി കർശനമായി സംയോജിപ്പിച്ചിരിക്കുന്നു, കൂടാതെ പലപ്പോഴും ഒരു ഡീബഗ്ഗർ ഉൾപ്പെടുന്നു, ഇത് കോഡ് എക്സിക്യൂഷൻ പരിശോധിക്കാനും ഡെവലപ്പർമാരെ പ്രാപ്തരാക്കുന്നു. ഡൈനാമിക് പ്രോഗ്രാമിങ് പരിതസ്ഥിതികളെ പിന്തുണയ്ക്കുമ്പോൾ സങ്കീർണ്ണമായ പ്രോഗ്രാമുകൾ കാര്യക്ഷമമായി കൈകാര്യം ചെയ്യുന്നതിൽ ഇന്റർപ്രെട്ടേഴ്സിനെ വഴക്കമുള്ളതും ശക്തവുമാക്കാൻ ഇത് അനുവദിക്കുന്നു.
കംപൈലേഴ്സ് vs ഇന്റർപ്രെട്ടേഴ്സ്
[തിരുത്തുക]ഉന്നത തല ഭാഷാ പ്രോഗ്രാമുകൾ മനുഷ്യർക്ക് എളുപ്പത്തിൽ മനസ്സിലാക്കാൻ വേണ്ടി എഴുതിയതാണ്, എന്നാൽ സിപിയുവിന് നേരിട്ട് നടപ്പിലാക്കാൻ കഴിയുന്ന മെഷീൻ കോഡിലേക്ക് വിവർത്തനം ചെയ്യണം. ഈ വിവർത്തനം രണ്ട് പ്രധാന രീതികളിൽ സംഭവിക്കാം: ഇന്റർപ്രെട്ടേഷൻ അല്ലെങ്കിൽ കംപൈലിംഗ്. ഇന്റർപ്രെട്ടിംഗിൽ, ഒരു ഇന്റർപ്രെട്ടർ ഓരോ നിർദ്ദേശങ്ങളും തത്സമയം വായിക്കുകയും നടപ്പിലാക്കുകയും ചെയ്യുന്നു, ഇത് വികസനത്തിന് ലളിതവും എന്നാൽ പലപ്പോഴും മന്ദഗതിയിലുള്ളതുമാണ്. കംപൈലേഷനിൽ, ഒരു കംപൈലർ മുഴുവൻ പ്രോഗ്രാമും മെഷീൻ കോഡിലേക്ക് വിവർത്തനം ചെയ്യുന്നു, ഒരു എക്സിക്യൂട്ടബിൾ ഫയൽ സൃഷ്ടിക്കുന്നു, റൺടൈമിൽ വിവർത്തനം ആവശ്യമില്ലാത്തതിനാൽ ഇത് സാധാരണയായി വേഗത്തിൽ പ്രവർത്തിക്കുന്നു. ചില കംപൈൽ ചെയ്ത പ്രോഗ്രാമുകൾ പ്രത്യേക ഹാർഡ്വെയർ സജ്ജീകരണങ്ങൾക്കായി മെഷീൻ കോഡ് തയ്യാറാക്കാൻ അസംബ്ലറുകളും ലിങ്കറുകളും ഉപയോഗിക്കുന്നു.
അവലംബം
[തിരുത്തുക]- ↑ In this sense, the CPU is also an interpreter, of machine instructions.
- ↑ Although this scheme (combining strategy 2 and 3) was used to implement certain BASIC interpreters already in the 1970s, such as the efficient BASIC interpreter of the ABC 80, for instance.
- ↑ "Interpreted vs Compiled Programming Languages: What's the Difference?". Retrieved 20 Oct 2024.
- ↑ Bennett, J. M.; Prinz, D. G.; Woods, M. L. (1952). "Interpretative sub-routines". Proceedings of the ACM National Conference, Toronto.
- ↑ According to what reported by Paul Graham in Hackers & Painters, p. 185, McCarthy said: "Steve Russell said, look, why don't I program this eval..., and I said to him, ho, ho, you're confusing theory with practice, this eval is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the eval in my paper into IBM 704 machine code, fixing bug, and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today..."