Jump to content

അറേ പ്രോഗ്രാമിംഗ്

വിക്കിപീഡിയ, ഒരു സ്വതന്ത്ര വിജ്ഞാനകോശം.

കമ്പ്യൂട്ടർ സയൻസിൽ, അറേ പ്രോഗ്രാമിംഗ് എന്നത് ഒരു സമയത്ത് ഒരു മൂല്യത്തിന് പകരം മുഴുവൻ മൂല്യങ്ങളിലേക്കും ഒരേസമയം പ്രവർത്തനങ്ങൾ പ്രയോഗിക്കുന്ന ഒരു രീതിയാണ്. വലിയ അളവിലുള്ള ഡാറ്റ കാര്യക്ഷമമായി പ്രോസസ്സ് ചെയ്യേണ്ട സയൻസ്, എഞ്ചിനീയറിംഗ് തുടങ്ങിയ മേഖലകളിൽ ഈ സമീപനം പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്[1].

അറേ പ്രോഗ്രാമിംഗിനെ പിന്തുണയ്‌ക്കുന്ന ആധുനിക പ്രോഗ്രാമിംഗ് ഭാഷകൾ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നത് ഒരേ ഓപ്പറേഷൻ ഒന്നിലധികം ഡാറ്റ പോയിൻ്റുകളിലേക്ക് ഒരേസമയം പ്രയോഗിക്കുന്നത് എളുപ്പമാക്കുന്നതിനാണ്. വ്യക്തിഗത സംഖ്യകൾ (സ്കെയിലറുകൾ) കൈകാര്യം ചെയ്യുന്നതിനുപകരം, ലിസ്‌റ്റുകൾ (വെക്‌ടറുകൾ), ടേബിളുകൾ (മാട്രിക്‌സ്) അല്ലെങ്കിൽ കൂടുതൽ സങ്കീർണ്ണമായ ഘടനകൾ പോലുള്ള വലിയ സെറ്റുകളിൽ തടസ്സമില്ലാത്ത രീതിയിൽ പ്രവർത്തിക്കാൻ അവയ്ക്ക് കഴിയും. ഇത് വലിയ ഡാറ്റാസെറ്റുകളിൽ കണക്കുകൂട്ടലുകൾ നടത്തുന്നത് കൂടുതൽ കാര്യക്ഷമമാക്കുന്നു. എപിഎൽ, ജെ(J), ഫോർട്രാൻ, മാറ്റ് ലാബ്, അനലിറ്റിക്ക(Analytica), ഒക്ടേവ്, ആർ (R), സിൽക്ക് പ്ലസ്(Cilk Plus), ജൂലിയ, പേൾ ഡാറ്റ ലാംഗ്വേജ് (PDL) എന്നിവ അറേ പ്രോഗ്രാമിംഗിനെ പിന്തുണയ്ക്കുന്ന ഭാഷകളിൽ ഉൾപ്പെടുന്നു. ഈ ഭാഷകൾ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നത് വലിയ കൂട്ടം ഡാറ്റകളിൽ ഒരേസമയം പ്രവർത്തനങ്ങൾ കാര്യക്ഷമമായി കൈകാര്യം ചെയ്യുന്നതിനാണ്. വെക്‌ടറൈസ്ഡ് ഓപ്പറേഷനുകൾ, ഗണിതശാസ്ത്രം, താരതമ്യപ്പെടുത്തൽ, ലോജിക്കൽ ഓപ്പറേഷനുകൾ, ഗണിതശാസ്ത്ര പ്രവർത്തനങ്ങൾ എന്നിവ പോലുള്ള ജോലികൾക്കായി നം‌പൈ(NumPy), പാൻഡാസ്(Pandas), മാറ്റ് ലാബ്, ആർ, ജൂലിയ തുടങ്ങിയ ഭാഷകളിൽ ലഭ്യമായ മാനുവൽ ലൂപ്പിംഗ് ഇല്ലാതാക്കുകയും സങ്കീർണ്ണമായ ഡാറ്റ മാനിപ്പുലേഷൻ ലളിതമാക്കുകയും ചെയ്യുന്ന കാര്യക്ഷമമായ പ്രക്രിയകളാണ്[2]. സ്‌പ്രെഡ്‌ഷീറ്റുകൾക്കായി ഒരു മാജിക് ബട്ടൺ ഉള്ളത് പോലെയാണ് അറേ പ്രോഗ്രാമിംഗ്, എല്ലാ നമ്പറുകളിലേക്കും 10 ചേർക്കുക, ഉയർന്ന മൂല്യം കണ്ടെത്തുക അല്ലെങ്കിൽ ഡാറ്റ അടുക്കുക എന്നിങ്ങനെയുള്ള സങ്കീർണ്ണമായ ജോലികൾ തൽക്ഷണം ചെയ്യാൻ അനുവദിക്കുന്നു. ഇത് ഡാറ്റാ ജോലി ലളിതമാക്കുകയും കോഡിംഗ് സമയം കുറയ്ക്കുകയും ചെയ്യുന്നു.

അറേ എന്ന ആശയം

[തിരുത്തുക]

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

കെന്നത്ത് ഇ. ഐവർസൺ അറേ പ്രോഗ്രാമിംഗിനെക്കുറിച്ച് (എപിഎല്ലിലെ പോലെ) വിവരിച്ചത് മുഴുവൻ ഡാറ്റാ ഗ്രൂപ്പുകളിലും ഒരേസമയം പ്രവർത്തനങ്ങൾ നടത്തുന്നതിനുള്ള ഒരു മാർഗമായിത്തീർന്നു. ഇനിപ്പറയുന്ന രീതിയിൽ അദ്ദേഹം അതേക്കുറിച്ച് അദ്ദേഹത്തിന്റെ വാക്കുകളിലൂടെ മനസ്സിലാക്കാം:[3].

മിക്ക പ്രോഗ്രാമിംഗ് ഭാഷകളും ചിന്തിക്കുന്നതിനും പ്രശ്‌നപരിഹാരത്തിനും ഗണിതശാസ്ത്ര നൊട്ടേഷൻ പോലെ മികച്ചതല്ല, പ്രത്യേകിച്ച് പ്രായോഗിക തലത്തിലുള്ള ഗണിതശാസ്ത്രജ്ഞർക്ക്. ഗണിതശാസ്ത്രം നൽകുന്ന ലാളിത്യവും വ്യക്തതയും ഇല്ലാത്തതിനാൽ പ്രോഗ്രാമിംഗ് ഭാഷകൾ ചിന്തിക്കാൻ സാധിക്കുന്ന ഉപകരണങ്ങളായി വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്നില്ലെന്ന് അദ്ദേഹം പറഞ്ഞു.

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

ഡാറ്റാ ഘടകങ്ങൾ ഒരുപോലെയോ പരസ്പരം അടുത്തോ ഉള്ള പാറ്റേണുകൾ തിരിച്ചറിയുകയും കാര്യക്ഷമമായ പ്രോസസ്സിംഗിനായി ആ പ്രോപ്പർട്ടികൾ ഉപയോഗിക്കുകയും ചെയ്യുന്നതാണ് അറേ പ്രോഗ്രാമിംഗ്. ഒബ്‌ജക്‌റ്റ് ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗിൽ നിന്ന് വ്യത്യസ്തമായി, ഡാറ്റയെ ചെറിയ കഷണങ്ങളായി വിഭജിക്കുന്നു, അറേ പ്രോഗ്രാമിംഗ് ഡാറ്റയെ ഒരുമിച്ച് ഗ്രൂപ്പുചെയ്യുകയും ഒരേ പ്രവർത്തനം എല്ലാ ഘടകങ്ങളിലും ഒരേസമയം പ്രയോഗിക്കുകയും ഡാറ്റ മാനിപ്പുലേഷൻ ലളിതമാക്കുകയും ചെയ്യുന്നു.

ഫംഗ്‌ഷൻ റാങ്ക് ഒരു ഫംഗ്‌ഷൻ എത്ര അളവുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു എന്ന് വിവരിക്കുന്നു. രണ്ട് ഒറ്റ സംഖ്യകളെ ഗുണിച്ചാൽ, അത് റാങ്ക് 0 ആണ്, കാരണം ഒരു അളവും ഉൾപ്പെട്ടിട്ടില്ല. വെക്‌ടറുകൾ (സംഖ്യകളുടെ വരികൾ) ഉപയോഗിച്ച് ഒരു ക്രോസ് പ്രൊഡക്‌റ്റ് ചെയ്‌താൽ, നിങ്ങൾ 1ഡി ഒബ്‌ജക്‌റ്റുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നതിനാൽ അത് റാങ്ക് 1 ആണ്. മെട്രിക്സ് ഗുണനത്തിന് റാങ്ക് 2 ആണ്, കാരണം ഇത് സംഖ്യകളുടെ പട്ടികകൾ പോലെയുള്ള 2ഡി ഒബ്‌ജക്റ്റുകളിൽ പ്രവർത്തിക്കുന്നു. ഒരു ടേബിളിൽ എല്ലാം ചേർക്കുന്നത് പോലെയുള്ള ചില ഫംഗ്‌ഷനുകൾ, അതിൻ്റെ വലുപ്പം ഒരു ഡൈമെൻഷൻ കൊണ്ട് കുറയ്ക്കുന്നു-2ഡി ഒറ്റ സംഖ്യയാക്കി മാറ്റുന്നു.

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

ഉപയോഗങ്ങൾ

[തിരുത്തുക]

മുഴുവൻ ഡാറ്റാ സെറ്റുകളിലും ഒരേസമയം പ്രവർത്തനങ്ങൾ അനുവദിക്കുന്ന അറേ പ്രോഗ്രാമിംഗ്, ഇമ്പ്ലിസിറ്റ് പാരലൈസേഷന് അനുയോജ്യമാണ്. ഇതിനർത്ഥം, പല കണക്കുകൂട്ടലുകളും സമാന്തരമായി നടത്താം, പ്രോസസ്സിംഗ് വേഗത്തിലാക്കുന്നു, ഇന്ന് വ്യാപകമായി ഗവേഷണം നടക്കുന്ന ഒരു വിഷയം ഇതാണ്. കൂടാതെ, 1997 മുതൽ ഇൻ്റലും മറ്റ് സിപിയുകളും(ഉദാ:എഎംഡി പ്രോസസ്സറുകൾ, വിഐഎ പ്രോസസ്സറുകൾ, ട്രാൻസ്മെറ്റ പ്രോസസ്സറുകൾ) എംഎംഎക്സ്(MMX), ട്രിപ്പിൾഎസ്ഇ3(SSSE3), ത്രിഡിനൗ(3DNow) തുടങ്ങിയ ഇൻസ്ട്രക്ഷൻ സെറ്റുകൾ അവതരിപ്പിച്ചു! അത് സിമ്ഡി(SIMD-സിംഗിൾ ഇൻസ്ട്രക്ഷൻ മൾട്ടിപ്പിൾ ഡാറ്റ) പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നു. ഈ നിർദ്ദേശങ്ങൾ സിപിയുവിനുള്ളിൽ നേരിട്ട് അടിസ്ഥാന അറേ പ്രോസസ്സിംഗ് പ്രാപ്തമാക്കുന്നു, ഒന്നിലധികം ഡാറ്റ പോയിൻ്റുകൾ സമാന്തരമായി പ്രോസസ്സ് ചെയ്തുകൊണ്ട് പ്രകടനം മെച്ചപ്പെടുത്തുന്നു, ഇത് ഗ്രാഫിക്സ്, സയൻ്റിഫിക് കംപ്യൂട്ടേഷനുകൾ പോലുള്ള ജോലികളിൽ പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്. ആധുനിക സിപിയു-കൾ (സെൻട്രൽ പ്രോസസ്സിംഗ് യൂണിറ്റ്സ്) എവിഎക്സ്-512 പോലെയുള്ള പ്രത്യേക നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് കൂടുതൽ വികസിച്ചുകൊണ്ടിരിക്കുന്നു, അത് അവയെ ഒന്നിലധികം ഡാറ്റ പോയിൻ്റുകൾ ഒരേസമയം കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്നു (അറേ പ്രോസസ്സിംഗ്). ഇതിനർത്ഥം സിപിയുവിന് ഒറ്റയടിക്ക് ഒരു കൂട്ടം ഇനങ്ങളിൽ ഒരുമിച്ച് പ്രവർത്തിക്കാൻ കഴിയും എന്നാണ്, ഇത് ചില ജോലികൾ വേഗത്തിലാക്കുന്നു. അറേ പ്രോസസ്സിംഗ് പാരലൽ പ്രോസസ്സിംഗിൽ നിന്ന് വ്യത്യസ്തമാണ്, ഒരു പ്രോസസ്സർ ഒരേസമയം നിരവധി കാര്യങ്ങൾ ചെയ്യുന്നതിനുപകരം, ഒന്നിലധികം പ്രോസസ്സറുകൾ ഓരോന്നും പ്രശ്നത്തിൻ്റെ ഒരു ചെറിയ ഭാഗം(MIMD) കൈകാര്യം ചെയ്യുകയും അത് പരിഹരിക്കാൻ ഒരുമിച്ച് പ്രവർത്തിക്കുകയും ചെയ്യുന്നു.

അവലംബം

[തിരുത്തുക]
  1. "Array programming". Retrieved 10 Oct 2024.
  2. Stéfan van der Walt; S. Chris Colbert & Gaël Varoquaux (2011). "The NumPy array: a structure for efficient numerical computation". Computing in Science and Engineering. 13 (2). IEEE: 22–30. arXiv:1102.1523. Bibcode:2011CSE....13b..22V. doi:10.1109/mcse.2011.37. S2CID 16907816.
  3. Iverson, K. E. (1980). "Notation as a Tool of Thought". Communications of the ACM. 23 (8): 444–465. doi:10.1145/358896.358899.