[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Несколько вопросов вразброс



On 16.07.2012 23:59, Artem Chuprina wrote:
>  >>  >>  >> В такой интерпретации ясно, что если в неком языке императивный
>  >>  >>  >> вычислитель явно не просматривается, то и от ОО-модели этот язык не
>  >>  >>  >> особо выиграет.
>  >>  >>  АН> Почему не выиграет?
>  >>  >> Потому что их приткнуть либо некуда, либо незачем.
>  >>  АН> Для функциональных, опять же, понятно: есть функция. Объекты не
>  >>  АН> требуются.  Инкапсуляция обеспечивается функцией. Наследование
>  >>  АН> заменяется агрегацией.  Полиморфизм... Тоже может быть. Я очень
>  >>  АН> плохо знаком с функциональной парадигмой.
>  >> Полиморфизм поведенческий, а агрегация плюс полиморфизм - это уже
>  >> больше, чем наследование.  Наследование оказывается как-то не очень
>  >> нужным.
>  АН> Так, получается, это тоже самое наследование, только "под другим углом"?
> Наоборот.  Наследование, если смотреть на парадигму - это один из
> (ограниченных) взглядов на полиморфизм.
Почему? Полиморфизм разве не является наследованием чего-либо, а наследование не
предполагает полиморфизм? Разве это не всегда совместно существующие вещи?

>  АН> Как ни странно, замыкания поддерживает JS. :-) Естественно, встречалось. И
>  АН> нередко используется.
>  АН> Но, насколько я понимаю, это получается уже не "чистая функция"...
> В функциональных языках - чистая.  JS, а также Perl, Python etc. - языки
> с _элементами_ функциональной парадигмы.  Там функция - не first-class
> entity, и количество возможных операций с нею сильно ограничено.
Ну а разве сохранение состояния между вызовами не нарушает "чистоты" языка и не
может привести к каким-либо странным эффектам?

>  АН> Не знаю, и не то это. В объекте привлекает то, что возможно
>  АН> изменять атрибуты... Хотя... Через замыкания тоже возможно
>  АН> построить классы и объекты (что и делают).  Но, в том же JS, не
>  АН> самый очевидный для понимания типа наследования. На прототипах. По
>  АН> сравнению с наследованием классов - это сложнее.  У класса - чётко
>  АН> определённый интерфейс, который виден через его описание. И всегда
>  АН> известно, что будет делать объект. Даже если используется
>  АН> полиморфизм, у объекта всё-равно есть тип. При прототипном
>  АН> наследовании, кажется, не всё так однозначно...  И нет такой
>  АН> строгой системы классов. И строгой иерархии тоже нет (хотя и в
>  АН> языках с наследованием классов, тоже нет иерархии, в общем случае,
>  АН> так что - фиг его знает)...
> Обычно, если у языка есть выделенная парадигма, то большинство операций
> проще как минимум для понимания, а чаще и для реализации, именно в ней.
Угу, только языки и парадигмы в сравнении друг с другом могут быть проще или
сложнее для понимания.

> Т.е., в терминологии ООП, добавлять
> общее поведение совершенно разнородным объектам.  И всё вышеописанное
> там делается совершенно не так, как в ООП.  Вместо "этот объект может
> делать то-то и то-то так-то и так-то" - "эта сущность является частным
> случаем вон той абстракции при взгляде вот под таким углом, и вот этой
> абстракции - при взгляде вот под этим углом".  Это, собственно, более
> широкий взгляд на полиморфизм.
Т.е., нечто вроде множественного контекстно зависимого наследования?


Reply to: