Swift هنوز به پای Objective-C نرسیده است!

Swift هنوز به پای Objective-C نرسیده است!

معمولاً پس از مدتی، نسخۀ جدیدی از زبان‌های برنامه‌نویسی مختلف ارائه می‌شود ولی سوئیفت روند سریع‌تری را در این زمینه داشته است؛ بعد از گذشت کمتر از ۳ سال از معرفی این زبان توسط شرکت اپل، در پاییز سال 2017 نسخه 4.0 زبان سویفت منتشر خواهد شد و این در حالی است که پدرجد سوئیفت -یعنی آبجکتیوسی- هنوز زنده است و طرفدارانی دارا است. برای آشنایی با مقایسه‌ای مابین این ۲ زبان طراحی شده توسط اپل و همچنین آینده‌ای که در انتظار هر کدام از آن‌ها است، در ادامه با سکان آکادمی همراه باشید.

مسئول جدید توسعهٔ زبان سوئیفت -Ted Kremenek- در وبسایت Swift.org اعلام کرده است که تیم او برای ایجاد سوئیفت 4.0 برنامه‌هایی را تنظیم نموده است و این در حالی است که خوشبختانه نسخۀ جدید با نسخۀ 3 این زبان سازگار خواهد بود، بنابراین اپلیکیشن‌هایی که با استفاده از سوئیفت 2 نوشته شده‌اند باید حداقل به نسخۀ 3 ارتقاء یابند زیرا در غیر این صورت کامپایل نمودن آن‌ها با مشکل مواجه خواهد شد. البته ممکن است کدهایی که به نسخۀ 3 به‌روزرسانی شده‌اند نیز در این نسخه با مشکلات نادری روبه‌رو شوند. در این خبر اعلام شده است که:

نسخۀ پیش‌فرض برای کدهای موجود، سوئیفت 3 است" کدهایی که با این نسخه هماهنگ باشند، با کامپایلر نسخۀ 3.1 سوئیفت به راحتی کامپایل خواهند شد و با کامپایلر نسخۀ 4 نیز مشکلی نخواهند داشت. تنها مسئله‌ای که ممکن است در مورد این کدها وجود داشته باشد، باگ‌هایی است که از کامپایل شدن کد جلوگیری می‌کنند. در واقع چنین باگ‌هایی در همان نسخۀ ابتدایی نیز نباید مورد پذیرش قرار گرفته و باید رد می‌شدند.

البته آن‌طور که تیم سوئیفت اشاره نموده است، مهاجرت از سوئیفت 3 به سوئیفت 4، به دشواری مهاجرت از سوئیفت 2 به سوئیفت 3 نخواهد بود؛ ویژگی پشتیبانی از چند ورژن در سوئیفت 4، به این معنا است که اپ‌های نوشته شده با استفاده از فریمورک‌های سوئیفت 3 نیازی به آپدیت شدن به نسخۀ 4 نخواهند داشت و به این ترتیب می‌توانید اپلیکیشنی را در سوئیفت 4 بنویسید و در آن از لایبرری‌ها و یا فریم‌ورک‌های نسخۀ 3 نیز استفاده نمایید. این نکته در مورد پکیج‌های نسخۀ 4 که نیاز به دسترسی به همتای نسخۀ 3 خود دارند نیز صادق است.

و اما خبرهای بد در مورد سوئیفت 4
سازگاری سوئیفت 3 و 4 خبر خیلی خوبی است اما یک مشکل بزرگ وجود دارد و آن هم این است که مسئلۀ Application Binary Interface که به اختصار ABI گفته می‌شود، هنوز در هاله‌ای از ابهام قرار دارد. اگر با ABI آشنایی ندارید، بایستی گفت که ABI چیزی است که امکان دسترسی به لایبرری‌ها و منابع خارج از اپلیکیشن را برای اپلیکیشن شما فراهم می‌کند به‌نحوی که با تغییر این لایبرری‌ها و منابع، اپلیکیشن شما نیاز به آپدیت شدن نخواهد داشت. وقتی یک اپ به یک API خارجی دسترسی پیدا می‌کند، این کار را با استفاده از ABI انجام می‌دهد. حال اگر آن API دستخوش تغییر شده و یا آپدیت شود، برای سازگاری اپ خود با این تغییرات، نیازی نیست که کاری انجام دهید زیرا هم اپ و هم API در ABI یکسانی اجرا می‌شوند.

همۀ این‌ها بدان معنا است که علیرغم بی‌میلی روزافزون دولوپرها به آبجکتیوسی، هنوز هم این زبان زنده است و دارد نفس می‌کشد، زیرا سوئیفت هنوز نتوانسته است به ثبات ABI دست پیدا کند. از این رو به نظر می‌رسد که سال 2017 نیز سالی دیگر برای آبجکتیوسی خواهد بود تا نقش زبانی تاثیرگذار برای لایبرری‌ها و فریمورک‌ها را ایفا نماید.

شاید برای افرادی که دائماً تحولات سوئیفت را دنبال می‌کنند خبر جدیدی نباشد؛ اما تیم سوئیفت تصمیم دارد در API استرینگ سوئیفت 4 تغییرات اساسی و مهمی ایجاد نماید تا ویژگی‌های ارگونومیک این API و عملکرد آن را ارتقاء ببخشد. همچنین تیم سوئیفت در تلاش است تا نوعی هماهنگی و سازگاری کلی میان همۀ نسخه‌های موجود ایجاد نماید زیرا یکی از مهم‌ترین جنبه‌های ثبات ABI، همین مسئلۀ پشتیبانی از نسخه‌های مختلف است که تاکنون مورد غفلت قرار گرفته است.

هرچند تیم سوئیفت هنوز در حال برنامه‌ریزی و ترسیم نقشۀ‌راه است اما کاملاً بدیهی است که هنوز هم کلید حل بسیاری از معماها در دست آبجکتیوسی بوده و مشخص نیست که تیم سوئیفت چه زمانی قرار است iOS، macOS، tvOS و watchOS را از آبجکتیوسی جدا کند و در نهایت تنها گذر زمان است که می‌تواند بگوید چه اتفاقاتی رخ خواهد داد.

منبع