Re[3]: Функциональное программирование для всех
От: m.o.b. Россия  
Дата: 15.04.08 18:19
Оценка:
LP>Цена внесения изменений не зависит от парадигмы а зависит от соблюдений/не соблюдений общепринятых норм проектирования ПО, которые и для ООП и для ФП совершенно одинаковы. Кратко их можно сформулировать так: программы должны строиться из модулей, которые могут взаймодействовать друг с другом только по строго определенным абстрактным интерфейсам.

Угу. Когда программа написана, то все её модули 'взаимодействуют друг с другом только по строго определённым абстрактным интерфейсам'. А как часто у Вас получалось сразу же придумать лучший абстрактный интерфейс для новых модулей в новой программе? А цена изменения интерфейса в процессе проектирования для ФП (кстати, ООП тут ничем не лучше ФП, да и вообще этот подход ничем не лучше, кроме толщины книг ему посвящённых) очень высока. Добавили одну переменную в состояние -> правим все функции, потому что аргументы надо протаскивать по всему графу вызовов, ну и прочие прелести. По крайней мере, мой опыт таков. И вы не думайте, что модули у меня выходили в итоге монструазные и не абстрактны, нет, я всегда стремлюсь к минимальным интерфейсам — 20 функций для меня уже слишком много.

Но на Си к итоговым хорошим интерфейсам подобраться получается гораздо быстрее, чем на Haskell, например. Понимаю, что опыта у меня не много, но опять же, небольшое изменение в уже готовую программу на Си я вношу быстро, а в программу на Haskell — долго и упорно. Хотя, кажется, что текста пишется при этом меньше. Но локальное (казалось бы) изменение расползается на код всего модуля. Я, конечно, могу быть и не правым. Но мистер Джонс патриарх же, насколько я знаю. И у него в книге всё точно так же, как и в моих попытках постичь ФП. Может быть, я чего-то воспринимаю неправильно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.