All streams
Search
Write a publication
Pull to refresh
2
0
Andrew Vasilyev @retran

User

Send message
а) На хабре уже есть серия из кажется 6 статей Джоэля Спольски с описанием и команд, и воркфлоу и всего чего угодно.
б) Понятие «интуитивный интерфейс» очень относительно. Лично мне, как разработчику привыкшему общаться с компьютером путем отдачи команд на гибких формализованных языках, работать с консолью сильно проще, чем лезть за мышкой и нажимать на кнопки. А главное — продуктивнее. И выигрыш по времени ВНЕЗАПНО окупает изучение документации (не говоря о том, что это прокачивает мозги и помогает понять как на само деле работает продукт).
Я не пропихиваю состояние, а определяю рекуррентное соотношение. И читать ее надо именно как рекуррентное соотношение.
Это нормально, перестроиться после того как уже есть опыт императивного программирования очень сложно. Зато потом на стыке двух парадигм получается по-настоящему красивый код.

А вот люди которые никогда в жизни не программировали часто плохо понимают императивных подход, зато легко врубаются в функциональный. Он на самом деле более естественный. Только надо понять, что вы строите не цепочку шагов, а набор взаимосвязанных утверждений, описывающих задачу.
Согласен. Но это же не категоричное «всегда» как в вашем комментарии ;)
Ну, в принципе, ничто не мешает составить правильный словарь и писать на Форте хоть в функциональном, хоть в каком другом стиле ;)))

Но в базовой идеологии, да, много очень общего.
Тем, что функциональщина очень легко и прозрачно компилируется именно в шитый код.
Поинтересуйтесь тем, что такое «шитый код» и почему он иногда может быть быстрее обычного. Это если не учитывать разворачивание функциональных конструкций в императивные.
Если важна производительность — то тогда уже надо искать компромисс. Согласен, это проблема.
Значит надо строить иерархии или вводить примеси.
Правильный компилятор функцию, которые вызывается слишком часто, заинлайнит. Или PHP до сих пор интерпретируется?
Зависит от правильности декомпозиции.
а если хочу не просто sum, а сум с фильтрацией по лямбде?
Ок, я привык к дотнету в котором оно ленивое уже давно ;)

Вообще в моем примере как раз показано, что можно написать такой for который будет быстрее неленивой функциональной реализации и аналогичной ленивой.
Я там дальше примерно так и написал ;))
Ну если начать обсуждать оптимизацию компилятором, то функциональные циклы часто используют хвостовую рекурсию, тоже разворачиваются на ура и тоже могут оказаться быстрее for.
А если мы забудем про lazy evaluation и будем считать все полностью?

И если бы в ruby был настоящий сишный for со счетчиком (а не итераторный foreach), то вариант с двумя счетчиками работал бы быстрее.

Что-нибудь типа:

for (var i = 0, j = 0; i < 100000000000 && j < 50; i++)
{
if (prime(i))
{
res[j] = i;
j++;
}
}

(псевдосишарп)
Ну, и да — КЛАДР был стандартом не только для госучреждений, но и вообще самой стандартной БД адресов в стране и активно используется и в множестве enterprise-софта.
С учетом того, что цикл идиоматический, то да. А если не идиоматический, то, имхо, вероятность ошибиться с инициализатором или условием останова цикла больше.

А насчет stateless — его преимущества гораздо лучше видны не на таких коротеньких примерах, а на сложных преобразованиях последовательностей сложных структур данных.
Все изменилось и уже давно. В смысле более 5 лет назад.

И есть даже такое (по сути ESB для интеграции ведомств в масштабе всей страны).

Information

Rating
Does not participate
Date of birth
Registered
Activity