Представленный на WWDC 2014 язык программирования Swift стал причиной большой шумихи в кругах разработчиков и породил массу вопросов. Нужно ли обучаться новому языку? Какие его основные преимущества перед Objective-C и C#? И что, собственно, делать тем, кто создает мультиплатформенные игрушки? Для того, чтобы получить ответы на эти вопросы, я обратился к разработчикам известных игр в App Store и подготовил небольшой опрос в формате «разработчик — его приложение — комментарий». Результат получились неоднозначными и где-то даже неожиданным.
Язык Swift устраняет проблемы, скопившиеся за 20 лет в языке Objective-C. Он призван, в первую очередь, упростить ситуацию тех разработчиков приложений, которым крайне неудобно работать с громоздкими, сложными конструкциями Objective-C. Язык Swift так же откроет новую эру для начинающих разработчиков, которые теперь помимо разработки маленьких игр на JavaScript, так же смогут выбирать и этот язык. Однако не следует забывать, что в настоящее время Swift не подходит для мультиплатформенных разработок
Swift — язык интересный и многообещающий, но мы активно используем Unity, так что нам вопрос нового языка программирования комментировать здесь трудно. Мы не собираемся использовать Swift при разработке наших игр.
На первый взгляд можно сказать, что код на языке Swift будет писаться быстрее, так как отсутствую какие-либо лишние символы. Все очень лаконично, кратко. Также этот язык дает больше гибкости (чего только стоит возврат функцией нескольких значений). Язык являет собой неплохой симбиоз C/C++/Objective C/Java. Трудно пока оценить насколько эта гибкость и лаконичность повлияет на читаемость кода.
В связи отсутствия кросплатформеного компилятора, Swift пока можно использовать только для нативных разработок под iOS и Mac. Пока разработчики игр как и раньше будут отдавать предпочтения Unity 3D, Cocos 2DX, Corona и т.д.
1) Swift — чистый и современный. Приятно было услышать, что в нем используется LLVM для компиляции нативного кода плюс все Cocoa API адаптированы;
2) Он — более легкий и удобочитаемый, чем Objective-C;
3) Самый большой недостаток таких специфичных платформ, как Objective-C и Swift — вопрос портирования. Мы разрабатываем наши игры в C++, чтобы было легче портировать на другие платформы. Swift улучшить наш Cocoa-код и всё, что касается API компании Apple.
Swift – что-то, что никто не ожидал увидеть на WWDC Keynote. Apple взяла все самое лучшее из всех известных мне языков и воплотила это в Swift. Swift дает большие возможности по упрощению кода. То, что разработчик ранее писал с помощью verbose (слишком многословных) конструкций, сейчас можно заменить несколькими символами. Я не вижу Swift заменой Objective-C. Как выяснилось, он еще немного сырой для полного перевода своих проектов на Swift. Но использовать его можно для задач, которые хочется оптимизировать или визуально упростить. Преимущество для разработчиков игр здесь только одно – если ты видел конструкции, используемые в Swift, в языке, который используешь повседневно – значит все хорошо, переход не займет много времени.
Этот язык создавался в строжайшем секрете с 2010 года. Один из сотрудников Apple в разговоре с Крейгом Федериги сказал, что не ожидал, что от его команды скроют такой продукт. Много разработчиков были растеряны после keynote (Денис присутствовал на WWDC — прим. ред). Но нам всем нужно идти дальше и учиться :)
С одной стороны, Apple, видимо, делает ставку на привлечение в разработку под свою платформу опытных разработчиков на других языках (в Swift чувствуется влияние многих из них). С другой стороны, в новом Xcode появился также новый режим – REPL (Read-Eval-Print-Loop), который позволяет видеть результат выполнения кода “на лету”, что очень удобно для новичков. Swift вполне может стать их первым языком программирования. Необходимость в создании нового отдельного языка для меня не совсем очевидна, но время покажет, стоило оно того или нет.
Вообще, общее впечатление от API Swift — более простое, чистое, читабельное и понятное. Хоронить Objective-C, наверное, пока рано, но Swift вызвал у всех действительно неподдельный интерес. Единственная возможная причина медленного развития языка — если он так и останется “внутренним”, только для разработки под Apple.
28 комментариев
Форум →Надо попробовать будет. Судя по комментариям это что-то годное. Я веб разработчик. Учить джаву или Обджектив Си мне не хотелось. А тут что-то интересное и новое. Можно будет влиться в это все с нуля вместе со всеми и не отставать. Начну с какого-нибудь простого веб-аппа (попробую перевести свой же сайт). Как минимум появится интересный опыт.
а джава та тут причем? она не подходит для ios, а ведрофоны не поймут свифт.
@t.r.o.n.,
Я именно андроид и имел ввиду. Не хотел с ним связываться из-за Джавы. Мне по сути без разницы под какую платформу. Это не ради заработка. Так, для себя…
@Gr0m, ну так осовйте Adobe AS3. И простой, и родная документация на русском, и .. его тормоза не заметны рядом с тормозами ведрофона.
@t.r.o.n., Не учите человека гадостям. На AS можно написать универсальное приложение под iOS и Android, но оно будет тормозить и работать коряво и там и там. Единственный вариант написать что-то годное – писать на нативном языке. Почти все стартапы проходят путь PhoneGap или подобное -> Adobe AC3 или HAXE или подобное -> нативное приложение. Не нужно повторять чужие ошибки, пишите нативный код
@Andrew, для себя, что и просил автор – самое оно.
Более того, для ios не редко использую – весь достойный результат.
А сильные тормоза – это у тех, кто не понимает как оптимизировать нужно.
И еще раз – никто не против нативного, но аффтору, не хочется это учить.
@t.r.o.n.,
Я знаю AS 3. И второй тоже.
@Gr0m, тогда в чем проблема. В нем все есть что может понадобится. а если не полезете в аппаратное ускорение графики -то все будет достойно.
@t.r.o.n.,
Хочется чего-то нового. Со флешем покончено пару лет назад, когда еще сайты на нем заказывали.
Да и Свифт как-то ближе к нативному, по-моему. А на флеше делать – так кажется, что это будет нечто подобное, как делать приложения под мак на АИРе.
@Gr0m, и что странного. Много полезного и удобного софта получается….
Криво получается когда лень умножается непониманием.
Вы главное определитесь, вам сфифт, для себя или андройда )))
@Gr0m, веб-апп на свифте? мисье знает толк в извращениях )
А по теме: язык няшка. Может будет третьим-четвертым языком в арсенале.
@crashk1n,
Нормально. Яж говорю, что бы было с чего начинать. Цель просто нужна. Как раз функционал обычного сайта запихать в приложение – это самое то для начала. Навигация, вывод данных, галереи, букинг формы и т.д.
@Gr0m, поверьте, это путь извращения. И не кислого.
@t.r.o.n.,
За-то это сразу же реальная задача, а не “Хелло Ворлд”, на котором большинство свой путь и заканчивают.
Я когда-то такими же образами учил ПХП (в далеком 2000-ом году ничего не зная решил написать с нуля простейшую гостевую книгу) и джаваскрипт (впервые его увидев хотел сделать обычные всплывающие окна).
@Gr0m, задача реальная – но вот тольок не правильная. Перенос сайта в приложение и есть извращение. Сама поведенческая логика слишком разная.
@t.r.o.n., создатели всех клиентских приложений для различных сайтов, включая VkApp, с Вами не согласны)
@Rezon, да ну… тогда назовите хоть что-то общего в поведении помоек (вк,фб и прочего) и их приложений ))))
кроме общего API они не имеют ничего
@t.r.o.n., во-первых, создание мобильного приложения для сайта — это не повторение интерфейса сайта нативными контролами, а адаптация. Во-вторых, откройте мобильную версию того же vk, вы удивитесь.
К слову, у vk на данный момент лучший мессенджер из мне известных. Но, конечно же, он наверняка не чета Вашим поделкам на AS. Я перешёл на личности, Вы победили.
@Rezon, при чем ту поделки и прочее – так и не понял.
Вы сами подтвердили моси слова – они не копируют сайт. а вы, по сути, говорили именно это.
Качество месенджера, я не обсуждал вовсе (помойка == любая социальная сеть). Вы как-то нервно реагируете, не находите?
Все что до вас хотел донести, это то6 что совершенно не важно на чем написана клиентская часть, главное чтобы она соотвествовала потребителю и имела под собой очень-очень хорошее серверное API (не путайте с сайтом)
было бы хорошо если бы стал мультиплатформенным)вроде интересное что то получилось
@maximka1093, Вряд ли, Apple не хочет делиться своими приложениями с ведроидом.
@maximka1093, если компилятор будет иметь открытый исходный код, то не вижу проблем. На Objective-C под андроид писать можно (на тех же условиях, что и C/С++).
@Alex12, впервые слышу, но если это так то со Swift проблем не будет ведь это надстройка над Objective-C
@Silmaril, нет, это не надстройка, даже близко не недстройка
@Shannon, Ну вы не первый мне это говорите, но после чтения документации у меня сложилось именно такое мнение. Да может надстройка немного другого плана чем сам Objective-C над C, но с моей точки зрения всеравно надстройка и причин менять свое мнение у меня пока нет, да это и не сильно важно.
@Silmaril, тогда зачем своё ошибочное мнение высказывать, если не разбираетесь и даже не хотите разобраться?
Swift – это совершенно самостоятельный язык, поэтому он не может быть надстройкой над чем-то в принципе (даже элементарно логически, не говоря уже про реальное содержимое).
То, что он 100% совместим с ObjC – это лишь одно из его свойств, и многие ошибочно думают, что могут в коде swift’а писать на objc и наоборот – это не так. Они совместимы за счет бриджа, специального механизма для совместимости, и в том файле где вы пишите на swift’e вы не можете писать на ObjC (или просто С), в то время как надстройка позволяет использовать синтаксис оригинала
@Shannon, То что в одном и том же файле нельзя писать на разных языках ничего не говорит. Да технически Objective-C и Swift разные языки. Но практически можно использовать и тот и другой в одном проекте, а рантайм и компилятор общий. Так что вы меня не убедили
@Silmaril, дааа, что такое логика в этом мире все меньшее и меньше кол-во людей знает.
Говорить глупости, потом противоречить самому себе, и потом других в это болото тянуть – современный стандарт.
Сами же и говорите: “технически Objective-C и Swift разные языки”, что впринципе исключает возможно одного языка быть надстройкой другого.
Конкретно:
1. Использовать их можно в одном проекте только благодаря тому, что Apple специально облегчила разработчикам жизнь и разработан механизм совместимости (точно так же можно было сюда Java или Python засунуть)
2. Компилятор у ObjC и swift разный
3. Было бы очень смешно, если бы runtime (если вы конечно знаете, что это такое) был у них разный.
Ааа, я знаю в чем дело. Вы говорите “это надстройка”, но не понимаете значения этого слова, а имеете ввиду “Swift – это новый язык программирования […], который сочетает в себе все лучшее от C и Objective-C. Разработчикам Objective-C Swift покажется знакомым”,
Вы ошибочно думаете что, раз он в себе что-то сочетает и он кажется знакомым, значит он надстройка и спустя множество раз когда вам указали на вашу ошибку, вы продолжаете бездумно ляпать слова куда непоподя.
Тогда действительно, вас не убедить, раз вы бездумно ляпаете слова в качестве аргументов (runtime, компилятор, практически в одном проекте, надстройка). Не буду тратить на это время, даже отпишусь от комментариев.
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Зачем в iPhone нужен Game Center. Как настроить и правильно пользоваться сервисом
Как сбросить пароль от Apple ID, если нет другого устройства или забыли старый код
Как включать Apple TV при помощи iPhone
Как в Spotify слушать музыку в приватном режиме
Как исправить неработающую функцию Диктовки на iPhone
Почему на экране блокировки iPhone часто появляются карты для оплаты Apple Pay
Добавляем любой трек в медиатеку Apple Music
Добавляем пустой виджет на экран блокировки iOS 16. Настройте локскрин по-своему