Re[10]: JavaScript
От: Qbit86 Кипр
Дата: 11.04.13 16:57
Оценка: +2
Здравствуйте, samius, Вы писали:

S>>>Объекты в JS не нуждаются в отношении наследования для проявления полиморфизма.

Q>>Ну, я это и имел в виду.
S>А, так я как раз затруднился привести язык, в котором полиморфизм был бы "основан на наследовании". То есть не имел бы других проявлений, кроме как subtype polymorphism.

Из контекста у меня создалось впечатление, что fin_81 имел в виду полиморфизм-в-узком-смысле, а именно «динамический полиморфизм, основанный на переопределении функций». JavaScript — это мейнстримный язык, который как нельзя лучше опровергает постулат о связи полиморфизма-в-указанном-смысле с наследованием.
Глаза у меня добрые, но рубашка — смирительная!
Re: Инкаспуляция, наследование, полиморфизм
От: michael_isu Беларусь  
Дата: 11.04.13 16:59
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Все это такое фуфло, я вас скажу эти ваши философии. Так же как и много других умных слов про программирование. На практике же, надо просто решать конкретную прикладную задачу, вот и все.


Когда то, ради чего делалась задача, малость (или не совсем малость) перестало быть актуально _после_ затраченных усилий на задачу, то станет понятно что твои слова бесполезный bullshit. Т.к. заглянуть в будущее и узнать какова будет жизнь после выполнения задачи могут немногие люди. Ещё меньшее кол-во людей может предсказать как будет развиваться жизнь и соответственно сделанная в ней задача во времени. А измениться может так, что надо будет много чего переделать.
Поэтому лучше подстелить соломку, чем не стелить
Re[22]: Инкаспуляция, наследование, полиморфизм
От: fin_81  
Дата: 11.04.13 16:59
Оценка:
Здравствуйте, samius, Вы писали:

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


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


_>>>>А что такое интерфейс?

S>>>http://en.wikipedia.org/wiki/Interface_%28computing%29

_>>То есть интерфейс — это (абстрактный) тип.

_>>Если перефразировать определение из вики.
S>Нет, я сослался на общее определение интерфейса, а не на частное для ООП языков.

И как совместить это общее определение с теорией типов?

_>>Обработка данных разного типа посредством общего/одинакового абстрактного типа (интерфейса).


_>>Упрощаем и получаем, обработка данных в зависимости от типа (общего абстрактного).

S>sin a/cos a = in/co
Что это?
Re[23]: Инкаспуляция, наследование, полиморфизм
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.04.13 17:11
Оценка:
Здравствуйте, fin_81, Вы писали:

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


S>>Нет, я сослался на общее определение интерфейса, а не на частное для ООП языков.


_>И как совместить это общее определение с теорией типов?

Найти в нем что-то общее с определениями, близкими к теории типов. Например, у Пирса:

Термин полиморфизм обозначает семейство различных механизмов, позволяющих использовать один и тот же фрагмент программы с различными типами в различных контекстах.

способ использования фрагмента программы неплохо коррелирует с интерфейсом взаимодействия.

_>>>Обработка данных разного типа посредством общего/одинакового абстрактного типа (интерфейса).


_>>>Упрощаем и получаем, обработка данных в зависимости от типа (общего абстрактного).

S>>sin a/cos a = in/co
_>Что это?
Это упрощение, подобное вашему.
Re[20]: Инкаспуляция, наследование, полиморфизм
От: fin_81  
Дата: 11.04.13 17:31
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Милнер ссылается на полиморфизм в ALGOL-е.

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

Где пример полиморфизма на алгол?

S>>>Причем смолток со своим представлением о полиморфизме?

_>>Ответ на требование а причем тут ооп в контексте smalltalk.
S>Это был ответ на вопрос, был ли полиморфизм до smalltalk-а. И в нем откуда-то взялось ООП.

В университетах учили что это первый ОО язык.
Re[6]: Инкаспуляция, наследование, полиморфизм
От: jazzer Россия Skype: enerjazzer
Дата: 11.04.13 17:40
Оценка:
Здравствуйте, 0x7be, Вы писали:

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


J>>Но вброс на самом деле имеет следующий смысл: насколько практический программер должен сражаться за теоретическую чистоту кода?


0>Теоретическая чистота когда — это как?


Это как в Java, когда раз ООП, то не должно быть свободных функций, и поэтому надо рожать бессмысленные классы для свободных по сути функций типа синуса и main. Зато чистый ООП, только классы.
Или там "из функции должен быть только один выход", потому что типа Дейкстра доказал, что такие функции лучше — и поэтому начинаются пляски с тем же goto, лишь бы return в середине функции не написать.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[21]: Инкаспуляция, наследование, полиморфизм
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.04.13 17:46
Оценка:
Здравствуйте, fin_81, Вы писали:

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


S>>Куда сложнее, если перегрузка функций и есть одно из проявлений полиморфизма? ООП-шный полиморфизм это есть частный случай перегрузки функций по неявному аргументу.


_>Где пример полиморфизма на алгол?

Бан в гугле за манеры?
http://en.wikipedia.org/wiki/Operator_overloading#1960s

S>>Это был ответ на вопрос, был ли полиморфизм до smalltalk-а. И в нем откуда-то взялось ООП.


_>В университетах учили что это первый ОО язык.

Осталось выяснить, причем тут ОО.
Re[7]: Инкаспуляция, наследование, полиморфизм
От: 0x7be СССР  
Дата: 11.04.13 17:59
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>Это как в Java, когда раз ООП, то не должно быть свободных функций, и поэтому надо рожать бессмысленные классы для свободных по сути функций типа синуса и main. Зато чистый ООП, только классы.

J>Или там "из функции должен быть только один выход", потому что типа Дейкстра доказал, что такие функции лучше — и поэтому начинаются пляски с тем же goto, лишь бы return в середине функции не написать.
Да я понимаю все.
У меня есть гипотеза: все программисты проходят через период идеологического пуризма, когда кажется, что некая логически стройная и элегантная парадигма — это истинный путь, а остальное надо выбросить все на свалку истории. Ничего, с опытом проходит.
Re[22]: Инкаспуляция, наследование, полиморфизм
От: fin_81  
Дата: 11.04.13 18:17
Оценка:
Здравствуйте, samius, Вы писали:

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


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


S>>>Куда сложнее, если перегрузка функций и есть одно из проявлений полиморфизма? ООП-шный полиморфизм это есть частный случай перегрузки функций по неявному аргументу.


_>>Где пример полиморфизма на алгол?

S>Бан в гугле за манеры?
S>http://en.wikipedia.org/wiki/Operator_overloading#1960s
Перегрузка операторов.
А я думал сейчас будет эмуляция таблицы вирт методов.
Скоро вывод типов в функциональных языках запишут в примеры полиморфизма.


S>>>Это был ответ на вопрос, был ли полиморфизм до smalltalk-а. И в нем откуда-то взялось ООП.


_>>В университетах учили что это первый ОО язык.

S>Осталось выяснить, причем тут ОО.
А что не ОО язык?
Re[24]: Инкаспуляция, наследование, полиморфизм
От: fin_81  
Дата: 11.04.13 18:25
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Нет, я сослался на общее определение интерфейса, а не на частное для ООП языков.


_>>И как совместить это общее определение с теорией типов?

S>Найти в нем что-то общее с определениями, близкими к теории типов. Например, у Пирса:
S>

S>Термин полиморфизм обозначает семейство различных механизмов, позволяющих использовать один и тот же фрагмент программы с различными типами в различных контекстах.

S>способ использования фрагмента программы неплохо коррелирует с интерфейсом взаимодействия.

Под это определение прекрасно подходит наследование. Наследование — это полиморфизм?
Re[9]: Инкаспуляция, наследование, полиморфизм
От: AlexRK  
Дата: 11.04.13 18:32
Оценка: +3
Здравствуйте, Voblin, Вы писали:

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


ARK>>Не понял, как это все относится к обсуждению истинности первоначального утверждения о полиморфизме и наследовании.


V>ОК. Давайте от обратного. Берём ООП и делаем ему "минус наследование".

V>Как-то почти автоматически получается "минус полиморфизм". Но мы не сдаёмся и пытаемся организовать полиморфизм без использования наследования. И, о чудо! В конце концов у нас это получается! Однако, порывшись в своих соображениях, которыми мы руководствовались когда проектировали все связки-взаимоувязки, проанализировав код, приходим к выводу, что нам таки пришлось спроектировать иерархию классов. Пусть неявно, пусть на бумажке, но сделать это пришлось.

V>Полиморфизм — прямое следствие наследования. И не важно, поддержано оно средствами ЯП или нам пришлось как-то ещё выкручиваться.


Нет, полиморфизм не имеет ничего общего с наследованием. Идеальный ООП-язык, с моей точки зрения, не должен иметь наследования ни в каком виде (в том числе и наследования интерфейсов). Полиморфизм — через реализацию интерфейсов.
Re[23]: Инкаспуляция, наследование, полиморфизм
От: AlexRK  
Дата: 11.04.13 18:35
Оценка:
Здравствуйте, fin_81, Вы писали:

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


ARK>>ОК. Итак:


ARK>>int AddInt(int, int)

ARK>>float AddFloat(float, float)

ARK>>Обработка есть. Обе операции зависят от типов. Их результаты тоже. Вердикт — обе функции полиморфны.


_>

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

Вот видите, сколько появляется всяких разных слов (причем я до конца все равно не понял). А определение должно быть коротким, полным и непротиворечивым (по возможности). Определение полиморфизма из википедии очень хорошее и использует известные в CS термины.
Re[23]: Инкаспуляция, наследование, полиморфизм
От: AlexRK  
Дата: 11.04.13 18:38
Оценка:
Здравствуйте, fin_81, Вы писали:

S>>http://en.wikipedia.org/wiki/Operator_overloading#1960s

_>Перегрузка операторов.
_>А я думал сейчас будет эмуляция таблицы вирт методов.
_>Скоро вывод типов в функциональных языках запишут в примеры полиморфизма.

Перегрузка операторов — это один из видов полиморфизма.

_>А что не ОО язык?


Pascal, Haskell.
Re: Инкаспуляция, наследование, полиморфизм
От: 0x7be СССР  
Дата: 11.04.13 18:38
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>На практике же, надо просто решать конкретную прикладную задачу, вот и все.

Это просто замечательно
Предлагаю развить мысль: фуфло все эти ваши языки программирования, зачем они? Надо просто решать конкретную прикладную задачу
Re[25]: Инкаспуляция, наследование, полиморфизм
От: AlexRK  
Дата: 11.04.13 18:40
Оценка:
Здравствуйте, fin_81, Вы писали:

_>Под это определение прекрасно подходит наследование. Наследование — это полиморфизм?


Наследование — это повторное использование реализации + полиморфизм. Таким образом, термины "наследование" и "полиморфизм" не эквивалентны.
Re[25]: Инкаспуляция, наследование, полиморфизм
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.04.13 18:48
Оценка: +1
Здравствуйте, fin_81, Вы писали:

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


S>>

S>>Термин полиморфизм обозначает семейство различных механизмов, позволяющих использовать один и тот же фрагмент программы с различными типами в различных контекстах.

S>>способ использования фрагмента программы неплохо коррелирует с интерфейсом взаимодействия.

_>Под это определение прекрасно подходит наследование. Наследование — это полиморфизм?

Предлагаю различать механизм как способ установки взаимоотношения между типами и свойство программы, которое он обеспечивает.
Re[23]: Инкаспуляция, наследование, полиморфизм
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.04.13 18:49
Оценка:
Здравствуйте, fin_81, Вы писали:

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


S>>http://en.wikipedia.org/wiki/Operator_overloading#1960s

_>Перегрузка операторов.
_>А я думал сейчас будет эмуляция таблицы вирт методов.
Это таблица виртуальных методов будет эмуляцией перегрузки для рантайма.
_>Скоро вывод типов в функциональных языках запишут в примеры полиморфизма.
Прокомментирую когда запишут. Я таких тенденций не наблюдаю.

_>>>В университетах учили что это первый ОО язык.

S>>Осталось выяснить, причем тут ОО.
_>А что не ОО язык?
Содержательная часть беседы кончилась?
Re[26]: Инкаспуляция, наследование, полиморфизм
От: fin_81  
Дата: 11.04.13 18:53
Оценка:
Здравствуйте, AlexRK, Вы писали:

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


_>>Под это определение прекрасно подходит наследование. Наследование — это полиморфизм?


ARK>Наследование — это повторное использование реализации + полиморфизм. Таким образом, термины "наследование" и "полиморфизм" не эквивалентны.


По приведенному определению: повторное использование реализации — это полиморфизм.
Вывод: наследование — полиморфизм + полиморфизм.
Весело чо
Re[6]: Инкаспуляция, наследование, полиморфизм
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 11.04.13 18:54
Оценка: +1
Здравствуйте, Voblin, Вы писали:

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


V>Grep + ls не дают систему. Это просто два инструмента. Как отвёртка и молоток.


А в итоге они образуют binutils, набор инструментов позволяющий решать задачи администрирования.
Re[24]: Инкаспуляция, наследование, полиморфизм
От: fin_81  
Дата: 11.04.13 19:02
Оценка:
Здравствуйте, AlexRK, Вы писали:

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


S>>>http://en.wikipedia.org/wiki/Operator_overloading#1960s

_>>Перегрузка операторов.
_>>А я думал сейчас будет эмуляция таблицы вирт методов.
_>>Скоро вывод типов в функциональных языках запишут в примеры полиморфизма.

ARK>Перегрузка операторов — это один из видов полиморфизма.


Наследование — тоже один из видов полиморфизма.
Программирование — тоже один из видов полиморфизма.
Биологическая жизнь — тоже один из видов полиморфизма.
Вселенная — тоже один из видов полиморфизма.

Еще веселее

_>>А что не ОО язык?


ARK>Pascal, Haskell.


Мне показалось, что было поставлено под сомнение что smalltalk OO язык? Я спрашиваю — почему?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.