സീഡ്7

**സീഡ്7** ഭാവിയിൽ കൂടുതൽ സവിശേഷതകൾ ചേർക്കാൻ അനുയോജ്യമായ  പൊതുപയോഗ പ്രോഗ്രാമിംഗ് ഭാഷയാണ്, തോമസ് മർട്ടെസാണ് ഇത് രൂപകൽപ്പന ചെയ്തത്. ഇതിന്റെ വ്യാകരണം പാസ്കൽ  ആഡാ എന്നീ പ്രോഗ്രാമിംഗ് ഭാഷകൾക്ക് സമാനമാണ്, അതിനാൽ  പ്രോഗ്രാമുകൾ എഴുതാനും വായിക്കാനും എളുപ്പമാണ്. മറ്റു നിരവധി സവിശേഷതകൾക്കൊപ്പം, ഇത് ഒരു വികസിപ്പിക്കാവുന്ന സംവിധാനവും(extension mechanism) നൽകുന്നു. സീഡ്7 പുതിയ വ്യാകരണ ഘടകങ്ങളും ഭാഷാ നിർദ്ദേശങ്ങളും താനേ നിർവചിക്കാൻ സഹായിക്കുന്നു. ഈ ഘടകങ്ങൾ സീഡ്7 ഭാഷയിൽ തന്നെ എഴുതിയും ഉപയോഗിക്കാൻ കഴിയും. ഇതിന്റെ സഹായത്തോടെ പ്രോഗ്രാമർക്ക് ആവശ്യമുള്ള സവിശേഷതകൾ പ്രോഗ്രാമിംഗിലേക്ക് ലളിതമായി ചേർക്കാം. ഉദാഹരണത്തിന്, പ്രോഗ്രാമർമാർക്ക് തങ്ങളുടെ സ്വന്തം പുതിയ നിർദ്ദേശങ്ങളും ഓപ്പറേറ്റർ ചിഹ്നങ്ങളും സീഡ്7-ൽ ചേർക്കാൻ കഴിയും. അവർക്ക് വ്യാകരണവും അർത്ഥവും ആവശ്യമാനുസരിച്ച് മാറ്റാൻ കഴിയുമെന്ന് ഇതിന്റെ പ്രത്യേകതയാണ്. സീഡ്7 മറ്റു ഭാഷകളിൽ നിന്ന് വ്യത്യസ്തമാണ്, കാരണം അതിന്റെ വ്യാകരണവും അർത്ഥവും പ്രോഗ്രാമിൽ നിശ്ചിതമായി ഹാർഡ് കോഡ്  ചെയ്തിട്ടില്ല(hard-coded-ഹാർഡ് കോഡ് എന്നത് പ്രോഗ്രാമിൽ സ്ഥിരമായി നിശ്ചയിച്ചിരിക്കുന്ന മൂല്യങ്ങളെയോ നിയമങ്ങളെയോ രേഖപ്പെടുത്തുന്ന രീതിയാണ്. പ്രോഗ്രാം തിരുത്താതെ ഈ മൂല്യങ്ങൾ മാറ്റാനാവില്ല, അതിനാൽ അവ ഫ്ലെക്സിബിൾ അല്ല. മാറ്റങ്ങൾ ലളിതമാക്കാൻ പകരം മാറ്റാനാവുന്ന കോഡ് ഉപയോഗിക്കുന്നു). മറിച്ച്, ഉപയോക്താവിന്റെ ആവശ്യത്തിന് അനുസരിച്ച് പുതുക്കലുകൾക്കും മാറ്റങ്ങൾക്കുമുള്ള സൗകര്യം സീഡ്7 നൽകുന്നു.
## ഫീച്ചറുകൾ
സീഡ്7 ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയ്ക്കായി ഇമ്പറേറ്റീവ് (imperative), ഒബ്ജക്ട് ഓറിയന്റഡ് (object-oriented), ജനറിക് (generic) തുടങ്ങിയ പ്രോഗ്രാമിംഗ് ശൈലികളെ പിന്തുണയ്ക്കുന്നു. ഇത് കോൾ ബൈ നെയിം (call by name), മൾട്ടിപ്പിൾ ഡിസ്പാച്ച് (multiple dispatch), ഫംഗ്ഷൻ ഓവർലോഡിംഗ്, ഓപ്പറേറ്റർ ഓവർലോഡിംഗ്, എക്സെപ്ഷൻ ഹാൻഡ്ലിംഗ്, അർബിറ്ററി-പ്രിസിഷൻ അരിത്തമെന്റിക് (arbitrary-precision arithmetic) തുടങ്ങിയ സവിശേഷതകൾ നൽകുന്നു. സീഡ്7-ൽ, പ്രോഗ്രാമർമാർക്ക് വ്യത്യസ്ത രീതിയിൽ പുതിയ കമാൻഡുകൾ നിർവചിക്കാനും, ഓപ്പറേറ്റഴ്സിനും ഫംഗ്ഷനുകൾക്കും വ്യത്യസ്ത ഫലങ്ങൾ ചേർക്കാനും കഴിയും. ഈ പ്രത്യേകതകൾ സീഡ്7-നെ കൂടുതൽ വഴക്കമുള്ളതും, ശക്തമാവുമായ പ്രോഗ്രാമിംഗ് അനുഭവം നൽകുകയും ചെയ്യുന്ന ഭാഷയാക്കി മാറ്റുന്നു.

സീഡ്7-ന്റെ പ്രധാന സവിശേഷതകൾ:  
* ഉപയോക്താവിന് സ്വന്തം നിർദ്ദേശങ്ങളും ഓപ്പറേറ്ററുകളും നിർവചിക്കാം. 
* അബ്സ്ട്രാക്റ്റ് ഡാറ്റാ ടൈപ്പുകൾ (Abstract data types)  
* പ്രത്യേക വ്യാകരണമില്ലാതെ ടെംപ്ലേറ്റുകൾ  
* ഓബ്ജക്ട് ഓറിയന്റഡ് മാതൃകയിൽ, സീഡ്7-ൽ ഇന്റർഫേസുകൾ ഉപയോഗിച്ച് വ്യത്യസ്ത ക്ലാസുകൾക്ക് പൊതുവായ സവിശേഷതകൾ നിർവചിക്കാം. മൾട്ടിപ്പിൾ ഡിസ്പാച്ച് സവിശേഷത ഉപയോഗിച്ച്, ഒരു ഫംഗ്ഷൻ വിളിക്കുമ്പോൾ ഒരേ പേരുള്ള ഫംഗ്ഷനിൽ നിന്ന് ഏറ്റവും അനുയോജ്യമായത്, ഉപയോഗിക്കുന്ന ഓരോ ഒബ്ജക്റ്റിന്റെ തരം നോക്കിയാകും തിരഞ്ഞെടുക്കുക. 
* സ്റ്റാറ്റിക് ടൈപ്പിംഗ് (Static typing)  
* ഇന്റർപ്രെട്ട് ചെയ്യുന്നതിനും കമ്പൈൽ ചെയ്യുന്നതിനും കഴിയുന്നു  
* വിവിധ ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്കും വിൻഡോ സിസ്റ്റങ്ങൾക്കും ഒരു പോലെ ഉപയോഗിക്കാനുള്ള ലൈബ്രറികൾ ഉപയോഗിച്ച് കോഡ് എളുപ്പത്തിൽ മാറ്റം വരുത്താനാകുന്നു. 
* ബിഎസ്ഡി, ലിനക്സ്, മാക് ഓ.എസ് എക്‌സ്, യുണിക്സ്, വിൻഡോസ് എന്നിവയിൽ പ്രവർത്തിക്കുന്നു.  

ഈ സവിശേഷതകൾ സീഡ്7-നെ ഒരു പൂർണമായും പോർട്ടബിൾ പ്രോഗ്രാമിംഗ് ഭാഷയാക്കി മാറ്റുന്നു.
നിരവധി പ്രോഗ്രാമിംഗ് ഭാഷാ ആശയങ്ങൾ ഇവിടെ സാമാന്യവൽക്കരിച്ചിരിക്കുന്നു:
*പ്രോഗ്രാമിംഗ് ഭാഷയിൽ, ടൈപ്പ് പ്രഖ്യാപനങ്ങളും ഫംഗ്ഷൻ നിർവചനങ്ങളും മറ്റേതെങ്കിലും സ്ഥിരമായ മൂല്യങ്ങളോട് സമാനമാണ്. ടൈപ്പ് പ്രഖ്യാപനങ്ങൾ (type declarations) അല്ലെങ്കിൽ ഫംഗ്ഷൻ നിർവചനങ്ങൾ (function definitions) ഒരിക്കൽ നിർവചിച്ചാൽ അത് മാറാത്ത, സ്ഥിരമായ ഒരു മൂല്യമായി തന്നെ പ്രവർത്തിക്കും.
*കമ്പൈൽ-ടൈം എക്സ്പ്രഷനുകൾ, പ്രോഗ്രാമിന്റെ കോഡിംഗ് സമയത്ത് തന്നെ വിലയിരുത്തപ്പെടുന്ന എക്സ്പ്രഷനുകളാണ്. ചില പ്രോഗ്രാമിംഗ് ഭാഷകളിൽ, കമ്പൈൽ ചെയ്യുമ്പോൾ തന്നെ കംപ്യൂട്ടർ ഒരു ഫംഗ്ഷൻ പ്രവർത്തിപ്പിച്ച് അതിന്റെ ഫലം നേരിട്ട് പ്രോഗ്രാമിന്റെ ഭാഗമാക്കുന്നു. 
*ഓവർലോഡിംഗും ഒബ്ജക്റ്റ്-ഓറിയന്റേഷനും (മൾട്ടിപ്പിൾ ഡിസ്‌പാച്ചോടുകൂടി) പൊതുവായ ആശയങ്ങളായി കാണപ്പെടുന്നു. (ഓവർലോഡിങ് എന്നത്, പ്രോഗ്രാമിന്റെ കമ്പൈൽ സമയത്ത്, ഒരു ഫോം അല്ലെങ്കിൽ ഫംഗ്ഷൻ എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് തീരുമാനിക്കുന്നതാണ്. മൾട്ടിപ്പിൾ ഡിസ്പാച്ച്, പ്രോഗ്രാം പ്രവർത്തിക്കുമ്പോൾ, പല ഒബ്ജക്റ്റുകൾ ഉപയോഗിച്ചുള്ള ഫോം അല്ലെങ്കിൽ ഫംഗ്ഷൻ എങ്ങനെ പ്രവർത്തിക്കണമെന്നു കണ്ടെത്തുന്ന പ്രക്രിയയാണ്)
*ടൈപ്പ് നെയിംസും ടൈപ്പ് വിവരണങ്ങളും ഒരു ഫംഗ്ഷനിൽ പാരാമീറ്റർ ഒരു പ്രോഗ്രാമിൽ ഡാറ്റയുടെ ടൈപ്പ് എളുപ്പത്തിൽ കൈകാര്യം ചെയ്യാനും ഇതിൽ ലഭിക്കുന്ന റിസൾട്ട് ഉപയോഗിക്കാനും സഹായിക്കുന്നു.
*കമ്പൈൽ-ടൈം ഫംഗ്ഷനുകൾ, പ്രോഗ്രാം എഴുതുന്ന സമയത്ത് തന്നെ പ്രവർത്തിച്ച്, ഒബ്ജക്റ്റുകൾ സൃഷ്ടിക്കാൻ ഉപയോഗിക്കാം. ഇത് പ്രോഗ്രാമിന് നേരിട്ട് പ്രവർത്തിക്കാൻ മുന്നൊരുക്കം നൽകി, കൂടുതൽ വേഗം നേടാൻ സഹായിക്കുന്നു.
*ടെംപ്ലേറ്റുകൾ ടൈപ്പ് പാരാമീറ്ററുകളോടുകൂടി സമ്പ്രദായികമായി കമ്പൈൽ സമയം ഫങ്ഷനുകളായി എഴുതപ്പെടുന്നു. ഇതിന് ഉപയോക്താവിന്റെ ആവശ്യാനുസരണം വ്യത്യസ്ത ഡാറ്റാ ടൈപ്പുകളെ കൈകാര്യം ചെയ്യാനുള്ള സൗകര്യം ലഭ്യമാക്കും.
*അറെകളും(Arrays) ഹാഷ് മാപ്പുകൾക്കും സ്ട്രക്റ്റ്കൾക്കും(struct എന്നത് ചില ബന്ധപ്പെട്ട ഡാറ്റാ ഇനങ്ങളെ ഒരൊറ്റ യൂണിറ്റായി കൂട്ടിച്ചേർക്കുന്നതിനുള്ള ഉപയോക്തൃ നിർവചിത ഡാറ്റാ ഘടനയാണ്) ഹാർഡ് കോഡഡ് സവിശേഷതകളില്ല. പകരം, അവ ലൈബ്രറികളിൽ ആന്തരികമായി നിർവചിക്കുന്ന അബ്സ്‌ട്രാക്റ്റ് ഡാറ്റാ ടൈപ്പ് ആണ്.(അബ്സ്‌ട്രാക്റ്റ് ഡാറ്റാ ടൈപ്പ് എന്ന് പറഞ്ഞാൽ, എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് മാത്രം പറയുന്ന ഒരു ഡാറ്റാ മാതൃകയാണ്, പക്ഷേ അതിനുള്ളിലെ കാര്യങ്ങൾ എങ്ങനെ പ്രാവർത്തികമാക്കുന്നു എന്നത് മറച്ചുവെക്കപ്പെട്ടിരിക്കും)
*പാഴ്സറും(പാഴ്സർ എന്നത് ഒരു പ്രോഗ്രാമാണ്, ഇത് സാധാരണയായി കമ്പൈലറിന്റെ ഭാഗമാണ്. ഇത് സോഴ്‌സ് പ്രോഗ്രാം നിർദ്ദേശങ്ങൾ, ഇന്ററാക്ടീവ് ഓൺലൈൻ കമാൻഡുകൾ, മാർക്കപ്പ് ടാഗുകൾ അല്ലെങ്കിൽ മറ്റ് നിർവ്വചിത ഇന്റർഫേസുകൾ എന്നിവയുടെ രൂപത്തിൽ ഇൻപുട്ട് സ്വീകരിക്കുന്നു) ഇന്റർപ്രെട്ടറും റൺടൈം ലൈബ്രറിയുടെ ഭാഗങ്ങളാണ്.
*യുടിഎഫ്-32 യൂണികോഡ് പിന്തുണ. യുടിഎഫ്-8, യുടിഎഫ്-16 പോലുള്ള വേരിയബിൾ-ലെങ്ത് എൻകോഡിംഗുകളുടെ പ്രശ്നങ്ങൾ ഒഴിവാക്കുന്നു. സാധാരണയായി, യുടിഎഫ്-8(UTF-8), യുടിഎഫ്-16, യുടിഎഫ്-32 എന്നീ എൻകോഡിംഗുകൾ ഉപയോഗിച്ച് ടെക്സ്റ്റ് ഡാറ്റ കമ്പ്യൂട്ടറുകളിൽ സംഭരിക്കപ്പെടുന്നു. യുടിഎഫ്-8 എൻകോഡിംഗ് ഓരോ അക്ഷരത്തിനും 1 മുതൽ 4 ബൈറ്റ് വരെ ഉപയോഗിക്കുന്നു, യുടിഎഫ്-16 2 അല്ലെങ്കിൽ 4 ബൈറ്റ് ഉപയോഗിക്കുന്നു, യുടിഎഫ്-32 എല്ലായ്പ്പോഴും 4 ബൈറ്റ് ഉപയോഗിക്കുന്നു. യുടിഎഫ്-32 സ്ഥിരമായ ലെങ്ത് എൻകോഡിംഗ് ആയതിനാൽ, ഓരോ അക്ഷരത്തിനും 4 ബൈറ്റ് ഉപയോഗിക്കപ്പെടുന്നു, ഇത് പ്രോസസ്സിംഗ് ലളിതമാക്കുന്നു, എന്നാൽ മെമ്മറി ഉപയോഗം വർദ്ധിപ്പിക്കുന്നു.

## അവലംബം