Comments 12
Это именно что вброс.
Потому что если рассматривать данный опус серьезно, то из него следует, что автор — дурак.
Он откуда-то высосал утверждение, что полиморфизм умееет решать любые задачи, и потом его опроверг (по его мнению).
При этом сама задача вполне успешно решается с помощью хеш-таблицы.
Создается словарь ИмяКласса-Флаг. И при проверке просто по имени класса извлекается этот флаг.
Никаких IF/case не надо.
А учитывая что именно перебор вариантов через IF/case является проблемой, против которой направлен полиморфизм, то никакой нужды в полиморфизме на уровне языка для данной задачи нет, т.к. этой проблемы в данном случае нет.
Т.е. автор не сумел даже подобрать задачу которая бы нам продемонстрировала неспособность полиморфизма ее решить.
Ну и ненависть автора к С++, выражаемая несколько раз по ходу статьи, в которой к тому же С++ вообще не рассматривается, тоже не говорит о большом уме.
Потому что если рассматривать данный опус серьезно, то из него следует, что автор — дурак.
Он откуда-то высосал утверждение, что полиморфизм умееет решать любые задачи, и потом его опроверг (по его мнению).
При этом сама задача вполне успешно решается с помощью хеш-таблицы.
Создается словарь ИмяКласса-Флаг. И при проверке просто по имени класса извлекается этот флаг.
Никаких IF/case не надо.
А учитывая что именно перебор вариантов через IF/case является проблемой, против которой направлен полиморфизм, то никакой нужды в полиморфизме на уровне языка для данной задачи нет, т.к. этой проблемы в данном случае нет.
Т.е. автор не сумел даже подобрать задачу которая бы нам продемонстрировала неспособность полиморфизма ее решить.
Ну и ненависть автора к С++, выражаемая несколько раз по ходу статьи, в которой к тому же С++ вообще не рассматривается, тоже не говорит о большом уме.
ой, да ладно вам. Просто статья, на такой уровень развития разработчика расчитана, где ещё буйствует кровь и хочется везде изобрести серебряную пулю. Сам давно таким был, и то, о чём говорит автор напроектировал когда-то. Конечно не этот пример с онлайниграми, но подобную шелуху сам когда написал :)
… Да, и нападок на C++ тоже не понимаю… Но такие они Jav'исты, у них: «Java — это лучший и универсальный (?) и самый мультиплатформенный(?) инструмент для разработки, но только мы тут ещё Groovy придумали, Scala, чтобы решить, ну как бы незначительные (?) неудобства Java, и да, ещё мы любим Ruby или Python, да и Java никак не представлена на iOS, WP и некоорых других платформах, но они никому просто не нужны на самом деле… Но Java — всё равно лучшая!» Это конечно не ко всем Jav'истам относится, но нелюбовь с откровенными насмешками над C++ присуща по ходу большинству из них…
… Да, и нападок на C++ тоже не понимаю… Но такие они Jav'исты, у них: «Java — это лучший и универсальный (?) и самый мультиплатформенный(?) инструмент для разработки, но только мы тут ещё Groovy придумали, Scala, чтобы решить, ну как бы незначительные (?) неудобства Java, и да, ещё мы любим Ruby или Python, да и Java никак не представлена на iOS, WP и некоорых других платформах, но они никому просто не нужны на самом деле… Но Java — всё равно лучшая!» Это конечно не ко всем Jav'истам относится, но нелюбовь с откровенными насмешками над C++ присуща по ходу большинству из них…
Про статический полиморфизм автор, видимо, не слышал?
Паттерн «Visitor» — решение проблемы с использованием полиморфизма.
Ух сколько эмоций!
Совсем недавно смотрел видео, где рассматривается тот же вопрос, но гораздо более взвешенно: тыц.
Вкратце: видео с конференции foldLeft(Oslo), то есть с уклоном в ФП.
Промежуточные выводы:
Вывод: надо иметь лучшее из двух миров для возможности выбора. Короче, чем в этой статье, и без такой истерики.
Совсем недавно смотрел видео, где рассматривается тот же вопрос, но гораздо более взвешенно: тыц.
Вкратце: видео с конференции foldLeft(Oslo), то есть с уклоном в ФП.
Промежуточные выводы:
- закрытое множество методов, открытое множество классов — используем полиморфизм.
- закрытое множество классов, открытое множество методов — не используем полиморфизм.
Вывод: надо иметь лучшее из двух миров для возможности выбора. Короче, чем в этой статье, и без такой истерики.
А на плюсах ест ь весьма простое решение для такой проблемы. Частичная специализация шаблонов. Сделать шаблонный метод, который просто говорит нечто вроде «Опа, чувак, я тебя первый раз вижу, а потом заспециализировать вызовы для всех типов, которые хотят странного поведения.
Это уже будет статическим полиморфизмом.
Но наверняка в игрушке будет апилка на lua и поэтому будет достаточно подправить прототипы где надо.
Это уже будет статическим полиморфизмом.
Но наверняка в игрушке будет апилка на lua и поэтому будет достаточно подправить прототипы где надо.
Я всетаки не понимаю, как симантика языка, в которой возможно есть проблемы с безопасностью и инкапсуляцией при полиморфизме может влиять на то, хорош ли полиморфизм или плох. Если одни люди голосуют за Путниа а другие за Навального, где тут проблема с инкапсуляцией, где проблема с потокобезопасностью? А если завтра будет новый кандидат все люди на планети зависнут?
Что за бредовые вывод ей богу.
Каждый экземпляр рождается с дефолтным поведением
В 14(?) ему выдают бейдж позволяющий голосовать за кандидата и способность выработать свое мнение. И как наследник класса Гражданин, экземпляр может прийти и проголосовать за, выбранного ему родителями, или, выбранного самостоятельно, кандидата в эльфы. Весь мир вокруг полиморфен. Так надо решать проблемы симантики языка, а не искать проблемы в самом полиморфизме.
И уж тем более не стоит искажать реальное положение вещей: все вокруг полиморфно, полиморфизм никогда не терпит неудач. Каким образом решать ту или иную задачу — выбор разработчика. Если разработчик для сложения целых чисел не выбирает полиморфизм, то это не означает, что полиморфизм для него стал плох.
Хуже другое: если разработчика напугать сложностями с полиморфизмом, то не исключено, что в конституции РФ будут статьи для каждого гражданина РФ поименно.
Что за бредовые вывод ей богу.
Каждый экземпляр рождается с дефолтным поведением
В 14(?) ему выдают бейдж позволяющий голосовать за кандидата и способность выработать свое мнение. И как наследник класса Гражданин, экземпляр может прийти и проголосовать за, выбранного ему родителями, или, выбранного самостоятельно, кандидата в эльфы. Весь мир вокруг полиморфен. Так надо решать проблемы симантики языка, а не искать проблемы в самом полиморфизме.
И уж тем более не стоит искажать реальное положение вещей: все вокруг полиморфно, полиморфизм никогда не терпит неудач. Каким образом решать ту или иную задачу — выбор разработчика. Если разработчик для сложения целых чисел не выбирает полиморфизм, то это не означает, что полиморфизм для него стал плох.
Хуже другое: если разработчика напугать сложностями с полиморфизмом, то не исключено, что в конституции РФ будут статьи для каждого гражданина РФ поименно.
Sign up to leave a comment.
Когда полиморфизм терпит неудачу