سوئیفت، زبان برنامه نویسی با کاربردهای عمومی است که به شکل اختصاصی، برای ساخت محصولات Apple طراحی شده است. همه اینها درحالی است که اولویت اول را برای سرعت، پایداری و امنیت برنامهها قائل شده است. همین زبان برنامه نویسی سوئیفت، در پشت موفقیت تعداد زیادی از اپلیکیشنهای تلفنهای آیفون قرار دارد. یکی دیگر از امتیازات سوئیفت، فرایند یادگیری ساده آن است. این زبان بر روی پلتفرمهایی مانند iOS و OS X و tvOS و watchOS کار میکند. سوئیفت دارای بهترین بخشهای زبانهای C و Objective-C است. این زبان برنامه نویسی در کنار استفاده از تمام مزایای زبان C محدودیتهایی آن را نیز حذف کرده است.
در این مطلب از مجله فرادرس با زبان برنامه نویسی Swift آشنا شدهایم. در ابتدا این زبان را تعریف کردیم. بعد از آن نکات اولیه و مسائل بنیادین مربوط به کدنویسی سوئیفت را نیز بیان کردهایم. سپس به بررسی ویژگیهای مهم این زبان و رقبای آن پرداخته و در نهایت هم مهمترین مزایا و معایب استفاده از زبان سوئیفت را به صورت خلاصه و کامل بیان کردهایم.
زبان برنامه نویسی سوئیفت چیست؟
زبان برنامه نویسی سوئیفت، زبانی چندمنظوره، شیءگرا، تابعی و با ساختار بلوکی است. سوئیفت، نتیجه جدیدترین تحقیقات بر روی زبانهای برنامه نویسی است و توسط شرکت Apple توسعه داده شده. این زبان بر روی امنیت تمرکز کرده و از جدیدترین «الگویهای طراحی» (Design Patterns) نرمافزار پیروی میکند. زبان سوئیفت به منظور طراحی و ساخت نرمافزارهای مخصوص کار بر روی سیستمعاملهای Apple مانند iOS و OS X و tvOS و watchOS طراحی شده است.
فرایند آموزش این زبان، ساده است. پیادهسازی ساده، امنیت بالا، سرعت زیاد و تاثیرگذاری از ویژگیهای مهم این زبان برنامه نویسی هستند. فرایند توسعه نرمافزار توسط سوئیفت از زمانی که شروع به پشتیبانی از سایر پلتفرمها و نرمافزارها کرده، جذابتر نیز شده است.
زبان سوئیفت با فریمورکهایی Cocoa و Cocoa Touch کار میکند. همچنین میتواند از کدهای Objective-C برای تمام محصولات اپل نیز استفاده کند. این زبان طراحی شده تا اشتباهات احتمالی در زمان کدنویسی را بهتر از Objective-C مدیریت کند. در نتیجه امنیت بیشتری نیز نسبت به زبان برنامه نویسی Objective-C دارد. علاوه بر موارد گفته شده، خوانایی این زبان برنامه نویسی نیز بالاست. سوئیفت از فریمورک کامپایلر LLVM استفاده میکند که شامل Xcode نسخه ۶ و بیشتر میشود.
پیاده سازی زبان سوئیفت
از آنجا که زبان برنامه نویسی سوئیفت برای عموم مردم به صورت اوپن سورس عرضه شده است، میتوان آن را به اینترنت نیز انتقال داد. بعضی از فریمورکهای اینترنتی مانند Kitura و Perfect و Vapor از قبل توسط شرکت IBM توسعه داده شدهاند. از طرفی خود اپل هم عهدهدار توسعه API-های سمت سروری شده است که برنامه نویسان زبان سوئیفت از مهمترین مشارکت کنندگان این پروژهاند.
شرکت نرمافزاری RemObjects Software نسخه رایگان دیگری از زبان سوئیفت را ارائه داده است که با سکوهایی مانند Cocoa و فریمورک .NET از شرکت Microsoft و جاوا و Android کار میکند. این نسخه به شکل کاملی با همه این پلتفرمها سازگار است.
علاوه بر مورد بیان شده، با کمک ترکیب LLVM و ابزارهای Macintosh Programmer’s Workshop، میتوان بخش کوچکی از زبان سوئیفت را بر روی Mac OS 9 نیز اجرا کرد.
آموزش برنامه نویسی با فرادرس
برنامه نویسی یکی از مهمترین مهارتهاییست که امروزه تقریبا در همه رشتههای علمی و زمینههای شغلی به شکل ضروری، مورد نیاز است. هر ساله، بر تعداد موقعیتهای شغلی مرتبط با برنامه نویسی یا نیازمند به برنامه نویسی به عنوان پیشنیاز افزوده میشود. به همین دلیل، برنامه نویسی در گذر زمان از تخصص انحصاری مربوط به مهندسین شرکتهای بزرگ و مخترعین کامپیوتر به دانشی عمومی تبدیل شده که در سراسر جهان، دانشگاهها و مدارس به افراد آموزش داده میشود. هنوز هم روزانه نفوذ کامپیوترها در زندگی انسان بیشتر میشود. درنتیجه زبانهای برنامه نویسی به طور مداوم استفادههای عمومی و تخصصی بیشتری پیدا میکنند.
کشور ما به عنوان یکی از کشورهای درحال توسعه، نیاز رو به افزایشی به افراد دارای مهارتهای برنامه نویسی دارد. از طرف دیگر تسلط بر این توانایی، امکان کار آزاد و فریلنسری را نیز برای افراد محیا میکند. به همین منظور، فرادرس تلاش کرده است تا بهترین آموزشها را با تنوع زیاد و در حوزههای مختلف برای همه افراد، تهیه و منتشر کند. بنابراین، فیلمهای آموزشی فرادرس با کیفیت بالا و هزینههای مقرون به صرفه، به یکی از بزرگترین مراجع آموزش برنامه نویسی در کشور تبدیل شدهاند. در پایین چند مورد از فیلمهای آموزشی مربوط به زبانها مختلف را معرفی کردهایم. در صورت تمایل با کلیک بر روی تصویر بالا به صفحه اصلی این مجموعه آموزشی رفته و با فیلمهای بیشتری هم آشنا شوید.
آموزش نکات اولیه کدنویسی با زبان برنامه نویسی سوئیفت
یکی از مهمترین ساختارهای ذخیره داده در تمام زبانهای برنامه نویسی آرایهها هستند. این ساختمان داده وظیفه تقریبا یکسانی در تمام زبانها دارد، اما در هر زبان توسط سینتکس مربوط به آن مورد استفاده قرار میگیرد. برای ساخت محصولات حرفهای در سوئیفت هم نیاز است که با این ساختار، آشنا باشیم. به این منظور میتوانید از فیلم آموزش رایگان آرایه در برنامه نویسی Swift در فرادرس استفاده کنید. برای کمک به مخاطبان مجله، لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
برعکس بسیاری از زبانهای برنامه نویسی شیءگرایانه که بر روی زبانهای رویهای قدیمیتری بنیانگذاری شدهاند – برای مثال زبانهای ++C و Objective-C با زبان C توسعه داده شدند – سوئیفت از ابتدا به عنوان زبان جدید، مدرن و شیءگرایانهای طراحی شده که فرایند برنامه نویسی را سریعتر و سادهتر میکند. این زبان به برنامه نویسان کمک میکند که کدهای واضحتری بنویسند که نسبت به بیشتر زبانها احتمال روبهرو شدن با خطای کمتری نیز دارد.
با اینکه زبان Swift بر روی زبان قدیمیتری بنا نشده اما به قول سرپرست تیم معماری آن، آقای «کریس لتنر» (Chris Lattner)، سوئيفت از زبانهای برنامه نویسی زیادی مانند Ruby و Python و #C و CLU و خیلی موارد دیگر الهام گرفته است.
در این بخش از مطلب به شکل سریع و خلاصهای موارد بنیادین زبان برنامه نویسی سوئيفت را بیان کردهایم. در فهرست زیر، تمام موارد مورد تدریس در این بخش را معرفی کردهایم.
- سینتکس پایه زبان سوئیفت
- ساختار برنامههای زبان برنامه نویسی Swift
- متغیرها و ثابتها
- «استنباط نوع» (Type Inference)
- قواعد مربوط به نامگذاری متغیرها و ثوابت
- پرینت کردن و الحاق دادههای نوع رشته در برنامه نویسی
سینتکس Swift
در اولین بخش از این قسمت نگاهی به سینتکس زبان سوئیفت خواهیم داشت. مانند بیشتر زبانهای برنامه نویسی مدرن، سوئیفت بیشتر سینتکس پایه خود را از زبان برنامه نویسی C گرفته است. اگر قبلا تجربه کار با سایر زبانهای مشتق شده از C را دارید بیشتر جنبههای سینتکس زبان سوئیفت برایتان آشنا خواهد بود.
- برنامهها از عبارتهایی ساخته شدهاند که به صورت منظم و پشت سر هم اجرا میشوند.
- در هر خط، میتوانیم بیشتر از یک عبارت را کدنویسی کنیم. به این شرط که با نقطه ویرگول ; از یکدیگر جدا شوند.
- واحدهای کاری در سوئیفت با استفاده از توابع، ماژولار شده و در انواع مختلفی سازماندهی میشوند.
- توابع تعریف شده در سوئیفت، یک یا چند پارامتر مختلف را پذیرفته و مقداری را در خروجی برمیگردانند.
- کامنتهای تکی یا چندگانه از سینتکس مورد استفاده در ++C و جاوا پیروی میکنند.
- سوئیفت دارای مفهوم متغیرهای نامگذاری شدهای است که تغییرپذیر هستند و ثابتهای نامگذاری شدهای که غیرقابل تغییر هستند.
- زبان سوئيفت مانند ++C و #C از هر دو مفهوم ساختارها و کلاسها پشتیبانی میکند.
اختلافات سینتکس سوئیفت با زبان C
به غیر از موارد بالا، نکات دیگری نیز در زبانهای الهام گرفته از C وجود دارند که شاید در زمان کار با این زبانها با آن نکات سینتکس، آشنا شدهاید. زبان سوئیفت در مورد بعضی از این نکات، شامل اختلافات و ارتقاهایی نسبت به آن زبانها میشود. مهمترین نکات مورد اختلاف را در فهرست پایین بیان کردهایم.
- استفاده از نقطهویرگول ; در انتهای عبارتها الزامی نیست. به غیر از مواردی که چند عبارت دستوری در یک خط کد نوشته شده باشند و باید بین آنها فاصله قرار داده شود.
- زبان برنامه نویسی سوئيفت برای نشان دادن محل شروع برنامه در زمان بارگذاری اپلیکیشن توسط سیستم عامل نیازی به استفاده از متد main() ندارد. برنامههای سوئیفت از اولین خط کدنویسی در فایل منبع کدها شروع میشوند. بیشتر زبانهای برنامه نویسی مفسری هم اینگونه کار خود را شروع میکنند.
- در توابع سوئیفت، نوع مقدار برگشتی بهجای سمت چپ، در سمت راست تعریف تابع نوشته میشود.
- سینتکس مربوط به تعریف پارامترهای تابع در زبان سوئيفت از زبان Objective-C الهام گرفته شده است. این مسئله با زبانهایی مانند جاوا، #C و ++C کاملا فرق دارد. در نتیجه توسعهدهندگان این زبانها ممکن است که در ابتدای کار با سوئیفت کمی سردرگم شوند.
- تفاوت بین ساختار و کلاس در زبان سوئیفت مانند تفاوتی است که در زبان #C وجود دارد. سینتکس هردو زبان در این مسئله یکسان است بهجز این مورد که اعضای ساختارها به صورت پیشفرض، عمومی هستند.
ساختار برنامه سوئیفت
در این بخش، میخواهیم که ساختار پایه برنامههای زبان سوئيفت را نمایش دهیم. به این منظور، برنامه سادهای را برای نمایش رشته Hello, World در کنسول پیادهسازی کردهایم.
بعد از اجرای کد بالا، خروجی به شکل زیر ساخته شده و در کنسول نمایش داده میشود.
Hello, World
تا اینجای کار اولین برنامه قابل اجرا را با زبان برنامه نویسی سوئیفت نوشتهایم.
در ادامه مطلب، آموزش زبان برنامه نویسی سوئیفت را با تجزیه و تحلیل برنامه نمایش رشته Hello, World پی میگیریم.
متغیرها در زبان برنامه نویسی سوئیفت
میتوان با قطعیت گفت که بیشتر زبانهای برنامه نویسی از طریق اختصاص نام به جایگاههای مشخص شده برای هر مقدار در حافظه، میتوانند مقادیر مختلف را در حافظه ذخیره کنند. این نامها توسط برنامه نویسان انتخاب میشوند. متغیرها به برنامه نویسان برای اجرای فعالیتهای مختلف بر روی دادهها کمک میکنند. بنابراین مقدار درون متغیرها در طول زمان اجرای برنامه، قابل تغییر هستند.
برای تعریف متغیر در سوئیفت از سینتکس نمایش داده شده در زیر استفاده میکنیم.
برای مثال، بر اساس سینتکس بالا، متغیر pi را باید به شکل زیر تعریف کرد.
در خط کد بالا، به کامپایلر دستور میدهیم که متغیری به نام pi ایجاد کن. این متغیر دادههایی با نوع Double را در خود ذخیره میکند. سپس مقدار اولیه 3.14159 را به آن اختصاص بده.
ثابت ها در سوئیفت
شاید بخواهیم، مقدار نامگذاری شدهای را طوری ذخیره کنیم که در طول زمان اجرای برنامه غیرقابل تغییر شود. در این بخش میبینیم که چگونه میتوان بعد از تعریف و مقداردهی اولیه به متغیرها مطمئن شد که دیگر به صورت تصادفی توسط بخش دیگری از کدها تغییر نخواهند کرد. راه حل، تعریف «ثابت» (Constant) است.
در برنامه Hello, World که بالا نوشتیم، متغیر message را بهجای var با استفاده از کلمه کلیدی let تعریف کردیم. بنابراین message از نوع متغیرهای ثابت است.
از آنجا که message به عنوان ثابت تعریف شده است، اگر خط کدی را به انتهای برنامه اضافه کنیم که بخواهد مقدار ثابت message را تغییر دهد، با پیغام «خطای زمان کامپایل» (Compile-Time Error) روبهرو میشویم. زیرا تغییر دادن ثابت تعریف شده با let مجاز نیست. متن این پیغام خطای زمان کامپایل را در پایین نمایش دادهایم.
[Out:]error: cannot assign to value: ‘message’ is a ‘let’ constant
به طور کلی، هر زمانی که متغیر نامگذاری شدهای را تعریف کردیم، که در طول زمان اجرای برنامه هرگز تغییر نمیکند، باید از کلمه کلیدی let برای ساخت ثابت استفاده کنیم. وقتی که متغیری ساخته شده و در طول زمان اجرای برنامه تغییر نکرده باشد، کامپایلر زبان برنامه نویسی سوئیفت این توصیه را – استفاده از کلمه کلیدی let بهجای var - توسط نشان دادن «اخطار زمان کامپایل» (Compile-Time Warning) اعلام میکند.
تنها تفاوت بین متغیرها و ثوابت در زبان سوئیفت این است که بعد از تعریف و مقداردهی اولیه به ثابتها دیگر امکان تغییر دادن مقدار آنها وجود ندارد. به غیر از این قانون، متغیرها و ثوابت به روش یکسانی در زبان سوئیفت به کار برده میشوند.
استنباط نوع
در مثال مربوط به Hello, World، ثابتی به نام message را بدون مشخص کردن نوع داده مربوط به آن ایجاد کردیم. در این کد، یکی از ویژگیهای کامپایلر سوئیفت به نام «استنباط نوع» (Type Inference) را به کار گرفتهایم.
وقتی که همزمان با ایجاد متغیر یا ثابتی، مقدار خاصی را نیز به آن اختصاص میدهیم، کامپایلر زبان برنامه نویسی سوئیفت، داده موجود در سمت راست علامت تخصیص – همان مساوی – را تحلیل میکند. نوع داده مربوط به آن مقدار را تشخیص داده و به متغیر یا ثابت تعریف شده در سمت چپ اختصاص میدهد. برای مثال، در تعریف متغیر زیر، کامپایلر متغیری به نام name را با نوع String بدون نیاز به اشاره مستقیم به نوع، تعریف میکند.
سوئیفت به عنوان زبان Type-Safe، هر وقتی که نوع خاصی توسط کامپایلر به متغیر یا ثابتی اختصاص داده شد، آن نوع را تا زمان به پایان رسیدن طول عمر متغیر یا ثابت مورد نظر، حفظ میکند. تلاش برای تخصیص دادن مقدار غیررشتهای به متغیر name تعریف شده در بالا باعث اعلام خطای زمان کامپایل میشود.
بعد از اجرای کد بالا، خروجی زیر در کنسول سوئیفت نمایش داده میشود.
[Out:]error: “cannot assign value of type ‘Double’ to type ‘String’
با اینکه سوئیفت، زبان برنامه نویسی Type-Safe است. نوع مقدار متغیر به صورت واضح مشخص شده و در طول زمان اجرا تغییر نمیکند، با استفاده از نوع داده Any در سوئیفت، میتوانیم کدهای برنامه را طوری بنویسیم که مانند زبانهای با نوعدهی پویا عمل کند.
قواعد نام گذاری متغیرها در سوئیفت
مانند بیشتر زبانهای برنامه نویسی الهام گرفته شده از C، متغیرها و ثوابت در زبان سوئیفت دارای قواعد نامگذاری یکسانی هستند.
- هیچ نامی نباید با ارقام شروع شود.
- بعد از اولین کاراکتر، مجاز به استفاده از ارقام هستیم.
- میتوان نامها را با استفاده از خط زیر ـ شروع کرد. در میانه نامها هم استفاده از این کاراکتر بلامانع است.
- تمام نامها حساس به بزرگی و کوچکی حروف الفبا هستند.
- کلمات کلیدی رزرو شده در زبان سوئیفت را میتوان به عنوان نام متغیر استفاده کرد، به این شرط که آنها را توسط کاراکترهای نقلقول Backticks محصور کنیم.
در زمان انتخاب نام برای متغیرها یا ثابتها در زبان سوئیفت، قاعدهای که به طور کلی مورد قبول واقع شده، استفاده از تکنیک «camelCase» است. البته کاراکتر اول نام باید با حرف انگلیسی کوچک نوشته شود. با پیروی کردن از قواعد کلی پذیرفته شده نامگذاری، دیگران نیز میتوانند کدها را به شکل راحتتری خوانده و درک کنند.
در زبان سوئیفت برعکس سایر زبانهای برنامه نویسی برای نامگذاری متغیرها و ثوابت محدود به استفاده از کاراکترهای الفبای انگلیسی نیستیم. بنابراین برای نامگذاری متغیرها میتوانیم از سایر کاراکترهای تعریف شده در Unicode نیز استفاده کنیم.
Unicode، کدبندی کاراکترها، نمایش و پردازش متن به اکثر زبانهای دنیا را شامل میشود. یونیکد بیش از ۶۵۵۳۵ کاراکتر – ۱۶ بیت – دارد. انکودینگها میتوانند کاراکترهای بیشتری را توصیف کنند؛ اما ۶۵۵۳۵ بیت نخست، اغلب زبانهای موجود را پوشش میدهند. برای آشنا شدن با یونیکد و قوانینش به طور کاملتر، میتوانید مطلب یونیکد (Unicode) چیست؟ به زبان ساده را از مجله فرادرس مطالعه کنید.
توجه: فقط به این دلیل که میتوانیم از تمام کاراکترهای Unicode و کلمات کلیدی رزرو شده در زبان سوئیفت با استفاده از علامت نقلقول به عنوان نام برای متغیرها و ثابتها استفاده کنیم، به این معنا نیست که باید این کار را انجام بدهیم. همیشه سایر توسعهدهندگانی را در نظر بگیرید که احتمالا در آینده میخواهند کدهای برنامه را بخوانند و دست به اعمال تغییراتی در آنها بزنند. همیشه اولویت نامگذاری متغیرها در این است که خوانایی، درکپذیری و قابلیت نگهداری کدها افزایش پیدا کنند.
پرینت کردن و الحاق مقادیر با نوع استرینگ
در زبان سوئیفت، میتوانیم با استفاده از تابع print() مقدار متغیر یا ثابتی را در کنسول چاپ کنیم. در پایین مثالی را درباره روش ساخت ثابتی به نام name و متغیری به نام address پیادهسازی کردهایم.
بعد از اجرای کد بالا، خروجی زیر در کنسول نمایش داده میشود.
[Out:]John Does lives at 201 Main Street
هر دو name و address متنی را از جنس استرینگ در برنامه نویسی ذخیره کردهاند. با محصور کردن نام متغیر یا ثابت در یک جفت پرانتز باز و بسته و افزودن کاراکتر بکاسلش به عنوان پیشوند به آنها میتوانیم مقادیر ذخیره شده درون آنها را در عبارت مربوط به تابع print() چاپ کنیم. به این کار «الحاق رشتهها» (String Interpolation) گفته میشود.
۵ ویژگی برتر زبان برنامه نویسی سوئیفت چیست؟
سوئیفت به یکی از برترین ابزارهایی تبدیل شده است که توسعهدهندگان نرمافزار به کار میبرند. براساس دادههای رتبه بندی محبوبیت زبانهای برنامه نویسی در GitHub، زبان سوئیفت به عنوان نهمین زبان برنامه نویسی پرطرفدار در سال ۲۰۲۴ شناخته شده است. این زبان ۲٫۷۶٪ بازار نرمافزار را در اختیار خود گرفته است. اصلیترین مشتری نرمافزارهای ساخته شده توسط زبان سوئیفت محصولات شرکت اپل هستند. برای آموزش کار با زبان سوئیفت با هدف ساخت اپلیکیشن اپل واچ میتوانید از آموزش برنامه نویسی اپل واچ Apple Watch با زبان SWIFT در فرادرس استفاده کنید. لینک مربوط به این آموزش را در پایین نیز قرار دادهایم.
در این بخش از مطلب به بررسی چند مورد از ویژگیهای مشخص در طراحی سوئیفت پرداختهایم که باعث شدهاند، این زبان به یکی از جذابترین زبانهای برنامه نویسی برای آموزش تبدیل شود.
خوانایی
زبان برنامه نویسی سوئیفت با زبان C نوشته نشده است. بنابراین میتواند نمادهای @ را از مقابل تمام نوعهای داده و کلمات کلیدی مرتبط با اشیا در Objective-C حذف کند. این مسئله به سوئیفت کمک میکند که همه کلمات کلیدی را یکشکل بنویسد.
سوئیفت از قواعد سنتی مربوط به زبانهای قبل از خود دوری میکند. در نتیجه برای محدود کردن خطها نیازی به استفاده از کاراکترهای ویرگول یا نقطهویرگول ندارید. یا حتی دیگر برای محصور کردن عبارتهای شرطی درون ساختارهای If/Else نیز مجبور نیستید که از پرانتز استفاده کنید. یکی دیگر از پیشرفتهای چشمگیر در زبان سوئیفت نسبت به زبانهای قدیمی این است که فراخوانی متدها دیگر به شکل تودرتو اتفاق نمیافتد. بنابراین برنامه نویسان مجبور به استفاده از پرانتزهای سردرگم کننده نیستند.
در زمان فراخوانی متدها و توابع در زبان سوئیفت، دادههای ورودی به تابع، به شکل فهرستی از پارامترها هستند که توسط ویرگول از هم جدا شدهاند. مجموعه این فهرست نیز با استفاده از پرانتزهای باز و بسته محصور میشوند. این مسئله یکی از استانداردهای صنعت برنامه نویسی است. در نتیجه زبان برنامه نویسی سوئیفت شفافتر شده و فرایند درک سادهتری نیز دارد.
علاوه بر موارد بالا، زبان سوئیفت طوری طراحی شده که تا حد امکان به زبان انگلیسی نزدیکتر باشد. بنابراین خوانایی این زبان برنامه نویسی به میزان زیادی افزایش پیدا کرد. با استفاده از این خوانایی بهتر، مراجعه به سوئیفت برای افرادی که قبلا با زبانهای برنامه نویسی مانند جاوا اسکریپت، جاوا، پایتون، #C و ++C کار کردهاند به میزان بیشتری ساده شده است.
امنیت
در فهرست زیر نوشتهایم که چگونه زبان سوئیفت از دست همه کدهای مختلف ناایمن خلاص شده است.
- همه متغیرها همیشه قبل از استفاده با مقدار پیشفرض مشخص شدهای تنظیم شدهاند.
- متغیرهای Integer و آرایهها از قبل برای نداشتن سرریز بررسی شدهاند. حافظه به صورت پویا مدیریت میشود. همچنین وجود دسترسیهای انحصاری به حافظه از بروز بسیاری از اشتباهات برنامه نویسی جلوگیری میکند.
- سینتکس زبان طوری طراحی شده که کدنویسی خواستههای برنامه نویس به سادهترین شکل ممکن انجام شود. برای مثال، هر متغیر var یا ثابتی const را میتوان توسط کلمه کلیدی ساده سه کاراکتری let تعریف کرد.
- زبان سوئیفت به صورت مکرر از انواع مقادیر استفاده میکند، بهخصوص برای نوعهای پراستفادهای مانند آرایهها و دیکشنریها. این به آن معنا است که در صورت کپی کردن یکی از این نوعها، عنصر کپی شده مستقل از عنصر اصلی است. بنابراین تغییرات روی داده بر روی شیء کپی شده تاثیری در شیء اصلی ندارد.
به صورت پیشفرض، اشیاء تعریف شده در سوئیفت نمیتوانند خالی nil باشند. این مسئله یکی دیگر از معیارهای امنیتی سوئیفت است. در واقع کامپایلر زبان سوئیفت، در زمان تلاش به ساخت یا استفاده از شیئی با مقدار تهی خطای زمان کامپایل را اعلام میکند. در نتیجه کدهای نوشته شده بسیار تمیزتر و با امنیت بیشتری خواهند بود. همچنین از کراشکردن اپلیکیشنهای نوشته شده جلوگیری میشود.
البته بعضی وقتها وجود متغیرهایی با مقدار nil یا تهی، بدون اشکال و صحیح است. سوئیفت برای استفاده در چنین موقعیتهایی دارای ویژگی جالبی به نام Optional است. هر Optional میتواند شامل مقدار تهی یا nil باشد. اما سوئیفت برنامه نویسان را مجبور میکند که این متغیرها را با استفاده از کاراکتر ? در سینتکس به شکل امنی مدیریت کنند. استفاده از این نماد به کامپایلر میگوید که برنامه نویس از روش کار این متغیر مطلع بوده و شخصا آن را به شکل امنی مدیریت خواهد کرد.
سرعت
شرکت اپل میگوید که الگوریتمهای جستوجوی زبان برنامه نویسی سوئیفت میتوانند ۲٫۶ بار سریعتر از الگوریتمهای جستوجوی نوشته شده با زبان Objective-C عمل کنند. سوئیفت در مقایسه با پایتون ۲٫۷ نیز به اندازه ۸٫۴ با سریعتر عمل میکند. فریمورک کامپایلر سوئیفت به نام LLVM شناخته میشود. این فریمورک مسئول تبدیل زبان اسمبلی به کدهای قابل فهم توسط ماشین و بهینهسازی این کدها است.
یعنی اینکه در هنگام کار با زبان سوئیفت نسبت به زمان کار با زبان Objective-C از کدهای کمتری استفاده میکنیم. خود این مسئله هم باعث افزایش سرعت فرایند توسعه است. برای مثال، استفاده از زبان سوئيفت برای هر دو بخش بکاند و فرانتاند در اپلیکیشنها، فرایند اشتراکگذاری و استفاده دوباره از بخش زیادی از کدها را سادهتر میکند. بنابراین سرعت فرایند تولید اپلیکیشن بیشتر شده و میزان کاری که توسعهدهندگان برای کامل کردن ساختمان اپلیکیشن نیاز دارند به میزان زیادی کاهش پیدا کرده است.
ساده برای مبتدی ها
با تسلط به سهم ۲۸٫۵ درصدی از بازار موبایل، iOS به نیروی غالبی در این تجارت تبدیل شده است. این مسئله باعث شده که زبان سوئیفت – مورد استفاده در دستگاههای iOS – به یکی از مشهورترین زبانهای برنامه نویسی تبدیل شود. علاوه بر این، طراحی کاربرپسند زبان سوئیفت باعث شده که به عنوان گزینهای عالی برای کاربران مبتدی شناخته شود. سوئیفت به همه افراد – از دانشآموزان گرفته تا افراد متقاضی تغییر شغل – برای شروع فرایند آموزش برنامه نویسی کمک میکند.
همچنین شرکت اپل، مجموعه دروسی را به شکل رایگان تهیه کرده است که اساتید برنامه نویسی میتوانند از آنها برای تدریس زبان سوئیفت در کلاس درس یا به صورت شخصی استفاده کنند. یکی از بهترین راهها برای شروع به تمرین و آموزش کار با زبان سوئیفت این است که نرمافزار Swift Playgrounds را دانلود کنیم. این نرمافزار مخصوص iPad اپل است و فرایند آموزش کدنویسی در زبان سوئیفت را به شکل تعاملی و جذاب برای برنامه نویسان مبتدی آموزش میدهد.—-
مدیریت حافظه
سوئیفت برای مدیریت حافظه از روشی به نام «شمارش خودکار مرجع» (Automatic Reference Counting | ARC) استفاده میکند. این متد به اضافه کردن سیستم «زباله روب» (Garbage Collector) به iOS کمک کرده است. سیستم عامل iOS قبلا از این ابزار استفاده نمیکرد. در زبانهای برنامه نویسی مانند جاوا، #C و زبان برنامه نویسی Go ابزار Garbage Collector برای رها شدن از دست نمونههای کلاسی استفاده میشوند که زمان آنها به سر آمده و دیگر به کار برده نمیشوند. این ابزارها میزان RAM مورد نیاز را کاهش میدهند. اما از طرف دیگر میتوانند زمان مورد نیاز برای اجرای فرایندها را هم به اندازه ۲۰٪ افزایش دهند.
قبل از به وجود آمدن ARC، توسعهدهندگان اپلیکیشنهای سیستم عامل iOS مجبور بودند که حافظه کامپیوتر را به صورت دستی مدیریت کنند. در زمان فرایند ساخت و اجرای برنامهها باید حواسشان به حافظه مصرفی کامپیوتر میبود و رد تعداد دفعات مراجعه به هر نمونه از شیء کلاسی را به صورت منظم دنبال میکردند. اما امروز در زبان سوئیفت، سیستم «شمارش خودکار مرجع» یا همان ARC میتواند به صورت خودکار نمونههای کلاسی بیاستفاده را شناسایی کرده و آنها را از حافظه پاک کند. این سیستم به برنامه نویسان کمک میکند که بدون آسیب زدن به حافظه و CPU سرعت اجرای برنامهها را بالاتر ببرند.
آموزش برنامه نویسی با فیلم های پروژه محور
بهترین راه برای درک و آموزش انواع تکنولوژیها از قبیل زبان برنامه نویسی Swift تمرین با فیلمهای آموزشی پروژهمحور است. نکته خاص درباره این فیلمها این است که تمام فرایند اجرای پروژه را از صفر تا صد نمایش میدهند. پروژههای نزدیک به دنیای واقعی، کمک میکنند که آموزشهای مربوط به استفاده از تکنیکهای فنی، درون ذهن دانشجویان نهادینه شده و روش ارتباط تکنولوژیهای متنوع باهم را تجربه کنند. فرادرس مجموعه غنی از فیلمهای آموزشی پروژهمحور را تولید کرده و هر روز هم در پی افزایش غنای آن است. در فهرست زیر به معرفی چند مورد از فیلمهای پروژهمحور برنامه نویسی پرداختهایم.
در صورت تمایل بر روی تصویر زیر کلیک کرده و از فیلمهای آموزشی بیشتری نیز دیدن کنید.
زبان برنامه نویسی سوئیفت شبیه به چه زبانی است؟
زبان سوئیفت، جانشین به حقی برای زبانهای C و Objective-C است. سوئیفت دارای چیزهایی مانند عملگرها، سیستم کنترل جریان و نوعهای مختلف است که بلوکهای زیربنایی اصلی کدها را تشکیل میدهند. از طرف دیگر سوئیفت دارای ویژگیهایی مانند شیءگرایی است که شامل کلاسها، پروتکلها و Generic-ها میشود. در نتیجه وجود این امکانات، سوئیفت به زبان برنامه نویسی قدرتمند و سریع برای توسعه دهندگانی تبدیل شده است که با فریمورکهای Cocoa و Cocoa Touch کار میکنند.
از طرف دیگر، سوئیفت اشتراکات بیشتری با زبان برنامه نویسی روبی و پایتون نسبت به Objective-C دارد. برای مثال، در زبان برنامه نویسی سوئیفت، به منظور به پایان رساندن عبارتها نیازی به استفاده از ویرگول یا نقطه ویرگول نداریم. دقیقا مانند همین اتفاق در پایتون هم میافتد. سوئیفت زبان برنامه نویسی است که در صورت علاقه به زبانهای برنامه نویسی Ruby و پایتون، با آن هم ارتباط خوبی خواهید گرفت.
زبان برنامه نویسی Rust یکی دیگر از گزینههایی است که از لحاظ مفهومی شباهت زیادی به سوئیفت داشته و کاربردهای یکسانی هم دارند. به طور کلی سوئیفت، از جاهای زیادی ویژگیهای مختلفی را قرض گرفته است. بنابراین بیشتر مردم میتوانند فرایند یادگیری خود را به سادگی شروع کنند.
مزایا و معایب زبان سوئیفت
همه زبانهای برنامه نویسی و به طور کلی تمام تکنولوژیها دارای مزایا و معایبی هستند که با توجه به روش تولید و اهداف توسعهای باعث خاص شدن آنها میشود. زبان سوئیفت هم مانند باقی تکنولوژیهای مدرن از این قائده مستثنی نیست.
در این بخش از مطلب به بررسی مزایا و معایب زبان برنامه نویسی سوئيفت به صورت مختصر و مفید پرداختهایم.
مزایای زبان برنامه نویسی سوئیفت
در ابتدا به بررسی مهمترین مزایای استفاده از زبان سوئیفت، به عنوان یکی از جدیدترین زبانهای برنامه نویسی میپردازیم.
- از آنجا که سوئیفت دارای سینتکس بسیار ساده و روانی است و به صورت اوپن سورس عرضه شده، فرایند یادگیری بسیار سادهای هم دارد.
- زبان سوئیفت کاربری سادهای دارد و در صورت کار با آن حس آشنایی خواهید داشت. این زبان به خوبی با Objective-C کار میکند. به توسعهدهندگان کمک میکند که از هر دو زبان در پروژه یکسانی در کنار هم استفاده کنند. همچنین میتوانید از درون کدهای Objective-C، کدهای سوئیفت را فراخوانی کنید و برعکس.
- زبان سوئیفت از نوع زبانهای با نوعدهی ایستا است. به این معنا که نوع هر متغیری بهجای زمان اجرا، در زمان کامپایل بررسی میشود. این مسئله به کامپایلر کمک میکند که کدها را به صورت موثری بهینهسازی کرده و در نتیجه به ارتقای کارآمدی کدهای سوئیفت کمک میکند.
- علاوه بر این موارد، سوئیفت برای کمک به ارتقا هرچه بیشتر کارآمدی کدها از تکنیکهای بهینهسازی مدرنی مانند «شمارش خودکار مرجع» و «برنامه نویسی پروتکل محور» (Protocol-Oriented Programming) نیز استفاده میکند.
- سوئیفت توانایی انجام پروژههای تجاری در مقیاس بزرگ را نیز دارد.
معایب زبان برنامه نویسی سوئیفت
همینطور که این زبان دارای مزایای فراوانی است، معایبی نیز دارد. در این بخش از مطلب، مهمترین معایب زبان سوئيفت را در فهرست زیر به صورت خلاصه بیان کردهایم.
- این زبان برنامه نویسی هنوز جوان است و استعدادهای برجسته محدودی در آن شناسایی شدهاند: از آنجا که سوئیفت زبان جدیدی است به عنوان هدفی در حال حرکت در نظر گرفته میشود. بنابراین تعداد برنامه نویسان سوئیفت هنوز خیلی کم هستند.
- متاسفانه سوئیفت هنوز قابلیت مشارکتپذیری زیادی با ابزارهای طرف سوم و IDE-ها ندارد: ابزارها و IDE-های بسیار کمی وجود دارند که بتوانند از زبان Swift پشتیبانی کنند. این زبان متعلق به شرکت Apple بوده و اولویت استفاده از آن برای تولید محصولات مرتبط با سیستمعاملهای شرکت اپل مانند Xcode است.
- از نسخههای قدیمی سوئیفت پشتیبانی خوبی نمیشود: یکی از مهمترین معایب زبان سوئیفت این است که با نسخههای قدیمی خودش سازگاری ندارد. این مسئله به معنای آن است که اگر در حال استفاده از نسخه قدیمی سوئیفت هستید و در فکر حرکت به سمت نسخه بهروزتر افتادهاید، احتمالا برای سازگار کردن کدهایتان با نسخه جدید مجبور به بازنویسی بخشهایی از آنها خواهید شد.
- افزایش ناگهانی شیب یادگیری یکی دیگر از مشکلات این زبان است: با اینکه زبان سوئیفت فرایند آموزش نسبتا سریع و آسانی مخصوصا برای افراد تازه وارد دارد، اما تعدادی از ویژگیها و مفاهیم در آن هستند که فرایند یادگیری طولانی دارند.
جمعبندی
سیستم عامل iOS بر روی حدود ۲۸٫۵٪ از بازار جهانی موبایل مسلط شده است. هرچه قدر که iOS مشهور شود به همان اندازه استفاده از سوئیفت هم بین مردم گسترش پیدا میکند. به دلایلی که کاملا مشخص است، اپل میخواهد که مردم بیشتری مهارت کار با زبان تخصصی سیستم عامل خودش را پیدا کنند. برای رسیدن به این هدف شرکت اپل ابزارهای آموزشی متنوعی را فراهم کرده است. از طرف دیگر اوپن سورس بودن این زبان به گزینه بسیار موثری برای مردمی تبدیل شده است که به تازگی کار با آن را شروع کردهاند.
در این مطلب از مجله فرادرس، زبان برنامه نویسی سوئیفت را مورد بررسی قرار دادهایم. از تعریف کلی آن شروع کرده و مبناییترین نکات مورد نیاز در زمان برنامه نویسی را با استفاده از مثالهای کدنویسی شده به همراه سینتکس ابتدایی سوئیفت نمایش دادیم. سپس ویژگیهای برتر آن را توضیح داده و زبانهای مشابه آن را نیز معرفی کردیم. در نهایت هم مهمترین مزایا و معایب استفاده از زبان سوئیفت را به صورت فهرست وار بیان کردهایم.
source