"ഫങ്ഷണൽ പ്രോഗ്രാമിംഗ്" എന്ന താളിന്റെ പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം
Content deleted Content added
(ചെ.) വർഗ്ഗം:പ്രോഗ്രാമിങ് ശൈലികൾ ചേർത്തു ഹോട്ട്ക്യാറ്റ് ഉപയോഗിച്ച് |
(ചെ.) യന്ത്രം: അക്ഷരപിശകുകൾ ശരിയാക്കുന്നു |
||
വരി 1:
{{prettyurl|functional programming}}
കമ്പ്യൂട്ടർ ശാസ്ത്രത്തിൽ, '''ഫങ്ഷണൽ പ്രോഗ്രാമിംഗ്''' (functional programming)എന്നത് ഒരു പ്രോഗ്രാമിങ് മാതൃകയാണ് - കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകളുടെ ഘടനയും ഘടകങ്ങളും കെട്ടിപ്പടുക്കുന്ന ഒരു ശൈലി. ഇത് ഗണിതശാസ്ത്ര മൂല്യങ്ങളുടെ മൂല്യനിർണ്ണയം എന്ന നിലയിൽ കണക്കുകൂട്ടൽ കണക്കാക്കുകയും മാറ്റം വരുത്തൽ, മാറ്റാവുന്ന ഡാറ്റ ഒഴിവാക്കുകയും ചെയ്യുന്നു. കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകളുടെ ഘടനയും ഘടകങ്ങളും നിർമ്മിക്കാനുള്ള ഒരു ശൈലി അത് കണക്കുകൂട്ടൽ, ഗണിതശാസ്ത്ര മൂല്യങ്ങൾ എന്നിവയുടെ വിലയിരുത്തലായി കണക്കാക്കുന്നു. ഒരു പ്രസ്താവനയുള്ള പ്രോഗ്രാമിങ് മാതൃകയാണ്, പ്രോഗ്രാമുകൾ പ്രസ്താവനയ്ക്ക് പകരം എക്സ്പ്രഷൻ അല്ലെങ്കിൽ ഡിക്ലറേഷൻ<ref name="expression style">{{cite web|url=https://wiki.haskell.org/Declaration_vs._expression_style#Expression_style|title=Declaration vs. expression style - HaskellWiki|publisher=}}</ref> ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു എന്നാണ്. ഫങ്ഷണൽ കോഡ് ഐഡിംപോട്ടന്റ്(idempotent) ആണ്, ഒരു ഫങ്ഷന്റെ ഔട്ട്പുട്ട് മൂല്യം ഫംഗ്ഷനിലേക്ക് പാസാകുന്ന ആർഗ്യുമെന്റുകളിൽ മാത്രമാണ്, അതിനാൽ ഒരു ഫങ്ഷൻ f അതേ മൂല്യത്തോട് കൂടി രണ്ട് വട്ടം വിളിക്കുന്നു ഒരു ആർഗുമെന്റ് x ഓരോ തവണയും ഒരേ ഫലം f (x) നൽകുന്നു. ഇത് ഈ നടപടിക്രമങ്ങളിൽ വ്യത്യസ്തമാണ് ലോക്കൽ അല്ലെങ്കിൽ ഗ്ലോബൽ സ്റ്റേറ്റിനെ ആശ്രയിച്ചിരിക്കുന്നു, ഒരേ വാദഗതികൾക്കൊപ്പം മറ്റൊരു പ്രോഗ്രാം സ്റ്റേറ്റ്മെന്റിനെ വിളിക്കുമ്പോൾ വ്യത്യസ്ത സമയങ്ങളിൽ വ്യത്യസ്ത ഫലങ്ങൾ ഉണ്ടാകാം. പാർശ്വഫലങ്ങൾ നീക്കംചെയ്യൽ, അതായത്, ഫംഗ്ഷൻ ഇൻപുട്ടുകൾക്ക് അനുസൃതമല്ലാത്ത അവസ്ഥയിലുള്ള മാറ്റങ്ങൾ, ഒരു പ്രോഗ്രാമിന്റെ പെരുമാറ്റം
പ്രവർത്തന പ്രോഗ്രാമിംഗ് ഭാഷയുടെ ഉൽഭവം ലാംഡ കാൽകുലസിൽ നിന്നാണ്, സൂക്ഷ്മപരിശോധന, ഫങ്ഷൻ ഡെഫനിഷൻ, ഫങ്ഷൻ ആപ്ലിക്കേഷൻ, റിക്കർഷൻ എന്നിവയെക്കുറിച്ച് അന്വേഷിക്കാൻ 1930 കളിൽ വികസിപ്പിച്ച എൻച്ചെഡിംഗ്സ് പ്രോബ്ലം (Entscheidungsproblem)എന്ന ഔപചാരിക സിസ്റ്റം വികസിപ്പിച്ചെടുത്തു. നിരവധി പ്രവർത്തന പ്രോഗ്രാമിങ് ഭാഷകൾ ലാംഡ കാൽകുലസിൽ വിപുലീകരിക്കാൻ കഴിയും. പരക്കെ അറിയപ്പെടുന്ന ഡിക്ലറേറ്റീവ് പ്രോഗ്രാമിങ്, ലോജിക്കൽ പ്രോഗ്രാമിങ് എന്നിവ റിലേഷൻസിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.
വരി 6:
ഇതിൽ നിന്നും വ്യത്യസ്തമായി, ഇംപെറേറ്റീവ് പ്രോഗ്രാമിങ് സോഴ്സ് കോഡിൽ കമാൻഡുകൾ ഉള്ള അവസ്ഥ മാറുന്നു, ലളിതമായ മാതൃക അസൈൻമെന്റ് ആയിരിക്കും. ഇംപെറേറ്റീവ് പ്രോഗ്രാമിങ്ങിൽ സബ്റൂട്ടൈൻ ഫങ്ഷനുകൾ ഉണ്ട്, എന്നാൽ ഇവ ഗണിതശാസ്ത്രപരമായ അർത്ഥത്തിൽ പ്രവർത്തിക്കുന്നില്ല. പ്രോഗ്രാം അവസ്ഥാ മൂല്യം മാറിയേക്കാം, പാർശ്വഫലങ്ങൾ ഉണ്ടാകും. തിരിച്ചുള്ള മൂല്യങ്ങളില്ലാത്ത പ്രവർത്തനങ്ങൾ അർത്ഥപൂർണ്ണമാണ്. ഇക്കാരണങ്ങളാൽ അവയ്ക്ക് റഫറൻഷ്യൽ സുതാര്യതയില്ല. അതായത്, ഒരേ ഭാഷാ ആവിഷ്കരണം വ്യത്യസ്ത സമയങ്ങളിൽ വ്യത്യസ്ത മൂല്യങ്ങൾ നടപ്പാക്കാൻ കഴിയും.
വാണിജ്യപരമായ
പ്രോഗ്രാമിംഗ് ഫങ്ഷണൽ ശൈലി കൊണ്ടുവരാൻ ഫങ്ഷണൽ പ്രോഗ്രാമിങ്ങിനായി പ്രത്യേകം രൂപകൽപ്പന ചെയ്തിട്ടില്ലാത്ത ഭാഷകളിൽ പോലും സാധ്യമാണ്. ഉദാഹരണമായി, ഫങ്ഷണൽ പ്രോഗ്രാമിങ് ആശയങ്ങൾ എങ്ങനെ പ്രയോഗിക്കണമെന്ന് വിശദീകരിക്കുന്ന ഒരു പുസ്തകത്തിന്റെ വിഷയം ആപേക്ഷികമായ [[പേൾ]] പ്രോഗ്രാമിങ് ഭാഷയാണ്.<ref>{{cite book | last = Dominus | first = Mark J. | authorlink = Mark Jason Dominus | title = Higher-Order Perl |publisher=[[Morgan Kaufmann]] | year = 2005 |isbn = 978-1-55860-701-9 | title-link = Higher-Order Perl }}</ref>[[പി.എച്ച്.പി.]] പ്രോഗ്രാമിങ് ഭാഷയുടെ കാര്യത്തിലും ഇത് സത്യമാണ്.<ref>{{cite book | last = Holywell | first = Simon | title = Functional Programming in PHP | publisher = php[architect] | year = 2014 | isbn = 9781940111056}}</ref>സി ++ 11, ജാവ 8, സി # 3.0 എന്നിവയിൽ ഫങ്ഷണൽ സ്റ്റൈൽ സുഗമമാക്കുന്നതിന് എല്ലാം ചേർത്ത നിർമ്മിതികളും ഉൾപ്പെടുന്നു. [[ജൂലിയ (പ്രോഗ്രാമിങ് ഭാഷ)|ജൂലിയ]] ഭാഷയിൽ ഫങ്ഷണൽ പ്രോഗ്രാമിംഗ് കഴിവുകൾ ലഭ്യമാക്കുന്നു. [[സ്കാല (പ്രോഗ്രാമിങ് ഭാഷ)|സ്കാലയിൽ]] രസകരമായ സംഗതിയുള്ളത്-ഇത് പലപ്പോഴും ഒരു ഫങ്ഷണൽ ശൈലിയിലാണ് എഴുതപ്പെടുന്നത്, എന്നാൽ പാർശ്വഫലങ്ങളുടെ(side effects) സാന്നിദ്ധ്യം, മാറ്റാവുന്ന സ്ഥലവും, അത് ഇംപെറേറ്റീവ്, ഫങ്ഷണൽ ഭാഷകളുടെ ഇടയിൽ ഗ്രേ ഏരിയ എന്നാണ് അറിയപ്പെടുന്നത്.
|