Pull to refresh

Comments 12

UFO just landed and posted this here
Это именно что вброс.
Потому что если рассматривать данный опус серьезно, то из него следует, что автор — дурак.
Он откуда-то высосал утверждение, что полиморфизм умееет решать любые задачи, и потом его опроверг (по его мнению).

При этом сама задача вполне успешно решается с помощью хеш-таблицы.
Создается словарь ИмяКласса-Флаг. И при проверке просто по имени класса извлекается этот флаг.
Никаких IF/case не надо.
А учитывая что именно перебор вариантов через IF/case является проблемой, против которой направлен полиморфизм, то никакой нужды в полиморфизме на уровне языка для данной задачи нет, т.к. этой проблемы в данном случае нет.
Т.е. автор не сумел даже подобрать задачу которая бы нам продемонстрировала неспособность полиморфизма ее решить.

Ну и ненависть автора к С++, выражаемая несколько раз по ходу статьи, в которой к тому же С++ вообще не рассматривается, тоже не говорит о большом уме.
ой, да ладно вам. Просто статья, на такой уровень развития разработчика расчитана, где ещё буйствует кровь и хочется везде изобрести серебряную пулю. Сам давно таким был, и то, о чём говорит автор напроектировал когда-то. Конечно не этот пример с онлайниграми, но подобную шелуху сам когда написал :)

… Да, и нападок на C++ тоже не понимаю… Но такие они Jav'исты, у них: «Java — это лучший и универсальный (?) и самый мультиплатформенный(?) инструмент для разработки, но только мы тут ещё Groovy придумали, Scala, чтобы решить, ну как бы незначительные (?) неудобства Java, и да, ещё мы любим Ruby или Python, да и Java никак не представлена на iOS, WP и некоорых других платформах, но они никому просто не нужны на самом деле… Но Java — всё равно лучшая!» Это конечно не ко всем Jav'истам относится, но нелюбовь с откровенными насмешками над C++ присуща по ходу большинству из них…
Ну и это взаимно как правило — ничего не поделаешь, два конкурирующих энтерпрайзных языка с таким кооличеством плюсов и минусов в обоих, что сравнение не только невозможно, но и страшно себе представить.
С++ энтерпрайзный язык? :)
Само собой. По моему мнению — да.
Про статический полиморфизм автор, видимо, не слышал?
Паттерн «Visitor» — решение проблемы с использованием полиморфизма.
Это же вроде костыль для реализации мультиметодов для тех языков, где они отсутствуют.
Ух сколько эмоций!

Совсем недавно смотрел видео, где рассматривается тот же вопрос, но гораздо более взвешенно: тыц.

Вкратце: видео с конференции foldLeft(Oslo), то есть с уклоном в ФП.
Промежуточные выводы:
  • закрытое множество методов, открытое множество классов — используем полиморфизм.
  • закрытое множество классов, открытое множество методов — не используем полиморфизм.

Вывод: надо иметь лучшее из двух миров для возможности выбора. Короче, чем в этой статье, и без такой истерики.
А на плюсах ест ь весьма простое решение для такой проблемы. Частичная специализация шаблонов. Сделать шаблонный метод, который просто говорит нечто вроде «Опа, чувак, я тебя первый раз вижу, а потом заспециализировать вызовы для всех типов, которые хотят странного поведения.
Это уже будет статическим полиморфизмом.
Но наверняка в игрушке будет апилка на lua и поэтому будет достаточно подправить прототипы где надо.
Я всетаки не понимаю, как симантика языка, в которой возможно есть проблемы с безопасностью и инкапсуляцией при полиморфизме может влиять на то, хорош ли полиморфизм или плох. Если одни люди голосуют за Путниа а другие за Навального, где тут проблема с инкапсуляцией, где проблема с потокобезопасностью? А если завтра будет новый кандидат все люди на планети зависнут?
Что за бредовые вывод ей богу.
Каждый экземпляр рождается с дефолтным поведением
В 14(?) ему выдают бейдж позволяющий голосовать за кандидата и способность выработать свое мнение. И как наследник класса Гражданин, экземпляр может прийти и проголосовать за, выбранного ему родителями, или, выбранного самостоятельно, кандидата в эльфы. Весь мир вокруг полиморфен. Так надо решать проблемы симантики языка, а не искать проблемы в самом полиморфизме.
И уж тем более не стоит искажать реальное положение вещей: все вокруг полиморфно, полиморфизм никогда не терпит неудач. Каким образом решать ту или иную задачу — выбор разработчика. Если разработчик для сложения целых чисел не выбирает полиморфизм, то это не означает, что полиморфизм для него стал плох.
Хуже другое: если разработчика напугать сложностями с полиморфизмом, то не исключено, что в конституции РФ будут статьи для каждого гражданина РФ поименно.
Sign up to leave a comment.

Articles