Сила магии зависит не только от длины магического жезла.
sorhed — 18.08.2010 Не знаю, обращал ли на это кто-нибудь внимание, но известно: мир, в котором живут и работают программисты, требует того, что в обычном мире называлось бы магией [магия обычно подразумевает несоблюдение законов сохранения — то есть создание чего-то из ничего и последующее бесследное его уничтожение, а это именно и есть то, с чем имеют дело программисты каждый день; нет в этом мире и законов энтропии, и так мы создаём порядок из хаоса — за что в реальном мире приходится расплачиваться перегревающимися процессорами и круглогодичным апгрейдом]. Как и в мифологическом пространстве, в мире программирования существуют различные сорта магии1,Обычное (процедурное/императивное) программирование похоже на грубый, непосредственный контроль над реальностью: маг может повелеть чайнику вскипеть, но для этого ему придётся тайными и сложными заклинаниями описать всю процедуру в соответствии с изучаемыми ими в течение всей жизни магическими законами, и, как правило, это настолько сложно, что гораздо проще донести его до конфорки и включить газ. Более продвинутые волшебники могут вызывать себе в помощь демонов (объекты из сторонних библиотек), поручать им какие-то задачи, а когда необходимость в них исчезает — избавляться от них, щёлкнув пальцами; но демоны своенравны, и далеко не всегда они делают то, о чём их просили. Немалое время приходится посвящать и изучению древних языков (коммуникационных протоколов), чтобы иметь возможность общаться с потусторонними силами.
Но функциональное программирование — это иной, совершенно особенный сорт магии: как будто бы закончился этап ученичества, связанный с мелкими изменениями в ткани реальности, и наступило настоящее искусство. Функциональное программирование — это магия трансформации: сама сила природных стихий, пройдя через сложные конфигурации, создаваемые непрерывным ментальным усилием мага, превращается в последовательность действий, необходимых для совершения желаемых изменений. И хотя это требует глубокого постижения тайных манускриптов, повествующих о монадах, и категориях, и действиях без изменений, и изменениях без действий — затраты энергии, необходимой для творения магии, значительно уменьшаются.
В глубокой древности мудрец Уолл сформулировал три добродетели, равно необходимых и программисту, и магу: лень, нетерпение и наглость — и функциональное программирование способствует достижению каждой из них.
1 — не совсем то же самое, что парадигмы.