Полиморфизм это…
По роду деятельности я часто (хотел написать постоянно, но уже нет…) провожу собеседования. Кроме вопросов по технологиям конечно интересны базовые понятия отрасли… Удивительно, но народ часто-густо не может сказать, что такое алгоритм, программа. Зачем они нужны… ООП вообще тёмный лес. Апофигеозм собеседования всегда является вопрос “ну и что такое полиморфизм?”
Короче мало кто говорит… а так хочется, чтоб кто-то ответил: “полиморфизм это когда ракеты в нелётную погоду разворачиваются домой, свиньи требуют оружия, собаки умеют маршировать, кенгуру шмаляют из ПЗРК, а NPC на уровне приходится прописывать как танков”. :)
к чему это я? да вот пробежала мега подборочка ООП багов - там в каментах тоже есть что почитать кроме “пацталом”.
Кто-то может что-то ещё вспомнить?
Серега, это блин долбанный факт… полиморфизм - враг всех программистов #1 :)))
Я вот даже пробовал твою задачку про веревки и спичку.. решают… а полиморфизм никак
=))) Все просто - понимание полиморфизма наступает тогда, когда ты не в книге прочитаешь, а когда попробуешь на практике И (там И) тебе ещё объяснит тот, кто уже понимает. Когда ты можешь позадовать вопросы =) А кстати попробуйте своими словами описать, что же такое полиморфизм =) Пожалуй я начну: “Полиморфизм - это изменчивость, т.е. изменяемое поведение объекта.”
2 Restuta
не согласен. просто, пока тебя не помучают, ты себе не даёшь труда разобраться. на самом деле понятие-то простое, вот только слово сложное… отпугивает наверное :)
кстати, я вот тут перечитал пост и понял, что не все баги проявления полиморфизма. вернее даже все “неполиморфные”, кроме одного описанного. остальные - это от наследования в чистом виде.
что удивительно - этот пост имеет наибольшее кол-во просмотров (за 300), но никто не обратил внимания на то, что я ошибся. интересно почему…
сговорились вы что ли.. Меня при приеме на прошлую работу тоже про полиморфизм спрашивали ))
Недавно общались мы с другом о паттернах и об ООП в целом.
Долго общались. В итоге пришли к мысли, что…
Полиформизм суть реализация паттерна “Стратегия” на уровне языка программирования.
Полиморфизм это такая штука которую придумали чтобы окончательно взорвать мозг бедных программеров:)
Ну что ж, скажу так о полиморфизме:
- возможность взаимоподстановки (или взаимозаменяемости) объектов с одинаковым интерфейсом - одна версия,
- это когда мама белокожая, а сын (дабы быть политкорректным) афроамериканской наружности - другая версия.
Кстати, недавно проводил собеседование с одним ТОПом. Так вот он здорово плавал при ответе на простой вопрос: что такое проект?
2 alexissss
про ТОПов не скажу, но пока не попался не один кандидат на должность менеджера проектов, кто смог бы внятно ответить на этот вопрос :)
полиморфизм хорошо на практике пробовать, да под нормальным, с точки зрения ооп языком. тогда все встанет на свои места
2 demon
ну на практике всё хорошо попробовать. тока, как показывает практика, все пробуют, но мало кто может объяснить.
Многие знания - многие печали. (к) :)
Сможет ли человек, знающий определение сего слова, применять успешно его на практике и применять тогда, когда нужно, а не из принципа ли, из ограниченности ли, везде и всегда - вопрос открытый. Таких умных слов - вагон и маленькая тележка. Имхо, их понимание единообразно важно для понимание в каждой отдельно взятой команде чтобы не было разногласий о чем именно идет речь - обобщение сих терминов-слов - суть дело “философов от программирования”. Этим можно заняться “на кухне”, “за пивом”, етцетера :) Практических плодов это редко приносит в обсуждении “сферических кенгуру в вакууме” в отрыве от практики. имхо, конечно. :)
2 The Lex
ээээ… не согласный.
базовые знания ООП на то и БАЗОВЫЕ. на них базируется успешное применение туевой хучи остального - от простых сторонних компонент до паттернов.
и при чём тут философия программирования? речь же не идёт об обобщении - у нас в IT, славбо, словарь устоявшийся.
Знания уровня слов “полиморфизм” действительно базовые. Базовые настолько, что в обычной практике их - сами понятия и принципы - применяешь даже не задумываясь особо, как это теоретически называется и уж тем более, как это теоретически могло бы быть или должно было бы быть или еще там что. Ты когда пишешь на русском языке - сильно часто о построении предложений задумываешься? Или вот, скажем, когда какое правило полемики применяешь - задумываешься тут же про себя, как же именно это правило называется? Или возмем что-то более неродное - английский язык: новичок думает перед тем как сказать, должен там быть Past или Past Participle (название пришлось в словаре искать - не помню как точно пишется) - а “просто спикеры” об этом уже давно не задумываются особо и вопросами “на грамматику” ты их поставишь в затруднение чаще всего. Да что там английский - кто сейчас может похвастаться тем, что сможет перечислить части речи, падежи, и члены предложения в русском языке? Кто-то может - будет ли это свидетельством его способности внятно объяснить тебе суть проекта? А кто-то - нет. Будет ли уже это - свидетельством обратного?
“Полиморфизм” - это так, мелочи - имхо, самый убойный вопрос “про ООП” - назвать три ключевых “фичи” этой парадигмы. ;) Да-да-да - тех самых, одна их которых - “полиморфизм”!
“Сороножка задумалась о том, какую ногу вслед за какой следует ставить, и больше не смогла сделать ни шагу” (к) ;)
ЗЫ: в целом же, кстати, у IT современный словарь довольно устоявшийся - штука, названная громким словом “паттерны проектирования”, позволяет в основном дать определенные и одинаковые имена одинаковым вещам - просто классифицировать. Нужно ли знание этого? Как я уже говорил - нужно в той мере, которая обеспечивает общий язык - “полиморфизм” к этому уже не относится - таки имхо. Как и “инкапсуляция”, например: я лично с трудом представляю себе современного программиста на чем-либо, для которого возможность объединения отдельных полей в целую структуру будет открытием…
ЗЫЗЫ: кстати, Википедия называет полиморфизм ключевым принципом ООП - таки надо бы перечитать какие старые и подчитать какие новые _теоретические_ измышления на тему… :)
ЗЫЗЫЗЫ: байки про кенгуру, про свиней, и пр. (про ракеты придется искать - не знаю такой) - это фолькльор - нанимай ядреных гуру на много тысяч у.е. и они тебе расскажут… :) Дарю идею: собрать подобные байки в коллекцию - может даже классифицировать. ;)
Я понял чего это ты такой злой… :)
2 The Lex
ты смотришь с колокольни сороконожки, которая уже умеет бегать (состоявшегося программиста). такой даже если забудет, то что-то придумает сказать. ну не мог же я сказать, что “все программисты не знают основ”? не мог.
а я говорю о тех, кто только учится ходить - вот такие ДОЛЖНЫ учить основы - типа что ходят на ногах, а лазят на руках. матёрый чёрт про это не задумывается, а вот молодой такого может накрутить….
Я придумал как тебе эти байки использовать в (м)учении твоих кандидатов: рассказываешь ему одну из них и просишь пояснить, как же такое получилось с технической точки зрения. :) Дарю!
ЗЫ: имхо, нет лучшего учения чем практика - и в программировании в том числе.
Да уж объяснить это не так то уж и просто.
2 Ваня Нечаев
да просто, в том-то и дело…
конечно, если человеек купил себе диплом, то он не знает базовых основ “изучаемой” отрасли. А может просто от страха все забывает, может ты строгое и неподступное лицо делаешь?
Серж, к тебе приходит человек, у которого на уме миллион мыслей, и главнейшая из них: “Ааа, о боже, какие страшные дядьки! Все, горностай мне… нет, песец. Ужос! Они спрашивают про полиморфизм! ОМГ! Теперь точно Серебристый песец моей карьере в этой компании. Блин, что же такое полиморфизм? Это же точно ООП! Я даже экзамен сдавал… черт… сейчас бы конспект…”.
В общем, когда я в свои ранние годы проходил собеседования - у меня в большинстве случаев так и получалось вплоть до трясущихся рук и кофе на пол, если угощали.
Объяснять именно так полиморфизм нивжисть никто не подумает, если не уверен ^_^
2 smart
о, привет, смарт! ну да, тут ты прав на 85% :) конечно, почти никто не подумает, но мне-то хочется… это с одной стороны.
а с другой стороны люди идут на собеседование, так какого хрена не почитать, не подучить?!?! ведь это так просто: на конференцию к звезде надо приходить подготовленным! (с) а они, сцуко, розовые кофточки одевают… :) есть конечно мнение, что это происходить от того, что они даже на экзамены без подготовки ходят, и иногда проканывет, но это отдельная грустная история.
ну и кстати, когда ты проходил собеседование у меня, то ты честно сказал, что “парни, я не знаю теории”. Но ты это компенсировал другими знаниями, так что по факту это незнание не помешало получить работу, ведь так?
2 smart
и в догонку - а прикольные ООП-баги вспомнить есть?