آنچه در این صفحه می خوانید:
- معرفی زبان برنامه نویسی سوئیفت (Swift)
- تاریخچه سوئفیت (Swift)
- ویژگی های سوئفیت (Swift)
- مقایسه سوئفیت (Swift) با Objective-C
- فریمورک های سوئفیت (Swift)
- آخرین نسخه سوئفیت (Swift)
معرفی زبان برنامه نویسی سوئیفت (Swift)
Swift یک زبان برنامه نویسی چند منظوره کلی است که توسط Apple Inc. برای iOS ،iPadOS ،macOS ،watchOS ،tvOS ،Linux و ساخته شده است. برای کار با فریمورک های Apple Cocoa و Cocoa Touch و بدنه کد Objective-C، برای محصولات اپل طراحی شده است. این سیستم با فریمورک کامپایلر LLVM بصورت اوپن سورس از نسخه 6، در Xcode گنجانده شده است. اپل قصد داشت Swift را برای پشتیبانی بسیاری از مفاهیم اصلی مرتبط با Objective-C، به ویژه ارسال پویا، انتشار گسترده، برنامه نویسی گسترده و ویژگی های مشابه، اما با روشی "ایمن تر" و گرفتن راحت تر اشکالات نرم افزاری ایجاد کند. سوئیفت از مفهوم توسعه پروتکل پشتیبانی می کند، سیستم توسعه پذیری که می تواند در تایپ های مختلف، ساختار و کلاس ها اعمال شود، که اپل به عنوان یک تغییر واقعی در پارادایم های برنامه نویسی آنها را "برنامه نویسی پروتکل گرا" (شبیه به صفات) معرفی می کند.
از طریق نسخه 3.0 سینتکس Swift با پیشرفت قابل توجهی روبرو شد و باعث ثبات منبع در نسخه های بعدی شد. در سه ماهه اول سال 2018 با افزایش محبوبیت سوئیفت از Objective-C پیشی گرفت. Swift 4.0 که در سال 2017 منتشر شد، تغییراتی در برخی از کلاس ها و ساختارهای داخلی ارائه داد. کد نوشته شده با نسخه های قبلی Swift را می توان با استفاده از قابلیت انتقال به Xcode وارد کرد. Swift 5 که در مارس 2019 منتشر شد، رابط باینری پایدار را روی سیستم عامل های اپل معرفی کرد و این امکان را فراهم می کند که ران تایم Swift در سیستم عامل های اپل گنجانده شود. این قابلیت با Swift 4 سازگار است.
تاریخچه سوئفیت (Swift)
توسعه Swift در ژوئیه سال 2010 توسط کریس لاتنر با همکاری نهایی بسیاری از برنامه نویسان دیگر در اپل آغاز شد. زبان سوئیفت ایده هایی را از زبان هایObjective-C ،Rust ، Haskell، Ruby، Python، C# و خیلی موارد دیگر برای محتوای خود گرفت. در تاریخ 2 ژوئن 2014، کنفرانس برنامه جهانی توسعه دهندگان (WWDC) اپلیکیشن اولین اپلیکیشن که با Swift نوشته شده بود را در معرض انتشار عموم قرار داد. نسخه بتای آن برای توسعه دهندگان ثبت نام شده در این کنفرانس منتشر شد. اپل قصد داشت مبدل های کد منبع را در صورت نیاز برای انتشار کامل در دسترس قرار دهد. زبان برنامه نویسی Swift، کتابچه راهنمای 500 صفحه ای رایگان، در WWDC نیز منتشر شد و در فروشگاه iBooks و وب سایت رسمی موجود است.
Swift 1.1 در 22 اکتبر 2014 در کنار انتشار Xcode 6.1 منتشر شد. Swift 1.2 در 8 آوریل 2015 به همراه Xcode 6.3 منتشر شد. Swift 2.0 در WWDC 2015 تهیه شد و در تاریخ 21 سپتامبر 2015 برای انتشار برنامه ها در App Store در دسترس قرار گرفت. Swift 3.0 در تاریخ 13 سپتامبر 2016 منتشر شد. Swift 4.0 در 19 سپتامبر 2017 منتشر شد. Swift 4.1 در مارس 2018 منتشر شد. سوئیفت مقام اول را برای محبوب ترین زبان برنامه نویسی در Stack Overflow Developer Survey 2015 و مقام دوم در سال 2016 کسب کرد.
در طی کنفرانس برنامه جهانی توسعه دهندگان(WWDC 2019)، اپل SwiftUI را منتشر کرد، فریمورکی که برای طراحی ساختار UI اعلامی در تمام سیستم عامل های اپل فراهم می کند.
ویژگی های سوئفیت (Swift)
سوئیفت جایگزینی برای زبان Objective-C است که از مفاهیم تئوری زبان برنامه نویسی مدرن استفاده می کند و تلاش می کند تا یک اصطلاح ساده تر را ارائه دهد. به طور پیش فرض، Swift برخلاف Objective-C، نشانگرها و سایر دسترسی های ناایمن را در معرض نمایش قرار نمی دهد، بلکه از اشاره گرها به طور گسترده برای اشاره به نمونه های شی استفاده می کند. Swift پارامترهای نامگذاری شده واقعی را معرفی می کند و مفاهیم کلیدی Objective-C را شامل می شود، از جمله پروتکل ها، بسته ها، که اغلب جایگزین سینتکس قبلی با نسخه های جدید اجازه می دهد این مفاهیم در ساختارهای دیگر زبان ها اعمال شود.
پشتیبانی رشته
تحت محیط هایCocoa و Cocoa Touch، بسیاری از کلاس های متداول بخشی از کتابخانه بنیاد کیت بودند. این شامل کتابخانه رشته NSString (با استفاده از یونیکد)، کلاس های مجموعه NSArray و NSDociation و موارد دیگر بود. Objective-C مقادیر مختلفی از syntactic sugar را فراهم می آورد تا اجازه دهد برخی از این اشیاء در داخل زبان ایجاد شده و پس از ایجاد، اشیاء با فراخوانی شی دستکاری شوند.
کنترل دسترسی
Swift از پنج سطح کنترل دسترسی برای نمادها پشتیبانی می کند: باز، عمومی، داخلی، فایل خصوصی و خصوصی. برخلاف بسیاری از زبان های شی گرا، این کنترل های دسترسی سلسله مراتب وراثت را نادیده می گیرند: سطح خصوصی نشان می دهد که یک نماد فقط در محدوده اسکوپ قابل دسترسی است، fileprivate نشان می دهد که فقط از درون فایل قابل دسترسی است، داخلی نشان می دهد که در ماژول قابل دسترسی است، عمومی که از هر ماژول قابل دسترسی است و باز (فقط برای کلاس ها و متد های آن ها) نشان می دهد که کلاس ممکن است خارج از ماژول طبقه بندی شود.
Optionals و chaining
یک ویژگی جدید مهم در سوئیفت option types است که اجازه می دهد تا منابع یا مقادیر به روشی مشابه الگوی مشترک در C عمل کنند، جایی که یک اشاره گر ممکن است به یک مقدار مراجعه کند یا ممکن است تهی باشد. این بدان معنی است که انواع غیر اختیاری نمی توانند منجر به خطای تهی شوند. کامپایلر می تواند اطمینان حاصل کند که این امکان پذیر نیست.
انواع مقدار
در بسیاری از زبان های شی گرا، اشیاء در دو قسمت در داخل نمایش داده می شوند. جسم به صورت بلوکی از داده های ذخیره شده در پشته ذخیره می شود، در حالی که نام آن شیء توسط یک نشانگر نشان داده می شود. با کپی کردن مقدار اشاره گر، اشیاء بین متد ها منتقل می شوند و به همه داده های زمینه موجود در پشته امکان دسترسی به هر کسی با یک کپی داده می شود. در مقابل، انواع اساسی مانند عدد صحیح و مقادیر شناور به طور مستقیم نمایش داده می شوند.
برنامه نویسی پروتکل گرا
یکی از ویژگی های اصلی Objective-C پشتیبانی از آن برای دسته بندی ها، متد هایی است که می تواند برای افزایش کلاس ها در ران تایم به آنها اضافه شود. دستهبندی ها به کلاس های در حال گسترش اجازه می دهد تا توابع جدیدی را بدون نیاز به زیر کلاس یا حتی دسترسی به کد منبع اصلی اضافه کنند. این سیستم همچنین به طور گسترده ای به عنوان یک تکنیک سازمانی مورد استفاده قرار می گیرد و این امکان را می دهد تا کدهای مرتبط در پسوندهای شبیه به کتابخانه جمع شوند. Swift همچنان از این مفهوم پشتیبانی می کند، اگرچه اکنون به آنها پسوند داده می شوند و با پسوند کلمه کلیدی اعلام شده اند. برخلاف Objective-C ، Swift همچنین می تواند دسترسی، تایپ و شمایل جدید را به موارد موجود اضافه کند.
کتابخانه ها، ران تایم و توسعه
Swift از سیستم ران تایم مشابه Objective-C استفاده می کند، اما به iOS 7 یا macOS 10.9 یا بالاتر نیاز دارد. کد Swift و Objective-C را می توان در یک برنامه و با پسوند، C و ++C نیز استفاده کرد و برخلاف C و ++C کد را نمی توان مستقیم از Swift استفاده کرد. بسته بندی Objective-C یا C باید بین Swift و ++C ایجاد شود. در مورد Objective-C، سوئیفت دسترسی قابل توجهی به مدل شی دارد و می تواند برای زیر کلاس، گسترش و استفاده از کد Objective-C برای پشتیبانی از پروتکل استفاده شود. این گفتگو صحیح نیست: یک کلاس Swift را نمی توان در Objective-C طبقه بندی کرد.
مدیریت حافظه
سوئیفت برای مدیریت حافظه از شمارش خودکار رفرنس (ARC) استفاده می کند. اپل در Objective-C به مدیریت حافظه دستی احتیاج داشت ، اما ARC را معرفی کرد تا امکان تخصیص و جابجایی آسانتر حافظه را فراهم کند. یکی از مشکلات ARC امکان ایجاد چرخه رفرنس قوی است که در آن اشیاء به یکدیگر رجوع می کنند به گونه ای که می توانید با مراجعه به منابع دیگر به عنوان موردی که از آن شروع کرده اید برسید. این باعث می شود تا وقتی که آزاد نمی شوند، به حافظه نشت کنند. Swift برای جلوگیری از چرخه های رفرنس قوی، کلمات کلیدی را ضعیف و ناشناخته ارائه می دهد. به طور معمول، روابط پدر و فرزند از رفرنس قوی استفاده می کند در حالی که یک فرزند یا والدین می توانند از یک رفرنس ضعیف استفاده کنند، جایی که والدین و فرزندان می توانند با هم ارتباط نداشته باشند، یا در جایی که فرزند همیشه والد دارد، یا بدون فرزند شناخته نمی شود، اما والدین ممکن است فرزند نداشته باشند. رفرنس ضعیف باید متغیرهای اختیاری باشند، زیرا می توانند تغییر کنند و صفر شوند.
ویژگی های Swift به گونه ای طراحی شده اند که با هم کار می کنند تا زبانی را ایجاد کنند که قدرتمند و در عین حال سرگرم کننده باشد. برخی از ویژگی های اضافی Swift عبارتند از:
- بسته شدن با نشانگرهای عملکرد
- تاپل ها و مقادیر بازگشتی متعدد
- تکرار سریع و مختصر در یک محدوده یا مجموعه
- سازه هایی که روش ها، برنامه های افزودنی و پروتکل ها را پشتیبانی می کنند
- الگوهای برنامه نویسی عملکردی، به عنوان مثال، نقشه و فیلتر
- خطای قدرتمند هنگام کار با داخلی
- جریان کنترل پیشرفته با کلمات کلیدی انجام، محافظت، تعویق و تکرار
مقایسه سوئفیت (Swift) با Objective-C
نقاط قوت Swift
بنا به چند دلیل مهم، سوئیفت محبوبیت چشمگیری یافته است. اول از همه، ابزارهای بسیار خوبی برای توسعه اپل ارائه شده است که می توانند در رابطه با Swift کار کنند. یکی از موارد Playground است که فقط با Swift سازگار است. اپل Playgrounds را در سال 2016 معرفی کرد. آنها به عنوان راهی برای یادگیری نحوه کدنویسی معرفی شدند. توسعه تلفن همراه همیشه نسبت به توسعه وب موانع بیشتری دارد. شما به یک شبیه ساز احتیاج دارید، معمولاً به یک محیط توسعه یکپارچه اختصاصی (IDE) احتیاج دارید و لازم است یک پروژه کامل را فقط برای آزمایش نمونه های اولیه کوچک تنظیم کنید. در مورد اپل، شما به یک حساب کاربری توسعه دهنده نیز نیاز دارید. نکته جالب در مورد Playgrounds این است که با استفاده از آن برخی از این موارد را بدست آورده اید. شما به Xcode یا برنامه Playgrounds نیاز دارید، اما این همه چیز است و می توانید بلافاصله با کدنویسی و کامپایل کردن کد خود شروع کنید.
با این حال، یکی دیگر از مزیت های بزرگ Swift این واقعیت است که اوپن سورس است. این یک روش عالی برای درک زبان برنامه نویسی است که روزانه با آن در سطح عمیق تر کار می کنید.
Swift Package Manager به سادگی یک مدیر بسته است که با سیستم ساختار Swift یکپارچه شده است. شواهد زیادی در اینجا از این واقعیت پشتیبانی می کنند که اپل اقدامات بسیاری در جهت مطلوب تر کردن سوئیفت به عنوان زبان برنامه نویسی مورد نظر برای توسعه دهندگان iOS انجام می دهد. آنها در حال ایجاد برنامه های خوب و کمکی برای جلب توجه مردم به استفاده از این زبان هستند. این نشان می دهد که اپل با تمام توان برای Swift پا فشاری دارد.
نقاط قوت Objective-C
Objective-C زبانی بسیار پویا و با محور است. پویا است تا جایی که می توانید با استفاده از تکنیک هایی مانند Swizzling، فراخوانی متد را در دان تایم مبادله کنید. به دلیل پارادایم ارسال پیام، قادر است این نوع کارها را انجام دهد. این اجازه می دهد تا اشیاء در ران تایم، پیام هایی را به اشیاء دیگر ارسال کنند تا روش فراخوانی شده را تعیین کنند. یکی از مزایای بزرگ قابلیت سازگاری در ران تایم است. این بدان معنی است که دسترسی به API های خصوصی یا انجام کارهایی مانند دستکاری اشیاء در ران تایم امکان پذیر است. این می تواند به ویژه هنگام تست واحد مفید باشد. کتابخانه هایی مانند OCMock این کار را حتی ساده تر کرده و امکان آزمایش های بسیار دقیق را می دهند. داشتن یونیت تست خوب باعث می شود برنامه شما پایدارتر و قابل اعتماد تر شود.
وقتی صحبت از ثبات می شود، Objective-C مدت زمان طولانی است که آن را به یک زبان بسیار پایدار تبدیل کرده است. با سوئیفت، به اشکالاتی خواهید پرداخت که بسیار شگفت آور هستند و برای پایداری برنامه شما اختلال ایجاد می کنند. در مثالی که در بالا به آن پیوند داده ام، این خرابی به دلیل زبان شما برای کد نویسی برنامه شما ایجاد می شود، نه به دلیل خطایی که توسط کدی که نوشتید ایجاد شده است.نکته آخر، که برای برخی از شرکت ها از اهمیت بیشتری برخوردار است، سازگاری با کتابخانه های C و سی پلاس پلاس است.
فریمورک های سوئفیت (Swift)
Xcode
SwiftUI یک روش ابتکاری و فوق العاده ساده برای ساخت رابط های کاربر در تمام سیستم عامل های Apple با قدرت Swift است. با استفاده از فقط یک مجموعه ابزار و API، رابط های کاربری برای هر دستگاه اپل ایجاد کنید. SwintUI با سینتکس Swift که خواندن آن آسان است و نوشتن آن طبیعی است، یکپارچه با ابزارهای جدید طراحی Xcode کار می کند تا کدها و طراحی شما کاملاً همگام باشد. SwiftUI واقعاً نیتیو است، بنابراین برنامه های شما به طور مستقیم به فناوری های اثبات شده هر پلتفرم دسترسی پیدا می کنند تا زیبایی هر چیزی را که دوست دارند در اکوسیستم اپل اجرا کنند.
برنامه های شما عملکرد نیتیو باور نکردنی را به دست می آورند و از فناوری های ثابت شده، کنترل ها و تجربیات کاربر سیستم عامل های اپل استفاده می کنند تا کاملاً یکپارچه شوند. حالت زنده تغییر طراحی خود را فوراً در یک یا چند پیش نمایش دقیق مشاهده کنید. بوم طراحی را به حالت زنده تغییر دهید تا فوراً با برنامه در حال اجرا در Xcode یا در یک دستگاه متصل تعامل برقرار کنید. Swift اکنون در تمام سیستم عامل های اپل ساخته شده است و رابط باینری پایدار برای Swift در حرکت به جلو است. بسته های Swift در تمام Xcode یکپارچه شده اند و استفاده از یک بسته در برنامه های خود برای سیستم عامل های Apple بسیار ساده است. فقط کافی است بسته جدیدی را به آن اضافه کنید تا بسته خارجی را به پروژه خود اضافه کنید، سپس بسته بندی را از GitHub ،Bitbucket ،GitLab یا میزبان کد خود کلون کنید. Xcode بسته های بسته را بررسی می کند و تمام بسته هایی را که مستقیماً در ناوبر استفاده می کنید نشان می دهد.
Cocoa Touch
Cocoa Touch یک فریمورک UI برای ساختن برنامه های نرم افزاری برای اجرا در iOS برای iPhone ،iPod Touch و iPad ،watchOS برای Apple Watch و tvOS است. Cocoa Touch لایه انتزاعی از iOS، سیستم عامل iPhone ،iPod Touch و iPad را در اختیار شما قرار می دهد. Cocoa Touch مبتنی بر مجموعه ابزار macOS Cocoa API است و مانند آن، در درجه اول به زبان Objective-C نوشته شده است. Cocoa Touch امکان استفاده از سخت افزارها و ویژگی هایی را که در رایانه های MacOS یافت نمی شوند فراهم می کند و بنابراین منحصر به فرد برای دستگاه های iOS است. درست مانند Cocoa ،Cocoa Touch از معماری نرم افزار Model-View-Controller پیروی می کند.
Cocoa Touch شامل مجموعه متفاوتی از عناصر کنترل گرافیکی از Cocoa است. ابزارهایی برای توسعه برنامه های مبتنی بر Cocoa Touch در iOS SDK گنجانده شده است. Cocoa یک فریمورک مدرن و شی گرا است. فریمورک Cocoa شامل تعاریف کلاس برای کلاس هایی است که عموما برای تولید یک رابط کاربری گرافیکی (GUI) برای برنامه هایی که تحت Mac OS X اجرا می شوند مفید است. Cocoa همچنین یک رابط شی گرا را برای سیستم عامل (OS) فراهم می کند. Cocoa همان چیزی است که خود اپل از آن برای توسعه برنامه های مک استفاده می کند که دارای سیستم عامل Mac X هستند مانندFinder ،Mail ،iTunes و غیره.
آخرین نسخه سوئفیت (Swift)
معرفی Swift 5.1
Swift 5.1 اکنون ایجاد و به اشتراک گذاری فریمورک های باینری را با دیگران آسانتر می کند. همچنین شامل ویژگی هایی است که طراحی API های بهتر را کاهش می دهد و میزان کد رایج boilerplate را کاهش می دهد.
ویژگی های کلیدی
- پایداری ماژول یک فایل رابط ماژول مبتنی بر متن را تعریف می کند که API یک چارچوب دودویی را توصیف می کند.
- ویژگی wrappers برای تعریف الگوهای دسترسی سفارشی برای ارزش های ویژگی، یک اصطلاح عمومی را ارائه می دهند.
- انواع نتیجه مبهم به پنهان کردن جزئیات پیاده سازی در API کمک می کند.
- "Self" هم اکنون می تواند برای کلاس ها و انواع ارزش استفاده شود.
- پشتیبانی برای دستیابی و به روزرسانی در مجموعه هایی از انواع مناسب متفاوت است.
- پیشرفت در انواع SIMD و String.