Re: Несколько вопросов вразброс
On 16.07.2012 23:59, Artem Chuprina wrote:
> >> >> >> В такой интерпретации ясно, что если в неком языке императивный
> >> >> >> вычислитель явно не просматривается, то и от ОО-модели этот язык не
> >> >> >> особо выиграет.
> >> >> АН> Почему не выиграет?
> >> >> Потому что их приткнуть либо некуда, либо незачем.
> >> АН> Для функциональных, опять же, понятно: есть функция. Объекты не
> >> АН> требуются. Инкапсуляция обеспечивается функцией. Наследование
> >> АН> заменяется агрегацией. Полиморфизм... Тоже может быть. Я очень
> >> АН> плохо знаком с функциональной парадигмой.
> >> Полиморфизм поведенческий, а агрегация плюс полиморфизм - это уже
> >> больше, чем наследование. Наследование оказывается как-то не очень
> >> нужным.
> АН> Так, получается, это тоже самое наследование, только "под другим углом"?
> Наоборот. Наследование, если смотреть на парадигму - это один из
> (ограниченных) взглядов на полиморфизм.
Почему? Полиморфизм разве не является наследованием чего-либо, а наследование не
предполагает полиморфизм? Разве это не всегда совместно существующие вещи?
> АН> Как ни странно, замыкания поддерживает JS. :-) Естественно, встречалось. И
> АН> нередко используется.
> АН> Но, насколько я понимаю, это получается уже не "чистая функция"...
> В функциональных языках - чистая. JS, а также Perl, Python etc. - языки
> с _элементами_ функциональной парадигмы. Там функция - не first-class
> entity, и количество возможных операций с нею сильно ограничено.
Ну а разве сохранение состояния между вызовами не нарушает "чистоты" языка и не
может привести к каким-либо странным эффектам?
> АН> Не знаю, и не то это. В объекте привлекает то, что возможно
> АН> изменять атрибуты... Хотя... Через замыкания тоже возможно
> АН> построить классы и объекты (что и делают). Но, в том же JS, не
> АН> самый очевидный для понимания типа наследования. На прототипах. По
> АН> сравнению с наследованием классов - это сложнее. У класса - чётко
> АН> определённый интерфейс, который виден через его описание. И всегда
> АН> известно, что будет делать объект. Даже если используется
> АН> полиморфизм, у объекта всё-равно есть тип. При прототипном
> АН> наследовании, кажется, не всё так однозначно... И нет такой
> АН> строгой системы классов. И строгой иерархии тоже нет (хотя и в
> АН> языках с наследованием классов, тоже нет иерархии, в общем случае,
> АН> так что - фиг его знает)...
> Обычно, если у языка есть выделенная парадигма, то большинство операций
> проще как минимум для понимания, а чаще и для реализации, именно в ней.
Угу, только языки и парадигмы в сравнении друг с другом могут быть проще или
сложнее для понимания.
> Т.е., в терминологии ООП, добавлять
> общее поведение совершенно разнородным объектам. И всё вышеописанное
> там делается совершенно не так, как в ООП. Вместо "этот объект может
> делать то-то и то-то так-то и так-то" - "эта сущность является частным
> случаем вон той абстракции при взгляде вот под таким углом, и вот этой
> абстракции - при взгляде вот под этим углом". Это, собственно, более
> широкий взгляд на полиморфизм.
Т.е., нечто вроде множественного контекстно зависимого наследования?
Reply to: