ലോ-ലെവൽ പ്രോഗ്രാമിംഗ് ഭാഷ

**ലോ-ലെവൽ പ്രോഗ്രാമിംഗ്** ഭാഷയെന്നത് കമ്പ്യൂട്ടറിന്റെ പ്രവർത്തനങ്ങൾക്ക് നേരിട്ട് അടുപ്പമുള്ള ഒരു ഭാഷയാണ്. ഇതിലെ കമാൻഡുകളും നിർദേശങ്ങളും ഒരു കമ്പ്യൂട്ടർ പ്രോസ്സസറിന് നേരിട്ട് മനസ്സിലാക്കാൻ കഴിയുന്ന വിധത്തിൽ ഉണ്ടാകും. അതിനാൽ ഇത് മനസ്സിലാക്കാനും ഉപയോഗിക്കാനും ഒരുപാട് സാങ്കേതിക കഴിവുകൾ ആവശ്യമുണ്ട്. സാധാരണയായി, ഇത് മെഷീൻ കോഡ് അല്ലെങ്കിൽ അസംബ്ലി ഭാഷയെ സൂചിപ്പിക്കുന്നു. ലോ-ലെവൽ ഭാഷകൾക്കും മെഷീൻ ഭാഷയ്ക്കും തമ്മിലുള്ള അന്തരം വളരെ കുറഞ്ഞത് കൊണ്ടാണ് ഇതിന് "ലോ" (താഴ്ന്ന) എന്ന പദം നൽകിയിരിക്കുന്നത്. ഇതു കൊണ്ട് തന്നെ ഈ ഭാഷകൾ "ഹാർഡ്‌വെയറിനോട് അടുപ്പമുള്ള" ഭാഷകൾ എന്ന് വിളിക്കപ്പെടാറുണ്ട്. ലോ-ലെവൽ ഭാഷയിൽ എഴുതുന്ന പ്രോഗ്രാമുകൾ ഒരു പ്രത്യേക തരത്തിലുള്ള കമ്പ്യൂട്ടർ സംവിധാനത്തിന് (ആർക്കിടെക്ചർ) അനുയോജ്യമായി രൂപകൽപന ചെയ്യുന്നതുകൊണ്ട് അവ സാധാരണയായി മറ്റേതെങ്കിലും കമ്പ്യൂട്ടറുകളിൽ ഉപയോഗിക്കാൻ പറ്റാത്തവയായിരിക്കും.

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

മെഷീൻ കോഡ് എന്നത്, നേരിട്ട് പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന കോഡ് കമ്പ്യൂട്ടറിൽ ശേഖരിച്ചുവെയ്ക്കുവാൻ സാധിക്കുന്ന രൂപമാണ്. ഇത് മെമ്മറിയിൽ സൂക്ഷിച്ചിരിക്കുന്ന മെഷീൻ ഭാഷാ നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു. മൂല്യങ്ങളെ മെമ്മറി സ്ഥാനങ്ങളിൽ നിന്ന് മാറ്റുന്നതിനും ഗണിത പ്രവർത്തനങ്ങൾ നടത്തുന്നതിനും ഇത് ഉപയോഗിക്കുന്നു. ബൂലിയൻ ലോജിക്(ബൂലിയൻ ലോജിക് എന്ന് പറയുന്നത് true (ശരി) അല്ലെങ്കിൽ false (തെറ്റ്) മൂല്യങ്ങൾ ഉപയോഗിച്ച് പ്രവർത്തനങ്ങൾ നടത്തുന്നതാണ്.  
ഇതിന്റെ പ്രധാന ഓപ്പറേഷനുകൾ AND, OR, NOT എന്നിവയാണ്, ഇവ ലളിതമായ തീരുമാനം എടുക്കാൻ സഹായിക്കുന്നു.) പ്രവർത്തനങ്ങളും മൂല്യ പരിശോധനകളും ഇതിൽ ഉൾപ്പെടുന്നു. പരിശോധനയുടെ ഫലത്തെ അടിസ്ഥാനമാക്കി അടുത്ത നിർദ്ദേശം പ്രവർത്തനത്തിലാക്കുന്നു. 

മെഷീൻ കോഡ് സാധാരണയായി ബൈനറി ഡാറ്റ ആയി മെമ്മറിയിൽ സൂക്ഷിക്കുന്നു. പ്രോഗ്രാമർമാർ നേരിട്ട് മെഷീൻ കോഡിൽ പ്രോഗ്രാമുകൾ എഴുതുന്നില്ല, പകരം അസ്സംബ്ലി ലാംഗ്വേജ് അല്ലെങ്കിൽ ഉന്നത തല പ്രോഗ്രാമിംഗ് ഭാഷകൾ ഉപയോഗിക്കുന്നു.

പ്രോഗ്രാമർമാർ നേരിട്ട് മെഷീൻ ഭാഷയിൽ എഴുതാറില്ലെങ്കിലും, ചിലപ്പോൾ പ്രശ്നങ്ങൾ കണ്ടെത്താൻ (debugging) അവയുടെ പ്രവർത്തനത്തിൽ അത് കണ്ടെത്തേണ്ടി വരും. കോർ ഡംപുകൾ പരിശോധിക്കുകയോ ഫ്രണ്ട് പാനലിൽ നിന്ന് ഡാറ്റ കാണുകയോ ചെയ്യുന്നതിലൂടെ, അവർ മെഷീൻ ഭാഷ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസിലാക്കാനും അതിനെ വിലയിരുത്താനും പഠിക്കുന്നു.

x86-64 മെഷീൻ കോഡിൽ ഫിബോണാച്ചി(Fibonacci-ഫിബോണാച്ചി സംഖ്യകൾ എന്ന് പറയുന്നത് സംഖ്യകൾ ഒരു ഓർഡറിൽ വരുന്നു: ഓരോ സംഖ്യയും മുമ്പത്തെ രണ്ട് സംഖ്യകൾ കൂട്ടിക്കിട്ടുന്നതാണ്(1 + 1 = 2, 1 + 2 = 3). ഉദാഹരണം: 0, 1, 1, 2, 3, 5, 8, 13...!) സംഖ്യ കണക്കാക്കാൻ ഉപയോഗിക്കുന്ന ഒരു ഫംഗ്ഷന്റെ ഹെക്സഡെസിമൽ ഉദാഹരണം നൽകാം. ഇതിൽ ഓരോ വരിയും ഒരൊന്നങ്കിൽ ഒരു നിർദ്ദേശത്തെ പ്രതിനിധീകരിക്കും. ലളിതമായി പറഞ്ഞാൽ, ഈ കോഡ് യന്ത്ര നിർദേശങ്ങൾ അനുവദിച്ച് nth ഫിബോണാച്ചി സംഖ്യ കൈമാറും.
 89 f8
 85 ff
 74 26
 83 ff 02
 76 1c
 89 f9
 ba 01 00 00 00
 be 01 00 00 00
 8d 04 16
 83 f9 02
 74 0d
 89 d6
 ff c9
 89 c2
 eb f0
 b8 01 00 00
 c3

## അസംബ്ലി ഭാഷ

അസംബ്ലി ഭാഷയ്ക്ക് കമ്പ്യൂട്ടറിന്റെ യന്ത്ര കോഡിനെക്കാൾ എളുപ്പമുള്ള ഒരു രൂപത്തിൽ കംപ്യൂട്ടറുമായി ആശയവിനിമയം നടത്താൻ സഹായിക്കും. യന്ത്ര കോഡ് ബിറ്റുകളുടെ ശൃംഖലയാണ്, ഇത് ഒരു വ്യക്തിയ്ക്ക് വായിക്കുകയും മനസ്സിലാക്കുകയും ചെയ്യുന്നത് വളരെ കഠിനമാണ്.

പഴയകാല കമ്പ്യൂട്ടറുകൾ, ഉദാഹരണത്തിന് ടിഎക്സ്-0(TX-0) പിഡിപി-1 എന്നിവ നേരിട്ട് യന്ത്ര കോഡിൽ പ്രോഗ്രാമുകൾ എഴുതുന്നതിന്റെ വഴിയായിരുന്നു പ്രവർത്തിച്ചത്. എന്നാൽ, ഇതിന് വളരെ സമയം പിടിക്കുകയും പിഴവുകൾക്ക് സാധ്യത കൂടുകയും ചെയ്‌തു. അതുകൊണ്ടാണ് എംഐടിയിലെ ഹാക്കർമാർ ഇതിനെ എളുപ്പമാക്കാൻ അസംബ്ലർ പ്രോഗ്രാമുകൾ ഉണ്ടാക്കിയത്. 

അസംബ്ലർ എന്നത് ഒരു പ്രോഗ്രാമാണ്, ഇത് മനുഷ്യന് വായിക്കാൻ സാധിക്കുന്ന അസംബ്ലി ഭാഷയെ യന്ത്രത്തിന് മനസ്സിലാകുന്ന യന്ത്ര കോഡിലേക്ക് മാറ്റുന്നു. ഇതിലൂടെ കോഡിംഗ് എളുപ്പവും ഡിബഗ്ഗിംഗ് (debugging) വേഗത്തിലുമാകുകയും ചെയ്തു. അസംബ്ലി ഭാഷയിൽ സെമാന്തിക്‌സ് (സെമാന്തിക്‌സ് എന്നത് ഒരു ഭാഷയുടെ ചിഹ്നങ്ങൾക്കും വാക്കുകൾക്കും ഉള്ള അർത്ഥത്തെ സൂചിപ്പിക്കുന്നതാണ്. പ്രോഗ്രാമിംഗ് ഭാഷകളിലും ഓരോ നിർദ്ദേശത്തിനും പ്രത്യേക അർത്ഥം ഉണ്ടാകണം.) ഇല്ല, പകരം മനുഷ്യന് വായിക്കാനാകുന്ന ചിഹ്നങ്ങൾ (മ്നെമോണിക്‌സ്) ഉപയോഗിച്ച് യന്ത്ര നിർദേശങ്ങളെ പ്രതിനിധീകരിക്കുകയാണ് ചെയ്യുന്നത്. ഇത് സിംബോളിക് അഡ്രസ്സുകൾ, സംഖ്യകൾ, ടെക്സ്റ്റ് തുടങ്ങിയവ യന്ത്രത്തിനാവശ്യമുള്ള ഓപ്‌കോഡുകൾ (machine instructions) ആക്കി മാറ്റുന്നു. സാധാരണയായി, ഒരു യന്ത്ര നിർദ്ദേശം അസംബ്ലി ഭാഷയിൽ ഒരു വരിയായി എഴുതപ്പെടുന്നു, ഇത് മ്നെമോണിക് എന്നു വിളിക്കപ്പെടുന്നു.

## അവലംബം