Новый язык Apple — Swift


В этом году на WWDC преобладали анонсы программного обеспечения, а не крутое оборудование, которое многие фанаты Apple с нетерпением ожидали. Самым важным является новый язык Swift.

На данный момент трудно понять, какие намерения Apple имеет в отношении популяризации своего нового языка за пределами арены iOS / OSX. Думаю, совсем нет. Я также очень сомневаюсь, что он будет с открытым исходным кодом или представлен в стандартные программы. Apple действительно нужен Swift только для того, чтобы добиться успеха на собственном заднем дворе.

Как лучше всего описать Свифт?

Я предполагаю, что жестокий способ сказать это — ничего особенного, но это не обязательно. Он действительно включает в себя некоторые из лучших последних идей таких языков, как C # и даже JavaScript.

Самое главное, что это выглядит просто. Вы можете взглянуть на код Swift и подумать, что вы смотрите практически на любой современный язык, и по сравнению с Objective C, который он призван заменить, это сама простота — детский лепет, а не ракетные формулы.

В этом смысле некоторые люди называют его «языком сценариев». Идея языка сценариев очень расплывчата, но, похоже, она означает нечто вроде «достаточно простой для использования неспециалистом». Я не уверен, что Swift опускает планку настолько низко, но, как уже говорилось, это огромное улучшение по сравнению с Objective C.

На всякий случай, если вы думаете, что называть его языком сценариев подразумевает, что он интерпретируется и, следовательно, медленный, стоит добавить, что он основан на проекте компилятора LLVM, и код, который создается, очень быстрый. Apple утверждает, что тот же код работает быстрее в Swift, чем в Objective-C, и намного быстрее, чем в Python — на самом деле от 4 до 200 раз быстрее.

Так что же такое Swift?

Swift — это статически типизированный язык, но он использует вывод типов, поэтому вам не нужно объявлять тип всего, что вы используете.

Одна из его самых интересных особенностей — использование опций — переменных, которые могут иметь нулевое значение. Если переменная является необязательным типом, ее значение может быть истинным или ложным, в зависимости от того, определена она или нет. Чтобы получить его базовое значение, вы должны использовать оператор принудительного развертывания!. Если вы используете оператор разворачивания, а переменная не имеет значения, вы получите ошибку времени выполнения. Это означает, что вы в конечном итоге пишете такие вещи, как:

если возможноNumber {println (possibleNumber!)}

Вы не можете сгенерировать ошибку времени выполнения, используя пустую ссылку, потому что переменные всегда имеют значение; но вы можете, если попытаетесь развернуть переменную, которую не тестировали.

Предоставляются обычные структуры данных — строки, массивы, кортежи и тип словаря. Вы также получаете обычные управляющие заявления. Цикл for может использовать закрытые диапазоны и полуоткрытые диапазоны, т.е. 0 … 10 — это от 0 до 10 включительно, а 0..10 — от 0 до 9. Оператор switch особенно хорош — отсутствие провалов и сравнительно сложное сопоставление с образцом. на case-выражениях.

На более высоком уровне в языке есть объекты на основе классов с единичным наследованием. Он имеет автоматически сгенерированные геттеры и сеттеры, а также множество более современных средств, таких как методы расширения, дженерики и протоколы. Протоколы — это, по сути, то, что другие языки называют интерфейсами, и они служат той же цели — обеспечивать безопасную и ограниченную форму множественного наследования.

Функции в Swift являются первоклассными в том смысле, что вы можете передавать их как параметры и как возвращаемые значения, но они не являются объектами. Они действительно поддерживают замыкание, а выражения замыкания по сути являются лямбда-выражениями.

Есть много мелких деталей, которые я не описал, и вы можете прочитать полную спецификацию языка в формате pdf, чтобы узнать больше. Главный вывод состоит в том, что это хороший чистый язык, который был сформулирован с тем преимуществом, чтобы видеть, какие ошибки допускают другие языки. Будет интересно посмотреть, как он будет развиваться по мере появления дополнительных функций.

Помимо изменения терминологии — почему Apple должна называть так много вещей разными именами — если вы знаете современный язык, вы узнаете много Swift, а если вы знаете более одного современного языка, вы узнаете его все!

Однако у истории Swift есть и вторая часть — одного языка недостаточно.

Когда вы создаете программы для iOS или OSX, именно библиотека классов Cocoa доставит вам не меньше проблем, чем язык. Сегодня важно то, насколько легко использовать язык и его библиотеку классов. В этом случае проблема является сложной, потому что Какао написано на Objective-C и, вероятно, останется написанным на этом языке в обозримом будущем.

Хорошая новость заключается в том, что Swift взаимодействует с Objective-C и есть оболочки для библиотеки Cocoa.

Чтобы дать вам некоторое представление о том, как выглядит изменение, вот экземпляр объекта Objective-C:

UITableView * myTableView = [[UITableView alloc] initWithFrame: стиль CGRectZero: UITableViewStyleGrouped];

и вот эквивалент Swift:

let myTableView = UITableView (фрейм: CGRectZero, стиль: .Grouped)

Как видите, все намного проще, и в этом суть.

Swift кажется проще, чем Objective-C. Что нам действительно нужно знать, так это то, достаточно ли просто побудить всех тех случайных программистов и программистов, которые знают Java, JavaScript и C #, попробовать приложения для iOS / OS X.

Это причина, по которой Apple изобрела Swift, и по этой причине существует крошечная вероятность того, что язык может вырваться из-под заднего двора и попасть на другие устройства. Если бы Apple могла сказать: «Изучи Swift, ты можешь использовать его во многих местах», это могло бы сделать его еще более привлекательным.

Я сомневаюсь, что это произойдет.

Apple разместила онлайн-документацию и бесплатную электронную книгу в iBooks Store. Вы также можете загрузить бета-версию XCode 6 и начать работу с языком.


Добавить комментарий