اگر به فناوری علاقه مند هستید ممکن است نام زبان های برنامه نویسی نظیر C یا ++C# ،C و Objective-C را شنیده باشید؛

اما تفاوت Objective-C با این زبان ها چیست؟

آیا همه این نسخه های مختلف برگرفته از یک زبان برنامه نویسی واحد هستند یا اصلا به هم ربطی ندارند؟

در ادامه با ما همراه باشید تا پاسخ این سوالات را دریابید.

1# زبان برنامه نویسی Objective-C چیست؟

زبان برنامه نویسی ObjectiveC

Objective-C یک زبان برنامه نویسی general-purpose است.

به این معنا که کاربردهای فراوانی در حوزه فناوری دارد و مختص به یک کاربرد خاص نیست.

به عنوان مثال SQL تنها برای پایگاه داده قابل استفاده است؛ اما زبان Objective-C مخصوص هیچ پلتفرم یا سیستم خاصی نیست و
می تواند در توسعه انواع برنامه ها و چهارچوب ها بسیار کمک کند.

این زبان برنامه نویسی که OBJ-C نیز نام دارد، قابلیت Smalltalk را به زبان برنامه نویسی C اضافه می کند.

به این صورت که به جای فراخوانی یک متد، پیام می فرستد.

قابلیت Smalltalk، روش اجرای کد را در این زبان برنامه نویسی تغییر می دهد.

زبان Objective-C یکی از اصلی ترین زبان های برنامه نویسی است که Apple آن را برای سیستم iOS استفاده می کند و
می تواند برای ایجاد برنامه های تلفن همراه در این پلتفرم خاص کاربرد داشته باشد.

Objective-C به عنوان یک مجموعه فوق العاده از زبان برنامه نویسی C، این قابلیت را برای توسعه دهندگان فراهم می کند که بیشتر به جزئیات توجه داشته باشند.

2# تفاوت زبان Objective-C با زبان ++C

تفاوت زبان برنامه نویسی Objective-C با زبان C++

  • زبان برنامه نویسی ++C یک زبان شی گرا و عمومی است؛
    در حالی که امکانات لازم برای دستکاری حافظه در سطح پایین را نیز فراهم می کند.
    ++C مستقیما به زبان ماشین کامپایل (Compile) می شود و
    در صورت بهینه سازی، می تواند یکی از سریع ترین زبان های جهان باشد.
    در مقابل Objective-C نیز مانند ++C یک زبان شی گرا و عمومی است؛
    با این تفاوت که زبان اصلی برنامه نویسی برای نوشتن نرم افزار برای سیستم عامل های OS X و iOS است.
    زبان برنامه نویسی Objective-C یک مجموعه بزرگ و گسترده تر از زبان برنامه نویسی C است.
    این زبان نحو (Syntax) و دستورات کنترل جریان را از زبان برنامه نویسی C به ارث می برد.
    البته Syntax خود را برای تعریف کلاس ها و روش ها به زبان C اضافه می کند.
  • با توجه به مشارکت برنامه نویسان در انجمن های پرس و جوی توسعه دهندگان در سراسر جهان، زبان Objective-C دارای تایید گسترده تری نسبت به زبان ++C است.
  • ++C یک زبان سطح متوسط ​​است که بر روی سیستم عامل های مختلف از جمله Windows ،UNIX ،Macintosh OS و غیره کار می کند.
    در مقابل، Objective-C یک زبان برنامه نویسی عمومی و شی گرا است که
    اپل آن را توسعه داده است و از آن استفاده می کند.
  • ++C از وراثت چندگانه پشتیبانی می کند؛
    اما زبان OBJ-C از وراثت چندگانه (Multiple Inheritance) پشتیبانی نمی کند.
    یعنی در Objective-C یک کلاس فرزند (Child Class) نمی تواند همزمان از چندین کلاس ارث ببرد.
  • زبان ++C یک زبان تایپ استاتیک (static type) است؛
    اما زبان Objective-C یک زبان تایپ پویا (dynamic type) است.
    یعنی برخلاف ++C نیازی به تعریف کردن نوع متغیرها ندارد.
این را هم ببینید
انواع متغیر در ++C

3# تفاوت زبان Objective-C با زبان Swift

Swift یک زبان برنامه نویسی چندمنظوره است که
اپل آن را پس از زبان برنامه نویسی Objective-C برای سیستم عامل های مختلف خود توسعه داد.

این سیستم عامل ها عبارتند از:

  • iOS
  • tvOS
  • macOS
  • watch OS

طراحی زبان برنامه نویسی Swift به گونه ای است که
با تمام ابزارهای توسعه iOS مانند کتابخانه های Objective-C و چهارچوب Cocoa اپل سازگار باشد.

این زبان با دارا بودن سهولت استفاده و ویژگی های بهبودیافته پتانسیل خوبی برای جایگزینی با زبان Objective-C دارد؛
اما زبان برنامه نویسی Objective-C به دلایلی که در ادامه مقاله به آن اشاره می کنیم، همچنان جایگاه خود را حفظ کرده است.

تفاوت زبان برنامه نویسی Objective-C با زبان Swift

تفاوت های اصلی این دو زبان عبارتند از:

  • نحو Swift واضح و مختصر است؛ بنابراین خواندن و نگهداری API ها (Application Programming Interface) را در Swift آسان تر می کند؛ اما Objective-C مبتنی بر زبان C است که تسلط بر آن به تنهایی دشوار است.
  • Swift تمام مزایای زبان های برنامه نویسی مختلف مانند Python ،JavaScript ،Go ،Ruby و غیره را جمع آوری می کند؛
    اما نحو سخت و متفاوت با سایر زبان های برنامه نویسی در زبان برنامه نویسی Objective-C این کار را برای این زبان دشوار می کند.
  • درک Swift نسبت به OBJ-C آسان تر بوده و دارای کدهای منطقی تری است که
    طول کد و در نتیجه زمان توسعه را کاهش می دهد؛
    بنابراین پیاده سازی برنامه ها در Objective-C بیش از دو برابر Swift به کدنویسی نیاز دارد.
  • با این که یادگیری Swift برای برنامه نویسان آسان و سریع است و
    ایجاد برنامه های iOS با این زبان بسیار در دسترس تر است؛
    اما مجموعه توسعه دهندگان Swift در حال حاضر نسبت به زبان برنامه نویسی Objective-C محدود است و
    بخش عمده ای از جامعه برنامه نویسی iOS با Objective-C صحبت می کنند.

4# مزایای Objective-C

مزایای Objective-C

  • یکی از نقاط قوت این زبان، سازگاری آن با کتابخانه های خانواده زبان C است.
  • از آن جایی که اپل این زبان برنامه نویسی قدیمی را تا سال 2014 استفاده می کرد،
    هنوز هم آن را برای توسعه iOS و macOS به طور گسترده پشتیبانی می کند.
  • این زبان برای مدیریت حافظه عالی است. کامپایلرهایی در دسترس هستند که
    می توانند کد Objective-C را به کد استاتیک تبدیل و تجزیه و تحلیل کنند تا
    آن ها را بر اساس اطلاعات مفید و بلااستفاده به دو دسته جداگانه نظم دهند.
  • مهم ترین نکته در مورد Objective-C این است که به شدت شی گرا است.
    شما می توانید نمودارها را جا به جا و فایل ها را با استفاده از این زبان مکمل دستکاری کنید.
  • Objective-C به عنوان زبانی که در دهه 1980 اختراع شد، هنوز دارای ویژگی های زیادی است که
    در توسعه برنامه های تلفن همراه مخصوص iOS استفاده می شود.
    در حالی که هیچ نوآوری وجود ندارد که به Objective-C اجازه دهد در همه انواع سیستم عامل ها کاربرد داشته باشد.
  • امروزه زبان Objective-C با زبان Swift که زبان برنامه نویسی iOS جدیدتری است، رقابت می کند.
    بحث های زیادی بین زبان های برنامه نویسی وجود دارد که
    Objective-C نتایج بهتری، از جمله پایداری بیشتر نسبت به زبان نابالغ سوئیفت، برای توسعه برنامه های تلفن همراه iOS ارائه می دهد.

5# معایب Objective-C

معایب Objective-C

  • از آن جا که زبان برنامه نویسی Objective-C کامل شده زبان C است، به فضای نام (Namespace) نیاز دارد.
    همه کلاس های یک برنامه Objective-C باید در سراسر جهان منحصر به فرد باشند؛
    بنابراین برای فرار از این مشکل، راه حل پیشوند نام کلاس ها وجود دارد.
    به این منظور از پیشوندها برای نام گذاری استفاده می شود.
    به عنوان مثال، توسعه دهندگان برای رفع این مشکل می توانند حروف دلخواه یا نام دامنه وب سایت و همچنین نام کمپانی خود را با یک جداکننده مانند Underline (_) قبل از نام کلاس بیاورند.
  • قابلیت ارسال پیام به یک شی بدون تایپ دقیق و رعایت چهارچوب اصلی منجر به اشکالاتی می شود که ردیابی و رفع آن ها دشوار است.
  • این زبان از نظر نحوی (syntax) خسته کننده و پیچیده است.

6# آینده زبان برنامه نویسی Objective-C

آینده زبان برنامه نویسی Objective-C

آیا با ظهور زبان Swift زبان برنامه نویسی Objective-C کنار خواهد رفت؟

اگرچه به مرور زمان محبوبیت این زبان کاهش می یابد؛
ولی واضح است که اکثریت قریب به اتفاق کدهای macOS و iOS با C یا Obj-C نوشته شده اند و
بعید است که کدهای نوشته شده با Objective-C فقط به منظور تغییر زبان با Swift بازنویسی شوند.

علاوه بر این، به دلایل زیر این زبان برای مدت طولانی پشتیبانی می شود و قابل حذف کردن نیست:

  • Swift هنوز یک زبان بتا است، یعنی نسخه اولیه این زبان هست و کامل نیست؛
    بنابراین نمی تواند جایگزین مناسبی برای Objective-C باشد.
    پس اگر با Obj-C راحت تر هستید، نیازی به انتقال به زبان Swift نیست؛ مگر این که خودتان بخواهید.
  • زبان Objective-C بیشترین کاربرد در میان نسخه های مختلف C را دارد و
    در حال حاضر بیشتر کدهای نوشته شده میان آن ها با این زبان نوشته شده اند.
  • اگر سازمان هایی که از این زبان در پروژه های خود استفاده کرده اند،
    از حمایت از Objective-C دست بکشند، تمام برنامه های خود را در فروشگاه App از دست خواهند داد.
    به عنوان مثال اکثر کدهای داخلی در شرکت اپل با OBJC نوشته شده اند؛
    بنابراین اپل اعلام کرد که آن ها از این زبان حمایت خواهند کرد و هیچ برنامه ای برای از بین بردن آن ندارند.
دانلود pdf مقاله

نظرتون درباره این مقاله چیه؟
ما رو راهنمایی کنید تا اون رو کامل تر کنیم و نواقصش رو رفع کنیم.
توی بخش دیدگاه ها منتظر پیشنهادهای فوق العاده شما هستیم.