കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ്ങ്
കമ്പ്യൂട്ടർ പ്രോഗ്രാമിംഗ് എന്നത് ഒരു പ്രത്യേക കണക്കുകൂട്ടൽ നടത്തുന്ന പ്രക്രിയയാണ് (അല്ലെങ്കിൽ പൊതുവായി, ഒരു നിർദ്ദിഷ്ട കമ്പ്യൂട്ടിംഗ് റിസൾട്ട് കൈവരിക്കുന്നു), സാധാരണയായി ഒരു എക്സിക്യൂട്ടബിൾ കമ്പ്യൂട്ടർ പ്രോഗ്രാം രൂപകൽപന ചെയ്യുകയും നിർമ്മിക്കുകയും ചെയ്യുന്നു. വിശകലനം, അൽഗോരിതങ്ങൾ സൃഷ്ടിക്കൽ, പ്രൊഫൈലിംഗ് അൽഗോരിതങ്ങളുടെ കൃത്യതയും വിഭവ ഉപഭോഗവും, അൽഗരിതങ്ങൾ നടപ്പിലാക്കൽ (സാധാരണയായി തിരഞ്ഞെടുത്ത പ്രോഗ്രാമിംഗ് ഭാഷയിൽ, സാധാരണയായി കോഡിംഗ് എന്ന് വിളിക്കുന്നു) തുടങ്ങിയ ജോലികൾ പ്രോഗ്രാമിംഗിൽ ഉൾപ്പെടുന്നു.[1][2]ഒരു പ്രോഗ്രാമിന്റെ സോഴ്സ് കോഡ്, സെൻട്രൽ പ്രോസസ്സിംഗ് യൂണിറ്റ് നേരിട്ട് നടപ്പിലാക്കുന്ന മെഷീൻ കോഡിന് പകരം പ്രോഗ്രാമർമാർക്ക് മനസ്സിലാകുന്ന ഒന്നോ അതിലധികമോ ഭാഷകളിൽ എഴുതിയിരിക്കുന്നു. ഒരു കമ്പ്യൂട്ടറിൽ ഒരു ടാസ്ക്കിന്റെ (ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പോലെ സങ്കീർണ്ണമായേക്കാം) പ്രകടനം ഓട്ടോമേറ്റ് ചെയ്യുന്ന നിർദ്ദേശങ്ങളുടെ ഒരു ശ്രേണി കണ്ടെത്തുക എന്നതാണ് പ്രോഗ്രാമിംഗിന്റെ ഉദ്ദേശ്യം, പലപ്പോഴും നൽകിയിരിക്കുന്ന പ്രശ്നം പരിഹരിക്കുന്നതിന് വേണ്ടിയായിരിക്കുമിത്. പ്രാവീണ്യമുള്ള പ്രോഗ്രാമിംഗിന് സാധാരണയായി ആപ്ലിക്കേഷൻ ഡൊമെയ്നിനെക്കുറിച്ചുള്ള അറിവ്, പ്രത്യേക അൽഗോരിതങ്ങൾ, യുക്തി എന്നിവ ഉൾപ്പെടെ വിവിധ വിഷയങ്ങളിൽ വൈദഗ്ദ്ധ്യം ആവശ്യമാണ്.
ടെസ്റ്റിംഗ്, ഡീബഗ്ഗിംഗ്, സോഴ്സ് കോഡ് മെയിന്റനൻസ്, ബിൽഡ് സിസ്റ്റങ്ങളുടെ നിർവ്വഹണം, കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകളുടെ മെഷീൻ കോഡ് ആർട്ടിഫാക്റ്റ്സ് മാനേജ് ചെയ്യുന്നത് പോലുള്ള പ്രോഗ്രാമിംഗുമായി ബന്ധപ്പെട്ടതുമായ ടാസ്ക്കുകളിൽ ഉൾപ്പെടുന്നു. ഇവ പ്രോഗ്രാമിംഗ് പ്രക്രിയയുടെ ഭാഗമായി കണക്കാക്കാം, പക്ഷേ പലപ്പോഴും സോഫ്റ്റ്വെയർ ഡെവലപ്മെന്റ് എന്ന പദം ഈ വലിയ പ്രക്രിയയ്ക്കായി പ്രോഗ്രാമിംഗ്, നടപ്പിലാക്കൽ അല്ലെങ്കിൽ കോഡിംഗ് കോഡിന്റെ യഥാർത്ഥ എഴുത്തിനായി നീക്കിവച്ചിരിക്കുന്നു. സോഫ്റ്റ്വെയർ എഞ്ചിനീയറിംഗിൽ എഞ്ചിനീയറിംഗ് ടെക്നിക്കുകളും സോഫ്റ്റ്വെയർ ഡെവലപ്മെന്റ് രീതികളും സംയോജിപ്പിക്കുന്നു. റിവേഴ്സ് എഞ്ചിനീയറിംഗ് എന്നത് ഡിസൈനർമാർ, വിശകലന വിദഗ്ധർ, പ്രോഗ്രാമർമാർ എന്നിവർക്ക് മനസ്സിലാക്കുന്നതിനും പുനർനിർമ്മിക്കുന്നതിനും/വീണ്ടും നടപ്പിലാക്കുന്നതിനും ഉപയോഗിക്കുന്ന ഒരു അനുബന്ധ പ്രക്രിയയാണ്.[3]
ചരിത്രം
പ്രോഗ്രാമബിൾ ഉപകരണങ്ങൾ നൂറ്റാണ്ടുകളായി നിലവിലുണ്ട്. 9-ാം നൂറ്റാണ്ടിൽ തന്നെ, പേർഷ്യൻ ബാനു മൂസ സഹോദരന്മാർ ഒരു പ്രോഗ്രാമബിൾ മ്യൂസിക് സീക്വൻസർ കണ്ടുപിടിച്ചു, അവർ സാമർത്ഥ്യമുള്ള ഉപകരണങ്ങളെക്കുറിച്ച് വിവരിക്കുന്ന പുസ്തകത്തിൽ ഒരു ഓട്ടോമേറ്റഡ് മെക്കാനിക്കൽ ഫ്ലൂട്ട് പ്ലെയറിനെക്കുറിച്ച് വിവരിച്ചിണ്ട്.[4][5] 1206-ൽ, അറബ് എഞ്ചിനീയർ അൽ-ജസാരി ഒരു പ്രോഗ്രാമബിൾ ഡ്രം മെഷീൻ കണ്ടുപിടിച്ചു, അവിടെ ഒരു മ്യൂസിക്കൽ മെക്കാനിക്കൽ ഓട്ടോമാറ്റൺ, കുറ്റികളിലൂടെയും ക്യാമറകളിലൂടെയും വ്യത്യസ്ത താളങ്ങളും ഡ്രം പാറ്റേണുകളും പ്ലേ ചെയ്യാൻ കഴിയും.[6][7] 1801-ൽ, ജാക്കാർഡ് ലൂമിന് "പ്രോഗ്രാം" മാറ്റിക്കൊണ്ട് തികച്ചും വ്യത്യസ്തമായ നെയ്ത്തുകൾ നിർമ്മിക്കാൻ കഴിഞ്ഞു - അവയിൽ ദ്വാരങ്ങളുള്ള പേസ്റ്റ്ബോർഡ് കാർഡുകളുടെ ഒരു പരമ്പര തന്നെയുണ്ടായിരുന്നു.
കോഡ് ബ്രേക്കിംഗ് അൽഗോരിതങ്ങളും നൂറ്റാണ്ടുകളായി നിലവിലുണ്ട്. 9-ാം നൂറ്റാണ്ടിൽ, അറബ് ഗണിതശാസ്ത്രജ്ഞനായ അൽ-കിണ്ടി, ക്രിപ്റ്റോഗ്രാഫിക് സന്ദേശങ്ങൾ മനസ്സിലാക്കുന്നതിനുള്ള ഒരു കൈയെഴുത്തുപ്രതിയിൽ, എൻക്രിപ്റ്റ് ചെയ്ത കോഡ് മനസ്സിലാക്കുന്നതിനുള്ള ഒരു ക്രിപ്റ്റോഗ്രാഫിക് അൽഗോരിതത്തെക്കുറിച്ച് വിവരിച്ചിട്ടുണ്ട്. ആദ്യകാല കോഡ് ബ്രേക്കിംഗ് അൽഗോരിതമായ ഫ്രീക്വൻസി അനാലിസിസ് വഴി ക്രിപ്റ്റനാലിസിസിന്റെ ആദ്യ വിവരണം അദ്ദേഹം നൽകി.[8]