Полиморфизм это…

По роду деятельности я часто (хотел написать постоянно, но уже нет…) провожу собеседования. Кроме вопросов по технологиям конечно интересны базовые понятия отрасли… Удивительно, но народ часто-густо не может сказать, что такое алгоритм, программа. Зачем они нужны… ООП вообще тёмный лес. Апофигеозм собеседования всегда является вопрос “ну и что такое полиморфизм?”

Короче мало кто говорит… а так хочется, чтоб кто-то ответил: “полиморфизм это когда ракеты в нелётную погоду разворачиваются домой, свиньи требуют оружия, собаки умеют маршировать, кенгуру шмаляют из ПЗРК, а NPC на уровне приходится прописывать как танков”. :)

к чему это я? да вот пробежала мега подборочка ООП багов - там в каментах тоже есть что почитать кроме “пацталом”.

Кто-то может что-то ещё вспомнить?

17 comments so far

  1. SiRex March 12, 2008 16:49

    Серега, это блин долбанный факт… полиморфизм - враг всех программистов #1 :)))

    Я вот даже пробовал твою задачку про веревки и спичку.. решают… а полиморфизм никак

  2. Restuta March 19, 2008 01:17

    =))) Все просто - понимание полиморфизма наступает тогда, когда ты не в книге прочитаешь, а когда попробуешь на практике И (там И) тебе ещё объяснит тот, кто уже понимает. Когда ты можешь позадовать вопросы =) А кстати попробуйте своими словами описать, что же такое полиморфизм =) Пожалуй я начну: “Полиморфизм - это изменчивость, т.е. изменяемое поведение объекта.”

  3. COTOHA March 25, 2008 13:35

    2 Restuta
    не согласен. просто, пока тебя не помучают, ты себе не даёшь труда разобраться. на самом деле понятие-то простое, вот только слово сложное… отпугивает наверное :)

    кстати, я вот тут перечитал пост и понял, что не все баги проявления полиморфизма. вернее даже все “неполиморфные”, кроме одного описанного. остальные - это от наследования в чистом виде.

    что удивительно - этот пост имеет наибольшее кол-во просмотров (за 300), но никто не обратил внимания на то, что я ошибся. интересно почему…

  4. wio March 31, 2008 19:34

    сговорились вы что ли.. Меня при приеме на прошлую работу тоже про полиморфизм спрашивали ))

  5. Baziak April 11, 2008 20:28

    Недавно общались мы с другом о паттернах и об ООП в целом.
    Долго общались. В итоге пришли к мысли, что…

    Полиформизм суть реализация паттерна “Стратегия” на уровне языка программирования.

  6. кеды April 23, 2008 10:06

    Полиморфизм это такая штука которую придумали чтобы окончательно взорвать мозг бедных программеров:)

  7. alexissss May 12, 2008 18:42

    Ну что ж, скажу так о полиморфизме:
    - возможность взаимоподстановки (или взаимозаменяемости) объектов с одинаковым интерфейсом - одна версия,
    - это когда мама белокожая, а сын (дабы быть политкорректным) афроамериканской наружности - другая версия.
    Кстати, недавно проводил собеседование с одним ТОПом. Так вот он здорово плавал при ответе на простой вопрос: что такое проект?

  8. COTOHA May 12, 2008 23:27

    2 alexissss

    Кстати, недавно проводил собеседование с одним ТОПом. Так вот он здорово плавал при ответе на простой вопрос: что такое проект?

    про ТОПов не скажу, но пока не попался не один кандидат на должность менеджера проектов, кто смог бы внятно ответить на этот вопрос :)

  9. demon June 6, 2008 06:37

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

  10. COTOHA June 11, 2008 09:46

    2 demon
    ну на практике всё хорошо попробовать. тока, как показывает практика, все пробуют, но мало кто может объяснить.

  11. The Lex June 11, 2008 16:19

    Многие знания - многие печали. (к) :)
    Сможет ли человек, знающий определение сего слова, применять успешно его на практике и применять тогда, когда нужно, а не из принципа ли, из ограниченности ли, везде и всегда - вопрос открытый. Таких умных слов - вагон и маленькая тележка. Имхо, их понимание единообразно важно для понимание в каждой отдельно взятой команде чтобы не было разногласий о чем именно идет речь - обобщение сих терминов-слов - суть дело “философов от программирования”. Этим можно заняться “на кухне”, “за пивом”, етцетера :) Практических плодов это редко приносит в обсуждении “сферических кенгуру в вакууме” в отрыве от практики. имхо, конечно. :)

  12. COTOHA June 11, 2008 17:31

    2 The Lex
    ээээ… не согласный.
    базовые знания ООП на то и БАЗОВЫЕ. на них базируется успешное применение туевой хучи остального - от простых сторонних компонент до паттернов.

    и при чём тут философия программирования? речь же не идёт об обобщении - у нас в IT, славбо, словарь устоявшийся.

  13. The Lex June 11, 2008 22:17

    Знания уровня слов “полиморфизм” действительно базовые. Базовые настолько, что в обычной практике их - сами понятия и принципы - применяешь даже не задумываясь особо, как это теоретически называется и уж тем более, как это теоретически могло бы быть или должно было бы быть или еще там что. Ты когда пишешь на русском языке - сильно часто о построении предложений задумываешься? Или вот, скажем, когда какое правило полемики применяешь - задумываешься тут же про себя, как же именно это правило называется? Или возмем что-то более неродное - английский язык: новичок думает перед тем как сказать, должен там быть Past или Past Participle (название пришлось в словаре искать - не помню как точно пишется) - а “просто спикеры” об этом уже давно не задумываются особо и вопросами “на грамматику” ты их поставишь в затруднение чаще всего. Да что там английский - кто сейчас может похвастаться тем, что сможет перечислить части речи, падежи, и члены предложения в русском языке? Кто-то может - будет ли это свидетельством его способности внятно объяснить тебе суть проекта? А кто-то - нет. Будет ли уже это - свидетельством обратного?

    “Полиморфизм” - это так, мелочи - имхо, самый убойный вопрос “про ООП” - назвать три ключевых “фичи” этой парадигмы. ;) Да-да-да - тех самых, одна их которых - “полиморфизм”!

    “Сороножка задумалась о том, какую ногу вслед за какой следует ставить, и больше не смогла сделать ни шагу” (к) ;)

    ЗЫ: в целом же, кстати, у IT современный словарь довольно устоявшийся - штука, названная громким словом “паттерны проектирования”, позволяет в основном дать определенные и одинаковые имена одинаковым вещам - просто классифицировать. Нужно ли знание этого? Как я уже говорил - нужно в той мере, которая обеспечивает общий язык - “полиморфизм” к этому уже не относится - таки имхо. Как и “инкапсуляция”, например: я лично с трудом представляю себе современного программиста на чем-либо, для которого возможность объединения отдельных полей в целую структуру будет открытием…

    ЗЫЗЫ: кстати, Википедия называет полиморфизм ключевым принципом ООП - таки надо бы перечитать какие старые и подчитать какие новые _теоретические_ измышления на тему… :)

    ЗЫЗЫЗЫ: байки про кенгуру, про свиней, и пр. (про ракеты придется искать - не знаю такой) - это фолькльор - нанимай ядреных гуру на много тысяч у.е. и они тебе расскажут… :) Дарю идею: собрать подобные байки в коллекцию - может даже классифицировать. ;)

    Я понял чего это ты такой злой… :)

  14. COTOHA June 12, 2008 12:46

    2 The Lex
    ты смотришь с колокольни сороконожки, которая уже умеет бегать (состоявшегося программиста). такой даже если забудет, то что-то придумает сказать. ну не мог же я сказать, что “все программисты не знают основ”? не мог.

    а я говорю о тех, кто только учится ходить - вот такие ДОЛЖНЫ учить основы - типа что ходят на ногах, а лазят на руках. матёрый чёрт про это не задумывается, а вот молодой такого может накрутить….

  15. The Lex June 12, 2008 13:37

    Я придумал как тебе эти байки использовать в (м)учении твоих кандидатов: рассказываешь ему одну из них и просишь пояснить, как же такое получилось с технической точки зрения. :) Дарю!

    ЗЫ: имхо, нет лучшего учения чем практика - и в программировании в том числе.

  16. Да уж объяснить это не так то уж и просто.

  17. COTOHA July 8, 2008 00:10

    2 Ваня Нечаев
    да просто, в том-то и дело…

Leave a comment

Please be polite and on topic. Your e-mail will never be published.