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

مرور کلی

Objective-C یک زبان برنامه‌نویسی شیءگرا است که پیام‌رسانی به سبک Smalltalk را به زبان برنامه‌نویسی C اضافه می‌کند. این زبان تا زمان معرفی Swift در سال ۲۰۱۴، زبان اصلی برنامه‌نویسی مورد استفاده اپل برای توسعه macOS و iOS بود. Objective-C کارایی و عملکرد C را با انعطاف‌پذیری و قابلیت‌های پویا Smalltalk ترکیب می‌کند و آن را برای توسعه برنامه‌ها در پلتفرم‌های اپل مناسب می‌سازد. نحو و ساختار آن اجازه می‌دهد تا برنامه‌های پیچیده‌ای ایجاد شود در حالی که خوانایی و سهولت ادغام با سایر زبان‌های مبتنی بر C حفظ می‌شود.

جنبه‌های تاریخی

ایجاد و توسعه اولیه

Objective-C در اوایل دهه ۱۹۸۰ توسط براد ککس و تام لاو در شرکت نرم‌افزاری Stepstone ایجاد شد. انگیزه پشت ایجاد آن، ارائه یک مدل برنامه‌نویسی انعطاف‌پذیرتر برای توسعه‌دهندگانی بود که نرم‌افزارهایی برای پارادایم شیءگرا در حال رشد می‌ساختند. این زبان با افزودن قابلیت‌های پیام‌رسانی مشابه Smalltalk به C توسعه یافت که رویکردی پویا به برنامه‌نویسی را ممکن می‌ساخت.

پذیرش توسط NeXT و تأثیر اپل

در اواخر دهه ۱۹۸۰، شرکت NeXT Computer که توسط استیو جابز تأسیس شده بود، Objective-C را برای سیستم‌عامل NeXTSTEP خود که برای تسهیل توسعه برنامه‌ها در یک محیط شبکه طراحی شده بود، پذیرفت. این تصمیم بعداً به شدت سودآور بود زمانی که اپل در سال ۱۹۹۷ NeXT را خرید و منجر به تبدیل Objective-C به پایه‌ای برای توسعه macOS و iOS شد.

وضعیت کنونی و میراث

با وجود معرفی Swift در سال ۲۰۱۴ که به عنوان یک جایگزین ایمن‌تر و مدرن‌تر برای Objective-C طراحی شده بود، این زبان همچنان بخشی مهم از اکوسیستم اپل باقی مانده است. بسیاری از برنامه‌های قدیمی هنوز از Objective-C استفاده می‌کنند و این زبان در کنار Swift در محیط‌های توسعه کنونی پشتیبانی می‌شود. قابلیت‌های پویا و پیام‌رسانی Objective-C همچنان بر طراحی زبان‌ها و فریم‌ورک‌های جدید تأثیر می‌گذارد.

ویژگی‌های نحوی

برنامه‌نویسی شیءگرا

Objective-C به طور بنیادی شیءگرا است و به توسعه‌دهندگان اجازه می‌دهد کلاس‌ها، اشیاء و متدها را تعریف کنند. این به سازماندهی و مدولار کردن کد به طور مؤثر کمک می‌کند.

@interface MyClass : NSObject
- (void)myMethod;
@end

@implementation MyClass
- (void)myMethod {
    NSLog(@"Hello from MyClass!");
}
@end

نوع‌گذاری پویا

Objective-C اجازه نوع‌گذاری پویا را می‌دهد و به متغیرها این امکان را می‌دهد که اشیاء از کلاس‌های مختلف را در زمان اجرا نگه‌داری کنند که برای الگوهای کدنویسی انعطاف‌پذیرتر مفید است.

id myObject = [[MyClass alloc] init];

ارسال پیام

به جای فراخوانی‌های تابع سنتی، Objective-C از نحوی پیام‌رسانی استفاده می‌کند که شبیه Smalltalk است و اجازه می‌دهد تا حل متد به طور پویا انجام شود.

[myObject myMethod];

دسته‌ها

دسته‌ها به توسعه‌دهندگان اجازه می‌دهند متدهایی به کلاس‌های موجود اضافه کنند بدون اینکه نیاز به زیرکلاسی داشته باشند. این برای گسترش کتابخانه‌های شخص ثالث به ویژه مفید است.

@interface NSString (MyCategory)
- (NSString *)reverseString;
@end

پروتکل‌ها

پروتکل‌ها در Objective-C مشابه رابط‌ها در زبان‌های دیگر هستند و اجازه می‌دهند متدهایی تعریف شوند که می‌توانند توسط هر کلاسی پیاده‌سازی شوند.

@protocol MyProtocol
- (void)requiredMethod;
@end

ویژگی‌ها

Objective-C ویژگی خاصی برای ساده‌سازی کپسوله‌سازی متغیرهای کلاس ارائه می‌دهد و به طور خودکار متدهای getter و setter را مدیریت می‌کند.

@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
@end

مدیریت حافظه

این زبان از هر دو روش شمارش مرجع دستی (MRC) و شمارش مرجع خودکار (ARC) برای مدیریت مؤثر حافظه استفاده می‌کند.

self.name = [[NSString alloc] initWithFormat:@"Hello"];

بلوک‌ها

Objective-C از بلوک‌ها پشتیبانی می‌کند که مشابه closures در زبان‌های دیگر هستند و اجازه تعریف و اجرای توابع درون‌خطی را می‌دهند.

void (^myBlock)(void) = ^{
    NSLog(@"Hello from Block!");
};

شکرگذاری نحوی برای الگوهای رایج

Objective-C ساختارهای نحوی را ارائه می‌دهد که در الگوهای برنامه‌نویسی رایج کمک می‌کند، مانند ایجاد آرایه‌های مختصر و ادبیات دیکشنری.

NSArray *array = @[@"One", @"Two", @"Three"];

مدیریت خطا

Objective-C از یک سیستم مدیریت خطای منحصر به فرد با استفاده از NSError استفاده می‌کند که به متدها اجازه می‌دهد خطاها را بدون استفاده از استثناها برگردانند.

NSError *error = nil;
BOOL success = [myObject performActionWithError:&error];

ابزارها و زمان‌های اجرا برای توسعه‌دهندگان

محیط‌های توسعه

Xcode محیط توسعه یکپارچه (IDE) اصلی برای Objective-C است که مجموعه‌ای قوی از ابزارها برای توسعه، اشکال‌زدایی و استقرار برنامه‌ها در پلتفرم‌های اپل ارائه می‌دهد. این شامل یک سازنده رابط بصری و مستندات گسترده است.

کامپایلرها

کد Objective-C معمولاً با استفاده از کامپایلر Clang که بخشی از پروژه LLVM است، کامپایل می‌شود. Clang زمان‌های کامپایل سریع، تشخیص خطای عالی و پشتیبانی از آخرین استانداردهای C و Objective-C را ارائه می‌دهد.

ساخت پروژه‌ها

برای ساخت یک پروژه در Xcode، توسعه‌دهندگان یک پروژه جدید ایجاد می‌کنند، تنظیمات ساخت را پیکربندی می‌کنند و از Interface Builder برای طراحی بصری اجزای UI استفاده می‌کنند. ساخت و اجرای برنامه می‌تواند به طور مستقیم در Xcode با یک کلیک دکمه انجام شود.

کاربردهای Objective-C

Objective-C عمدتاً برای توسعه برنامه‌ها برای macOS و iOS استفاده می‌شود. این زبان پایه بسیاری از برنامه‌های قدیمی است و همچنان در ترکیب با Swift برای برنامه‌های مدرن استفاده می‌شود. برنامه‌های قابل توجه شامل:

مقایسه با زبان‌های مشابه

هنگام مقایسه با زبان‌های برنامه‌نویسی مرتبط، Objective-C نقاط قوت و ضعف منحصر به فرد خود را دارد.

نکات ترجمه از منبع به منبع

برای ترجمه Objective-C به زبان‌های دیگر، موارد زیر را در نظر بگیرید:

ابزارهای موجود برای ترجمه کد از منبع به منبع برای Objective-C شامل: