حامیم: SWIFT، زبان برنامه نویسی تازه اپل
یکی از بزرگترین اتفاقهای چندسالهی کنفرانس توسعهدهندگان اپل در سال 2014 را میتوان معرفی زبان برنامه نویسی تازه SWIFT دانست. زبانی که در کنار امکانات تازه سیستمعامل iOS، دست برنامهنویسان و توسعهدهندگان بزرگ و کوچک را در خلق اپلیکیشنهایی متفاوت و کاربردیتر باز میگذارد. با ما برای آشنایی بیشتر با این زبان برنامه نویسی و امکاناتی که برای توسعهدهندگان همراه میآورد، همراه شوید.
همانطور که از نام کنفرانس WWDC و کلمه D آن میتوان پی برد، این کنفرانس تنها برای توسعهدهندگان و معرفی امکانات تازه برای کدنویسها و آنهایی که به تلفنهای هوشمند ارزش حقیقی میبخشند، برگزار میگردد؛ نه کاربران تشنه سخت افزار! بنابراین تعجبی ندارد که بسیاری از کاربران دنیای وب، بخاطر عدم معرفی آیفون جدید یا iWatch، کنفرانس توسعهدهندگان امسال اپل به مذاقشان چندان خوش نیامده باشد. هر چند که این مراسم یکی از بهترین کنفرانسهای اپل برای توسعهدهندگان در چند سال اخیر به شمار میرود.
مهمترین و جذاب ترین بخش کنفرانس امسال WWDC را سوای امکانات iOS 8، در زبان برنامه نویسی تازه اپل میتوان جستحو نمود. زبان برنامه نویسی که نوشتن و ساخت اپلیکیشنها را آسانتر میسازد و به برنامه نویسان قدرت تولید اپلیکیشنهایی با کاربرد ییشتر ضمن راحتی و سرعت بالاتر را فراهم میآورد.
قبل از آنکه بیشتر با زبان برنامه نویسی SWIFT آشنا شویم، بهتر است تا نگاهی به انواع زبانهای برنامهنویسی داشته باشیم.
انواع زبانهای برنامه نویسی:
زبانهای برنامه نویسی چه برای کامپیوترها باشند چه برای اپلیکیشنهای تلفنهای هوشمند، دو نوع اصلی دارند: زبانهای سطح پایین، زبانهای سطح بالا!
زبانهای برنامهنویسی سطح پایین:
اگر با برنامهنویسی آشنا باشید، راههای زیادی برای اینکه دیوایستان را وادار کنید تا کارهای مورد علاقهتان را انجام دهد، وجود دارد. اما وادارکردن دیوایسها به انجام دستورات شما و در واقع بهتر است بگوییم فهماندن دستوراتتان به دیوایسها نیازمند کدنویسی است. این کد نویسی میتواند به کمک زبانهای سطح پایین یا سطح بالا صورت بگیرد. میتواند به کمک زبانهایی که در آن توسط بایتها و اسمبلرها صحبت میشود، باشد و شما را وادار سازد تا خط به خط را به نوشته و به زبان کامپیوتر ترجمه کنید! مثلاً در کدام لحظه کدام پیکسل خاموش شود، کدام شماره در حافظه تغییر پیدا کند و …! البته برنامهنویسان قدرتمند، توانایی اجرا و خلق اپلیکیشنهای قدرتمندی را با کمک همین خط به خطهای پیچیده دارند؛ اما همانطور که از توضیحات گذشتهمان بر میآید نوشتن یک برنامه به این شیوهی کاری سخت و طاقت فرساست و البته زمان و انرژی زیادی را از برنامهنویسها تلف میکند.
اینجاست که زبانهای برنامهنویسی سطح بالا به کمک توسعهدهندگان میآیند…
زبانهای برنامه نویسی سطحبالا
در زبانهای برنامهنویسی سطح بالا دیگر خبری از کدنویسی خط به خط نیست. در عوض اینها، شما دستورات از قبل تعیین شده را به زبان برنامهنویسی مورد نظرمیدهید و دیگر ناچار نیستید تا خط به خط این دستورات را برای کامپیوتر ترجمه کنید.
در واقع زبانهای برنامهنویسی سطح بالا همانند زبانهای واقعی، قواعد و اصطلاحات مخصوص خود را دارند! در آنها جزئیات و بنیادهای ثابت و از پیش تعیین شدهای طراحی شده که استفاده و یادگیری آنها را قابل فهم و سادهتر میسازد! این زبانها برای شما همانند یک رابط بین زبان صفر و یکی کامپیوتر و دستورات برنامهنویسی هستند و هر چه شما در زبان برنامهنویسی خود مینویسید، آنها به زبان صفر و یکی ماشین ترجمه میکنند. از جمله معروفترین این زبانها میتوان به زبان C اشاره نمود.
حالا میخواهیم تفاوت بین زبانهای برنامهنویسی سطح بالا و سطح پایین را در یک مثال روزمره بهتر برایتان توجیه و تفسیر کنیم. تصور کنید که از فردی میخواهید تا برایتان کار سادهای همچون خرید یک نوشابه از مغازه را انجام دهد. در زبان برنامهنویسی سطح بالا میتوانید بگویید: «برو و از مغازه، برای من یک عدد نوشابه بخر.» اما در زبان سطح پایین همین دستور راباید بدین شکل بگویید:« دو تا پاهایت را بر روی زمین بگذار، از دستهایت برای بلندشدن از زمین کمک بگیر؛ پای راست را انتخاب کن، اندکی آن را جلوتر از پای چپ قرار بده و …» بدین ترتیب برای اجرای یک دستور ساده ناچار هستید تا دهها دستور دیگر را به زبان کامپیوتر ترجمه کنید تا به هدف نهایی خود دست پیدا نمایید.
زبان برنامهنویسی C، یکی از همین زبانهای برنامهنویسی سطح بالاست. Objective C نیز که یکی دیگر از زبانها بر پایه C محسوب میگردد، تا به امروز به عنوان انتخاب اصلی اپل در زبان اصلی برنامهنویسی برای اپلیکیشنهای مخصوص محصولات این شرکت محسوب میشد. حالا جالب اینجاست که زبان برنامهنویسی C بیشتر از 40 سال و Objective C بیشتر از 30 سال عمر دارند. به همین دلیل است که به نظر میآید دیگر زمان ظهور یک زبان نو فرارسیده باشد.
حالا در کنار این زبانهای برنامه نویسی، زیر مجموعهای به نام «Scripting» وجود دارد که وظیفهاش را هر چند توضیح آن چندان ساده نیست، ولی در ادامه با صرف نظر از توضیحات پیچیده برایتان شرح میدهیم.
زمانی که شما یک کد جدید برای اپلیکیشن تازهتان مینویسید، اپلیکیشن شما پیش از اجرا نیاز به یک کامپایلر دارد تا کدهای شما را به زبان ماشین تبدیل و اجرا کند. در واقع کامپایلر تمامی دستوارات ساده مثل خریدن، گرفتن و … را که در مثال خرید نوشابه برایتان زدیم را به زبان قابل فهم برای کامپیوتر، یعنی همان صفر و یکها تبدیل میکند. بدون این مرحله، سیستم قادر به خواندن کدهای نامفهوم و اجرای دستوراتتان نیست. در کمال تأسف، فرآیند کامپایلکردن کدها در برنامهنویسی اغلب آهسته بوده و وقت و انرژی برنامهنویس را هدر میدهد. همچنین امکان دیدن عملکرد اپلیکیشنها تا قبل از ترجمه آنها توسط کامپایلر وجود ندارد.
به دلایلی که بدانها اشاره شد، حذف فرآیند کامپایل میتواند نقش بسیار بالای در افزایش سرعت تولید اپلیکیشنها داشته باشد. حالا زبانهای برنامه نویسی Scripting میتوانند خط به خط فرمانهای شما را همزمان اجرا کنند. بدین ترتیب شما میتوانید نتیجه کارهایتان را همزمان مشاهده نمایید و بدین ترتیب سرعت تولید اپلیکیشنها نیز به طور قابل توجهی افزایش پیدا میکند. اما این تنها روی خوش قضیه است. در طرف بد قضیه زبانهای اسکریپتینگ قابلیتهای محدودی دارند و معمولاً برای کارهای ساده مورد استفاده قرار میگیرند. بنابراین نمیتوان از آنها در بسیاری از پروژهها استفاده نمود.
نمونهی بارز این نوع زبانها، Python است که برنامهنویسهای موبایل با آن آشنایی کافی دارند و از قضا اپل در کنفرانس امسالش، با زبان برنامه نویسی خود مقایسه نموده است.
زبان برنامه نویسی SWIFT:
آیا SWIFT مجموعهای کامل از مهمترین و بهترین نیازهای یک زبان برنامهنویسی است و جنبههای مثبتی را که در بالا بدان اشاره کردیم را در بر میگیرد؟ پاسخ این سؤال هنوز قطعی نیست؛ ولی به زودی با نقدهای برنامهنویسهایی که با آن کار میکنند، به پاسخ آن خواهیم رسید.
زبانهای اسکریپتینگ، همچون Python طراحی شدهاند تا با آنها برنامه نویسی آسانتر باشد و همچنین تست و اجرای برنامهها نیز سادهتر صورت بپذیرد؛ اما این زبانها ایدهآل نیستند و نمیتوان از آنها در اپلیکیشنهای بزرگ یا مثلاً بازی که از تمام قدرت تلفنهوشمند شما استفاده میکند، بهرهمند شد. در طرف دیگر زبانهای برنامهنویسی سنتی همچون C Objective دست شما را برای استفاده از تمامی توان دستگاه بازتر میگذارند و شما بهتر میتوانید اپلیکیشنهای خود را مدیریت نمایید؛ ولی مشکلات آنها به مواردی همچون یادگیری سخت و مراحل طاقتفرسای کامپایل و تست اپلیکیشن باز میگردد.
اما در این بین، SWIFT قول میدهد که تمام خوبیهای لازم را داشته باشد و در آن خبری از نقطه بد نباشد! این وعده اپل به برنامهنویسهاست وشواهد اثبات آن را میتوان در نتایج بنچمارکهایی که نشان از سرعت بیشتر این زبان برنامهنویسی نسبت به C Objective و Phyton داشت، جستجو کرد.
ولی وجه تمایز اصلی SWIFT در قابلیتی با نام playgrounds نهفته است. قابلتی که برنامه نویسها در محیط کاربری Xcode اجازه میدهد تا تیجه و حاصل کدهایشان را به صورت ریلتایم یا همزمان مشاهده کنند، درست مانند یک زبان برنامه نویسی اسکریپت!
برای مثال، اگر بخواهید یک بازی بنویسید که در آن یک بالون در یک آسمان آبی به پرواز در بیاید. برای این کار در زبان برنامه نویسی SWIFT تنها باید یک تابع ریاضی ساده بنویسید که در آن پترن مورد نظرتان جهت حرکت بالون مشخص شده باشد. همچنین میتوانید نتیجه کارهایتان را همان لحظه و بدون نیاز به کامپایلکردن کدها، به صورت زنده مشاهده کنید و اگر جایی نیاز به نغییر یا اصلاح داشت، همان لحظه دست به تغییرات مورد نظرتان بزنید.
این در حالی است که در زبانهای سنتی، ناچارید تا ابتدا کدها را بنویسید،سپس به کامپایلر جهت ترجمه کدها به زبان ماشین مراجعه کنید و بعد از آن عملکرد اپلیکیشن را مشاهده کنید. فرآیندی که بسته به نوع اپلیکیشن میتواند وقت زیادی را از شما برای هر بار تست بگیرد.
سرعتبخشیدن به فرآیند برنامهنویسی:
این موضوع مزیتهای بسیاری را برای برنامهنویسی با سوئیفت به ارمغان میآورد. از جمله این مزیتها میتوان به امکان تست و اجرای اپلیکیشنها به صورت فوری توسط برنامهنویس اشاره نمود که در نتیجه آن، ساخت و تست اپلیکیشنهای یپیچیده دیگر طاقتفرسا نخواهد بود و سریعتر و راحتتر صورت میپذیرد.
به علاوه، سوئیفت زبان برنامهنویسی سادهای است! درست مثل زبان برنامهنویسی Python، شما برای اجرای بسیاری از فرامین نیازی نیست که دهها خط کد بنویسید. بدینترتیب تولید اپلیکیشنها باز هم سرعت بیشتری به خود میگیرند.
در نهایت، اگر سوئیفت همانطور که اپل میگوید سریع و آسان باشد، امکان افزایش جلوههای گرافیکی بیشتر و بهتر به بازیهای موبایل نیز افزایش پیدا میکند. همچنین این عوامل سبب میشود تا امکان تعامل و پاسخگویی بشتر برنامهها نیز بدون نیاز به ارتقای سختافزارهای قدیمی، افزایش پیدا کند.
جنبههای منفی:
اما تمامی صحبتهای بالا تنها یک روی مثبت قضیه محسوب میشوند. روی منفی این موضوع را میتوان در نیاز به یادگیری یک زبان کاملاً جدید برای برنامهنویسها دانست. هر چند توسعهدهندگان، بدون شک علاقمند به یادگیری و نمایش تبحر خود در زبانهای جدید دارند؛ اما آن موقع تنها یک زبان برنامهنویسی برای آیفون وجود خواهد داشت که برنامهنویسی که در این حوزه قصد فعالیت داشته باشد ناچار است تا آن را فرا بگیرد. البته شما هنوز هم میتوانید با زبان C Objective برنامههای خود را بسازید؛ ولی در آیندهای نزدیک احتمال اینکه دیگر کسی حتی به برنامههای شما نگاهی نیندازد، کم نیست.
نگرانی دیگری که ناشی از آسانسازی توسعه اپلیکیشنها توسط این زبان برنامهنویسی وجود دارد، از آنجا ناشی میشود که سادهشدن ساخت اپلیکیشنها با کمک این زبان برنامهنویسی، سبب میشود تا توسعهدهندگانی که دانش کافی ندارند، پا به عرصه بگذارند و با توسعهی اپلیکیشنهای نه چندان کامل، این حوزه را تحتتأثیر منفی قرار دهند.
نتیجهگیری:
اپلیکیشنها، یکی از بنیادیترین بخشهای تلفنهوشمند و تبلتها را شامل میشوند. در واقع تلفنهای هوشمند بدون وجود اپلیکیشنهایشان هیچگاه محبوبیت فعلی که از آن بهره میبرند را به دست نمیآوردند. حال، اگر سوئیفت، همان چیزهایی را داشته باشد که اپل میگوید، پس اپلیکیشنهای بیشتر، بهتر و با سرعت بالاتر در راه هستند.
در مجموع، اپل همیشه در کنفرانسهایش با ارائه بنچمارکها و مقایسههای بسیار، سعی در نمایش بهترین و مثبتترین حالت از محصولات خود را دارد. اما این بار با یک تغییری به بزرگی زبان برنامهنویسی اپلیکیشنها روبرو هستیم. تغییری که جهشی بزرگ محسوب میشود و میتواند اثرات سوء یا مثبت بسیاری به همراه داشته باشد.
در حال حاضر، هنوز برای قضاوت در مورد اثر این تغییر، اندکی زودهنگام است و باید منتظر نظر برنامهنویسان و توسعهدهندگان در آزمایش آن باشیم.
نظر شما در این باره چیست؟ دیدگاههای خود را در رابطه با این موضوع با ما در بخش نظرات در میان بگذارید.
«حامیم ارتباط، مجری تخصصی پیاده سازی پسیو شبکه های کامپیوتری، برق اضطرا، دوربین مداربسته و چاه ارت»