metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-06-03 01:11 am

swift

Эппл выкатило новый язык: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2
Алгебраические типы есть, паттерн-матчинг есть, иммутабельность есть, замыкания, анонимные функции есть, трейты есть, заумные ограничения на параметры генерик-типов есть.

[identity profile] divine-assass1n.livejournal.com 2014-06-02 10:28 pm (UTC)(link)
https://twitter.com/erniemiller/status/473555557849108481

[identity profile] metaclass.livejournal.com 2014-06-02 10:58 pm (UTC)(link)
Сделали обратно по отношению к руби. Очень ок :)

[identity profile] blackyblack.livejournal.com 2014-06-03 03:57 am (UTC)(link)
Покарай их, святой Джобс.

[identity profile] vissarion.livejournal.com 2014-06-02 10:42 pm (UTC)(link)
Кто еще не придумал свой язык с опциональной типизацией?
MS - TypeScript
Google - Dart
Facebook - Hack
Apple - Swift

Естественно компании друг друга ненавидят и оно все поддерживается только одной своей компанией
Dart никогда не будет в IE ив iOS,
Swift никогда не будет на андроиде.

Все будет работать только через кросс-компиляцию, а Js - это новый ассемблер

[identity profile] thedeemon.livejournal.com 2014-06-03 05:01 am (UTC)(link)
А где в свифте опциональная?
Type inference - это не то же самое.

[identity profile] mendor (from livejournal.com) 2014-06-04 01:00 pm (UTC)(link)
Свифтом в т. ч. занимается товарищ (http://www.linkedin.com/pub/joe-pamer/4/331/62), ранее пиливший в MS F# и TypeScript, кстати.

[identity profile] gds.livejournal.com 2014-06-02 10:50 pm (UTC)(link)
впервые могу сказать про эппловские измышления что-то типа "пойдёт" / "не говно".

[identity profile] victorgr.livejournal.com 2014-06-02 10:57 pm (UTC)(link)
Как я понимаю, swift - замена Objective-C. Так что армия разработчиков у них уже в запасе.

На первый взгляд swift очень похож на ES6, так что вторая армия разработчиков у них так же в запасе.

Ну а глядя на все плюсы языка, у них есть даже такая армия, которая никогда в сторону Эппла не смотрела.

[identity profile] metaclass.livejournal.com 2014-06-02 11:00 pm (UTC)(link)
Функциональщики уже строятся в очередь за маками, им наконец-то разрешать писать код для енд-юзеров, а не только факториалы и серверные бек-енды :)

[identity profile] gds.livejournal.com 2014-06-02 11:11 pm (UTC)(link)
да ну, зачем это, если дело только в том, что код под маки стало гораздо легче генерить.

[identity profile] swizard.livejournal.com 2014-06-02 11:13 pm (UTC)(link)
а ничё такой, кстати

[identity profile] sbj-ss.livejournal.com 2014-06-03 02:16 am (UTC)(link)
Не могу понять, в чём подвох анального характера. Ну не может же его у яблочников не быть.
Там в EULA часом нет "программы, написанные на SWIFT, лицензированы для исполнения только по средам на освящённых макбуках после ритуального посвящения в пидорасы метросексуалы"?

[identity profile] thedeemon.livejournal.com 2014-06-03 05:04 am (UTC)(link)
Примерно так. Токмо iOS и Mac OS.

[identity profile] sbj-ss.livejournal.com 2014-06-03 11:25 am (UTC)(link)
Это-то при наличии gcc можно считать временным явлением, Objective C тому примером.

[identity profile] thedeemon.livejournal.com 2014-06-03 12:22 pm (UTC)(link)
Ну так без эпловских библиотек и рантайма этот Obj-C никому нафиг не сдался. Разве на нем пишут хоть что-нибудь для неяблочных систем/девайсов?

[identity profile] dmytrish.livejournal.com 2014-06-03 12:35 pm (UTC)(link)
В линуксах вроде можно упороться и поставить gobjc, даже какие-то древние тулкиты вроде GNUstep есть портированные под линукс. Похоже, что проблема больше культурная, оно вроде как Mono — и можно, а писать под него особо никто не спешит.

[identity profile] sbj-ss.livejournal.com 2014-06-03 01:04 pm (UTC)(link)
Есть отморозки энтузиасты, пишущие под GnuSTEP/Cocotron, местами даже успешно.
Вроде даже что-то доводилось встречать под Windows.

[identity profile] jakobz.livejournal.com 2014-06-03 05:50 am (UTC)(link)
Во-первых там Reference Counting вместо GC, например.

Во-вторых оно компилируемое, а не JIT. А это скорее всего минус рефлекшн, и всякое остальное рантайм-метапрограммирование (по крайней мере я в доке про это ничего не нашел). Получил строчку из БД - извольте отмэппить руками. Для сериализаторов - тоже наверное придется генерить исходники руками.

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

[identity profile] jerom.livejournal.com 2014-06-03 07:22 am (UTC)(link)
А отказ от gc - это не шаг назад? По скорости предсказуемо, но будет же течь все!

[identity profile] lionet.livejournal.com 2014-06-03 10:09 am (UTC)(link)
Там ARC, как я понимаю. А Arc != naive refcounting. Он и сейчас-то в ObjC работает с точки зрения программиста аналогично GC (ничего не делаешь, всё работает, за исключением пары исключений).

[identity profile] jakobz.livejournal.com 2014-06-03 11:32 am (UTC)(link)
Ну reference counting даже в плюсах автоматический. Что не отменяет того, что циклически-ссылающиеся объекты сами по себе не собираются. В доке явно написано что надо один конец помечать.

Я так понимаю это apple так параноидально парится за память и отсутствие лагов на UI - даже ценой того, чтобы заставить всех прикладных разработчиков писать без GC.

[identity profile] metaclass.livejournal.com 2014-06-03 11:35 am (UTC)(link)
Мне эта идея с weak ссылками кажется разумным компромиссом.
Я готов отказаться от GC, только бы никогда не видеть как лагает мой софт в UI, не могу, у меня тормоза видимые вызывают желание все выкинуть и переписать.

[identity profile] thedeemon.livejournal.com 2014-06-03 12:24 pm (UTC)(link)
Только там что-то много видов ссылок ввели. Помимо strong и weak еще какие-то unowned, плюс таки есть просто указатели.

[identity profile] jakobz.livejournal.com 2014-06-03 12:49 pm (UTC)(link)
А что там в оперднях вообще лагать может? Там максимум - пара десятков миллисекунд же. Я так понимаю из-за GC могут заметно лагать только всякие гей-анимации на андроидах и айфонах. Если нет плавного медленного движения - хрен ты заметишь лаг от GC.

Как по мне, языки без GC - это именно что паранойя в большинстве случаев. Если только у тебя не realtime с миллисекундными допусками.

[identity profile] metaclass.livejournal.com 2014-06-03 01:06 pm (UTC)(link)
DataGridView в дотнете, глаза б его не видели. Иногда рендер тормозит так, что сдохнуть можно.
Ну и реакции на кнопки, переключения, меню, итд. Подтупливает иногда.

[identity profile] jakobz.livejournal.com 2014-06-03 01:17 pm (UTC)(link)
А ты уверен что это из-за GC?

[identity profile] dmytrish.livejournal.com 2014-06-03 11:51 am (UTC)(link)
Я люто, бешено ненавижу iOS, но когда мой андроидофон секунду мне показывает иконки на home screen, я начинаю бешено ненавидеть gc и мечтать о rc, пусть и за счет памяти.

[identity profile] levgem.livejournal.com 2014-06-04 01:20 pm (UTC)(link)
У ObjectiveC всё в порядке с рефлекшном вроде

[identity profile] ivanzoid.livejournal.com 2014-06-04 05:57 pm (UTC)(link)
не-не, с рефлекшеном в obj-c очень хорошо. Буквально в текущем проекте делал рантаймовую сериализацию из пропертей в JSON-значения и обратно.
Сам Swift детально пока не смотрел, но раз они заявляют что оно совместимо со старым рантаймом, значит всё должно быть так же.

[identity profile] jakobz.livejournal.com 2014-06-04 10:54 pm (UTC)(link)
Тогда неясно как они всю остальную скорость могут сделать.

[identity profile] blackyblack.livejournal.com 2014-06-03 04:01 am (UTC)(link)
Скучный какой-то. Выкатили бы они свою реализацию пролога, было бы круто.

[identity profile] divine-assass1n.livejournal.com 2014-06-03 05:32 am (UTC)(link)
Очень смешно

[identity profile] nivanych.livejournal.com 2014-06-03 06:36 am (UTC)(link)
Нужно в другую сторону — агда, но только "для всех", чтоб любая домохозяйка смогла!
Ведь они же Apple, чо б им не повысить всякую там юзабельность и интуитивную понятность?
Вот это был бы язык, вот это я понимаю! ;-)

[identity profile] dmytrish.livejournal.com 2014-06-03 11:53 am (UTC)(link)
iAgda!

Думаю, для хипстеров бы прокатило. Надо просто сказать «революционный подход, смотрите, как просто зависимые типы решают насущные проблемы» + несколько презентаций в стиле Apple с харизматичным категорщиком.  

[identity profile] nivanych.livejournal.com 2014-06-03 12:21 pm (UTC)(link)
Ну и компилятор iGHC тоже давно бы пора!
abbra: (Default)

[personal profile] abbra 2014-06-03 07:15 am (UTC)(link)
Быстрый наброс от автора Rust: http://graydon2.dreamwidth.org/5785.html

[identity profile] potan.livejournal.com 2014-06-03 07:25 am (UTC)(link)
switch - оперватор, а не выражение. return нужен.
Рано еще мак покупать...