Re[10]: про провал ООП
От: Воронков Василий Россия  
Дата: 24.09.10 12:04
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ВВ>>ОК, имелось в виду изменяемое состояние, если это не было понятно из контекста.

AVK>А теперь возвращаемся к твоему исходному утверждению — если туда подставить изменяемое состояние, то оно уже несколько не так звучит, не находишь?

Ничего не понял. Что не так звучит?

ВВ>>Важнее то, что ФП и ООП предполагают разный подход к дизайну.

AVK>Разный. Но ортогональный, а не противоположный. Это важно.

Может, и не противоположный, но взаимоисключающий.

ВВ>> ООП — это такая пирамида из кирпичей, и чем выше, тем больше эти кирпичи становятся, более специфицированным становится их поведение, а вместе с ней и внутренняя сложность, включая сюда разнообразнейшие инкапсуляции поведений, состояний и проч.

AVK>Ничего не понял. Какие, нафик, кирпичи?

Все очень просто. В ООП и ФП разные принципы декомпозиции. В ООП ты мыслишь в категориях *сущностей* и их поведения, отношений между ними и пр. Производя декомпозицию, ты выделяешь новые виды сущностей.

В ФП ты мыслишь в категориях *действий*. Сущностей, т.е. таких странных зверей, которые объединяют в себе как данные, так и функции, в ФП нет. Есть данные — отдельно. Есть операции — отдельно. Соответственно, мы производим декомпозицию на уровне действий, т.е. комплексные действия разделяем на простые, новые действия получаем путем комбинирования старых и пр.

ВВ>>Самый цимус ООП — генерализация при работе с сущностями, т.е. объекты разные, имеющие свои особенности реализации, но работаем мы с ними через общий простой контракт.

AVK>Это называется полиморфизм. В ФП языках тоже бывает.

Это ты к чему? Ну да, частный случай полиморфизма, который прекрасно себя чувствует и без всякого ООП.

AVK>Функциональный тип, собственно, это оно и есть. ООП в этом плане отличается тем, что позволяет создавать полиморфную иерархию. Но ФП это никак не противоречит.


Причем тут функциональный тип?
Полиморфную иерархию можно создать и через алгебраические типы.

ВВ>> Соответственно, усложнение программы == увеличение внутренней сложности объектов при сохранении внешней простоты.

AVK>Крайне спорный вывод, требующий доказательств.

Что тебе кажется спорным? Может, я неясно выразился? Любая программа так или иначе растет количественно. Идеал ООП — чтобы количественный рост не переходил в качественный. Т.е. у нас как был раньше фиксированный набор контрактов — он так и остается. В реальности же реализации объектов меняются, появляются новые объекты и пр.

ВВ>>А генераторы там или монады — ИМХО! — к реальному ФП имеют отношение не больше, чем WWF к этому самому ФП.

AVK>Опять же крайне спорно и бездоказательно.

Давай от противного. С чего ты решил, что монады имеют какое-то отношение к ФП?
Re[10]: про провал ООП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.09.10 12:07
Оценка:
Здравствуйте, tripol, Вы писали:

T>Собственно детальки не могут обладать каким либо интеллектом и интеллектуальной обработкой

T>информации, поскольку у них нет памяти и они не могут помнить состояний. Получается какая то
T>"сухая" конструкция, которая может использоваться для чисто каких то "тупых" целей.

Ага, например для "тупого" парсера...
Re[9]: про провал ООП
От: mrTwister Россия  
Дата: 24.09.10 12:07
Оценка: +1
Здравствуйте, samius, Вы писали:

T>>Это все именно ООП паттерны, так как они основаны на объектной декомпозиции.

S>Естетсвенно что в ФП аналогичные вещи основаны на функциональной декомпозиции.
Ну да.

S>Вопросы к транскрипции этих "учебников". Вроде бы в каждом из них не написано, что все эти паттерны придуманы в рамках ООП. Там написано что такие вещи делают в ООП "вот так". Происхождению самих приемов внимание не уделяется.

И опять да. Я, таким образом, лишь обратил внимание, что подавляющее большинство приемов объектно-ориентированной декомпозиции не предусматривают изменяемое состояние. Соответственно, утверждение, что ООП — это "один большой побочный эффект" является ложным.
лэт ми спик фром май харт
Re[8]: про провал ООП
От: Воронков Василий Россия  
Дата: 24.09.10 12:08
Оценка: -1 :)
Здравствуйте, mrTwister, Вы писали:

T>Здравствуйте, Воронков Василий, Вы писали:


ВВ>>Речь была именно про изменяемое состояние.

T>Изменяемое состояние допустимо в ООП, но необязательно.

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

ВВ>>Ну где-то так и есть. Перечисленные вами паттерны — это ООП паттерны. Остальные — просто паттерны, к ООП никакого отношения не имеющие.

T>Это все именно ООП паттерны, так как они основаны на объектной декомпозиции.

Разве? Ну где тут необходимость в объектной декомпозиции на самом-то деле?
Попробуйте вот интереса ради реализовать эти паттерны, скажем, на F#. Без классов, разумеется.

ВВ>>Вообще. В "учебниках" — да, сочетание "ООП" рядом с названиями этих паттернов иногда употребляется. Ну так это вопрос к авторам этих "учебников".

T>Вопросы к GoF, Фаулеру и пр.?

Фаулера не трожьте
А у ГОФа, да, не мешало бы спросить, из каких лиспов источников они свои паттерны позаимствовали.
Re[10]: про провал ООП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.09.10 12:10
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>Здравствуйте, samius, Вы писали:


S>>Вопросы к транскрипции этих "учебников". Вроде бы в каждом из них не написано, что все эти паттерны придуманы в рамках ООП. Там написано что такие вещи делают в ООП "вот так". Происхождению самих приемов внимание не уделяется.

T>И опять да. Я, таким образом, лишь обратил внимание, что подавляющее большинство приемов объектно-ориентированной декомпозиции не предусматривают изменяемое состояние. Соответственно, утверждение, что ООП — это "один большой побочный эффект" является ложным.

В абсолютном плане — да, ложным. Но относительно 99% ООП оно справедливо.
Re[11]: про провал ООП
От: tripol  
Дата: 24.09.10 12:13
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, tripol, Вы писали:


T>>Собственно детальки не могут обладать каким либо интеллектом и интеллектуальной обработкой

T>>информации, поскольку у них нет памяти и они не могут помнить состояний. Получается какая то
T>>"сухая" конструкция, которая может использоваться для чисто каких то "тупых" целей.

S>Ага, например для "тупого" парсера...


А кто говорит, что парсер умен? Это просто некий автомат, который выполняет то, для
чего предназначен.

Где обучаемость, способность запоминать и воспроизводить информацию?
Re[11]: про провал ООП
От: tripol  
Дата: 24.09.10 12:18
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, tripol, Вы писали:


T>>Собственно детальки не могут обладать каким либо интеллектом и интеллектуальной обработкой

T>>информации, поскольку у них нет памяти и они не могут помнить состояний. Получается какая то
T>>"сухая" конструкция, которая может использоваться для чисто каких то "тупых" целей.

S>Ага, например для "тупого" парсера...


И даже парсеру требуется помнить состояние для его работы, собственно
вызов функции это тоже "запомнить" состояние, поскольку запоминается
адрес вызвавшей функции в стеке...
Re[12]: про провал ООП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.09.10 12:20
Оценка:
Здравствуйте, tripol, Вы писали:

T>Здравствуйте, samius, Вы писали:


S>>Здравствуйте, tripol, Вы писали:


T>>>"сухая" конструкция, которая может использоваться для чисто каких то "тупых" целей.


S>>Ага, например для "тупого" парсера...


T>А кто говорит, что парсер умен? Это просто некий автомат, который выполняет то, для

T>чего предназначен.
Много чего выполняет то для чего предназначено...

T>Где обучаемость, способность запоминать и воспроизводить информацию?

А какие проблемы с этим? Можно и обучаемый парсер зарядить. В общем случае с воспроизведением в ФП проблем нет, но за воспроизводящим парсером не ко мне.
Re[12]: про провал ООП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.09.10 12:21
Оценка:
Здравствуйте, tripol, Вы писали:

T>Здравствуйте, samius, Вы писали:


S>>Ага, например для "тупого" парсера...


T>И даже парсеру требуется помнить состояние для его работы, собственно

T>вызов функции это тоже "запомнить" состояние, поскольку запоминается
T>адрес вызвавшей функции в стеке...

За многоточием вывод о невозможности ФП?
Re[13]: про провал ООП
От: tripol  
Дата: 24.09.10 12:22
Оценка:
Здравствуйте, samius, Вы писали:

T>>Где обучаемость, способность запоминать и воспроизводить информацию?

S>А какие проблемы с этим? Можно и обучаемый парсер зарядить. В общем случае с воспроизведением в ФП проблем нет, но за воспроизводящим парсером не ко мне.

Проблемы в том, что обучение это побочный эффект в ФП.
Re[14]: про провал ООП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.09.10 12:23
Оценка:
Здравствуйте, tripol, Вы писали:

T>Здравствуйте, samius, Вы писали:


T>>>Где обучаемость, способность запоминать и воспроизводить информацию?

S>>А какие проблемы с этим? Можно и обучаемый парсер зарядить. В общем случае с воспроизведением в ФП проблем нет, но за воспроизводящим парсером не ко мне.

T>Проблемы в том, что обучение это побочный эффект в ФП.


Чюш
Re[13]: про провал ООП
От: tripol  
Дата: 24.09.10 12:24
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, tripol, Вы писали:


T>>Здравствуйте, samius, Вы писали:


S>>>Ага, например для "тупого" парсера...


T>>И даже парсеру требуется помнить состояние для его работы, собственно

T>>вызов функции это тоже "запомнить" состояние, поскольку запоминается
T>>адрес вызвавшей функции в стеке...

S>За многоточием вывод о невозможности ФП?


Нет, вывод о том, что в ФП состояния пытаются скрыть за вызовом функций.
Можно сказать, что выполнение функции это то же состояние.
Re[15]: про провал ООП
От: tripol  
Дата: 24.09.10 12:25
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, tripol, Вы писали:


T>>Здравствуйте, samius, Вы писали:


T>>>>Где обучаемость, способность запоминать и воспроизводить информацию?

S>>>А какие проблемы с этим? Можно и обучаемый парсер зарядить. В общем случае с воспроизведением в ФП проблем нет, но за воспроизводящим парсером не ко мне.

T>>Проблемы в том, что обучение это побочный эффект в ФП.


S>Чюш


Ага, запомнить, значит скрытое состояние?
Re[10]: про провал ООП
От: Воронков Василий Россия  
Дата: 24.09.10 12:27
Оценка:
Здравствуйте, tripol, Вы писали:

T>Собственно детальки не могут обладать каким либо интеллектом и интеллектуальной обработкой

T>информации, поскольку у них нет памяти и они не могут помнить состояний. Получается какая то
T>"сухая" конструкция, которая может использоваться для чисто каких то "тупых" целей.

Откуда такие предрассудки?
Во-первых, с чего вы взяли, что парадигма языка программирования должна моделировать объекты реального мира — деревья, людей, кошек с собачками? По мне так сама эта идея довольно бредовая.

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

Из того, что вы вместо класса Туалет с методом Сходить, сделаете функцию Сходить_В_Туалет, которая в качестве параметра будет принимать структуру, описывающую туалет, а возвращать... ну не будем об этом... и не сохранять результаты своей деятельности "по месту", в качестве "состояния", то данная функция, поверьте, совсем не потеряет в интеллектуальности.
Re[12]: про провал ООП
От: FR  
Дата: 24.09.10 12:31
Оценка:
Здравствуйте, tripol, Вы писали:

T>Где обучаемость, способность запоминать и воспроизводить информацию?


В прологе конечно.
Re[11]: про провал ООП
От: tripol  
Дата: 24.09.10 12:34
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, tripol, Вы писали:


T>>Собственно детальки не могут обладать каким либо интеллектом и интеллектуальной обработкой

T>>информации, поскольку у них нет памяти и они не могут помнить состояний. Получается какая то
T>>"сухая" конструкция, которая может использоваться для чисто каких то "тупых" целей.

ВВ>Откуда такие предрассудки?

ВВ>Во-первых, с чего вы взяли, что парадигма языка программирования должна моделировать объекты реального мира — деревья, людей, кошек с собачками? По мне так сама эта идея довольно бредовая.

Потому что, когда у чего то есть границы: внутреннее — внешнее, то не возникает чуши, подобно: "жедудок кошки
используется в жигулях для ... чего нибудь".

ВВ>Наконец с чего это отсутствие побочных эффектов должно приводить к... гм... "потере интекллекта"? На ФЯ нельзя писать программы, которые занимаются "интеллектуальной обработкой"? По-моему это смешно.


Ну да, скрытое состояние это в ФП = "побочный эффект". В конце концов мозги, это не сплошной "Побочный эффект" в ФП?

ВВ>Из того, что вы вместо класса Туалет с методом Сходить, сделаете функцию Сходить_В_Туалет,


Похоже туалет, это как раз то место, где ФП идеально подходит (сохранять ничего не надо)...
Re[16]: про провал ООП
От: FR  
Дата: 24.09.10 12:34
Оценка:
Здравствуйте, tripol, Вы писали:

T>Ага, запомнить, значит скрытое состояние?


Нету абсолютно "чистых" ФП это бессмысленно.
Вот разделение, минимизация и изолирование изменяемого состояния очень даже осмысленно и приносит неплохие дивиденды.
Re[13]: про провал ООП
От: tripol  
Дата: 24.09.10 12:35
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, tripol, Вы писали:


T>>Где обучаемость, способность запоминать и воспроизводить информацию?


FR>В прологе конечно.


И как там это организовано?
Re[17]: про провал ООП
От: tripol  
Дата: 24.09.10 12:36
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, tripol, Вы писали:


T>>Ага, запомнить, значит скрытое состояние?


FR>Нету абсолютно "чистых" ФП это бессмысленно.

FR>Вот разделение, минимизация и изолирование изменяемого состояния очень даже осмысленно и приносит неплохие дивиденды.

В каких областях?
Re[14]: про провал ООП
От: samius Япония http://sams-tricks.blogspot.com
Дата: 24.09.10 12:37
Оценка:
Здравствуйте, tripol, Вы писали:

T>Здравствуйте, samius, Вы писали:



S>>За многоточием вывод о невозможности ФП?


T>Нет, вывод о том, что в ФП состояния пытаются скрыть за вызовом функций.

T>Можно сказать, что выполнение функции это то же состояние.
Говорить-то можно много что, просто под "состоянием" в контексте ФП подразумевается не всякое состояние. Если ты побочный эффект приравниваешь к регистру или состоянию "выполнения функции", то мы не договоримся.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.