"സി (പ്രോഗ്രാമിങ് ഭാഷ)" എന്ന താളിന്റെ പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം

(ചെ.) യന്ത്രം ചേര്‍ക്കുന്നു: cv:Си (компьютер чĕлхи) പുതുക്കുന്നു: an:Luengache de programación C
(ചെ.) പുതിയ ചിൽ, നൾ എഡിറ്റ് ...
വരി 1:
{{Infobox programming language
| name = സി
| logo = [[ചിത്രം:K&R C.jpg|227px|thumb|right|<small>സി പ്രോഗ്രാമിങ് ഭാഷ പുസ്തകം, ബ്രയന്‍ബ്രയൻ കെര്‍നിങനുംകെർനിങനും ഡെന്നീസ് റിച്ചിയും പ്രസിദ്ധീകരിച്ച യഥാര്‍ത്ഥയഥാർത്ഥ അച്ചടി പ്രതി</small>]]
| paradigm = [[imperative programming|imperative]] ([[Procedural programming|procedural]]) systems implementation language
| year = [[1972]]
വരി 14:
}}
{{ToDisambig|വാക്ക്=സി}}
ഒരു [[രീതി-അധിഷ്ഠിത പ്രോഗ്രാമിങ് ഭാഷ|രീതി-അധിഷ്ഠിത]](procedure-oriented), പൊതു ഉപയോഗ (general purpose) പ്രോഗ്രാമിങ് ഭാഷയാണ് '''സി''' (C Programming Language). 1972 - ല്‍ [[ബെല്‍‌ലാബ്ബെൽ‌ലാബ്|ബെല്‍‌‌ലാബിലെബെൽ‌‌ലാബിലെ]] [[ഡെന്നിസ് റിച്ചി]]യാണ്‌ സി വികസിപ്പിച്ചെടുത്തത്. അദ്ദേഹം തന്നെ വികസിപ്പിച്ച [[യുണിക്സ്]] [[ഓപ്പറേറ്റിങ്ങ്‌ സിസ്റ്റം|ഓപ്പറേറ്റിങ് സിസ്റ്റത്തില്‍സിസ്റ്റത്തിൽ]] ഉപയോഗിക്കാനായിരുന്നു സി നിര്‍മ്മിക്കപ്പെട്ടത്നിർമ്മിക്കപ്പെട്ടത്. സിയുടെ വികസന കാലം മുതലിങ്ങോട്ട് ഒരുപാട് പ്രോഗ്രാമിങ് ഭാഷകളെ സ്വാധീനിക്കാന്‍സ്വാധീനിക്കാൻ ഇതിനായിട്ടുണ്ട്. ഏറ്റവും ജനപ്രീതി നേടിയ പ്രോഗ്രാമിങ് ഭാഷ എന്ന സ്ഥാനവും സി നേടിയെടുത്തു.{{തെളിവ്}} ഇന്നും സിസ്റ്റം, ആപ്ലിക്കേഷന്‍ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിങ് രംഗത്ത് സി ഉപയോഗിക്കപ്പെട്ടുവരുന്നു.
 
== തത്ത്വം ==
സി [[സിസ്റ്റം പ്രോഗ്രാമിംഗ്|സിസ്റ്റം നിര്‍മ്മിക്കാനായിനിർമ്മിക്കാനായി ഉപയോഗിക്കുന്ന]] ഒരു രീതി-അധിഷ്ഠിത പ്രോഗ്രാമിംഗ് ഭാഷയാണ്‌. താരതമ്യേന ലളിതമായ ഒരു [[കമ്പൈലര്‍കമ്പൈലർ]] ഉപയോഗിച്ച് സമാഹരിക്കുക (compiling), [[മെമ്മറി]]യിലേക്ക് [[മെമ്മറിയിലേക്ക് താഴ്ന്ന തലത്തിലുള്ള പ്രവേശനം|താഴ്ന്ന തലത്തിലുള്ള പ്രവേശനം]] (low level access) ലഭ്യമാക്കുക, മെഷീന്‍മെഷീൻ ഇന്‍സ്റ്റ്റക്ഷനുകളിലേക്ക്ഇൻസ്റ്റ്റക്ഷനുകളിലേക്ക് സമര്‍ത്ഥമായിസമർത്ഥമായി സമ്മേളിക്കുവാന്‍സമ്മേളിക്കുവാൻ പറ്റിയ ഭാഷാഘടകങ്ങള്‍ഭാഷാഘടകങ്ങൾ (language constructs), ഏറ്റവും കുറച്ചു റണ്‍റൺ-സമയ പിന്തുണ (run-time support)- ഇവയാണ്‌ സിയുടെ രൂപകല്പനയിലെ ലക്ഷ്യങ്ങള്‍ലക്ഷ്യങ്ങൾ. അതുകൊണ്ട് തന്നെ [[അസെംബ്ലി ഭാഷ]]യ്ക്ക് പകരമായി പല സാഹചര്യങ്ങളിലും സി ഉപയോഗിക്കാം.
 
ഒരു [[യന്ത്ര-സ്വതന്ത്ര പ്രോഗ്രാമിംഗ് ഭാഷ]] (machine-independent) കൂടിയാണ്‌ സി. നന്നായി എഴുതിയ ഒരു സി പ്രോഗ്രാമിനെ വളരെ കുറച്ചു മാറ്റങളോടെയോ മാറ്റങ്ങള്‍മാറ്റങ്ങൾ ഇല്ലാതെ തന്നെയുമോ പല കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ പ്ലാറ്റ്ഫോമുകളിലും [[ഓപ്പറേറ്റിംഗ് സിസ്റ്റം|ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലും]] സമാഹരിക്കാന്‍സമാഹരിക്കാൻ (compile) സാധിക്കും.
 
== സവിശേഷതകൾ ==
== സവിശേഷതകള്‍ ==
 
'''സി'''യുടെ പൂര്‍വ്വികന്മാരെപൂർവ്വികന്മാരെ അപേക്ഷിച്ച് ശക്തവും ലളിതവുമായ സിന്റാക്സാണ് ഇതിന്റെ ഏറ്റവും വലിയ സവിശേഷത. ഏതാണ്ട്‌ മുപ്പതോളം മാത്രം വരുന്ന [[നിര്‍ദ്ദേശനിർദ്ദേശ വാക്കുകള്‍വാക്കുകൾ]] (Keywords) ഉപയോഗിച്ചാണ് സിയില്‍സിയിൽ പ്രോഗ്രാമുകള്‍പ്രോഗ്രാമുകൾ എഴുതുന്നത്. ഈ പ്രോഗ്രാമുകള്‍പ്രോഗ്രാമുകൾ [[യന്ത്ര ഭാഷ|യന്ത്രഭാഷയിലേക്ക്]] (Machine Language) മാറ്റുമ്പോള്‍മാറ്റുമ്പോൾ സി ഏറ്റവും കുറവ് യന്ത്രഭാഷാ നിര്‍ദ്ദേശങ്ങളേനിർദ്ദേശങ്ങളേ ഉപയോഗിക്കുന്നുള്ളു. ഇതിന്റെ ഫലമായി നിര്‍മ്മിക്കപ്പെടുന്നനിർമ്മിക്കപ്പെടുന്ന പ്രോഗ്രാമിന് വേഗത കൂടുതലായിരിക്കും.
 
കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ പ്രോഗ്രാമിന്റെ അടിസ്ഥാന ഘടകങ്ങളിലൊന്നായ [[ഡേറ്റാ സ്ട്രക്‍ര്‍സ്ട്രൿർ|ഡേറ്റാ സ്ട്രക്‍ചറുകള്‍സ്ട്രൿചറുകൾ]]നിര്‍മ്മിക്കുവാനുംനിർമ്മിക്കുവാനും ഉപ‌യോഗിക്കുവാനും ഈ ഭാഷയില്‍ഭാഷയിൽ എളുപ്പത്തില്‍എളുപ്പത്തിൽ സാധിക്കും. [[കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ മെമ്മറി|കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ മെമ്മറിയുടെ]] ഏറ്റവും ഫലവത്തായ ഉപയോഗവും സിയുടെ സവിശേഷതയാണ്.
 
സി ഒരു പോര്‍ട്ടബിള്‍പോർട്ടബിൾ ഭാഷയാണ്. അതായത്, സിയുടെ തനത് നിര്‍ദ്ദേശക്കൂട്ടങ്ങള്‍നിർദ്ദേശക്കൂട്ടങ്ങൾ ഉപയോഗിച്ച് എഴുതിയ ഒരു പ്രോഗ്രാം മറ്റു പ്ലാറ്റ്ഫോമുകളിലേക്ക് എളുപ്പത്തില്‍എളുപ്പത്തിൽ മാറ്റാന്‍മാറ്റാൻ സാധിക്കും (ഉദാഹരണത്തിന്, വിന്‍‌ഡോസ്വിൻ‌ഡോസ് ഓപ്പറേറ്റിങ് സിസ്റ്റത്തില്‍സിസ്റ്റത്തിൽ നിന്നും യൂണിക്സിലേക്കും തിരിച്ചും). ഇതിന് മാറ്റുവാനുദ്ദേശിക്കുന്ന പ്ലാറ്റ്ഫോമിന് അനുയോജ്യമായ [[കംപൈലര്‍കംപൈലർ]] പ്രോഗ്രാമുകള്‍പ്രോഗ്രാമുകൾ ആവശ്യമാണ്. ഇന്ന് ഏതാണ്ടെല്ലാ പ്ലാറ്റ്ഫോമിലും ഉപയോഗ്യമായ സി കംപൈലര്‍കംപൈലർ പ്രോഗ്രാമുകള്‍പ്രോഗ്രാമുകൾ നിര്‍മ്മിക്കപ്പെട്ടിട്ടുണ്ട്നിർമ്മിക്കപ്പെട്ടിട്ടുണ്ട്.
 
* നെസ്റ്റിങ് (ഒന്നിന്റെ ഉള്ളില്‍ഉള്ളിൽ മറ്റൊന്നിനെ‌‌ ഉള്‍‍പ്പെടുത്തുകഉൾ‍പ്പെടുത്തുക അനുവദിക്കാത്ത function നിര്‍വചനങ്ങള്‍നിർവചനങ്ങൾ.
* പകുതി ദുര്‍ബലമായദുർബലമായ തരംതിരിക്കല്‍തരംതിരിക്കൽ (weak typing). ഉദാഹരണത്തിന്‌ ക്യാരക്ട്രര്‍ക്യാരക്ട്രർ variables integers ആയും ഉപയോഗിക്കാം.
* തരംതിരിച്ച (typed) [[പോയിന്റര്‌|പോയിന്ററുകളെ]] യന്ത്ര വിലാസങ്ങളിലേക്ക് മാറ്റുന്നതിനായി താഴ്ന്ന തലത്തിലുള്ള മെമ്മറി പ്രവേശനം
* പോയിന്റര്‍പോയിന്റർ കണക്കു പ്രകാരം നിര്‍വചിച്ചിരിക്കുന്നനിർവചിച്ചിരിക്കുന്ന അറെ (array) ഇന്‍ഡ്ക്സുകള്‍ഇൻഡ്ക്സുകൾ
* മാക്രൊ നിര്‍വചനത്തിനുനിർവചനത്തിനു വേണ്ടി പ്രിപ്രോസസ്സര്‍പ്രിപ്രോസസ്സർ, സോഴ്സ് കോഡ് ഉള്‍പ്പെടുത്താനുള്ളഉൾപ്പെടുത്താനുള്ള സൗകര്യം, നിബന്ധനകള്‍ക്ക്നിബന്ധനകൾക്ക് വിധേയമായിട്ടുള്ള സമാഹരണം(conditional compilation)
* 30 കീവേഡുകൾ
* 30 കീവേഡുകള്‍
 
== ചരിത്രം ==
=== ആദ്യകാല ചരിത്രം ===
 
1969-1972 കാലഘട്ടത്തിലാണ് സിയുടെ നിര്‍മ്മാണത്തിന്നിർമ്മാണത്തിന് തുടക്കമിട്ടത്. സിയുടെ നിര്‍മ്മാണഘട്ടത്തില്‍നിർമ്മാണഘട്ടത്തിൽ അക്കാലത്തുണ്ടായിരുന്ന ‘ബി’ എന്ന പേരിലറിയപ്പെട്ടിരുന്ന മറ്റൊരു പ്രോഗ്രാമിങ് ഭാഷ നിര്‍ണ്ണായകനിർണ്ണായക സ്വാധീനം ചെലുത്തിയിട്ടുണ്ട്. ഇതിനാലാണത്രെ താന്‍താൻ നിര്‍മ്മിച്ചനിർമ്മിച്ച പുതിയ ഭാഷയ്ക്ക് ‘സി’ എന്ന പേരിടാന്‍പേരിടാൻ ഡെന്നിസ് റിച്ചിയ്ക്ക് പ്രചോദനമായത്. ഇംഗ്ലീഷ് അക്ഷരമാലയില്‍അക്ഷരമാലയിൽ ‘ബി’ കഴിഞ്ഞ്‌ ‘സി’ ആണല്ലൊ വരുന്നത്.
 
യുണിക്സ് ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തിന്റെ നിര്‍മ്മാണവുമായിനിർമ്മാണവുമായി സിയുടെ തുടക്കത്തിന്‌ ബന്ധമുണ്ട്. യുണിക്സ് യഥാര്‍ത്ഥത്തില്‍യഥാർത്ഥത്തിൽ പിഡിപി-7 കമ്പ്യൂട്ടരിനു വേണ്ടി കെന്‍കെൻ തോംസണും ഡെന്നിസ് റിച്ചിയും ചേര്‍ന്ന്ചേർന്ന് [[അസെംബ്ലി ഭാഷ]]യില്‍യിൽ വികസിപ്പിച്ചെടുത്തതാണ്‌. അത് പിഡിപി-11ലേക്ക് പോര്‍ട്ട്പോർട്ട് ചെയ്യാനായി ബി ഉപയോഗിച്ചപ്പോള്‍ഉപയോഗിച്ചപ്പോൾ, ബിയുടെ പല പരിമിതികളും അവര്‍അവർ മനസ്സിലാക്കി. ഇത് സിയുടെ ആദ്യകാല വികസനത്തിന്‌ വഴിതെളിച്ചു.
 
1973 ആയപ്പോഴേക്കും യുണിക്സ് കെര്‍ണല്‍കെർണൽ മുഴുവനായി സിയില്‍സിയിൽ മാറ്റി എഴുതപ്പെട്ടിരുന്നു. അങ്ങനെ അസെംബ്ലി ഭാഷയിലല്ലാതെ എഴുതപ്പെടുന്ന ആദ്യ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റ്ങ്ങളില്‍സിസ്റ്റ്ങ്ങളിൽ ഒന്നായി യുണിക്സ് മാറി.
=== ആന്‍‌സിആൻ‌സി സി (ANSI C) ===
 
'''സി''' ഭാഷ ഒട്ടേറെ തവണ പരിഷ്കരിക്കപ്പെട്ടിട്ടുണ്ട്‌. 1970 അവസാനമായപ്പോഴേക്കും മൈക്രോ‌കമ്പ്യൂട്ടറുകളിലെ പ്രോഗ്രാമിംഗ് ഭാഷ എന്ന നിലയില്‍നിലയിൽ [[ബേസിക്]](BASIC) ഭാഷയെ സി കടത്തി വെട്ടിയിരുന്നു. 1980-കളില്‍കളിൽ IBM കമ്പനി തങ്ങളുടെ ആവശ്യങ്ങള്‍ക്കായിആവശ്യങ്ങൾക്കായി സി ഭാഷയെ തിരഞ്ഞെടുത്തു. സിയുടെ വര്‍ദ്ധിച്ചുവർദ്ധിച്ചു വരുന്ന ഉപയോഗം കണക്കിലെടുത്ത് 1983-ല്‍ സി ഭാഷയെ ഏകീകരിക്കുക എന്ന ലക്‍ഷ്യത്തോടെലൿഷ്യത്തോടെ അമേരിക്കന്‍അമേരിക്കൻ നാഷനല്‍നാഷനൽ സ്റ്റാന്‍‌ഡേര്‍ഡ്‌സ്സ്റ്റാൻ‌ഡേർഡ്‌സ് ഇന്‍സ്റ്റിറ്റ്യൂട്ട്ഇൻസ്റ്റിറ്റ്യൂട്ട് ഒരു കമ്മിറ്റി രൂപവല്‍ക്കരിച്ചുരൂപവൽക്കരിച്ചു. ഈ കമ്മിറ്റി ഏകീകരിച്ച സി ഭാഷയുടെ പതിപ്പാണ് ആന്‍‌സിആൻ‌സി സി (ANSI C) എന്ന പേരിലറിയപ്പെടുന്നത്.
 
== വിമർശനങ്ങൾ ==
== വിമര്‍ശനങ്ങള്‍ ==
 
ഇന്ന് കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ രംഗത്തെ പ്രശ്ന നിര്‍ദ്ധാരണത്തിന്നിർദ്ധാരണത്തിന് സി മതിയാവില്ലെന്നാണ് വിമര്‍ശകരുടെവിമർശകരുടെ ആരോപണം. തുടക്കത്തില്‍തുടക്കത്തിൽ ഉപകാരപ്രദങ്ങളായ ഒട്ടേറെ സംരംഭങ്ങള്‍ക്ക്സംരംഭങ്ങൾക്ക് വഴിതെളിച്ചെങ്കിലും സൂക്ഷിച്ച് ഉപയോഗിച്ചില്ലെങ്കില്‍ഉപയോഗിച്ചില്ലെങ്കിൽ അപകടകരമായ ഫലങ്ങള്‍ഫലങ്ങൾ ഉണ്ടാവുക അല്ലെങ്കില്‍അല്ലെങ്കിൽ ഉദ്ദേശിച്ച ഫലം ലഭിക്കാതിരിക്കുക എന്നിവ സി ഉപയോഗിച്ച് എഴുതിയ പ്രോഗ്രാമുകള്‍പ്രോഗ്രാമുകൾ കൊണ്ട് ഉണ്ടാകാം എന്ന് വിമര്‍ശകര്‍വിമർശകർ ചൂണ്ടിക്കാട്ടുന്നു. സി ഒരു [[വസ്തുതാധിഷ്ഠിത കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ് ഭാഷ|വസ്തുതാധിഷ്ഠിത കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ് ഭാഷയല്ല]], അതിനാല്‍അതിനാൽ അത്യധികം സങ്കീര്‍ണ്ണമായസങ്കീർണ്ണമായ പ്രോഗ്രാമുകള്‍പ്രോഗ്രാമുകൾ സിയില്‍സിയിൽ നിര്‍മ്മിച്ചെടുക്കുകനിർമ്മിച്ചെടുക്കുക ഏതാണ്ട്‌ അസാധ്യം തന്നെയാണെന്നാണ് വിമര്‍ശകരുടെവിമർശകരുടെ പക്ഷം.
 
== മറ്റു കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ ഭാഷകള്‍ഭാഷകൾ ==
 
സി ഭാഷ സ്വാധീനം ചെലുത്തിയ മറ്റു കമ്പ്യൂട്ടര്‍കമ്പ്യൂട്ടർ ഭാഷകള്‍ഭാഷകൾ ഇവയാണ്.
 
* [[സി++]] (C++)
* [[പി.എച്ച്.പി]] (PHP)
* [[പൈത്തന്‍പൈത്തൻ]] (Python)
* [[ജാവാ പ്രോഗ്രാമിങ് ഭാഷ|ജാവ]] (Java)
* [[ജാവാസ്ക്രിപ്റ്റ്]] (JavaScript)
* [[സി ഷാര്‍പ്പ്ഷാർപ്പ്|സി#]] (C#)
 
== അവലംബം ==
<references/>
 
[[വിഭാഗം:പ്രോഗ്രാമിങ് ഭാഷകള്‍ഭാഷകൾ]]
[[വിഭാഗം:സി പ്രോഗ്രാമിങ് ഭാഷാ കുടുംബം]]
 
"https://ml.wikipedia.org/wiki/സി_(പ്രോഗ്രാമിങ്_ഭാഷ)" എന്ന താളിൽനിന്ന് ശേഖരിച്ചത്