# ഉന്നത തല ഭാഷ

**ഇംഗ്ലീഷ് വിലാസം**

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

1960-കളിൽ, ഒരു കംപൈലർ ഉപയോഗിച്ചുള്ള ഒരു ഉന്നത തലത്തിലുള്ള പ്രോഗ്രാമിംഗ് ഭാഷയെ സാധാരണയായി ഓട്ടോകോഡ് എന്ന് വിളിച്ചിരുന്നു. ഓട്ടോകോഡുകൾക്ക് ഉദാഹരണങ്ങൾ കോബോൾ(COBOL), ഫോർട്രാൻ(Fortran)എന്നിവയാണ്.

കമ്പ്യൂട്ടറുകൾക്കായി രൂപകല്പന ചെയ്ത ആദ്യത്തെ ഉന്നത തല പ്രോഗ്രാമിംഗ് ഭാഷ കോൺറാഡ് സൂസ് സൃഷ്ടിച്ച പ്ലാങ്കാൽകൽ(Plankalkül) ആയിരുന്നു. എന്നിരുന്നാലും, അദ്ദേഹത്തിന്റെ കാലത്ത് അത് നടപ്പിലാക്കപ്പെട്ടില്ല, കൂടാതെ രണ്ടാം ലോകമഹായുദ്ധം മൂലമുണ്ടായ മറ്റ് സംഭവവികാസങ്ങളിൽ നിന്ന് അദ്ദേഹത്തിന്റെ യഥാർത്ഥ സംഭാവനകൾ ഏറെക്കുറെ ഒറ്റപ്പെട്ടു, ഹൈൻസ് റുട്ടിഷൗസറിന്റെ "സൂപ്പർപ്ലാൻ" ഭാഷയിൽ ഉള്ള ഭാഷയുടെ സ്വാധീനം മാറ്റിനിർത്തിയാൽ ഒരു പരിധി വരെ ആൽഗോൾ ഭാഷയ്ക്കും ഒറ്റപ്പെടൽ സംഭവിച്ചിട്ടുണ്ട്. ഐബിഎമ്മിന്റെ മുൻകാല ഓട്ടോകോഡ് സിസ്റ്റങ്ങളുടെ മെഷീൻ-സ്വതന്ത്ര വികസനമായ ഫോർട്രാൻ ആയിരുന്നു, വളരെ വ്യാപക ഉപയോഗമുണ്ടായിരുന്ന ആദ്യത്തെ ഉന്നത തല ഭാഷ. അൽഗോൾ കുടുംബത്തിൽപ്പെട്ട , 1958-ൽ നിർവചിക്കപ്പെട്ട അൽഗോൾ 58 ഉം അൽഗോൾ 60 യും 1960-ൽ യൂറോപ്യൻ, അമേരിക്കൻ കമ്പ്യൂട്ടർ ശാസ്ത്രജ്ഞരുടെ സമിതികൾ നിർവ്വചിച്ചു, ലെക്സിക്കൽ സ്കോപ്പിന് കീഴിൽ റിക്രക്ഷനും, നെസ്റ്റഡ് ഫംഗ്ഷനുകളും അവതരിപ്പിച്ചു. മൂല്യവും നെയിം പാരാമീറ്ററുകളും അവയുടെ അനുബന്ധ സെമാന്റിക്‌സും തമ്മിൽ വ്യത്യാസമുള്ള ആദ്യത്തെ ഭാഷയും അൽഗോൾ 60 ആയിരുന്നു. അൽഗോൾ നിരവധി ഘടനാപരമായ പ്രോഗ്രാമിംഗ് ആശയങ്ങളും അവതരിപ്പിച്ചു, അതായത്, `while-do`, `if-then-else` കൺസ്ട്രക്‌റ്റുകളും അതിന്റെ വാക്യഘടനയും ഔപചാരിക നൊട്ടേഷനിൽ ആദ്യമായി വിവരിച്ചത് - ബാക്കസ്-നൗർ ഫോമിലാണ്(ബിഎൻഎഫ്). ഏകദേശം ഇതേ കാലയളവിൽ, കോബോൾ റെക്കോർഡുകൾ അവതരിപ്പിച്ചു (സ്‌ട്രക്‌ട്‌സ് എന്നും അറിയപ്പെടുന്നു) ലിസ്പ് ആദ്യമായി ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയിൽ പൂർണ്ണമായും പൊതുവായ ലാംഡ അബ്സ്ട്രാക്ഷൻ അവതരിപ്പിച്ചു.

## സവിശേഷതകൾ

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

## അവലംബം