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] 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)
Тогда неясно как они всю остальную скорость могут сделать.