Весьма мудрое на RSDNОсновная мысль: большая часть новых парадигм и веяний в программировании -- изменяют структуру программы на "высоком" уровне (вводятся новые единицы структурирования и новые взаимодействия между ними), в то время как на уровне отдельных методов все те же "операторы цикла"/"операторы ветвления" (ррррр, да, я школьный учитель
(
Read more... )
Comments 10
Expression - это выражение. А теперь помотай головой, и отвлекись от привычного понимания слово "выражение" :)
По-моему так будет еще идеальнее:
"ровно 1 конструкция, выражающая заданное действие"
Reply
А вот "ровно 1 конструкция" - формулировка спорная. something.sort_by{blah}.reject{blah}.map{blah}.first - это сколько конструкций? (учитывая, что в каждом blah может быть еще несколько "точек" - вызовов методов). А expression вроде как один (если я не путаю значение термина).
Reply
Reply
Reply
Reply
Тут дело в том, что каждое ветвление относится к некоторому подмножеству входных данных, то есть, к субтипу. А поскольку количество субтипов прибито количеством веток в свитче, получаем хреновое масштабирование.
Путь ООП - в том, чтобы протащить выбор в таком свитче как свойство субтипа. Которое реализуется как виртуальный метод. Путь ФП - там, где это свойство используется многократно, протащить функцию рядом с данными. (Оно же - паттерн Посетитель ( ... )
Reply
Но, кстати говоря, насколько я понимаю, ПМ бывает не только "switch'ем на стероидах", но и средством организации полиморфизма (напр., в Эрланге, где условия на аргументы метода накладываются именно средствами ПМ).
Reply
Вся польза от его (отсутствия) - вариации на тему Duff's device. Спагетти по-итальянски, с мясом индусских священных коров.
Reply
Reply
Leave a comment