സി
വിക്കിപീഡിയ, ഒരു സ്വതന്ത്ര വിജ്ഞാനകോശം.
സി (C Programming Language) ഒരു പ്രൊസീജ്യറല്, ജനറല് പര്പ്പസ് പ്രോഗ്രാമിങ് ഭാഷയാണ്. 1972 - ല് ബെല്ലാബിലെ കമ്പ്യൂട്ടര് ശാസ്ത്രജ്ഞനായ ഡെന്നിസ് റിച്ചി വികസിപ്പിച്ചെടുത്ത ഒരു കമ്പ്യൂട്ടര് പ്രോഗ്രാമിങ് ഭാഷ. അദ്ദേഹം തന്നെ വികസിപ്പിച്ച യൂണിക്സ് ഓപ്പറേറ്റിങ് സിസ്റ്റത്തില് ഉപയോഗിക്കാനായിരുന്നു സി നിര്മ്മിക്കപ്പെട്ടത്. സിയുടെ വികസന കാലം മുതലിങ്ങോട്ട് ഒരുപാട് പ്രോഗ്രാമിങ് ഭാഷകളെ സ്വാധീനിക്കാന് ഇതിനായിട്ടുണ്ട്. ഏറ്റവും ജനപ്രീതി നേടിയ പ്രോഗ്രാമിങ് ഭാഷ എന്ന സ്ഥാനവും സി നേടിയെടുത്തു. ഇന്നും സിസ്റ്റം, ആപ്ലിക്കേഷന് പ്രോഗ്രാമിങ് രംഗത്ത് സി ഉപയോഗിക്കപ്പെട്ടുവരുന്നു.
ഉള്ളടക്കം |
[തിരുത്തുക] സവിശേഷതകള്
സിയുടെ പൂര്വ്വികന്മാരെ അപേക്ഷിച്ച് ശക്തവും ലളിതവുമായ സിന്റാക്സാണ് ഇതിന്റെ ഏറ്റവും വലിയ സവിശേഷത. ഏതാണ്ട് മുപ്പതോളം മാത്രം വരുന്ന നിര്ദ്ദേശ വാക്കുകള് (Keywords) ഉപയോഗിച്ചാണ് സിയില് പ്രോഗ്രാമുകള് എഴുതുന്നത്. ഈ പ്രോഗ്രാമുകള് യന്ത്രഭാഷയിലേക്ക് (Machine Language) മാറ്റുമ്പോള് സി ഏറ്റവും കുറവ് യന്ത്രഭാഷാ നിര്ദ്ദേശങ്ങളേ ഉപയോഗിക്കുന്നുള്ളു. ഇതിന്റെ ഫലമായി നിര്മ്മിക്കപ്പെടുന്ന പ്രോഗ്രാമിന് വേഗത കൂടുതലായിരിക്കും.
കമ്പ്യൂട്ടര് പ്രോഗ്രാമിന്റെ അടിസ്ഥാന ഘടകങ്ങളിലൊന്നായ ഡേറ്റാ സ്ട്രക്ചറുകള് നിര്മ്മിക്കുവാനും ഉപയോഗിക്കുവാനും ഈ ഭാഷയില് എളുപ്പത്തില് സാധിക്കും. കമ്പ്യൂട്ടര് മെമ്മറിയുടെ ഏറ്റവും ഫലവത്തായ ഉപയോഗവും സിയുടെ സവിശേഷതയാണ്.
സി ഒരു പോര്ട്ടബിള് ഭാഷയാണ്. അതായത്, സിയുടെ തനത് നിര്ദ്ദേശക്കൂട്ടങ്ങള് ഉപയോഗിച്ച് എഴുതിയ ഒരു പ്രോഗ്രാം മറ്റു പ്ലാറ്റ്ഫോമുകളിലേക്ക് എളുപ്പത്തില് മാറ്റാന് സാധിക്കും (ഉദാഹരണത്തിന്, വിന്ഡോസ് ഓപ്പറേറ്റിങ് സിസ്റ്റത്തില് നിന്നും യൂണിക്സിലേക്കും തിരിച്ചും). ഇതിന് മാറ്റുവാനുദ്ദേശിക്കുന്ന പ്ലാറ്റ്ഫോമിന് അനുയോജ്യമായ കംപൈലര് പ്രോഗ്രാമുകള് ആവശ്യമാണ്. ഇന്ന് ഏതാണ്ടെല്ലാ പ്ലാറ്റ്ഫോമിലും ഉപയോഗ്യമായ സി കംപൈലര് പ്രോഗ്രാമുകള് നിര്മ്മിക്കപ്പെട്ടിട്ടുണ്ട്.
[തിരുത്തുക] ചരിത്രം
1969-1972 കാലഘട്ടത്തിലാണ് സിയുടെ നിര്മ്മാണത്തിന് തുടക്കമിട്ടത്. സിയുടെ നിര്മ്മാണഘട്ടത്തില് അക്കാലത്തുണ്ടായിരുന്ന ‘ബി’ എന്ന പേരിലറിയപ്പെട്ടിരുന്ന മറ്റൊരു പ്രോഗ്രാമിങ് ഭാഷ നിര്ണ്ണായക സ്വാധീനം ചെലുത്തിയിട്ടുണ്ട്. ഇതിനാലാണത്രെ താന് നിര്മ്മിച്ച പുതിയ ഭാഷയ്ക്ക് ‘സി’ എന്ന പേരിടാന് ഡെന്നിസ് റിച്ചിയ്ക്ക് പ്രചോദനമായത്. ഇംഗ്ലീഷ് അക്ഷരമാലയില് ‘ബി’ കഴിഞ്ഞ് ‘സി’ ആണല്ലൊ വരുന്നത്.
സിയുടെ ജനനത്തിനു പുറകില് ഒരുപാട് രസകരമായ കഥകളുണ്ട്. അവയിലേതാനും ചിലത്:
റിച്ചിയും അദ്ദേഹത്തിന്റെ സുഹൃത്തും ബെല്ലാബിലെതന്നെ ശാസ്ത്രജ്ഞനുമായ കെന് തോംസണും തങ്ങളുടെ ഒഴിവു സമയങ്ങളില് കളിച്ചിരുന്ന കമ്പ്യൂട്ടര് ഗെയിമായിരുന്നു ‘സ്പേസ് ട്രാവല്‘. കമ്പനിയിലെ ഒരു മെയ്ന് ഫ്രെയിം കമ്പ്യൂട്ടറിലായിരുന്നു അവര് ഈ ഗെയിം കളിച്ചിരുന്നത്. ക്രമേണ കളിക്കാരുടെ എണ്ണം കൂടി. ഗെയിം കളിക്കാനുപയോഗിച്ചിരുന്ന കമ്പ്യൂട്ടറിന് അത്രയും കളിക്കാരെ ഒരേസമയം ഉള്ക്കൊള്ളാനുള്ള ശേഷിയില്ലായിരുന്നു. മാത്രവുമല്ല റിച്ചിക്കും തോസണും തങ്ങളുടെ സ്പേസ് ഷിപ്പിന്റെ നിയന്ത്രണം ആയാസകരമായിത്തുടങ്ങുകയും ചെയ്തു. ഇക്കാരണത്താല് തങ്ങളുടെ ഓഫീസില് ഉപയോഗരഹിതമായിക്കിടന്നിരുന്ന ഒരു കമ്പ്യൂട്ടറിലേക്ക് ഗെയിം മാറ്റിസ്ഥാപിക്കാന് അവര് തീരുമാനിച്ചു. ആ കമ്പ്യൂട്ടറിനാകട്ടെ അനുയോജ്യമായ ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റമില്ലായിരുന്നു. ഇതിന് ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം നിര്മ്മിക്കലായിരുന്നു അടുത്തപടി. അസംബ്ലി ഭാഷയുപയോഗിച്ച് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം നിര്മ്മാണം ശ്രമകരമാണെന്ന് ബോദ്ധ്യമായ റിച്ചി ഒരു പുതിയ പ്രോഗ്രാമിംഗ് ഭാഷയ്ക്ക് തന്നെ രൂപം നല്കുകയാണുണ്ടായത്. അങ്ങനെ സി ഭാഷ രൂപം കൊണ്ടു! സിയുപയോഗിച്ച് റിച്ചി യൂണിക്സ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം നിര്മ്മിക്കുകയും ചെയ്തു. വെറുമൊരു ഗെയിം കളിക്കാനുള്ള രണ്ടു പേരുടെ ആഗ്രഹമാണ് കമ്പ്യൂട്ടര് സാങ്കേതിക രംഗത്തെ ഇതിഹാസങ്ങളായ സി, യൂണിക്സ് തുടങ്ങിയവയുടെ നിര്മ്മാണത്തിനു വഴിതെളിച്ചത്!
[തിരുത്തുക] ആന്സി സി (ANSI C)
സി ഭാഷ ഒട്ടേറെ തവണ പരിഷ്കരിക്കപ്പെട്ടിട്ടുണ്ട്. 1970 അവസാനമായപ്പോഴേക്കും മൈക്രോകമ്പ്യൂട്ടറുകളിലെ പ്രോഗ്രാമിംഗ് ഭാഷ എന്ന നിലയില് ബേസിക്(BASIC) ഭാഷയെ സി കടത്തി വെട്ടിയിരുന്നു. 1980-കളില് IBM കമ്പനി തങ്ങളുടെ ആവശ്യങ്ങള്ക്കായി സി ഭാഷയെ തിരഞ്ഞെടുത്തു. സിയുടെ വര്ദ്ധിച്ചു വരുന്ന ഉപയോഗം കണക്കിലെടുത്ത് 1983-ല് സി ഭാഷയെ ഏകീകരിക്കുക എന്ന ലക്ഷ്യത്തോടെ അമേരിക്കന് നാഷനല് സ്റ്റാന്ഡേര്ഡ്സ് ഇന്സ്റ്റിറ്റ്യൂട്ട് ഒരു കമ്മിറ്റി രൂപവല്ക്കരിച്ചു. ഈ കമ്മിറ്റി ഏകീകരിച്ച സി ഭാഷയുടെ പതിപ്പാണ് ആന്സി സി (ANSI C) എന്ന പേരിലറിയപ്പെടുന്നത്.
[തിരുത്തുക] വിമര്ശനങ്ങള്
ഇന്ന് കമ്പ്യൂട്ടര് രംഗത്തെ പ്രശ്ന നിര്ദ്ധാരണത്തിന് സി മതിയാവില്ലെന്നാണ് വിമര്ശകരുടെ ആരോപണം. തുടക്കത്തില് ഉപകാരപ്രഥങ്ങളായ ഒട്ടേറെ സംരംഭങ്ങള്ക്ക് വഴിതെളിച്ചെങ്കിലും സൂക്ഷിച്ച് ഉപയോഗിച്ചില്ലെങ്കില് അപകടകരമായ ഫലങ്ങള് ഉണ്ടാവുക അല്ലെങ്കില് ഉദ്ദേശിച്ച ഫലം ലഭിക്കാതിരിക്കുക എന്നിവ സി ഉപയോഗിച്ച് എഴുതിയ പ്രോഗ്രാമുകള് കൊണ്ട് ഉണ്ടാകാം എന്ന് വിമര്ശകര് ചൂണ്ടിക്കാട്ടുന്നു. സി ഒരു ഒബ്ജക്റ്റ് ഓറിയന്റട് ഭാഷയല്ല. അതിനാല് അത്യധികം സങ്കീര്ണ്ണമായ പ്രോഗ്രാമുകള് സിയില് നിര്മ്മിച്ചെടുക്കുക ഏതാണ്ട് അസാധ്യം തന്നെയാണെന്നാണ് വിമര്ശകരുടെ പക്ഷം.
[തിരുത്തുക] മറ്റു കമ്പ്യൂട്ടര് ഭാഷകള്
സി ഭാഷ സ്വാധീനം ചെലുത്തിയ മറ്റു കമ്പ്യൂട്ടര് ഭാഷകള് ഇവയാണ്.
- സി++ (C++)
- പി.എച്ച്.പി (PHP)
- പൈത്തന് (Python)
- ജാവ (Java)
- ജാവാസ്ക്രിപ്റ്റ് (JavaScript)
- സി# (C#)