[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



 >> А для простых задач типа бизнес логики и текстовых фильтров
 >> функциональщина нахрен не сдалась.
 >> 
> Мне всегда казалось, что в приличном обществе принято подобные
> утверждения подкреплять _конкретными_ примерами, а не отправлять за
> ними "куда-то туда".
http://www.iro.umontreal.ca/~lapalme/Algorithms-functional.html
О! Целая книжка!
Не знаю, что там, первая ссылка в гугле,думаю, что-нибудь вроде алгоритма
Боера-Мура на Хаскеле или Ахо-Карасика в чисто функциональном виде.

google://functional algorithms
для полной радости.

http://www.techfak.uni-bielefeld.de/~kurtz/publications.html
Там можно найти диссертацию. Относительно свежая, 95-ого года.
Его прочие работы там же.
Остальное искать самостоятельно на siteseer-е.

> И опять-таки, расскажи это в ru.lisp; особенно
> практикующим программистам, которые на этом самом лиспе решают
> реальные задачи.
Товарищам из ru.lisp нечего мне сказать по теме алгоритмов.  Что
касается чистоты функционального подхода в лиспе - тут все предельно
просто. Открываем исходники Emacs-а и считаем количество progn, явных и
неявных, а также количество let и убеждаемся в том, что функциональщина
в чистов виде - это пшык: красивенько реализовали пару-тройку задач на
деревьях с помощью рекурсии (вычисление выражения, или
производную взять - типичные примеры), Quick Sort на Haskel-е и все на
этом. Все остальное о лиспе - не имеет собственно к функциональной
парадигме ни малейшего отношения. Там больше о "динамичности" языка.
Это, знаете ли, Algol-60, Lua, Java Script, Ruby, Python, Pike,
Smalltalk, Objective C и десятки прочих. Этим сейчас НИКОГО не удивишь.
Про нестрогую типизацию типизацию - это тоже не новость.
Про то, насколько она зулез - опять же к Зефирову.
Я считаю, что она хороша только для микроскопических задач.
В этом отношении, кстати, весьма любопытен Pike.
Там как бы и нашим и вашим. Есть int, string, map, set, но есть такой
тип mixed - нетипизированный. Но еще не все. Там можно определить
переменную даже так
   int|string result;
со всеми положенными проверками compile time и runtime
предикатами само собой.

Что касается изменчивости синтаксиса и семантики, смотри Forth, TCL,
Lua.  Ни один из них не функциональный.

Есть, конечно, красивые примеры, например ленивые списки, очень красиво,
и очень здорово, но я что-то не видел из аггитирующих за лисп фанатов
Lazy Lisp. В основном Common Lisp пропогандируют.  Ленивые списки на
CL/Scheme - это гламурненко, но это можно сделать на любом динамическом
императивном ЯП, на ЛЮБОМ. Лисп и Algol60 сделали свое дело 49(!!!) лет
назад.

 >> Но _читать_ про функциональный подход, конечно же, нужно.  Это
 >> структурирует пустоту в голове. В некоторых случаях воспитывает чувство
 >> красивого в математике и программировании. То есть, это имеет смысл по
 >> крайней мере для педагогических воспитательных целей.
> Так изначально именно об этом и шла речь.
Изначально речь шла об аргументах типа "испорченные императивным
подходом", "начинать образование нужно обязательно с функциональных
языков" и прочем. Так вот Бага Яга против. Начинать учиться нужно с
книг, а не с языков программирования. И тогда и функциональный и
императивный подходы займут положенные им места в голове, прекрасно
дополняя и облагораживая друг друга. Без всяких перегибов и дешевой
пропаганды.

-- 
Best regards, Aleksey Cheusov.


Reply to: