Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Swift
Code

Какво да очакваме от Swift 3

by
Length:MediumLanguages:

Bulgarian (Български) translation by Mihail Petrov (you can also view the original English article)

Може би знаете че Swift 3 е на път. Това е първата версия на езика, която ще включва в себе си работата на цялата общност, която се изгради около него. Бяха направени хиляди, предложения, за надграждане на текущите му възможности, в момента в който Apple отвориха спецификацията през 2015 година. Хиляди от тези предложения бяха приети, от екипа разработчици, след внимателно премисляне и консултации. В настоящата статия ще разгледаме някой от най-важните новости в езика.

Какво ново?

Разработчиците на Swift имат много ясна цел, която искат да постигнат с пускането на следващата версия на езика и тя е организиране на стабилна основа върху която да се изгради езика за напред. Повреме на конференцията WWDC през 2016 година, Chris Lattner подчерта че новата версия на езика ще въведе множество промени, които ще счупят обратната съвместимост със старите версии на езика. Но тази стъпка се прави с цел, елиминиране на проблеми във фундамента на езика. Това е основната линия на действия в новото издание на технологията. В общи линии това означава че определени възможности ,с които сте свикнали ще бъдат елиминирани, променени или подобрени.

Проекта Swift evolution се окача изключително успешен, за радост на всички ползватели на технологията. Swift 3 е продукт на взаймните усилия на много хора. Компанията производител, се постара да бъде напълно прозрачна по отношени ена процеса на подготовка на продукта. В момента новата ревизия на езика е достъпен за ползване както на официалният му сайт, така и е включен в Xcode 8.

Езика предлага повече

Новата версия на Swift, не се фокусира само и единствено върху езика а и върху технологията като цяло. Това включва, промени в стандартната библиотека, процеса за създаване на приложения както и съвместимостта на езика с Cococa. Запомнете че Swift не е просто език. Технологията включва езика, пакетният мениджър както и стандартната му библиотека.

Съвместимост на програмният код

Ако имате опит с езика, вече знаете че мигрирането на съществуващите ви проекти от една към друга версия никак не е лесна задача. За съжаление, ситуацията е същата и тук.

Една от задачите, които разработчиците на Swift 3 си поставят е, да елиминират този труден процес към бъдещите версии на езика. Обратната съвместимост е ключов момент в новата версия на езика.

Нови възможности

Swift е модерен език. Мислен е така, че да бъде епичен. Swift 3 ще бъде още по-епичен.

Въпреки многото потенциални главоболия, които ще ви създаде миграцията, към новата версия, няма да останете разочарован защото ще имате възможност да ползвате език който е създаден да бъде страхотен. Swift 3 доставя удоволствие на потребители си. Промените в ядрото на библиотеките за работа с графични примитиви както и Grand Central Dispatch механизъма който ще обсъдим, в рамките на тази статия, са само част от примерите. 

Какво се е променило ?

Стига толкова превземки време е за факти. Ще фокусирам вниманието ви върху някой от най-важните промени, който езика въвежда.На забравяйте че до официалното му пускане остава още време така че няма да претендирам за изчерпателност.

API

Четимост

Много енергия и време беше отделено с цел подобряване на четимостта на API - то на технологията. Промените са забележими. Но резултата е изключително удовлетворяващ. Основната цел е четимост и достъпност на API - то

Ако сте свикнали с безкрайната описателност на Objective-C то тук по скоро подхода е, фокусиране върху есенцията. Да разгледаме пример от Swift 2.2.1 Ако имате опит със предишни версии на езика или пък с Objective-C, кода ще ви изглежда много познат.

Подхода на Swift 3 е доста по минималистичен.

Ползвателите на технологията осъзнаха че няма нужда от експлицитно добавяне на референция към контекста който ще бъде презентиран, тъй като информацията вече се съдържа в първият параметър. Резултата е четими методи и елегантен код. Ако питате мен това е стъпка в правилната посока.

Голяма част от предложенията който бяха направени касаят четимостта и опростяването на кода. API - то на Swift беше вдъхновено от Objective-C , което е и причината имената на методите му да са толкова описателни. В крайна сметка Swift 3 не прави компромис с четимостта на кода.

Разработчиците които се занимават с технологията, са на мнение че дизайна на API то трябва винаги да се създава изхождайки от неговата употреба, което е и причината за някой от фрапантните нововевъдения в технологията. Аз а и предполагам вие сме на мнение че новото API изглежда невероятно.

Маркиране на параметри

Още една промяна, която се посреща много добре от разработчиците е организирането на консистентна сигнатура на функциите и методите, чрез добавянето на маркировка по подразбиране, за първият параметър. Ето пример за това как по принцип изглеждат функциите в Swift 2.2.1. По подразбиране маркировката на първият параметър се елиминира в момента, в който функцията бъде извикана.

В Swift 3 сигнатурите на функциите вече се организират консистентно, което означава че първият параметър на функцията не се обработва по специален начин.

Благодарение на промените, можете да оптимизирате още повече горният пример като елиминиране референциите към визуалните компоненти в имената на функцията.

Вмъкване на членове (Import as Member)

Работата с API-та писани на C в езика Swift, лично на мен ми е изглеждало малко странно. Нека да ви дам пример. Основните функции за работа с графики, се импортират в приложението като глобални функции, което си е доста неприятно само по себе си.

Същото важи и за Grand Central Dispatch. В следващият пример ще ви демонстрирам употребата на Grand Central Dispatch, чрез който ще дефинираме асинхронна задача, която да бъде позиционирана в опашката за изпълнение на задачи, която се изпълнява на заден план.

А сега добрите новини. В Swift 3 API то наподобява много повече, функциите с които сте свикнали да работите. Функциите се импортират като методи, което ни позволява да използваме следният синтаксис.

Премахване на възможности

Ползвателите на технологията се обединиха около тезата, че някой от възможностите на езика трябва да бъдат премахнати. Някой от предложенията им касаят възможности които станаха повод за разразяването на гневни дискусии. Ще посоча само четири от тях.

for цикли от класически тип

Изглежда ли ви познато?

Този синтаксис вече не се поддържа в новата ревизия на езика. Въпросът е разбира се, защо. Трябва да има причина за тази радикална промяна. Можете да се запознаете с предложението на Erica Sadun публикувано в GitHub. Което ни води до следващата доста скандална промяна.

Премахване на операторите ++ и --

Предложението е направено от самият създател на езика Chris Lattner. В документа, той описва че операторите са добавени без много мисъл, в ранните етапи от развитието на езика. Решението е да бъдат премахнати, за да се елиминират потенциални обърквания.

Не се притеснявайте. Решението на проблема е просто  и много елегантно.

Премахване на var параметрите

Ако сте запознати с функциите в Swift вече знаете, че параметрите им са константа по подразбиране. Можете да промените поведението по подразбиране като добавите ключовата дума var преди името на параметъра. Параметрите които са дефинирани по този начин, се предават на функцията като копие.

Но каква е разликата между тези параметри и онези дефинирани като inout? Може би се чудите. Всъщност това е едно от нещата, за което много от нас си блъскаме главата да разберем.

От гледна точка на функцията няма никакво значение че тя получава множество локални копия на стойностите на своите параметри. Както името подскава обаче, параметрите които са дефинирани като inout записват своите стойности обратно в оригиналната променлива.

За да елиминираме всякакви съмнение, параметрите дефинирани с var не са вече налични в новата ревизия на технологията. За щастие тези дефинирани с inout ще останат.

Като говорим за inout параметри, трябва да споменем че ключовата дума, е интегрирана също така като част от синтаксиса на функционалните параметри. Нека разгледаме следният пример.

Имплицитно поведение на функцията splat при работа с Tuple

Въпреки че технологията е все още млада, на разработчиците се предоставят доста мощни възможности, които не са за пренебрегване. Знаете ли че можете да подадете Тупал обект, към функция, вместо списък с параметри? Но не бързайте да се радвате. Тази възможност на езика ще бъда премахната в новата ревизия.

Chris Lattner, във своето предложение за премахването на тази възможност, коментира че имплементацията на този механизъм е приятна. Но това води до няколко доста важни последствия. Причината за да насоча вниманието ви към този конкретен документ е за да очертая основната цел на екипа, а именно, нуждата да се олекоти максимално API то и синтаксиса на езика.

Лично аз виждам как подобни функционалности изглеждат изключително интригуващо на първо четене, приятни са за употреба и добавят необходимата четимост в нашият код. Проблема идва с развитието на езика, когато всъщност се забелязва че подобни нововъведения добавят допълнителна комплексност към процеса по компилация, което води до деградиране на цялостната производителност. Главоболия които могат да бъдат спестени като се елиминира подобна функционалност.

Какво е Swift 2.3

Миналата седмица публикувах статия за Xcode 8. В нея, коментирах че Xcode 8 поддържа както Swift 2.3 така и новата ревизия на езика Swift 3. Но въпроса е какво е Swift 2.3?

Това е малък но доста важен ъпдейт на Swift. Основната разлика със Swift 2.2.1 която се предоставя с Xcode 7.3.1 и съвместимостта с SDK то на Apple новите версии на операционната система на Apple  iOS 10, tvOS 10, watchOS 3, и macOS Sierra (10.12).

Това в общи линии означава, че можете да таргетиране новите операционни системи със старата версия на езика. Ползвайки Xcode 8 можете да публикувате приложения з App Store, които са написани на Swift 2.3 и Swift 3. Екипа разработчици е напълно наясно, че миграцията не е лесен процес. Swift 2.3 гарантира, че имате възможност да мигриране проектите си когато сметнете за необходимо.

Инструменти

Доста важен аспект на Swift проекта, е че инструментите, които ползваме за разработка се създават заедно с езика. Което означама значителна актуализация на инструментариома в рамките на новата версия на технологията.

Документация

По време на WWDC забелязахме промяна в докумнтацията. Това може да ви изглежда напълно незначително но замислете се за момент колко много време губите ежедневно, докато търсите материали в докумнетацията? Аз лично съм привърженик на тези особености и адмирирам усилията на екипа, в това направление. Промените са значително по-осезаеми в Xcode 8.

Xcode

За сега голяма част от разработчиците на Swift ползват Xcode като тяхна основна среда за разработка. Това може да се промени в последствие, с оглед на това ,че езика може да придобие популярност в рамките на други платформи. Една от възможностите е Swift за Android.

В Xcode 8 интеграцията със Swift е значително подобрена. Навигирането в рамките на стандартната библиотека е значително по интуйтивно. В рамките на една от сесиите по време на WWDC 2016, Ewa Matejska илюстрира, точно това. Което повишава, удоволствието при работа със стандартните библиотеки.

Нека разгледаме процеса по компилация и оптимизация. Може би сте чували за концепцията свързана с цялостното оптимизиране на програмните модули. Това е възможност, която е включена по подразбиране в Xcode. Определено се чувства подобрението в бързодействието на приложението, като от Apple силно препоръчват да я оставите включена, когато компилирате кода си за продукционни цели. Ако имате интерес да научите повече за тази концепция. Препоръчвам да прочетете статията на Keith Harrison по темата.

Единственият недостатък на оптимизацията е увеличаване на времето за компилация на кода на проекта, което обаче е напълно оправдано с оглед на добрите резултати в бързодействието. Благодарение на механизма за инкрементална компилация на кода, не се забелязва цялостно забавяне на системата при създаване на отделните билдове на кода.

Заключение

Swift 3 е огромна стъпка напред, в развитието на технологията. Никой не обича, когато новата версия на езика елиминира обратната съвместимост, но в този случай тя е за добро, понеже прави езика по приятен за четене и ползване, което прави и платформата много по адекватна за бъдещото развитие на технологията.

В тази статия си позволих да отбележа някой от важните нововъведения в технологията, които можете да очаквате, по-късно тази година. За пълен списък с променти, силно препоръчвам да посетите официалната страница даваща съвети за миграция към новата версия на езика.

Препоръчвам да посетите и страницата Swift evolution project  хоствана в GitHub, където можете да прочетете повече по темите свързани с бъдещото развитие на проекта. Не се притеснявайте, че няма да можете да разберете концепциите. Всички документи са описани на разбираем и достъпен език. Целта на проекта е да може да даде трибуна за изява на всеки, който се интересува от технологията. Нищо не пречи Вие да сте този някой, забавлявайте се.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.