migmit: (Default)
[personal profile] migmit
Ну что, попробовал я таки этот Swift. Скачал бету XCode, распаковал, запустил. И доложу я вам: это штука с огроменным потенциалом. В смысле, ни фига не работает.

Я, честно сказать, думал проверить ихние дженерики своим любимым тестом, который C++ не прошёл, а, скажем, Java — вполне. Наивный.

Дело в том, что когда вы пишете код в XCode, то вам показывают места ошибок. Это очень удобно. Однако делается это путём запуска компилятора в фоне. А компилятор сей страдает падучей. И когда он сегфолтится — а это происходит довольно часто — весь XCode вылетает нафиг.

Дальше ещё веселее. Вы запускаете XCode заново, он восстанавливает тот же файл, снова прогоняет его через компилятор, тот снова сегфолтится, и XCode снова вылетает.

Я не смог запилить такой код, который проверял бы мой тест и при этом не сегфолтился.

Так что пока ихняя бета (которая beta than nothing) отправляется в корзину. Увы.

Date: 2014-06-09 07:53 pm (UTC)
From: [identity profile] migmit.livejournal.com
Помилуйте, если бы речь шла о сознательном противодействии, то всё было бы куда проще, был бы банальный const_cast или C-style cast. Я уже уменьшил свои требования и согласен не рассматривать хотя бы то, что традиционно считается грязным хаком (хотя и всё равно все делают). Но decltype — штука совершенно безопасная, она для того и придумана.

OK, как вы будете закрываться от того, что кто-то вместо cint использует написанный с совершенно другой целью макрос
#define mint(x) [v = int(x)] () mutable {return v++;}

?

Да, мне интересно, как далеко вас заведёт DTDD.

> конкретно эта ваша проблема

Извините, это ВАША проблема. Не моя.
Edited Date: 2014-06-09 07:53 pm (UTC)

Date: 2014-06-09 09:36 pm (UTC)
From: [identity profile] alex-public.livejournal.com
Я согласен, что decltype - это нормальная вещь. Потому и показал исправление.

А вот против этого вашего mint я уже защиту показывать не буду (хотя она тут же возникла в голове), т.к. это уже просто бред. Это приблизительно тоже самое, что требовать нормальной работы функции записи в файл при передаче ей дескриптора файла, открытого на чтение.

Кстати, если рассматривать уже такой уровень претензий, то что будет, если передать null вместо одного из Cons'ов в вашем примере на C#? )

Да, а ваш код с mint тоже вполне может быть использован с пользой. Только это тогда будет не гарантированно разделяемая константа, а гарантированно разделяемый счётчик или что-то подобное - тоже может быть полезная штука.

Date: 2014-06-10 07:06 am (UTC)
From: [identity profile] migmit.livejournal.com
> Это приблизительно тоже самое, что требовать нормальной работы функции записи в файл при передаче ей дескриптора файла, открытого на чтение.

Кстати, есть разработки, которые это учитывают. И не скомпилируют такую функцию. Светлой памяти Microsoft Vault, например.

> то что будет, если передать null вместо одного из Cons'ов в вашем примере на C#?

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