ഒബ്ജക്ടീവ്-സി

സി പ്രോഗ്രാമിങ് ഭാഷയിലേക്ക് സ്മോൾടോക്ക് രീതി മെസ്സേജിംഗ് ചേർക്കുന്ന പൊതു ഉദ്ദേശ ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ് ഭാഷയാണ് **ഒബ്ജക്റ്റീവ്-സി** . മാക് ഒഎസ്, ഐ.ഒ.എസ്. ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങൾക്ക് ആപ്പിൾ പിന്തുണയ്ക്കുന്ന പ്രധാന പ്രോഗ്രാമിങ് ഭാഷ ആയിരുന്നു , അവരുടെ ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിങ് ഇന്റർഫേസുകളും (എപിഐ) കൊക്കോയും കൊക്കോ ടച്ചും ഉപയോഗിച്ചിരുന്നു, സ്വിഫ്റ്റ് അവതരിപ്പിക്കുന്നതുവരെ.പ്രോഗ്രാമിങ് ഭാഷയായ ഒബ്ജക്റ്റീവ്-സി യഥാർത്ഥത്തിൽ 1980 കളുടെ തുടക്കത്തിലാണ് വികസിപ്പിച്ചത്. നെക്സ്റ്റ് (NeXT) വേണ്ടി ഉപയോഗിക്കുന്ന പ്രധാന ഭാഷയായി നെക്സ്റ്റ്സ്റ്റെപ്പ് (NeXTSTEP)ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിനായി ഉപയോഗിച്ചു, മാക്ഒഎസ്, ഐഒഎസ് തുടങ്ങിയവ ഇതിൽ നിന്നും സ്വീകരിച്ചു.കൊക്കോ അല്ലെങ്കിൽ കൊക്കോ ടച്ച് ലൈബ്രറികൾ ഉപയോഗിക്കാത്ത പോർട്ടബിൾ ഒബ്ജക്റ്റീവ്-സി പ്രോഗ്രാമുകൾ അല്ലെങ്കിൽ മറ്റ് സിസ്റ്റങ്ങൾക്കു് പോർട്ട് ചെയ്തതിനു അല്ലെങ്കിൽ ലഭ്യമാക്കുന്ന ഭാഗങ്ങൾ ഉപയോഗിക്കുന്നവയ്ക്കു് പുറമേ, ഗ്നു കമ്പൈലർ ശേഖരം (ജിസിസി) അല്ലെങ്കിൽ ക്ലാങ് പിന്തുണയ്ക്കുന്ന ഏത് സിസ്റ്റത്തിനും വേണ്ടി തയ്യാറാക്കാംഒബ്ജക്റ്റീവ്-സി സോഴ്സ് കോഡ് 'ഇംപ്ലിമെൻറ്റ്' പ്രോഗ്രാം ഫയലുകൾ സാധാരണയായി .m ഫയൽനാമം വിപുലീകരണങ്ങൾ ഉണ്ട്, ഒബ്ജക്റ്റീവ്-സി 'ഹെഡ്ഡർ / ഇൻറർഫേസ്' ഫയലുകൾ സി ഹെഡർ ഫയലുകളെപ്പോലെ തന്നെ .h വിപുലീകരണങ്ങൾ ഉണ്ട്. .mm ഫയൽ എക്സ്റ്റെൻഷൻ ഉപയോഗിച്ച് ഒബ്ജക്റ്റീവ്-സി++ ഫയലുകൾ സൂചിപ്പിക്കപ്പെട്ടിട്ടുണ്ട്
## ചരിത്രം
1980 കളുടെ ആരംഭത്തിൽ സ്കോട്ട് സ്റ്റോൺ എന്ന സ്ഥാപനത്തിൽ  ബ്രാഡ് കോക്സ്, ടോം ലവ് എന്നിവരാണ് ഒബ്ജക്റ്റീവ്-സി ആദ്യമായി നിർമ്മിച്ചത്. 1981 ൽ ഐടിടി കോർപ്പറേഷന്റെ പ്രോഗ്രാമിങ് ടെക്നോളജി സെന്ററിൽ സ്മോൾടാക്ക് അവതരിപ്പിക്കപ്പെടുമ്പോൾ ഇരുവരുമുണ്ടായിരുന്നു. ഒബ്ജക്റ്റീവ്-സിയുടെ ആദ്യകാല സൃഷ്ടികൾ വീണ്ടും അവതരിപ്പിക്കപ്പെട്ടു.
സോഫ്റ്റ്‌വേർ ഡിസൈനിലും പ്രോഗ്രാമിങ്ങിലുമുളള യഥാർഥ റീയുസിബിലിറ്റി(reusability)യുടെ പ്രശ്നങ്ങളാൽ കോക്സ് വിഷമത്തിലായി. ഐടിടിയിൽ(ITT)സിസ്റ്റം ഡെവലപ്പർമാർക്ക് നിർമ്മാണ വികസനത്തിൽ സ്മോൾടാക്ക് പോലൊരു ഭാഷ ഉപയോഗിക്കാനാകുമെന്ന് അദ്ദേഹം മനസ്സിലാക്കി. എന്നിരുന്നാലും, സിയോടൊപ്പമുള്ള ബാക്ക് വേഡ് കോമ്പാറ്റിബിലിറ്റി എന്നിവയും ടോം ലൗവും അദ്ദേഹവും തിരിച്ചറിഞ്ഞു, ഐടിടിയുടെ ടെലികോം എൻജിനീയറിങ് പരിസ്ഥിതിയിൽ വളരെ പ്രധാനപ്പെട്ടതാണ്.സ്മാൾടാക്കിന് ചില കഴിവുകൾ ചേർക്കാൻ കോക്സ് സി ഒരു പ്രീ പ്രൊസസർ എഴുതാൻ തുടങ്ങി. സി ഭാഷക്ക് ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് എക്സ്റ്റൻഷൻ നടപ്പിലാക്കാൻ അദ്ദേഹം പെട്ടെന്നുതന്നെ പ്രവർത്തിച്ചു, ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രീ-കംപൈലറിനായുള്ള "ഒഒപിസി(OOPC)" എന്നു അദ്ദേഹം അതിനെ വിശേഷിപ്പിച്ചു.1982 ൽ സ്ലാംബർഗർ റിസർച്ചിൽ കരാർ അടിസ്ഥനത്തിൽ ജോലി ലഭിച്ചു. കൂടാതെ സ്മോൾടോക്-80യുടെ ആദ്യത്തെ വാണിജ്യ പകർപ്പ് സ്വന്തമാക്കാനുള്ള അവസരം ലഭിച്ചു. അത് അവരുടെ സ്വന്തം ആശയം വികസിപ്പിക്കുന്നതിന് സഹായിച്ചു.

യഥാർത്ഥ പുരോഗതി വ്യക്തമാക്കാൻ കഴിയുമെന്ന് തെളിയിക്കുന്നതിന്, പരസ്പരം കൈമാറ്റം ചെയ്യാവുന്ന സോഫ്റ്റ്‌വേർ ഘടകങ്ങൾ നിർമ്മിക്കണമെങ്കിൽ നിലവിലുള്ള പ്രയോഗങ്ങളിൽ കുറച്ച് പ്രായോഗിക മാറ്റങ്ങൾ മാത്രമേ ആവശ്യമുള്ളൂ എന്ന് കോക്സ് കാണിച്ചു തന്നു. പ്രത്യേകിച്ചും, വസ്തുക്കൾ ഒരു വഴങ്ങുന്ന രീതിയിൽ ഉള്ള പിന്തുണ ആവശ്യമായിരുന്നു, ഉപയോഗയോഗ്യമായ ലൈബ്രറികൾ വിതരണം ചെയ്തു, കൂടാതെ കോഡ് (കോഡുകൾക്ക് ആവശ്യമുള്ള എന്തെങ്കിലും ഉറവിടങ്ങൾ) ഒരു ക്രോസ്-പ്ലാറ്റ്ഫോം ഫോർമാറ്റിലേക്ക് ഒന്നിച്ചു ചേർക്കാനാവും.

ലൗവും, കോക്സും കൂടി ചേർന്ന് ഒരു പുതിയ സംരംഭം ആരംഭിച്ചു, പ്രൊഡക്റ്റിവിറ്റി പ്രൊഡക്ട്സ് ഇന്റർനാഷണൽ (പിപിഐ), അവരുടെ ഉല്പന്നം വാണിജ്യവത്ക്കരിക്കുന്നതിന് വേണ്ടി ക്ലാസ് ലൈബ്രറികളുമായി കൂട്ടിയോജിപ്പിച്ച ഒരു ഒബ്ജക്റ്റീവ്-സി കമ്പൈലർ  നിർമ്മിച്ചു. പരിണാമസംബന്ധിയായ സമീപനത്തോടെ 1986-ൽ, ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിങ് എന്ന പുസ്തകത്തിൽ, ഒബ്ജക്റ്റീവ്-സിയുടെ പ്രധാന വ്യാഖ്യാനങ്ങൾ പ്രസിദ്ധീകരിച്ചു. ഭാഷയേക്കാളുമധികം പുനരുയുപയോഗത്തിന്റെ പ്രശ്നം കൂടുതൽ ഉണ്ടെന്ന് ചൂണ്ടിക്കാണിച്ചെങ്കിലും, മറ്റ് ഭാഷകൾക്കുള്ള സവിശേഷതകളുമായി ഒബ്ജക്റ്റീവ്-സി പലപ്പോഴും സ്വന്തം സവിശേഷതകൾ താരതമ്യം ചെയ്തു.
### നെക്സ്റ്റ് വഴിയുള്ള ജനകീയമാക്കൽ
1988-ൽ സ്റ്റെപ്പ്സ്റ്റോണിൽ നിന്ന് ഒബ്ജക്റ്റീവ്-സിയ്ക്ക് നെക്സ്റ്റ് ലൈസൻസ് ലഭിച്ചു(ഒബ്ജക്റ്റീവ്-സി വ്യാപാരമുദ്രയുടെ ഉടമയായ പിപിഐയുടെ പുതിയ പേര്) ജിസിസി കംപൈലർ ഒബ്ജക്റ്റീവ്-സിയെ പിന്തുണയ്ക്കുന്നതിനായി വിപുലീകരിച്ചു. നെക്സ്റ്റ്സ്റ്റെപ്പ് യൂസർ ഇന്റർഫേസ് ആൻഡ് ഇന്റർഫേസ് ബിൽഡർ അടിസ്ഥാനമാക്കിയുള്ള ആപ്പ്കിറ്റ്(AppKit), ഫൗണ്ടേഷൻ കിറ്റ് ലൈബ്രറികൾ എന്നിവ നെക്സ്റ്റ് വികസിപ്പിച്ചെടുത്തു. നെക്സ്റ്റ് വർക്ക്സ്റ്റേഷനുകൾ കമ്പോളത്തിൽ വലിയ സ്വാധീനം ചെലുത്തുന്നതിൽ പരാജയപ്പെട്ടപ്പോൾ, വ്യവസായ മേഖലയിൽ ഉപകരണങ്ങൾ വളരെ പ്രശംസ പിടിച്ചുപറ്റി. നെക്സ്റ്റ്സ്റ്റെപ്പ് (ഓപ്പൺസ്റ്റെപ്പും) കസ്റ്റം പ്രോഗ്രാമിങ്ങിനുള്ള ഒരു പ്ലാറ്റ്ഫോമായി വിൽക്കുന്നതിനു് നെക്സ്റ്റ് നേതൃത്വം ഹാർഡ് വെയർ പ്രൊഡക്ഷൻ ഉപേക്ഷിക്കുകയും സോഫ്റ്റ്വെയറുകൾ പ്രയോഗിക്കുകയും ചെയ്തു.

ജിപിഎല്ലിന്റെ നിബന്ധനകളെ മറികടക്കാൻ നെക്സ്റ്റ് തുടക്കത്തിൽ ഒബ്ജക്റ്റീവ്-സി ഫ്രണ്ട് എൻഡ് വേണമെന്ന് ഉദ്ദേശിച്ചിരുന്നു, കമ്പൈലർ എക്സിക്യൂട്ടബിൾ ലഭ്യമാക്കുന്നതിനായി ജിസിസി ഉപയോഗിച്ചു് ഉപയോക്താവിനെ ഇതു് അനുവദിയ്ക്കുന്നു. റിച്ചാർഡ് സ്റ്റാൾമാൻ ആദ്യം അംഗീകരിച്ചതിനു ശേഷം, ഗ്നുവിന്റെ അഭിഭാഷകരുമായി സ്റ്റാൾമാൻ ചർച്ച നടത്തി, ഒബ്ജക്റ്റീവ്-സി ജിസിസിയുടെ ഭാഗമാക്കുന്നതിന് നെക്സ്റ്റ് അംഗീകരിച്ചു.

ജിസിസിയെ വിപുലപ്പെടുത്തുന്നതിനുള്ള പ്രവർത്തനത്തിന് നേതൃത്വം നൽകിയത് സ്റ്റെപ്പ്സ്റ്റോണിൽ നിന്ന് നെക്സ്റ്റിൽ ചേർന്ന സ്റ്റീവ് നരോഫ് ആണ്. ജിപിഎൽ ലൈസൻസ് നിബന്ധനകൾ അനുസരിച്ച് കമ്പൈലർ മാറ്റങ്ങൾ ലഭ്യമാക്കി, പക്ഷേ റൺടൈം ലൈബ്രറികൾ അല്ല, ഓപ്പൺ സോഴ്സ് വിതരണം ജനങ്ങൾക്ക് ഉപയോഗിക്കാനാവില്ല. അത്തരം റൺടൈം ലൈബ്രറികൾ ഓപ്പൺ സോഴ്സ് ലൈസൻസിന് കീഴിൽ വികസിപ്പിച്ചെടുക്കുന്നതിന് മറ്റ് പാർട്ടികൾക്ക് ഇത് വഴിയൊരുക്കി. പിൽക്കാലത്ത്, ക്ലോങ്ങിലേക്കുള്ള ഒബജക്ടീവ്-സി ഫ്രാൻഡൻഡ് നിർമ്മിച്ചത് ആപ്പിളിൽ ജോലി ചെയ്യുന്ന പ്രധാന ലേഖകൻ ആയിരുന്ന സ്റ്റീവ് നരോഫ് ആണ്.

ഗ്നു സംരംഭം സ്വതന്ത്ര സോഫ്റ്റ്വെയറിൽ പ്രവർത്തിച്ചുതുടങ്ങി, കോക്കോ നടപ്പാക്കുകയും, ഗ്നുസ്റ്റെപ്പ് എന്ന പേര് നൽകുകയും ചെയ്തു, അത് ഓപ്പൺസ്റ്റെപ്പ് സ്റ്റാൻഡേർഡ് അടിസ്ഥാനമാക്കിയുള്ളതാണ്.ഡെന്നീസ് ഗ്ലേറ്റിംഗ് 1992-ൽ ആദ്യത്തെ ഗ്നു ഒബ്ജെക്റ്റീവ്-സി റൺടൈം എഴുതി. 1993 മുതൽ ഉപയോഗത്തിലുള്ള ഗ്നു ഒബ്ജക്റ്റീവ്-സി റൺടൈം, ഡെന്മാർക്കിലെ യൂണിവേഴ്സിറ്റി വിദ്യാർത്ഥിയായ ക്രെസ്റ്റൻ ക്രാബ് തോർപ്പ് വികസിപ്പിച്ചെടുത്തതാണ്. 1993 മുതൽ 1996 വരെ നെക്സ്റ്റിൽ തോർപ് ജോലിചെയ്തു.
### ആപ്പിൾ വികസനവും സ്വിഫ്റ്റും
1996 ൽ നെക്സ്റ്റ് നേടിയ ശേഷം, മാക് ഒഎസ് എക്സ് എന്ന പുതിയ ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിൽ ആപ്പിൾ കമ്പ്യൂട്ടർ ഓപ്പൺസ്റ്റെപ്പാണ് ഉപയോഗിച്ചത്. ഒബ്ജക്റ്റീവ്-സി, നെക്സ്റ്റ് ഒബ്ജക്റ്റിവ് സി-അധിഷ്ഠിത ഡെവലപ്പർ ടൂൾ, പ്രോജക്റ്റ് ബിൽഡർ, അതിന്റെ ഇൻഫർമേഷൻ ഡിസൈൻ ടൂൾ, ഇന്റർഫേസ് ബിൽഡർ, എന്നിവ ഇപ്പോൾ ഒരു ആപ്ലിക്കേഷനിൽ ലയിപ്പിച്ചു അതിന് എക്സ് കോഡ് എന്ന പേര്  നൽകി ,ഓപ്പൺസ്റ്റെപ്പ്(OpenStep)ഇന്റർഫെയിസ് ഒബ്ജക്റ്റിനെ അടിസ്ഥാനത്തിനമാക്കിയുള്ളതാണ് ആപ്പിളിന്റെ നിലവിലെ കൊക്കോ എപിഐ (API).

ഡബ്ല്യു ഡബ്ല്യു ഡിസി (WWDC) 2014 ൽ, ആപ്പിൾ ഒരു പുതിയ ഭാഷ അവതരിപ്പിച്ചു, സ്വിഫ്റ്റ്, "സി ഇല്ലാത്ത ഒബ്ജക്ടീവ്- സി" എന്നതാണ് ഈ ഭാഷയുടെ പ്രത്യേകത.
## വാക്യഘടന
ഒബ്ജക്റ്റീവ്-സി എന്നത് സിയുടെ മുകളിലുള്ള ഒരു നേർത്ത പാളിയാണ്, ഇത് സി യുടെ "സ്ട്രിക്ട്റ്റ് സൂപ്പർസെറ്റ്" ആണ്, അതായത് ഒരു സി പ്രോഗ്രാം ഒരു ഒബ്ജക്റ്റീവ്-സി കംപൈലർ ഉപയോഗിച്ച് സമാഹരിക്കാനും ഒരു സി ഭാഷാ കോഡ് ഒരു ഒബ്ജക്റ്റീവ്-സി ക്ലാസിൽ സ്വതന്ത്രമായി ഉൾപ്പെടുത്താനും കഴിയും.

ഒബ്ജക്റ്റീവ്-സി അതിന്റെ ഒബ്ജക്റ്റ് സിന്റാക്സ് സ്മോൾടോക്കിൽ നിന്നാണ് ഉരുത്തിരിഞ്ഞത്. നോൺ-ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രവർത്തനങ്ങൾക്കുള്ള എല്ലാ വാക്യഘടനകളും (പ്രിമിറ്റീവ് വേരിയബിളുകൾ, പ്രീ-പ്രോസസ്സിംഗ്, എക്സ്പ്രഷനുകൾ, ഫംഗ്ഷൻ ഡിക്ലറേഷനുകൾ, ഫംഗ്ഷൻ കോളുകൾ എന്നിവയുൾപ്പെടെ) സിക്ക് സമാനമാണ്, അതേസമയം, ഒബ്ജക്റ്റ്-ഓറിയന്റഡ് ഫീച്ചറുകൾക്കുള്ള വാക്യഘടന സ്മോൾടോക്ക്-സ്റ്റൈൽ മെസ്സേജിംഗിന്റെ നടപ്പാക്കലാണ്.
### മെസേജസ്
ഒബ്ജക്റ്റ്-ഓറിയന്റഡ് പ്രോഗ്രാമിംഗിന്റെ ഒബ്ജക്റ്റീവ്-സി മോഡൽ ഒബ്ജക്റ്റ് ഇൻറ്റസിലേക്ക് സന്ദേശം കൈമാറുന്നതിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ഒബ്ജക്ടീവ്-സിയിൽ ഒരു മെത്തേഡിനെ വിളിക്കില്ല; പകരം ഒരു സന്ദേശം അയയ്ക്കുന്നു. സി++ ഉപയോഗിക്കുന്ന സിമുല-സ്റ്റൈൽ പ്രോഗ്രാമിംഗ് മോഡലിൽ നിന്ന് വ്യത്യസ്തമാണ് ഇത്.

## അവലംബം