[identity profile] soonts.livejournal.com 2016-08-17 11:10 pm (UTC)(link)
Афтар приводит примеры кода с простыми багами, которые обнаруживаются за 1 минуту с отладчиком, и ещё за минуту чинятся.
Правильный, но неинтересный вывод из этого — на C# с лямбдами можно написать код с багами.
Какая неожиданность! Шо, уже придумали язык, на котором нельзя так?
Афтар же делает странный вывод о том, что концепция не работает.

Functional programming затащили нынче во все императивные языки совсем не ради safety, как почему-то решил афтар, а потому что функциональные абстракции для некоторых задач очень хорошо подходят.
Иногда можно написать немного простого функционального кода вместо кучи сложного императивного.
Иногда производительность лучше становится.
Иногда API design сильно упрощается.

Интересно, откуда афтар взял идею о том, шо если impure, то сразу unfeasible?

[identity profile] perdakot.livejournal.com 2016-08-17 11:41 pm (UTC)(link)
> шо если impure, то сразу unfeasible?

А как узнать, что там в кишках творится? Есть есть f и g, можно ли их выполнять в любом порядке, можно ли их выполнять парралельно?

[identity profile] soonts.livejournal.com 2016-08-18 03:54 pm (UTC)(link)
Откуда вы узнали, что они такие есть, f и g?
И откуда у вас стремление их выполнить?
Похоже у вас есть какие-то ожидания, шо именно они вычисляют. Откуда?

Вот оттуда же вы можете узнать, можно ли их параллельно.

Если сами написали, вы и так вероятно в курсе.
Если SDK/библиотека, читайте документацию.
Если untrusted код, я вам не советую выполнять ни одну из них, совершенно независимо от языка и рантайма. Разве что в хорошей песочнице (CLR + sandbox, или процесс с закрученными правами, или уж VmWare/HyperV/Xen), и то с оговорками.

[identity profile] perdakot.livejournal.com 2016-08-18 03:58 pm (UTC)(link)
> Если сами написали, вы и так вероятно в курсе.

Наша команда написала. Коллективное творчество. Полгода назад захотелось несколько копий f запускать, каждую в своем треде. Пришлось просматривать весь код.

[identity profile] soonts.livejournal.com 2016-08-18 04:30 pm (UTC)(link)
Так у вас куча legacy кода, написанного командой (вероятно за много лет) в предположении, что он будет работать в одном потоке?
Тогда ответ на ваши вопросы выше очевиден.
>можно ли их выполнять в любом порядке, можно ли их выполнять парралельно?
Нет, ваши функции нельзя выполнять параллельно.

Алсо вы могли не просматривать весь код, а починить функции, сделав их thread safe.

[identity profile] perdakot.livejournal.com 2016-08-19 01:58 am (UTC)(link)
> в предположении, что он будет работать в одном потоке?

Есть миллиард функций, какие-то можно выполнять в одном потоке, какие-то нет.

> Нет, ваши функции нельзя выполнять параллельно.

Оказалось, что можно (ну или я совсем немного поменял, чтобы было можно).

> а починить

Ага, весь миллиард. А если сразу писать все thread safe, то получится то, про что написано по ссылке в посте.

[identity profile] yussouf.livejournal.com 2016-08-18 12:45 am (UTC)(link)
так!

под каждым словом!

> Афтар приводит примеры кода с простыми багами, которые
> обнаруживаются за 1 минуту с отладчиком, и ещё за минуту
> чинятся.

в конце концов, я не знаю... если пользуешься deferred execution методом - можно бы и помнить, что у него такая особенность
и не делать глупостей сразу, до отладчика