Несколько "неожиданных открытий"

15 январь, 2008 - 10:21Андрей Зубинский

Началось всё с "разжёвывания" программки в несколько строк на Haskell, преобразующей запись заданного целого числа в римскую форму, например, - 9 в IX.

Собственно программка и её разжёвывание - здесь. Безусловно, можно и в каком-то смысле небесполезно (если есть свободное время) с этим примером повозиться. Но не суть и не обязательно. Билл Милл, мужчина головастый и профессиональный, в конце возни с Haskell-кодом тяжело выдохнул:

"Phew - that's an awful lot of information stuffed into a few pretty lines! I still have a hell of a time geting the types to match up so that I can write stuff like this, but that doesn't mean that I can't appreciate the beauty of how it all fits together." 

То есть, - фуххх, в этих нескольких строках столько информации! И весьма профессиональному и головастому специалисту по его же признанию требуется куча времени на освоение системы типов и приёмов программирования. Но, зато, кода красивый. С чем, в каком-то смысле, трудно не согласиться.

Немного погодя, Билл Милл попробовал сделать то же самое в том же самом функциональном стиле на Phyton - языке в общем и целом всё-таки более близком к императивным. Получилось по объёму примерно то же самое, а с учётом внесенных в обсуждении примера уточнений и модификации некоего nostrademons  - так и вообще очень изящно.

Но и это не суть на самом деле.

А суть в том, что мышка пробежала, хвостиком вильнула, яичко упало и разбилось, хоть и такое изящное и золотое "императивное исполнение" алгоритма преобразования не только яснее, оно ещё и существенно эффективнее, что в том же обсуждении убедительно продемонстрировал некто Кей Шлюе (комментарий от имени schluehk).

Вот это-то меня и смущает всё время.

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

Впрочем, практика покажет. В своё время Lisp был самым-самым, нынешние "функциональщики", предпочитающие языки новой волны, уже радостно его хоронят, Поглядим, что будет с новыми "самыми-самыми".

Ну а здесь покусились уже на святая святых объектного программирования - на наследование. И более чем разумно и обоснованно растолковали, почему оно "в большинстве случаев не исключительная возможность, а всего лишь упрощённый метод выражения подобия". Очень рекомендую почитать, весьма и весьма толково, и более чем очевидно, если, конечно, начинать об этом думать.

 Дальше - опять "неожиданное" открытие. Его сделал Департамент Национальной Безопасности США. С помощью созданного в Стенфордском университете сканера кода Prevent SQS и в результате масштабного сканирования (180 продуктов) выяснилось, что открытое программное обеспечение не менее "багливое", чем закрытое коммерческое.

А вывод может быть один. Ни ложки никакой нет, ни достойного  продолжения первой "Матрицы", ни серебряной пули, как её ни  называй.

Нет их.

И всё.