Re[2]: Так в чем же принципиальные отличия ФП от ИП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.04.07 14:50
Оценка: +2
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>К сожалению, крупные примеры в функциональном стиле будут вряд ли интересны читателю, поэтому и ограничиваются примерами типа =take k . quicksort=.


А можно с этого места по подробнее. Мне почему-то все больше и больше кажется, что дело тут не в неинтересности "читателю", а в банальном отсуствии чего показать.

Стается мне, что эта отмазка (которую я слушу постоянно) такое же мошейничество как присловутый quicksort который может и красив, но никак не хочет работать с той же скоростью (даже близко), что императивный.

Другими словами — ФП отлично на микроуровне, когда нужно написать некий алгоритм, но вот средств композиции вепрхнего уровне у него нет. Модули не канают по сравненению с классами. Отсюда и появление такого количества гибридов ОО/Ф-языков.

LCR>Да, это закономерное впечатление. Более того сам Мартин утверждает, что в Скале лучше всего делать высокоуровневые объекты в соответствии с декомпозицией на объекты и обобщая классы до трейтов и миксинов, а их реализацию делать преимущественно в функциональном стиле. Примерно так и написан сам компилятор и стандартная библиотека — можешь глянуть исходники.


И что характерно — он не одинк. Эту точку зрения разделяет все больше и больше народу. Немерловцы тоже именно по такому пути проектировали свой компилятор. Интеграция тоже имеет такой же дизайн. Похоже это и есть сочетание лучших качеств двух миров.

LCR>Очень скользкая фраза... По причине выше, скорее всего на Скале будет мало чистых функциональных программ и всё ФП там представляет собой просто "сахарницу" средних размеров.


А кому нужны чистые фунциональные? Людям нужно писать программы проще, быстрее и удобнее.

LCR>В ФП паттерны часто являются просто ФВП. Ну вот fold — чем не паттерн? Или map-reduce? Или класс типов Monad?


Да, ничем не паттерны. Это библиотечные функции. Паттерн все же подразумевает не что больеше чем просто вызов фунции.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.