Чтобы отказаться от языка программирования, на котором уже ведется коммерческая разработка, и начать учить новый, программистам нужны серьезные основания. Но история ИТ-индустрии знает много случаев, когда выбор за них делало время, и переход происходил как бы сам по себе.
Что заставило множество разработчиков перейти на Objective C? Что сейчас заставляет отказаться от него и выбрать Swift?
Objective C является расширением языка Си, в который были добавлены новые возможности для объектно-ориентированного подхода программирования. Язык использует объектную модель Smalltalk. Полностью совместим с языком программирования Си. Компания Apple долгое время использовала Objective C как основной язык программирования для разработки своих продуктов.
Создателями Objective C являются Брэд Кокс и Том Лав. Они начали работать над ним в начале1980-х годов, когда еще были сотрудниками телекоммуникационной компании ITT Corporation. Примерно в то же время Кокс и Лав познакомились с языком программирования Smalltalk. Кокса тогда занимали проблемы повторного использования программного кода.
Вследствие увеличения объема кода в проектах и сложностей его поддержки, с 1960х начинает образовываться новая, объектно-ориентированная парадигма программирования, разбившая программы на еще более мелкие составляющие – типы данных.
Каждый объект является переменной определенного программистом типа данных (так называемого класса). Определение такого специального пользовательского типа данных (класса) заключается в двух вещах: определении набора данных (инвариантов, членов) и набора подпрограмм (методов), которые будут их обслуживать.
Основным преимуществом объектно-ориентированного подхода стала возможность создавать новые классы на основе уже написанных (добавлять инварианты и методы, переопределять методы, использовать определенные в базовом классе методы как свои), названное наследованием.
Набор методов представляет собой интерфейс для взаимодействия с инвариантами.
OOPC
Брэд Кокос быстро понял, что Smalltalk не подойдет для решения задач в ITT Corporation: совместимость с языком С для них была критична. Однако Кокс решил модифицировать препроцессор для С в сторону Smalltalk.
Модификация эта состояла в добавлении новых синтаксических конструкций и специальном препроцессоре для них (который, проходя по коду преобразовывал их в обычные вызовы функций С), а также новой библиотеке времени выполнения (эти вызовы обрабатывающей). Таким образом, изначально Objective C воспринимался как надстройка над C. В каком-то смысле это так и до сих пор: можно написать программу на чистом С, а после добавить к ней немного конструкций из Objective C (при необходимости), или же наоборот, свободно пользоваться С в программах на Objective C. Кроме того, все это касается и программ на С++.
То, что получилось, Кокс назвал «OOPC» – Object-Oriented Pre-Compiler. В 1982 году Лав устроился в Schlumberger Research и получил возможность приобрести коммерческую версию Smalltalk-80. Это помогло им в дальнейшей работе над Objective C. В итоге в Objective C была реализована возможность создавать объекты и работать с ними.
Целью Кокса было создание языка, поддерживающего концепцию software IC, подразумевающей возможность собирать программы из готовых компонентов (объектов), подобно тому как сложные электронные устройства могут быть собраны из набора готовых интегральных микросхем. При этом язык должен быть простым и основанным на языке С, чтобы облегчить переход разработчиков на него.
Одной из целей было также создание модели, в которой сами классы являются полноценными объектами, поддерживалась бы интроспекция и динамическая обработка сообщений. Любому объекту можно послать любое сообщение. Объект может вместо обработки сообщения переслать его другому объекту для обработки (делегирование), в частности, так можно реализовать распределённые (то есть находящиеся в различных адресных пространствах и даже на разных компьютерах) объекты.
Привязка сообщения к соответствующей функции происходит на этапе выполнения.
Язык Objective C поддерживает работу с метаинформацией — так, на этапе выполнения можно узнать класс объекта, список его методов (с типами передаваемых аргументов) и instance-переменных, проверить, является ли класс потомком заданного и поддерживает ли он заданный протокол и так далее.
NeXT
В 1986 году Кокс опубликовал книгу Object-Oriented Programming, An Evolutionary Approach, в которой разместил описание своего языка программирования, разобрал проблему повторного использования кода и указал преимущества Objective C при ее решении. Лав и Кокс также создали компанию Productivity Products International (PPI), который должен был помочь монетизировать компилятор Objective C с библиотеками классов. Далее фонд был переименован в StepStone.
В 1988 году компания NeXT Software лицензировала язык Objective C, усовершенствовала его библиотеки и добавила новые – AppKit и Foundation Kit. На их основе позднее была создана среда разработки NEXTSTEP.
В 1992 к усовершенствованию языка и компилятора подключились разработчики проекта GNU в рамках проекта OpenStep. С тех пор GCC поддерживает Objective C.
Не добившись успеха на рынке в качестве производителя компьютеров, компания NeXT переключило все свое внимание на создание и продажу средств разработки ПО.
20 декабря 1996 года компания Apple купила NeXT Software, а среда разработки NEXTSTEP стала основной средой разработки для будущей основной версии операционной системы Apple — OS X.
После покупки NeXT, Apple взяла их SDK (компилятор, библиотеки, IDE) за основу для своих дальнейших разработок. IDE для разработки кода получила название Xcode, а для GUI – Interface Builder. Фреймворк Cocoa для GUI разработок (и не только) на сегодня является наиболее значимой средой разработки программ на Objective C.
В 2007 году компания Apple презентовала обновленную версию языка и назвала его Objective C 2.0, данная версия языка является актуальной в настоящее время. Используется в разработке Apple OS X, iOS.
Swift
В 2014 году компания Apple представила новый язык программирования – Swift. Он стал самым быстрорастущим языком программирования в истории.
«С открытием исходного кода Swift разработчики всего мира могут вносить свой вклад в этот язык программирования и делать его доступным на новых платформах, — сказал тогда Крейг Федериги, старший вице-президент Apple по программному обеспечению. — Эффективность и простота Swift дадут молодым программистам стимулы к обучению, к тому же теперь они смогут распространять свои идеи повсюду: от мобильных устройств до облачных систем».
Создатель языка Swift – Крис Латтнер. Он пришел в Apple в 2005 году. Там он занимался разработкой LLVM. Apple использовала LLVM для того, чтобы изменить способ использования Objective C при создании приложений.
LLVM (Low Level Virtual Machine) — это универсальная система анализа, трансформации и оптимизации программ или, как её называют разработчики, «compiler infrastucture».Крис Латтнер курирует все инструменты разработчиков Apple: все, с помощью чего создаются программы для телефонов, планшетов и компьютеров Apple, как сторонними разработчиками, так и инженерами компании. Будучи аспирантом университета штата Иллинойс, он создал своего рода средства для разработчика под названием LLVM, которые сегодня лежат в основе Xcode.
Латтнер также использовал LLVM в качестве основы для Swift. Эти два продукта специально были созданы для работы в тандеме.
Над Swift он начал работать летом 2010 года. Латтнер держал это в секрете полтора года. Он создавал Swift в свободное от основной работы время.
Через полтора года он рассказал о проекте топ-менеджерам Apple. Высоко оценив работу Латтнера, они направили ему в помощь нескольких разработчиков. Однако проект был все еще окутан ореолом таинственности. Даже люди, косвенно принимавшие участие в создании языка и помогавшие Крису, были сильно удивлены, над чем именно он работал. Еще через полтора года проект Латтнера попал в список главных направлений компании, а команда разработчиков существенно расширилась.
По мнению Apple, язык Swift имеет все шансы изменить ИТ-индустрию.
2 июня 2014 года компания выпустила тестовую версию для сторонних разработчиков и программистов. Apple позиционирует это язык как более быстрый и эффективный способ создания программ для iPhone, iPad и Mac.
Расширение аудитории
Языку программирования необходимо несколько лет, чтобы стать популярным хотя бы в узких кругах энтузиастов. Достаточно показательна ситуация с языком Go, который компания Google представила еще в 2009 году. Над Go работали лучшие умы (Кен Томпсон и Роб Пайк), однако и по сей день прикладываются немалые усилия для его популяризации. Однако Apple делает все, чтобы Swift стал исключением и последовал примеру языков Java и C# в 1990-х и начале 2000-х соответственно.
Swift создан для среднестатистического программиста. На языке можно писать даже самые простые приложения, а наделенный довольно умными инструментами, язык предлагает эффективный способ учиться написанию самостоятельно. Но главная причина будущей популярности языка кроется в другом. Сотни тысяч разработчиков сегодня создают приложения для устройств Apple, используя Objective C. Устройства Apple пользуются большой популярностью, а значит эти разработчики продолжат создавать для них приложения, но уже на Swift. По мнению Apple, он значительно лучше и эффективнее, чем Objective C.
3 декабря 2015 года компания открыла исходный код Swift. Всемирное сообщество разработчиков — от создателей приложений до компаний и учебных заведений — может развивать Swift и оптимизировать язык, чтобы сделать его доступным на новых вычислительных платформах.
«Не было никакого реального стимула использовать Google Go» — говорит Пол Янсен, который отслеживал прогресс различных языков программирования в течение около пятнадцати лет. «Swift отличается наличием стимула».
В рейтинге TIOBE Swift занимает 14-ю позицию. За год он поднялся на 3 позиции. Язык Go переместился с 95 позиции на 20, что очень впечатляет. А Objective C опустился с 6 места на 15. Таким образом, можно сказать, что Swift технически обошел своего предшественника.
Сегодня на GitHub, популярном хранилище разработок с открытым исходным кодом, более 2500 проектов используют Swift.
Swift – это не просто язык, это язык, который тесно связан со всем, что требуется разработчику для работы. Сюда входит не только интегрированная среда разработки, но и многие другие инструменты (например, отладчик), которые уже знакомы каждому разработчику Apple.
Swift быстр (скорость реализации некоторых алгоритмов в 3,9 раза больше, чем на Python) и лаконичен (разработчики избавились от многословности Objective C). Ещё одно важное нововведение — это возможность писать код и видеть результаты в режиме реального времени.
До этого на протяжении долгого времени процесс создания программного продукта и сам продукт были разделены, и из-за этого программисты должны были тратить много времени на проверку и оптимизацию кода. В Swift они могут вносить поправки и сразу видеть результат. Это значит, что разработчики смогут быстрее проверять в деле свои концепты и в целом быстрее создавать приложения.
P.S. Apple не первая компания, которая выпустила новый язык программирования в недавнем прошлом. Это уже сделали Facebook, Google и Mozilla. К чему это приведет — покажет время.
Комментарии (81)
nwalker
24.08.2016 20:31+25Переименуйте статью в «история Objective C и маркетинговый буллщит про Swift».
iqiaqqivik
25.08.2016 08:58+2Вот это самое прекрасное: «Он стал самым быстрорастущим языком программирования в истории.»
Быстрорастущим куда? В сравнении с чем? По каким критериям?
Athari
24.08.2016 21:20+17Давайте по-честному: единственная причина успеха и вообще существования Swift — это необходимость иметь обратную совместимость с неимоверно вырвиглазным и отсталым Objective-C (см. ваш же скриншот из начала статьи). Если бы не жёсткие рамки обратной совместимости вкупе с ущербностью Objective-C, никакого Swift не было бы. Был бы Objectve-C нормальным — никто бы с него не переходил из-за смутных плюсов; не было бы обратной совместимости — никто не стал бы выкидывать тонны написанного кода. Просто Swift дал возможность огромному числу программистов писать на нормальном языке.
Вот когда Swift кому-то понадобится за рамками яблочных платформ, можете начинать заливать про революционность, стимулы и далее по списку и сравнивать с Java, которая отжала огромный кусок от C++ именно за счёт новых подходов; ну или хотя бы с C#, который как Java, только нормальнее. Пока же этот Swift со всеми своими "стимулами" никому не нужен за рамками яблочных платформ.
Скорость с питоном они сравнивают, ох...
Nagg
24.08.2016 21:42Про кросслпатофрменность сейчас явно кто-нибудь вам ответит что Hello world можно запустить на андроиде! и на Windows через новый встроенный линукс. Про сравнение с питоном — чуть чай не пролил от смеха :-).
Kolonist
24.08.2016 23:24А что-нибудь кроме Hello World? Есть ли у Swift реальная область применения за пределами яблочных платформ?
Nagg
24.08.2016 23:50+4Нет.
olegi
25.08.2016 11:56+1а как же слухи про android и swift?
хотя какие комменты можно ожидать от работника Xamarin… :) боитесь потенциального конкурента.Nagg
25.08.2016 13:20-1Ну когда свифт на андроиде сможет легко интеропаться с кучей уже написанных 3rd party на джаве, включая UI контролы и дизайнер (т.е. предоставит красивый языковой враппер) и когда IDE будет поддерживать такие же возможности рефакторинга как idea/android studio тогда поговорим :-). И я молчу уже о Windows и UI фраемворках для него.
olegi
02.09.2016 16:48+1fyi: https://habrahabr.ru/company/bitrix/blog/309000/#comment_9785312
Nagg
02.09.2016 17:48Ничего не понял — как это решает проблему "подключить быстро любую нативную 3rd party на java в мой Android Swift проект".
olegi
02.09.2016 17:56+1это инфа к вашему твердому «нет» на вопрос «Есть ли у Swift реальная область применения за пределами яблочных платформ?»
asdf87
02.09.2016 21:35-1Так это скорее для поддержания яблочной платформы в tarantool'e сделано, а не потому что swift такой модный, удобный и молодежный. А клиентам tarantool'a за пределами яблочной платформы скорее всего будет удобнее писать хранимые процедуры на lua.
ad1Dima
25.08.2016 14:21+2А что слухи, вот: http://elementscompiler.com/elements/silver/
Ждем от вас что-нибудь кроме helloworld и упреков в боязни конкурентов.olegi
25.08.2016 14:36+1речь была о слухе:
Google is said to be considering Swift as a ‘first class’ language for Android
About the time Swift was going open source, representatives for three major brands — Google, Facebook and Uber — were at a meeting in London discussing the new language. Sources tell The Next Web that Google is considering making Swift a “first class” language for Android, while Facebook and Uber are also looking to make Swift more central to their operations.
http://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift/
.net-у такое и не снилось :)Nagg
25.08.2016 18:30+1.net по идее мог быть из коробки в Андроиде ;-) Есть историческое гугловое письмо на это туему. Ну а swift first class это не более чем слух, тем более после того, как суд недавно отказал Ораклу гуглу вообще не имеет смысл вводить новый язык забивая на огромную тучу существующего кода комьюнити.
olegi
25.08.2016 20:18а что за письмо? что-то не гуглится
Nagg
25.08.2016 20:31+3http://www.fosspatents.com/2011/07/judge-orders-overhaul-of-oracles.html
One of the most interesting passages in today's order quotes from an October 2005 email by Google's Android boss Andy Rubin:
"If Sun doesn't want to work with us, we have two options: 1) Abandon our work and adopt MSFT CLR VM and C# language — or — 2) Do Java anyway and defend our decision, perhaps making enemies along the way"
landan
25.08.2016 14:16+3Ну это вы зря, у свифта за столь короткое время успело сформироваться довольно таки большое комьюнити, даже несколько фреймворков для веба появилось, я использую Vapor, перейти на него например с того же node.js да это просто счастье.
Nagg
25.08.2016 18:32Это как-то опровергает мою мысль? Я не ругаю свифт, мне он нравится :) Вон недавно сказали что введут async/await в него в 4ой версии. Но на андроиде написано огромное количество библиотек, костылей и т.п. На это нельзя забить и сделать язык со своим гуёвым фраемворком или кривым интеропом. PS: ой, я подумал вы из ветки про андроид.
Athari
25.08.2016 00:06+2Киллер-фича свифта — обратная совместимость с обж-с. К сожалению, это приводит к некоторым странным фичам: повсеместное позднее связывание, странная логика попадания имён аргументов в сигнатуры, многословные названия методов… И эти странности идут в компании с ломанием обратной совместимости (во второй версии просто взяли и поменяли смысл ключевого слова), сыростью компилятора (припоминаю статью с экспоненциальным ростом времени компиляции при использовании литералов словаря), кросс-платформенности как таковой нет… За рамками яблок смысла в свифте примерно ноль. Свифт пытается догнать современные языки, а не совершает революции.
ruckef
25.08.2016 16:43Очень интересно, как вы себе представляете реализацию раннего связывания при поддержке совместимости с Objective-C, в котором все методы виртуальны.
Kirpa
25.08.2016 01:42+5ObjC — отличный язык, на котором приятно писать, после определённой практики. Во всяком случае, не слышал массовых жалоб от тех, кто постоянно на нём пишет.
И что такого особенного в Swift для обратной совместимости с ним? Чем это мешает языку?ad1Dima
25.08.2016 05:47+2Возможности у Obj-C хорошие, но синтаксис вырвиглазный и трудночитаемый. Хотя когда они сделали синтаксический сахар для декларации массивов и объектов, стало намного лучше.
А свифт выглядит как снтаксический сахар для Obj-C из-за вот таких моментов:
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
Для примера, тот же код на C#
var cell = tableView.DequeueReusableCellWithIdentifier("Cell", indexPath);
Из-за совместимости с Obj-C в плане семантики методов, которой несколько пожертвовали в Xamarin, язык получился многословный.Diaskhan
25.08.2016 09:00Не понимаю зачем надо было убирать const и делать за место него let?
Это что было сделано для удобства? Ох уж эти смалталки…NeoCode
25.08.2016 09:54+1Вообще const и let семантически должны быть разными (не в objc или swift, а вообще). const это истинная константа (т.е. времени компиляции), а let по сути — переменная с «однократной записью» (или константа времени выполнения).
Kirpa
25.08.2016 16:23Читаемость ObjC — дело привычки и стиля кода. Конечно, можно написать нечитаемые конструкции с кучей скобок и большой вложенностью. Но подобные конструкции и в других языках читаются плохо.
По Swift — если вы про именованный аргумент, то я ниже ответил.ad1Dima
25.08.2016 16:27+2Obj-C провоцирует вложенность там, где в C -подобных языках будет точка либо стрелка. А вложенность читается труднее. спорить тут особо не о чем.
Kirpa
25.08.2016 21:16Честно говоря, не вижу разницы между точкой и квадратной скобкой в плане читаемости.
Под вложенностью я имел ввиду результат вызова метода, передаваемый как параметр для вызова другого метода. Что-то вроде:
[view animateWithDuration: [obj2 gimmeDuration] animation:[obj2 gimmeAnimation]] Что лично для меня не читается труднее чем: view.animateWithDuration(obj2.gimmeDuration(), obj2.gimmeAnimation())ad1Dima
26.08.2016 07:15+1[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
UIApplication.SharedApplication(new NSUrl(urlString));
Это еще для NSUrl не надо делать [[NSUrl alloc] init]ad1Dima
26.08.2016 12:12+1OpenUrl потерял
UIApplication.SharedApplication.OpenUrl(new NSUrl(urlString));
Kirpa
26.08.2016 13:17<про OpenUrl автор уже поправил>.
Опять-таки, лично для меня код на ObjC читается легко и приятно. Не хуже чем нижний пример, во всяком случае. А вот если нужно [[NSUrl alloc] init] делать, тогда конструкцию пора разбивать на две строки. Читаемость только выиграет, кстати.ad1Dima
26.08.2016 13:24+1Ёжики плакали, кололись
Все, кто постоянно пишет на Obj-C «легко» читают его. Более того, я даже лисп легко читал, когда писал на нем. Но трудно передать тот кайф, когда я с Obj-C вернулся на C#. Не единственной, но довольно значимой причиной этого кайфа было отсутствие необходимости постоянно считать скобки.Kirpa
26.08.2016 13:53У меня другой опыт. Никакого облегчения при переключении на Swift, Java или JS в связи с отсутствием скобок не испытываю. Хотя приходится немного привыкнуть к точкам, а потом к скобкам, когда возвращаешься обратно.
Но писать надо по-другому, что есть, то есть. Выше вы написали, что ObjC провоцирует вложенность. По-моему, наоборот. Провоцирует выносить в отдельные переменные, особенно конструкции типа [[Class alloc] init] Код длиннее получается, зато каждая отдельная строка — проще.
Xiot
25.08.2016 16:46+4Я лично являюсь сторонников подхода obj-c и swift, когда имена параметров являются частью сигнатуры метода. Читается как книга, особенно когда передается несколько параметров одного типа или большое кол-во. Править код значительно проще, особенно если автор не слишком задумывается над именованием переменных. Кроме того dequeueReusableCellWithIdentifier уже возвращает объект типа UITableViewCell, так что приведение типа избыточно.
Почему в c# "WithIdentifier" является частью метода, а не называется просто "GetDequeueReusableCell"?ad1Dima
26.08.2016 07:18Почему в c# «WithIdentifier» является частью метода, а не называется просто «GetDequeueReusableCell»?
Потому что я неправильно написал, а метод таки GetDequeueReusableCell
А про приведение типа, ф вот тоже удивился, но в первом попавшемся примере было так.
lasalas
25.08.2016 09:48+2ObjC — жуткая химера, создававшаяся изначально как препроцессор для C и эволюционировавшая затем во что-то совершенно непотребно. В XXI веке существование подобных пережитков не может имееть никаких оправданий.
NeoCode
25.08.2016 10:25+1Ну если сравнивать с современным метапрограммированием на C++ — то не такая уж и химера. А вообще конечно хорошо что появился Swift, так или иначе развитие языков программирования должно быть, и ошибки дизайна ранних языков (которые конечно же были) должны исправляться.
NeoCode
24.08.2016 22:33+2А мне ObjC как-то сразу понравился, хотя реальных проектов я на нем не делал.
Не синтаксис (он действительно вырвиглазный), а именно семантика. Возможность отправлять сообщения вместо вызова методов, динамика, рефлексия, возможность отправлять сообщения null-у. Всего этого мне очень не хватало в C++.
А Swift… он конечно аккуратный такой, но меня пугает, что в последней редакции они выкинули из языка даже такие основы основ как операции инкремента и декремента (++ и --). И не то чтобы сложно написать i=i+1, но вот для кого это было сделано? Как будто не для программеров, а для каких-то домохозяек, которых пугают непонятные символы.Kirpa
25.08.2016 01:27+4Синтаксис ObjC вырвиглазным кажется только по началу. Через несколько месяцев привыкаешь и остаётся только бонус в виде именованных аргументов. Потом языки с привычным С синтаксисом кажутся неудобными из-за отсутствия этой фичи.
Что до Swift и изъятия ++ и --, это неоднозначное на первый взгляд решение. Разработчики в результате обсуждения решили убрать по нескольким причинам.
1) Реальной пользы мало, i += 1 не намного длиннее, так что конструкция была добавлена скорее по привычке
2) Наиболее частое использование — увеличение индекса при итерации коллекций. Итерация в Swift делается другими, более безопасными и изящными способами.
3) Часто использовались в запутанных конструкциях, усложняющих понимание кода.
там и другие аргументы были, но менее убедительные, на мой взгляд.ad1Dima
25.08.2016 14:28+1> остаётся только бонус в виде именованных аргументов
такой уж и бонус. Придумывать название для каждого аргумента.Kirpa
25.08.2016 14:49+1Код пишется один раз, а читается много. Даже если это проект одной команды, не говоря уже о фреймворках и просто публично доступном коде. Поэтому лучше один раз чуть больше времени потратить на описание, зато экономить каждый раз при чтении на необходимости лезть в тело метода или документацию, чтобы понять за что отвечает тот или иной аргумент.
ad1Dima
25.08.2016 16:29+1нормально методы можно называть и без именованных аргументов.
Shannon
25.08.2016 17:28+1Именованные аргументы в Swift не обязательны, но их наличие частенько помогает
В js, кстати, можно что-то аналогичное делать теперь:
function fnc({a, b, c, d}) { return a + b - c + d } let rr = fnc({a: 1, b: 2, c: 3, d: 4})
ad1Dima
26.08.2016 07:20В C# тоже можно явно указывать имена аргументов. Ещё и в произвольном порядке (но не всегда стоит)
iqiaqqivik
25.08.2016 09:05+3Inplace increment (`i++`) сейчас не в моде, потому что он обманывает читателя: нумерики фактически везде иммутабельны, поэтому `i++` синтаксически неверно. Домохозяйкам это, может быть и непонятно, правда.
Shannon
25.08.2016 14:39+1Если интересно, вот тут создатель языка разъясняет про ++ и — https://github.com/apple/swift-evolution/blob/master/proposals/0004-remove-pre-post-inc-decrement.md
asdf87
25.08.2016 16:43Простите, а что в этом синтаксисе инкремента и декремента такого полезного по сравнению с i=i+1, чтобы его вообще нужно было вводить в языки? Он на 3-7 символов (в зависимости от того как форматировать выражение) короче? Или просто не как у всех?
NeoCode
25.08.2016 19:28Да просто после стольких лет использования практически во всех языках взять и выкинуть… странно. Вроде никому не мешали эти операторы. А у профессиональных программистов эти операторы уже в подсознании заложены — думаю многие будут чертыхаться, написав инкремент на автомате а затем вспоминая, что в swift же его нет.
IDMan
25.08.2016 00:53Ещё одно важное нововведение — это возможность писать код и видеть результаты в режиме реального времени.
Вы имеете ввиду playgrounds?NeoCode
25.08.2016 09:45REPL как таковой вообще должен быть у современных языков, и не только скриптовых. Думаю со временем это станет неотъемлемой частью IDE, как сейчас подсветка синтаксиса.
IDMan
25.08.2016 16:13Я не совсем понял, где в «продакшн» разработке в Xcode есть место результатам в режиме реального времени. Playground это песочница для изучение синтаксиса, ну пусть еще черновик отдельной функции и её отладка. Но в разработке приложений я не заметил никаких результатов в реальном времени. Или я не понял, что имеет в виду автор?
taujavarob
25.08.2016 16:42Swift не взлетел. В нём нет того шарма, что был в 1995 при рождении Java.
NeoCode
25.08.2016 19:36А был шарм?
Или скорее тогда ничего кроме С/С++ не было, и тут новый язык. Сейчас-то есть и C#, и Go, и Rust, и скриптовых немеряно.
Помню, когда я впервые прочитал про Java, первая реакция была — ну С++ без указателей, ну и что? :) К C# помню был какой-то интерес, потому что там появилась новая концепция «атрибутов», сразу «вау, что-то новенькое, интересно что же это».taujavarob
25.08.2016 19:47А был шарм?
Или скорее тогда ничего кроме С/С++ не было, и тут новый язык.
Был шарм. И были Паскаль и Дельфи и С++ и Ada и Prolog.
когда я впервые прочитал про Java, первая реакция была — ну С++ без указателей, ну и что?
Чисто стилистически это иной язык.
Bimawa
25.08.2016 16:43+1А мне кажется Swift УГ, и вот почему:
1. В первую очередь потому-что я его не изучал!
2. Есть Kotlin со всеми своим блекджеком и Java инфраструктурой.
3. Хочешь LLVM, есть GO в 100500 раз лучше Swift.
4. И, как не печально это осознавать, но ни какой новый язык не исправит убогое iOS SDK.
5. Если ты хочешь зарабатывать бабло на приложениях с максимальной выгодой ReactNative + Objective-C наше все!!!
Ну все а я пойду подожду что из этого всего выйдет и на сколько я на шутил про Swift правды.Nagg
25.08.2016 18:36А что котлин можно в iOS? :-)
lgorSL
Почему здесь приведено сравнение скорости с питоном, а не С, objective-C или хотя бы с Java? Питон же интепретируемый. Или Swift не настолько быстрый, чтобы сравнивать с компилируемыми языками?
Shannon
Скорее всего это отсылка к оригинальной презентации, что-то вроде «писать на свифте так же просто как на питоне, а результат в 3.9 раз лучше»
VolkovRoman
Согласен. Но, swift можно использовать и как интепретируемый язык по аналоги с питоном.
Например, «swift script.swift»
hz_name
Как вообще можно говорить о скорости работы языка программирования?? Ведь в результате компиляции получается машинный код.
По-моему это все равно что: «Русский язык быстр (скорость говорения некоторых предложений в 3,9 раза больше, чем на английском)».
taujavarob
Некоторых. Так как и в русском и в англ. всё можно выразить словом (или его аналогом) из четырёх букв, то в среднем практически одинаково.