പ്രോഗ്രാമിങ് ശൈലി

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

സർവസാധാരണമായ പ്രോഗ്രാമിങ് ശൈലികളാണ് 
***[[ഇംപെറേറ്റീവ് പ്രോഗ്രാമിംഗ്]]**, കാര്യങ്ങൾ എങ്ങനെ ചെയ്യണമെന്നതിനെക്കുറിച്ചുള്ള നേരിട്ടുള്ള നിർദ്ദേശങ്ങൾ, ഘട്ടം ഘട്ടമായി  കമ്പ്യൂട്ടറിന് നൽകുന്നു. പ്രോഗ്രാമിൻ്റെ ഒഴുക്ക് നിയന്ത്രിക്കുന്ന വ്യക്തമായ കമാൻഡുകൾ നിങ്ങൾ എഴുതുകയും പ്രോഗ്രാം പ്രവർത്തിക്കുമ്പോൾ വേരിയബിളുകളുടെ സ്റ്റേറ്റ് (അല്ലെങ്കിൽ മൂല്യങ്ങൾ) മാറ്റുകയും ചെയ്യുന്നു. കംപ്യൂട്ടറിനോട് കൃത്യമായി എന്താണ് ചെയ്യേണ്ടതെന്നും എങ്ങനെ ചെയ്യണമെന്നും ക്രമത്തിൽ പറയുന്നത് പോലെയാണ് ഇത്.
****[[പ്രോസീജറൽ പ്രോഗ്രാമിംഗ്]]** - എന്നത് പ്രോഗ്രാമുകൾ എഴുതുന്നതിനുള്ള ഒരു മാർഗമാണ് (ഫംഗ്‌ഷനുകൾ അല്ലെങ്കിൽ റുട്ടീനുകൾ എന്നും വിളിക്കുന്നു). ഈ നടപടിക്രമങ്ങൾ ഒരു നിർദ്ദിഷ്ട പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള ഘട്ടം ഘട്ടമായുള്ള നിർദ്ദേശങ്ങൾ പോലെയാണ്. എല്ലാം വലിയ രീതിയിൽ എഴുതുന്നതിനുപകരം, നിങ്ങൾ ടാസ്‌ക്കുകളെ ചെറുതും പുനരുപയോഗിക്കാവുന്നതുമായ ചെറു കഷണങ്ങളായി വിഭജിക്കുന്നു, ഇത് പിന്തുടരുന്നതും നിയന്ത്രിക്കുന്നതും എളുപ്പമാക്കുന്നു. കമ്പ്യൂട്ടറിന് ഒരു കൂട്ടം പാചകക്കുറിപ്പുകൾ നൽകുന്നത് പോലെയാണ് ഇത്, ഓരോ പാചകക്കുറിപ്പും ഒരു കാര്യം എങ്ങനെ ചെയ്യണമെന്ന് പറയുന്നു.
****[[ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ]]** - ഒബ്‌ജക്‌റ്റുകളായി(യഥാർത്ഥ ലോക വസ്തുക്കളുമായി താരതമ്യം ചെയ്യുന്നു.) കോഡ് ഓർഗനൈസ് ചെയ്യുന്നു, അവ ഡാറ്റ(വിവരങ്ങൾ),  ബിഹേവിയർ (പ്രവർത്തനങ്ങൾ) എന്നിവ സ്വയം ഉൾക്കൊള്ളുന്ന യൂണിറ്റുകൾ പോലെയാണ്. ഓരോ ഒബ്‌ജക്റ്റിനും അതിൻ്റെ വിവരങ്ങൾ സംഭരിക്കുന്ന ഡാറ്റാ ഫീൽഡുകളും അതിന് എന്ത് ചെയ്യാനാകുമെന്ന് നിർവചിക്കുന്ന രീതികളും ഉണ്ട്. ഒബ്‌ജക്‌റ്റുകൾ ഉപയോഗിക്കുന്നതിലൂടെ, ഈ ഒബ്‌ജക്‌റ്റുകളുമായി സംവദിക്കുന്ന പ്രോഗ്രാമുകൾ നിങ്ങൾക്ക് രൂപകൽപ്പന ചെയ്യാൻ കഴിയും, ഒരു ടാസ്‌ക് നിർവഹിക്കുന്നതിന് ഒരു മെഷീൻ്റെ വിവിധ ഭാഗങ്ങൾ എങ്ങനെ ഒരുമിച്ച് പ്രവർത്തിക്കുന്നു എന്നതിന് സമാനമായി കോഡ് നിയന്ത്രിക്കാനും പുനരുപയോഗിക്കാനും എളുപ്പമാക്കുന്നു.
*****ക്ലാസ് ബേസ്ഡ്**- ക്ലാസ് അധിഷ്‌ഠിത പ്രോഗ്രാമിംഗ് എന്നത് ഒരു തരം ഒബ്‌ജക്റ്റ് ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗാണ്, അവിടെ "ക്ലാസ്സുകൾ" എന്ന് വിളിക്കപ്പെടുന്ന മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള ബ്ലൂപ്രിൻ്റുകളെ അടിസ്ഥാനമാക്കി ഒബ്‌ജക്റ്റുകൾ സൃഷ്ടിക്കപ്പെടുന്നു. ഒബ്‌ജക്‌റ്റുകൾ വ്യക്തിഗതമായി നിർവചിക്കുന്നതിനുപകരം, ഒരു ക്ലാസ് നിർവചിക്കുകയും തുടർന്ന് ആ ക്ലാസിൽ നിന്ന് ഗുണങ്ങളും സ്വഭാവങ്ങളും അവകാശമാക്കുന്ന ഒബ്‌ജക്റ്റുകൾ സൃഷ്‌ടിക്കുകയും ചെയ്യുന്നു.
*****[[പ്രോട്ടോടൈപ്പ് അടിസ്ഥാനമാക്കിയുള്ള പ്രോഗ്രാമിംഗ്|പ്രോട്ടോടൈപ്പ് ബേസ്ഡ്]]**- ബ്ലൂപ്രിൻ്റുകൾ (ക്ലാസ്സുകൾ) ഉപയോഗിക്കുന്നതിന് പകരം നിലവിലുള്ള മറ്റ് ഒബ്‌ജക്റ്റുകളെ പകർത്തികൊണ്ട് ഒബ്‌ജക്റ്റുകൾ സൃഷ്‌ടിക്കുന്ന ഒരു മാർഗമാണ് പ്രോട്ടോടൈപ്പ് അധിഷ്‌ഠിത പ്രോഗ്രാമിംഗ്. ഒരു മുൻകൂട്ടി നിശ്ചയിച്ച ഘടന (ക്ലാസ്) ഉണ്ടാകുന്നതിനുപകരം, ഇതിനകം പ്രവർത്തിക്കുന്ന ഒന്നിൻ്റെ ഒരു പകർപ്പ് ഉണ്ടാക്കുകയും ആവശ്യാനുസരണം പരിഷ്ക്കരിക്കുകയും ചെയ്യുന്നു.
***ഡിക്ലറേറ്റീവ് ശൈലി അഥവാ പ്രഖ്യാപന ശൈലി**, പടിപടിയായി എങ്ങനെ ചെയ്യണമെന്ന് വിശദീകരിക്കാതെ കമ്പ്യൂട്ടറിനോട് നിങ്ങൾ എന്താണ് നേടാൻ ആഗ്രഹിക്കുന്നതെന്ന് പറയുന്നതാണ് ഡിക്ലറേറ്റീവ് പ്രോഗ്രാമിംഗ്. റിസൾട്ടിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു, ഇമ്പറേറ്റീവ് പ്രോഗ്രാമിംഗിൻ്റെ വിപരീതമാണിത് ഓരോ ജോലിയും എങ്ങനെ ചെയ്യണമെന്ന് നിങ്ങൾ കമ്പ്യൂട്ടറിനോട് പറയുന്നു.
****[[ഫങ്ഷണൽ പ്രോഗ്രാമിംഗ്]]** - ഫങ്ഷണൽ പ്രോഗ്രാമിംഗിൽ, ഗണിതത്തിലെ പോലെയുള്ള ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നു. മൂല്യങ്ങൾ മാറ്റുന്നതിനുപകരം (മ്യൂട്ടബിൾ ഡാറ്റ), ഒരു റിസൾട്ട് ലഭിക്കുന്നതിന് നിങ്ങൾ ഫംഗ്ഷനുകളിലൂടെ ഡാറ്റ കൈമാറുന്നു. കാര്യങ്ങൾ മാറ്റുന്നതിൻ്റെ ട്രാക്ക് സൂക്ഷിക്കുന്നത് ഇത് ഒഴിവാക്കുന്നു, കോഡ് വൃത്തിയുള്ളതും മനസ്സിലാക്കാൻ എളുപ്പവുമാക്കുന്നു.
****[[ലോജിക് പ്രോഗ്രാമിങ്]]** - ലോജിക് പ്രോഗ്രാമിംഗിൽ, നിങ്ങൾ ഒരു കൂട്ടം വസ്തുതകളും നിയമങ്ങളും നിർവ്വചിക്കുന്നു, തുടർന്ന് ചോദ്യങ്ങൾ ചോദിക്കുന്നു. യുക്തി ഉപയോഗിച്ച് ഒരു പസിൽ പരിഹരിക്കുന്നത് പോലെ ശരിയായ ഉത്തരം കണ്ടെത്തുന്നതിന് വേണ്ടി കമ്പ്യൂട്ടർ പ്രോഗ്രാം ഈ വസ്തുതകളും നിയമങ്ങളും ഉപയോഗിക്കുന്നു.
****[[റിയാക്ടീവ് പ്രോഗ്രാമിംഗ്]]** - റിയാക്ടീവ് പ്രോഗ്രാമിംഗ് എന്നത് ഒരു സിസ്റ്റം സജ്ജീകരിക്കുന്നത് പോലെയാണ്, അതിൽ ഒരു കാര്യം മാറുകയാണെങ്കിൽ, അതുമായി ബന്ധിപ്പിച്ചിരിക്കുന്ന എല്ലാം സ്വയം അപ്ഡേറ്റ് ചെയ്യുന്നു. മാറ്റാൻ നിങ്ങൾ സ്വമേധയാ പറയേണ്ടതില്ല - അത് സ്വതവേ സംഭവിക്കുന്നു.
***കൺകറൻ്റ് പ്രോഗ്രാമിംഗ്**- സമാന്തരമായി നിരവധി ജോലികൾ ചെയ്യുന്നത് പോലെ ഒരു പ്രോഗ്രാമിന് ഒരേ സമയം ഒന്നിലധികം ജോലികൾ കൈകാര്യം ചെയ്യാൻ കഴിയുമ്പോഴാണ് അതിനെ കൺകറൻ്റ് പ്രോഗ്രാമിംഗ് എന്ന് വിളിക്കുന്നത്. ഒന്നിലധികം ത്രെഡുകൾ ഉപയോഗിക്കുന്നത് (ഒരു പ്രോഗ്രാമിനുള്ളിലെ ചെറിയ ടാസ്‌ക്കുകൾ), വ്യത്യസ്‌ത കമ്പ്യൂട്ടറുകളിൽ പ്രവർത്തിക്കുക, അല്ലെങ്കിൽ ടാസ്‌ക്കുകൾക്കിടയിൽ ഡാറ്റ സുരക്ഷിതമായി പങ്കിടുക തുടങ്ങിയ കാര്യങ്ങൾ ഇതിൽ ഉൾപ്പെട്ടേക്കാം.
****ആക്ടർ പ്രോഗ്രാമിംഗ്**- "ആക്ടേഴ്സ്" എന്ന് വിളിക്കപ്പെടുന്ന സ്വതന്ത്ര യൂണിറ്റുകൾ സ്വന്തമായി പ്രവർത്തിക്കുകയും അവയ്ക്ക് ലഭിക്കുന്ന വിവരങ്ങളെ അടിസ്ഥാനമാക്കി തീരുമാനങ്ങൾ എടുക്കുകയും ചെയ്യുന്ന ചുമതലകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു മാർഗമാണ് ആക്ടർ പ്രോഗ്രാമിംഗ്. ഓരോ ആക്ടറും സാഹചര്യത്തെ അടിസ്ഥാനമാക്കി മറ്റുള്ളവരുമായി സഹകരിച്ചോ മത്സരിച്ചോ വ്യക്തിഗതമായി പ്രവർത്തിക്കാൻ കഴിയും.
***കൺസ്ട്രെയിൻ്റ് പ്രോഗ്രാമിംഗ്**- വേരിയബിളുകൾക്കായി നിയമങ്ങൾ സജ്ജീകരിച്ച് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള ഒരു മാർഗമാണ് കൺസ്ട്രെയിൻ്റ് പ്രോഗ്രാമിംഗ്. ചില പാറ്റേണുകൾക്ക് അനുയോജ്യമായ ഒരു പസിൽ പോലെ, എല്ലാ നിയമങ്ങളും പാലിക്കുന്ന പരിഹാരങ്ങൾ പ്രോഗ്രാം കണ്ടെത്തുന്നു.
***ഡാറ്റാഫ്ലോ പ്രോഗ്രാമിംഗ്**- ഡാറ്റാഫ്ലോ പ്രോഗ്രാമിംഗ് ഒരു സ്പ്രെഡ്ഷീറ്റ് പോലെ പ്രവർത്തിക്കുന്നു: ഒരു മൂല്യം മാറുമ്പോൾ, ബന്ധപ്പെട്ട എല്ലാ ഫോർമുലകളും സ്വയമേവ അപ്ഡേറ്റ് ചെയ്യുകയും റിസൾട്ടുകൾ വീണ്ടും കണക്കാക്കുകയും ചെയ്യുന്നു. പ്രോഗ്രാമിലൂടെ ഡാറ്റ എങ്ങനെ നീങ്ങുന്നു എന്നതിൽ ഇത് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു.
***ഡിസ്ട്രിബ്യൂട്ടഡ് പ്രോഗ്രാമിംഗ്**- എന്നത് ഒരു നെറ്റ്‌വർക്കിലൂടെ പരസ്പരം സഹകരിച്ച് ഒരു പ്രശ്നം പരിഹരിക്കാൻ വേണ്ടി വ്യത്യസ്ത കമ്പ്യൂട്ടറുകൾ ഒരുമിച്ച് പ്രവർത്തിക്കുന്നതാണ്. ഓരോ കമ്പ്യൂട്ടറും ജോലിയുടെ ഒരു ഭാഗം കൈകാര്യം ചെയ്യുന്നു, ഒപ്പം കമ്പ്യൂട്ടറുകൾ ഒരുമിച്ച് വേഗത്തിലും കാര്യക്ഷമമായും ടാസ്ക് പൂർത്തിയാക്കുന്നു.
***ജനറിക് പ്രോഗ്രാമിംഗ്**- എന്നത് വ്യക്തമാക്കാത്ത ഡാറ്റാ ടൈപ്പുകളിൽ പ്രവർത്തിക്കുന്ന അൽഗോരിതങ്ങൾ എഴുതുന്നു, അത് പിന്നീട് ആവശ്യമുള്ളപ്പോൾ നിർവചിക്കാവുന്നതാണ്. ഓരോ നിർദ്ദിഷ്ട കേസിലും വീണ്ടും എഴുതാതെ തന്നെ ഒരേ കോഡ് വ്യത്യസ്ത ടൈപ്പുകൾക്കായി വീണ്ടും ഉപയോഗിക്കാൻ ഇത് അനുവദിക്കുന്നു.
***മെറ്റാപ്രോഗ്രാമിംഗ്**- എന്നത് മറ്റ് പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കാനോ പരിഷ്‌ക്കരിക്കാനോ നിയന്ത്രിക്കാനോ കഴിയുന്ന പ്രോഗ്രാമുകൾ എഴുതുന്ന ഒരു സാങ്കേതികതയാണ്. മറ്റ് കോഡുകളെ ഡാറ്റയായി കൈകാര്യം ചെയ്യാൻ കഴിയുന്ന കോഡ് ഇതിൽ ഉൾപ്പെടുന്നു. ഉദാഹരണത്തിന്, ധാരാളം ആവർത്തന കോഡുകൾ സ്വമേധയാ എഴുതുന്നതിനുപകരം, മെറ്റാപ്രോഗ്രാമിംഗിന് അത് സ്വയമേവ സൃഷ്ടിക്കാൻ കഴിയും. ഒരു പ്രോഗ്രാം കംപൈൽ ചെയ്യുമ്പോൾ, നിങ്ങൾ എഴുതുന്ന കോഡിൽ നിന്ന് കമ്പ്യൂട്ടറിന് മനസ്സിലാക്കാനും പ്രവർത്തിപ്പിക്കാനും കഴിയുന്ന ഒരു പതിപ്പായി അത് പരിവർത്തനം ചെയ്യപ്പെടും. ലളിതമായി പറഞ്ഞാൽ, മറ്റ് പ്രോഗ്രാമുകൾ വേഗത്തിലും കാര്യക്ഷമമായും എഴുതാൻ സഹായിക്കുന്ന ഒരു പ്രോഗ്രാം ഉള്ളതുപോലെയാണിത്.
****ടെംപ്ലേറ്റ് മെറ്റാപ്രോഗ്രാമിംഗ്** - കംപൈലർ പ്രക്രിയയിൽ അധിക സോഴ്സ് കോഡ് സൃഷ്ടിക്കുന്നതിന് കംപൈലർ ടെംപ്ലേറ്റുകൾ ഉപയോഗിക്കുന്ന ഒരു സാങ്കേതികതയാണ് ടെംപ്ലേറ്റ് മെറ്റാപ്രോഗ്രാമിംഗ്. ഈ ജനറേറ്റഡ് കോഡ് യഥാർത്ഥ സോഴ്സ് കോഡുമായി സംയോജിപ്പിച്ച് ഒരുമിച്ച് കംപൈൽ ചെയ്യുന്നു. ഇത് കൂടുതൽ കാര്യക്ഷമവും വഴക്കമുള്ളതുമായ കോഡിന് അനുവദിക്കുന്നു, കാരണം ചില കണക്കുകൂട്ടലുകളോ ടാസ്ക്കുകളോ റൺടൈമിന് പകരം കംപൈൽ സമയത്ത് കൈകാര്യം ചെയ്യാൻ കഴിയും. പെർഫോമൻസ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന് സി++ പോലുള്ള ഭാഷകളിൽ ഇത് സാധാരണയായി ഉപയോഗിക്കുന്നു.
****[[റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ്|റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ്]]** - ഒരു പ്രോഗ്രാമിന് പ്രവർത്തിക്കുമ്പോൾ സ്വന്തം സ്വഭാവവും ഘടനയും പരിശോധിക്കാനോ പരിഷ്ക്കരിക്കാനോ വിപുലീകരിക്കാനോ കഴിയുന്ന ഒരു തരം മെറ്റാപ്രോഗ്രാമിംഗ് ആണ് റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ്. അടിസ്ഥാനപരമായി, പ്രോഗ്രാമിന് സ്വയം മാറാനോ അല്ലെങ്കിൽ സ്വന്തം കോഡിനെക്കുറിച്ച് പഠിക്കാനോ ഉള്ള കഴിവുണ്ട്. ഈ സാങ്കേതികത ഒരു പ്രോഗ്രാമിനെ ചലനാത്മകവും വഴക്കമുള്ളതുമാക്കാൻ അനുവദിക്കുന്നു. പൂർണ്ണമായ അപ്‌ഡേറ്റ് ആവശ്യമില്ലാതെ തന്നെ പുതിയ നിയമങ്ങൾ പഠിക്കുന്നത് പോലെ, ഇത് പ്രവർത്തിക്കുമ്പോൾ തന്നെ ഒരു പ്രോഗ്രാം മാറാൻ റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ് അനുവദിക്കുന്നു. ഇത് പ്രോഗ്രാമിനെ കൂടുതൽ അയവുള്ളതാക്കുകയും പുതിയ സാഹചര്യങ്ങളുമായി എളുപ്പത്തിൽ പൊരുത്തപ്പെടാൻ പ്രാപ്തമാക്കുകയും ചെയ്യുന്നു.
***പൈപ്പ് ലൈൻ പ്രോഗ്രാമിംഗ്** - ഈ പ്രോഗ്രാമിംഗ് ശൈലി ഒരു വരിയിൽ പൈപ്പുകൾ ബന്ധിപ്പിക്കുന്നത് പോലെയാണ് പ്രവർത്തിക്കുന്നത്, അവിടെ ഓരോ പൈപ്പും എന്തെങ്കിലും എടുത്ത് അതിൻ്റെ ജോലി ചെയ്യുകയും അതിന്റെ റിസൾട്ട് അടുത്ത പൈപ്പിലേക്ക് കൈമാറുകയും ചെയ്യുന്നു. ഇത് നിങ്ങളുടെ കോഡ് പിന്തുടരുന്നത് എളുപ്പമാക്കുന്നു, കാരണം ഒരു അസംബ്ലി ലൈൻ ടാസ്‌ക്കുകൾ ഓരോന്നായി ചെയ്യുന്നതുപോലെ നിങ്ങൾക്ക് ഘട്ടങ്ങൾ ഒന്നിനു പുറകെ ഒന്നായി നടക്കുന്നത് കാണാൻ കഴിയും.
***റൂൾ ബേസ്ഡ് പ്രോഗ്രാമിംഗ്** - ഒരു കമ്പ്യൂട്ടറിനായി "ഇത് സംഭവിക്കുമ്പോൾ, ഇത് ചെയ്യുക"("When this happens, do this."). നിർദ്ദിഷ്ട സാഹചര്യങ്ങളെ അടിസ്ഥാനമാക്കി കമ്പ്യൂട്ടറിന് പിന്തുടരാനുള്ള ലളിതമായ നിർദ്ദേശങ്ങൾ നൽകുന്ന ഒരു മാർഗമാണിത്. ഒരു പ്രശ്നം പരിഹരിക്കാൻ ലളിതമായ ഘട്ടങ്ങൾ പിന്തുടരുന്നത് പോലെ, നിയമങ്ങളെ അടിസ്ഥാനമാക്കി തീരുമാനങ്ങൾ എടുക്കാൻ ഈ രീതി കമ്പ്യൂട്ടറിനെ സഹായിക്കുന്നു.
***വിഷ്വൽ പ്രോഗ്രാമിംഗ്** - കോഡ് എഴുതുന്നതിനുപകരം ഒരു പ്രോഗ്രാം നിർമ്മിക്കുന്നതിന് വേണ്ടി ചിത്രങ്ങളോ ബ്ലോക്കുകളോ ഉപയോഗിക്കുന്നത് പോലെയാണ് വിഷ്വൽ പ്രോഗ്രാമിംഗ്. ടെക്‌സ്‌റ്റുകളൊന്നും ടൈപ്പ് ചെയ്യാതെ തന്നെ കാര്യങ്ങൾ പ്രവർത്തനക്ഷമമാക്കാൻ, ബിൽഡിംഗ് ടോയ്‌സ് ഉപയോഗിച്ച് കളിക്കുന്നത് പോലെ ബ്ലോക്കുകൾ വലിച്ചിട്ടുകൊണ്ട് പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള മാർഗമാണിത്.
## അവലോകനം

സോഫ്റ്റ്‌വെയർ എഞ്ചിനീയറിംഗിൽ ആളുകൾ പ്രോഗ്രാമുകൾ എങ്ങനെ വികസിപ്പിക്കുന്നു എന്നതിനെക്കുറിച്ചുള്ള ഗവേഷണത്തിലൂടെ കണ്ടെത്തുന്ന, സോഫ്‌റ്റ്‌വെയർ എഴുത്തിൻ്റെ രീതികളോ ശൈലികളോ ആണ് പ്രോഗ്രാമിംഗ് ശൈലി. വ്യത്യസ്ത പ്രോഗ്രാമിംഗ് ഭാഷകൾ മനസ്സിലാക്കാനും താരതമ്യം ചെയ്യാനും ഈ മാതൃകകൾ നമ്മെ സഹായിക്കുന്നു. അതുപോലെ, സോഫ്‌റ്റ്‌വെയർ എഞ്ചിനീയറിംഗിലെ ഗവേഷണം സോഫ്‌റ്റ്‌വെയർ നിർമ്മിക്കുന്നത് എങ്ങനെയെന്ന് നോക്കുന്നു, ഏറ്റവും ഫലപ്രദമായവ കണ്ടെത്തുന്നതിന് വേണ്ടി വ്യത്യസ്ത സമീപനങ്ങളെ താരതമ്യം ചെയ്യുന്നു. 

(സ്മോൾടോക്ക് ഒബ്ജക്റ്റ്-ഓറിയന്റഡ് പ്രോഗ്രാമിംഗിനെ പിന്തുണയ്ക്കുന്നു, ഹാസ്കെൽ ഫംഗ്ഷണൽ പ്രോഗ്രാമിംഗിനെ പിന്തുണയ്ക്കുന്നു), മറ്റ് പ്രോഗ്രാമിംഗ് ഭാഷകൾ ഒന്നിലധികം ശൈലികളെ പിന്തുണയ്ക്കുന്നു (ഒബ്ജക്റ്റ് പാസ്കൽ, സി++, ജാവ, ജാവസ്ക്രിപറ്റ്, സിഷാർപ്, സ്കാല, വിഷ്വൽ ബേസിക്(Visual Basic), കോമൺ ലിപ്സ്, സ്കീം, പേൾ, പി.എച്ച്.പി., പൈത്തൺ, റൂബി, ഓസ്, എഫ്#).

## അവലംബം
വർഗ്ഗം:പ്രോഗ്രാമിങ് ചട്ടക്കൂടുകൾ
വർഗ്ഗം:വിവരസാങ്കേതികവിദ്യ
വർഗ്ഗം:പ്രോഗ്രാമിങ് ശൈലികൾ