По идее, это надо в "Коллеги улыбнитесь". На "Хабрахабре" устроили голосование и обсуждение классической "Circle-ellipse problem".
Заставляет задуматься о том, насколько базовые концепции объектно-ориентированного программирования понятны средней массе программистов, да и о полноценности самого объектно-ориентированном программирования.
И ведь на "Хабрахабре", насколько я понимаю, общаются достаточно активные представители профессии, те, кто чем-то интересуется и желает развиваться. Тех, кто просто отсиживает время за деньги, там, скорее всего, нет.
Здравствуйте, Аноним, Вы писали:
А>Заставляет задуматься о том, насколько базовые концепции объектно-ориентированного программирования понятны средней массе программистов, да и о полноценности самого объектно-ориентированном программирования.
Имхо, оценивать уровень программистов по хабрахабру — всё равно, что судить о мире в целом — по какому-нить ньюсру
Здравствуйте, Аноним, Вы писали:
А>По идее, это надо в "Коллеги улыбнитесь". На "Хабрахабре" устроили голосование и обсуждение классической "Circle-ellipse problem".
Это надо в мусорку. Ты что хотел-то? Поругать Хабр или сказать, что такие элементарные вещи должны знать в детском саду? Ну тогда приведи свое, "единственно верное" решение проблемы.
P.S. Хабр наводнен самыми разными представителями самых разных профессий.
Здравствуйте, Аноним, Вы писали:
А>Это тебя надо в мусорку, хамло.
А давайте таки закроем филиал ЛоРа, плииз?
Если по теме — задача сама по себе бессмысленная. Чего мы хотим добиться? Представить окружность как эллипс? Эллипс как окружность (если, конечно, фокусы совпадают)? Поработать с геометрическими абстракциями или отрисовать графические примитивы? Или просто показать, что баррдак в модели не пропадает магическим образом, если изложить модель в ооп-терминах?
It depends — для каждого случая вполне можно подобрать свои компромиссные решения. Самое правильное —
Liskov substitution principle, вид сбоку. Эллипс никак не связан с кругом ровно по тем же причинам, по которым прямоугольник не связан с квадратом.
en.wikipedia.org/wiki/Circle-ellipse_problem
Другими словами, не надо использовать наследование просто потому, что кажется что им можно решить проблему. Точно так же, как и с регулярными выражениями, у вас теперь две проблемы. Ну, и холивар в духе "микроскоп — отстойный ударный инструмент!" — третья
Re: Circle-ellipse problem на "Хабрахабре"
От:
Аноним
Дата:
02.07.11 13:11
Оценка:
Здравствуйте, Аноним, Вы писали:
А>По идее, это надо в "Коллеги улыбнитесь". На "Хабрахабре" устроили голосование и обсуждение классической "Circle-ellipse problem".
А>Заставляет задуматься о том, насколько базовые концепции объектно-ориентированного программирования понятны средней массе программистов, да и о полноценности самого объектно-ориентированном программирования.
Как на основе этого голосования можно делать выводы про знание базовых концепций ООП? Все зависит от того как разработчик определит характеристики этих объектов и какие характеристики можно выделить в общую группу (назвать предком). При удачном стечении обстоятельств множество свойств одного объекта может полностью совпасть с пересечением множеств свойств данных объектов. То есть результаты опроса скорее всего покажут с какими моделями чаще приходилось работать программистам. Для меня например круг и эллипс — это подкласс прямоугольников
Здравствуйте, Аноним, Вы писали:
А>А что, там какие-то особо ущербные программисты собираются, даже ниже среднего уровня? Я этого просто не знал, извините.
Нет, там собираются люди. Не для того, чтобы решить проблемы, а так — потрындеть и полюбоваться на трындёж со стороны. То же самое в полный рост наблюдается на местных политике/священных войнах/ожизни. Несмотря на то что большинство участников — люди неглупые, общий уровень осведомлённости, аргументации и взаимоуважения прям зашкаливает, да.
Ну как, будем обзывать хабрахабровцев ущербными, вас — в мусорку хамлом, а меня — троллем? Или таки поостережёмся делать выводы по поверхностным ассоциациям?
Re[2]: Circle-ellipse problem на "Хабрахабре"
От:
Аноним
Дата:
02.07.11 13:29
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Как на основе этого голосования можно делать выводы про знание базовых концепций ООП? Все зависит от того как разработчик определит характеристики этих объектов и какие характеристики можно выделить в общую группу (назвать предком). При удачном стечении обстоятельств множество свойств одного объекта может полностью совпасть с пересечением множеств свойств данных объектов. То есть результаты опроса скорее всего покажут с какими моделями чаще приходилось работать программистам. Для меня например круг и эллипс — это подкласс прямоугольников
Я вижу проблему в том, что две трети программистов решили применить некорректное наследование в этом элементарном классическом примере.
А как насчет более сложных случаев в реальных программах? Как вы думаете, будут ли они принимать неправильные решения и делать бредовые и логически ошибочные объектные модели? Конечно, будут. И делают.
В принципе, я всю жизнь любил делать все как следует, качественно. Теперь я пытаюсь научиться программировать как следует, качественно, стать хорошим программистом.
И пытаясь научиться программировать, я изучаю теорию программирования и натыкаюсь на какой-то базар. Базовых элементарных основополагающих теорий никто не знает и не понимает, никто не может ничего объяснить. У двух программистов два разных взгляда на одну и ту же элементарную задачу. Две трети программистов применяют некорректное наследование в элементарном классическом примере.
В программировании я никак не могу соединить концы с концами и довести идеи до логического завершения. Каждая новая программа или модуль — это эксперимент. Каждую новую программу приходится "рожать" в муках и переделывать по несколько раз. Утомило это все невыносимо.
Re[3]: Circle-ellipse problem на "Хабрахабре"
От:
Аноним
Дата:
02.07.11 13:55
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Я вижу проблему в том, что две трети программистов решили применить некорректное наследование в этом элементарном классическом примере.
Некорректное? Для этого надо спросить: что они понимают под кругом и эллипсом. Без знания на это вопрос не о чем судить. Главное чтоб у разработчиков были _непротиворечивые_абстракции_ для "модели мира" для разрабатываемой программы.
А>А как насчет более сложных случаев в реальных программах? Как вы думаете, будут ли они принимать неправильные решения и делать бредовые и логически ошибочные объектные модели? Конечно, будут. И делают.
Без комментариев. Я сам грешен. Не буду судить, да не судим буду
А>В принципе, я всю жизнь любил делать все как следует, качественно. Теперь я пытаюсь научиться программировать как следует, качественно, стать хорошим программистом.
А>И пытаясь научиться программировать, я изучаю теорию программирования и натыкаюсь на какой-то базар. Базовых элементарных основополагающих теорий никто не знает и не понимает, никто не может ничего объяснить. У двух программистов два разных взгляда на одну и ту же элементарную задачу. Две трети программистов применяют некорректное наследование в элементарном классическом примере.
А>В программировании я никак не могу соединить концы с концами и довести идеи до логического завершения. Каждая новая программа или модуль — это эксперимент. Каждую новую программу приходится "рожать" в муках и переделывать по несколько раз. Утомило это все невыносимо.
ООП — это модель/способ решения реальных задач. Это не сама реальность, не надо на нем зацикливаться, не все задачи решаются при помощи такой модели. Основной плюс ООП — это декомпозиция задачи, разделение на модули. Остальные моменты лучше решать более соответствующими проблеме методами.
Здравствуйте, Аноним, Вы писали: А>Я вижу проблему в том, что две трети программистов решили применить некорректное наследование в этом элементарном классическом примере.
Сходил в Википедию — там есть рекомендация наследовать эллипс от круга, ибо "для эллипса надо хранить больше информации".
И еще мешок с тележкой "возможных решений" предложили.
Ужос.
Аж руки зудят закатать статью вида "ellipse-triangle problem"
Здравствуйте, Аноним, Вы писали:
А>Некорректное? Для этого надо спросить: что они понимают под кругом и эллипсом.
Глубокое замечание.
Re[5]: Circle-ellipse problem на "Хабрахабре"
От:
Аноним
Дата:
02.07.11 17:17
Оценка:
Здравствуйте, Аноним, Вы писали:
А>>Некорректное? Для этого надо спросить: что они понимают под кругом и эллипсом.
А>Глубокое замечание.
Какой смысл судить о знании ООП на попытках классифицировать два "слова", которые вызывают разные ассоциации у разных людей в разных обстоятельствах:
— эллипс — круг после применения опред. преобразований (растяжение и поворот).
— круг — это эллипс у которого фокусы совпадают, то есть расстояние между фокусами равно нулю.
— и тд и тп.
Надо сперва дать определение этим буквосочетаниям в рамках решаемой задачи, потом спрашивать что у них общего, разного.
Голубой и синий. Понимайте как хотите, но кто из них объектно-ориентированный "папа", а кто объектно-ориентированный "сын"?
Здравствуйте, <Аноним>, Вы писали:
А>И пытаясь научиться программировать, я изучаю теорию программирования и натыкаюсь на какой-то базар. Базовых элементарных основополагающих теорий никто не знает и не понимает, никто не может ничего объяснить. У двух программистов два разных взгляда на одну и ту же элементарную задачу. Две трети программистов применяют некорректное наследование в элементарном классическом примере.
Здравствуйте, minorlogic, Вы писали:
А>>И пытаясь научиться программировать, я изучаю теорию программирования и натыкаюсь на какой-то базар. Базовых элементарных основополагающих теорий никто не знает и не понимает, никто не может ничего объяснить. У двух программистов два разных взгляда на одну и ту же элементарную задачу. Две трети программистов применяют некорректное наследование в элементарном классическом примере.
M>А какое корректное ?
В этом примере, очевидно, не нужно наследовать одно от другого.
Можно отнаследовать классы "Окружность" и "Эллипс" от общего базового класса, если согласно спецификации у них возникнет общая функциональность. В другом варианте класс "Окружность" может агрегировать объект "Эллипс" для реализации своей функциональности — это корректное решение, но не самое рациональное.
Вообще, я сейчас в процессе изучения теории программирования и ООП в частности, но мне уже давно кажется, что в ООП есть некоторые принципиальные логические недостатки, и в целом это ущербная методология. И видимое отсутствие единого понимания ООП является всего лишь проявлением глубоких фундаментальных проблем данной дисциплины.
Здравствуйте, Аноним, Вы писали:
А>мне уже давно кажется, что в ООП есть некоторые принципиальные логические недостатки,
Как я понял из всех здешних (в т.ч. давнишних) и хабровских (из сабжа) споров, у ООП принципиальный недостаток всего один: оно не является серебряной пулей. Есть однако подозрение, что это недостаток не ООП.
А>и в целом это ущербная методология.
Гы.
А>И видимое отсутствие единого понимания ООП является всего лишь проявлением глубоких фундаментальных проблем данной дисциплины.
Отсутствие решений для sqrt(-1) на множестве действительных чисел является всего лишь проявлением глубоких фундаментальных проблем данного множества.
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, minorlogic, Вы писали:
А>>>И пытаясь научиться программировать, я изучаю теорию программирования и натыкаюсь на какой-то базар. Базовых элементарных основополагающих теорий никто не знает и не понимает, никто не может ничего объяснить. У двух программистов два разных взгляда на одну и ту же элементарную задачу. Две трети программистов применяют некорректное наследование в элементарном классическом примере.
M>>А какое корректное ?
А>В этом примере, очевидно, не нужно наследовать одно от другого.
Очевидно что вы ошибаетесь.
Поясню. В примере вообще не сказано что какие либо данные хранятся и какую функциональность несут классы. И уж тем более непонятно в каких рамках и какие задачи они должны решать и что между классами может быть общего.
Здравствуйте, dimgel, Вы писали:
D>...у ООП принципиальный недостаток всего один: оно не является серебряной пулей. Есть однако подозрение, что это недостаток не ООП.
Здравствуйте, minorlogic, Вы писали:
M>В примере вообще не сказано что какие либо данные хранятся и какую функциональность несут классы. И уж тем более непонятно в каких рамках и какие задачи они должны решать и что между классами может быть общего.
Вы, господа, своими ответами иллюстрируете причину, по которой не стоит обсуждать какие-либо более-менее нетривиальные вопросы на форумах: в ответ вы получите либо общее место (изложение стереотипных суждений, ответ dimgel), либо демагогию (приведение к абсурду, ответ minorlogic).
Ладно, проехали. На самом деле, я хотел просто дать ссылку на обсуждение на "Хабрахабре", но саму ссылку забыл. Устраивать обуждение непосредственно самой "Circle-Ellipse Problem" я не собирался — это занятие ну чересчур примитивное. Не ожидал, что кто-то начнет этим заниматься.