പ്രോഗ്രാമിംഗ് ഭാഷ

പ്രോഗ്രാമിംഗ്‌ ഭാഷ ഒരു യന്ത്രത്തെ, പ്രത്യേകിച്ച് ഒരു ഗണികാരത്തെ (കമ്പ്യൂട്ടറിനെ) നിയന്ത്രിക്കാൻ ഉപയോഗിക്കുന്ന കൃത്രിമ ഭാഷയാണ്. ഓരോ പ്രോഗ്രാമിംഗ് ഭാഷയും മനുഷ്യർ സംവേദനത്തിന് ഉപയോഗിക്കുന്ന ഭാഷകൾ പോലെതന്നെ നിയതമായ വ്യാകരണ നിയമങ്ങളാൽ നിർവചിക്കപ്പെട്ടിരിക്കുന്നു.

ശാസ്ത്രലോകത്തെ പല ചിന്തകരുടെയും നിലപാട് പ്രോഗ്രാ‍മിംഗ് ഭാഷ എന്ന പദം എല്ലാത്തരം അൽഗൊരിതങ്ങളിലെ നിർദ്ദേശങ്ങളും വ്യക്തമാക്കാൻ സാധിക്കുന്ന ഭാഷകൾക്കു മാത്രമേ ഉപയോഗിക്കാവൂ എന്നാണ്. ഗണിതശാസ്ത്രപ്രകാരം ഇത്തരം ഭാഷകൾക്ക് അലൻ ടൂറിങ്ങിന്റെ യൂണിവേഴ്സൽ ടൂറിങ് മെഷീനു സമമായ ഗണികശേഷി ഉണ്ടാവും. ഗണിതശാസ്ത്രപ്രകാരം, ഇതിന്റെ അർത്ഥം പ്രസ്തുത പ്രോഗ്രാമിംഗ്‌ ഭാഷ ടൂറിംഗ്-പൂർണ്ണം ആണ് എന്നാണ്  ശേഷി കുറഞ്ഞ ഭാഷകളെ കമ്പ്യൂട്ടർ ഭാഷകൾ എന്നു വിളിക്കുന്നു. ആയിരക്കണക്കിനു പ്രോഗ്രാമിംഗ് ഭാഷകൾമെയ് 2006 വരെ, ഓസ്ട്രേലിയയിലെ മർഡോക്ക് സർവകലാശാല പുറത്തിറക്കുന്ന The Encyclopedia of Computer Languages ഇൽ 8512 കമ്പ്യൂട്ടർ ഭാഷകൾ നിരത്തിയിട്ടുണ്ട്. നിലവിലുണ്ട്. ഓരോ വർഷവും ധാരാളം പുതിയവ സൃഷ്ടിക്കപ്പെട്ടുകൊണ്ടുമിരിക്കുന്നു.

മിക്ക പ്രോഗ്രാമിംഗ് ഭാഷകളും കമ്പ്യൂട്ടറുകൾക്കുള്ള നിർദ്ദേശങ്ങൾ ഉൾക്കൊള്ളുന്നു. പൊതുവായ പ്രോഗ്രാമിംഗ് ഭാഷകളേക്കാൾ ഒരു കൂട്ടം നിർദ്ദിഷ്ട നിർദ്ദേശങ്ങൾ ഉപയോഗിക്കുന്ന പ്രോഗ്രാമബിൾ മെഷീനുകളുണ്ട്. 1800-കളുടെ തുടക്കം മുതൽ, ജാക്കാർഡ് ലൂമുകൾ, മ്യൂസിക് ബോക്സുകൾ, പ്ലെയർ പിയാനോകൾ തുടങ്ങിയ യന്ത്രങ്ങളുടെ പ്രവർത്തികൾ നിയന്ത്രിക്കാൻ പ്രോഗ്രാമുകൾ ഉപയോഗിച്ചു.Ettinger, James (2004) Jacquard's Web, Oxford University Pressഈ മെഷീനുകൾക്കായുള്ള പ്രോഗ്രാമുകൾ (ഒരു പ്ലെയർ പിയാനോയുടെ സ്ക്രോളുകൾ പോലെയുള്ളവ) വ്യത്യസ്ത ഇൻപുട്ടുകളിലേക്കോ സാഹചര്യങ്ങൾക്കനുസൃതമായോ പ്രതികരിക്കുന്ന വ്യത്യസ്ത സ്വഭാവം സൃഷ്ടിക്കാൻ സാധിച്ചില്ല.

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

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

പ്രോഗ്രാമിംഗ് ഭാഷകളുടെ രൂപകൽപ്പന, നടപ്പിലാക്കൽ, വിശകലനം, ക്യാരക്ടറൈസേഷൻ, വർഗ്ഗീകരണം എന്നിവ കൈകാര്യം ചെയ്യുന്ന കമ്പ്യൂട്ടർ സയൻസിന്റെ ഒരു ഉപമേഖലയാണ് പ്രോഗ്രാമിംഗ് ഭാഷാ സിദ്ധാന്തം.
നിർവചനങ്ങൾ
പ്രോഗ്രാമിംഗ് ഭാഷ എന്നത് പ്രോഗ്രാമുകൾ എഴുതുന്നതിനുള്ള ഒരു നൊട്ടേഷനാണ്, അവ ഒരു കംപ്യൂട്ടേഷന്റെയോ അൽഗോരിതത്തിന്റെയോ സ്പെസിഫിക്കേ ഷനുകളാണ്. ചില രചയിതാക്കൾ "പ്രോഗ്രാമിംഗ് ഭാഷ" എന്ന പദം സാധ്യമായ എല്ലാ അൽഗോരിതങ്ങളും പ്രകടിപ്പിക്കാൻ കഴിയുന്ന ഭാഷകളിലേക്ക് പരിമിതപ്പെടുത്തുന്നു.In mathematical terms, this means the programming language is Turing-complete  ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയെ ഉൾപ്പെടുത്തുന്നതിന് പലപ്പോഴും പ്രധാനമായി കണക്കാക്കപ്പെടുന്ന സ്വഭാവസവിശേഷതകൾ ഉൾപ്പെടുന്നു:
ഫങ്ഷനുകളും ലക്ഷ്യവും
കമ്പ്യൂട്ടർ പ്രോഗ്രാമിംഗ് ഭാഷ എന്നത് കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകൾ എഴുതാൻ ഉപയോഗിക്കുന്ന ഒരു ഭാഷയാണ്, അതിൽ ഒരു കമ്പ്യൂട്ടർ ചിലതരം കമ്പ്യൂട്ടേഷൻ, "The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages – languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation." അല്ലെങ്കിൽ അൽഗോരിതം നടത്തുകയും പ്രിന്ററുകൾ, ഡിസ്ക് ഡ്രൈവുകൾ, റോബോട്ടുകൾ,  എന്നിങ്ങനെയുള്ള ബാഹ്യ ഉപകരണങ്ങളെ നിയന്ത്രിക്കുകയും ചെയ്യുന്നു. ഉദാഹരണത്തിന്, ഒരു കമ്പ്യൂട്ടർ പ്രിന്റർ അല്ലെങ്കിൽ ഡിസ്പ്ലേ നിയന്ത്രിക്കുന്നതിന് പോസ്റ്റ്സ്ക്രിപ്റ്റ് പ്രോഗ്രാമുകൾ മറ്റൊരു പ്രോഗ്രാം സൃഷ്ടിക്കപ്പെടുന്നു.

 വിവിധതരം പ്രോഗ്രാമിങ് ഭാഷകൾ 
പ്രോഗ്രാമിങ് ഭാഷകളെ മൂന്നായി തരം തിരിക്കാം
 യന്ത്ര തല ഭാഷ (Machine level language)
 അസ്സെംബ്ലി ഭാഷ
 ഉന്നത തല ഭാഷ (High level language)

 അവലംബം 

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