Артём Н. -> debian-russian@lists.debian.org @ Wed, 04 Jul 2012 22:16:01 +0400:
>> Я бы ещё добавил, что ОО-парадигма рождается из желания перейти от >> классической модели императивного вычислителя, как единого конечного >> автомата, к модели многих изолированных конечных автоматов, >> взаимодействующих >> через чётко ограниченные интерфейсы. Точно так же в электронике от "паука" >> на рассыпухе, пришли сначала к модульным схемам, а потом к ИС. АН> Ну и? Это естественный, эволюционный процесс. Разве должно быть иначе? Естественный эволюционный процесс развивается параллельно по нескольким веткам. В данном случае это существенно. >> В такой интерпретации ясно, что если в неком языке императивный >> вычислитель явно не просматривается, то и от ОО-модели этот язык не >> особо выиграет. АН> Почему не выиграет? Потому что их приткнуть либо некуда, либо незачем. АН> Объекты могут быть независимыми сущностями (собственно, так и есть, АН> если они строго через интерфейсы взаимодействуют). Как объект АН> реализован внутри - не важно (например, это может быть АН> функциональная программа), порядок их взаимодействия тоже не очень АН> важен (или он регулируется самими объектами). Ну, возможно назвать АН> это какой-нибудь сопрограммой, например, а не объектом. Но суть от АН> этого разве поменяется? Все это можно сделать. Увеличение пользы где? Если у тебя функциональная программа уже есть, то зачем тебе объект в виде функциональной программы? Чего тебе в языке до введения объектов не хватало? Что же до остального... От того, что ты прячешь природу сущности за некоторой абстракцией, ты что-то выигрываешь, но чем-то за это и платишь. И очень не факт, что только производительностью, а не, например, выразительной силой. У функции есть, например, операция частичного применения, обладающая своей выразительной силой. У объекта ее нет. Использование сопрограммы подразумевает (не для компьютера, для другого программиста) определенный протокол взаимодействия. У объекта он другой. Можно реализовать его с помощью сопрограммы, но это будет менее естественно, чем воспользоваться родным, если он годится. И так далее. В итоге ты начинаешь вносить в язык, обладающий достаточной выразительной силой, парадигму, которая выразительную силу языка не увеличивает, а при неаккуратном употреблении и уменьшает. А смысл? АН> Парадигма обязательно должна быть императивной, и где я ошибаюсь? Объект - очень слабая абстракция. В более сильных парадигмах, чем императивная (ну хорошо, процедурная) он просто не приносит достаточно пользы. А отдельные компоненты этой парадигмы (она же не цельная, она сборная солянка) в остальных парадигмах либо есть, либо имеют не менее сильные замены. В хаскеле, к примеру, нет наследования (иногда эмулируется, но как правило, оно просто не нужно). Зато куда более развесистый полиморфизм. Инкапсуляция является частным случаем абстракции Abstract Data Type. И есть еще прорва парадигм, а если тебе не хватило - можно легко сделать свою, хватило бы тебе самому на нее мозгов. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87bojvxmx8....@wizzle.ran.pp.ru