LINUX.ORG.RU

[вброс]Почему объектно-ориентированное программирование провалилось?

 


2

7

http://citforum.ru/gazeta/165/

по линку многабукаф, немного для Ъ:

факт остаётся фактом: сторона, представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала даже запуталась в своих же концепциях. Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp’еров была куда убедительней и последовательней, чем сторонников ООП.

Другой крупный критик ООП – это известный специалист по программированию Александр Степанов, который, работая в Bell Labs, участвовал в создании C++ вместе c Бьерном Страуструпом (Bjarne Stroustrup), а впоследствии, уже после приглашения в HP Labs, написал Standard Template Library (STL). Александр Александрович полностью разочаровался в парадигме ООП; в частности, он пишет: “Я уверен, что парадигма ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, только тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы вы приходите к тому, что оказываетесь в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг – из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле”.

Ричард Столлман (Richard Stallman) также известен своим критическим отношением к ООП, особенно он любит шутить насчет того мифа объектников, что ООП “ускоряет разработку программ”: “Как только ты сказал слово «объект», можешь сразу забыть о модульности”.

Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла “тихая революция”.

Ответ на: комментарий от creepnee

Вообще да, ООП усложняет разработку. Вот я в школе писал игрушки на DarkBasic без классов и функций (все в одном цикле) и все работало отлично. Сейчас же пытаюсь писать то же самое с ООП, по всем правилам, и ничего не получается. Просто запутываюсь в классах и забрасываю

Точно. Впринципе, Степанов прав. Я сам интуитивно приешл к такому стилю разработки. Я вообще люблю ооп, но оно у меня в конце в виде красивой обертки. Программу я начинаю разрабатывать в процедурном стиле. Когда все работает просто рефакторю в красивые классики, интерфейсики.

dizza ★★★★★
()
Ответ на: комментарий от anonymous

>да, это пять, как говорится чел элементарно необразован

Причем еще со школы, плюсую.

BlacKeeper
()
Ответ на: комментарий от BlacKeeper

>Ага, а макароны варят так: сначала берут макароны, сыпят в кастрюлю, ставят на огонь. Через пол часа можно будет и воды налить...

А это неправильно, да? А то я так всегда делал, что-то, думаю, не так у меня с макаронами...

Zhbert ★★★★★
()
Ответ на: комментарий от BlacKeeper

>Ага, а макароны варят так: сначала берут макароны, сыпят в кастрюлю, ставят на огонь. Через пол часа можно будет и воды налить...

кора вашего мозга одревеснела от школьных учебников. Первой доказанной теоремой была теорема Фалеса и это было задолго до выдвижения Евклидом списка аксиом

DNA_Seq ★★☆☆☆
()

практика - критерий истины

Давайте посмотрим где используется ФП, а где ООП:

ФП:
1) ядро ОС
2) драйвера
3) системные утилиты

ООП:
1) бизнес-системы
2) графические интерфейсы 2D и 3D
3) моделирование (например игры)

Мораль: каждый подход НУЖЕН.
Не согласны?! Тогда приведите мне пример применения ООП при написании драйверов? Или объясните, как с помощью ФП программировать трехмерные интерфейсы? (я не про унылый компиз, а про псевдо-3D-реальность а-ля интерфейсы в фильме «Хакеры»)

p.s. Знаю, есть GTK с API на основе ФП, но там по сути реализовано ООП, тока через попу.

robux
()
Ответ на: комментарий от BlacKeeper

> Что-то я не пойму, с каких это пор математика стала заканчиваться аксиомами а не начинаться с них?

Здесь скорее как физика - исследования заканчиваются открытием законов, а не начинаются с них.

tailgunner ★★★★★
()
Ответ на: комментарий от DNA_Seq

кора вашего мозга одревеснела от школьных учебников. Первой доказанной теоремой была теорема Фалеса и это было задолго до выдвижения Евклидом списка аксиом

А ты уже успел за это время погуглить и подучить историю древней Греции? Молодец! А почему же тогда в школе дают сначала аксиомы а потом уже теорему Фалеса?

BlacKeeper
()
Ответ на: комментарий от tailgunner

>исследования заканчиваются открытием законов, а не начинаются с них.

Да, но какие-то предпосылки и догадки для начала исследований должны быть.

Zhbert ★★★★★
()
Ответ на: комментарий от BlacKeeper

>А ты уже успел за это время погуглить и подучить историю древней Греции? Молодец!

Прикинь, я это со школы знаю

А почему же тогда в школе дают сначала аксиомы а потом уже теорему Фалеса?


Чтоб не травмировать моск. В учебниках дается уже сформировавшаяся система знаний и формироваться она не обязана в том порядке в каком излагается в учебниках

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Zhbert

>> исследования заканчиваются открытием законов, а не начинаются с них.

Да, но какие-то предпосылки и догадки для начала исследований должны быть.

Если ты повнимательнее почитаешь нытье Габриеля, то увидишь там две вещи: итеративная разработка vs каскадная; динамическая типизация vs статическая. Что больше всего удивляет, так это, что он приписывание ООП каскадность и статичность. Прозреваю либо слабоумие, либо передергивание.

tailgunner ★★★★★
()
Ответ на: комментарий от BlacKeeper

> А почему же тогда в школе дают сначала аксиомы а потом уже теорему Фалеса?

потому что так проще объяснить, не?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Drdiesel

ФП на C? Вы ничего не перепутали? Может имеется в виду процедурное программирование?

creepnee
()
Ответ на: комментарий от tailgunner

>Если ты повнимательнее почитаешь нытье Габриеля, то увидишь там две вещи: итеративная разработка vs каскадная; динамическая типизация vs статическая. Что больше всего удивляет, так это, что он приписывание ООП каскадность и статичность. Прозреваю либо слабоумие, либо передергивание.

Мб. Но не буду, не хочу на ночь психику травмировать.

Zhbert ★★★★★
()

и еще в защиту ООП

у ООП очень хорошая кросплатформенная переносимость, начиная от модели, и заканчивая интерфейсом.

Пример из жизни: интернет-банк Bifit iBank написанный на Java. Он работает и на Windows и на Linux. То же самое можно сказать про 3D Home Design Sweet and Easy (или как там его )) ).

Знаю, что ФП будет и на интерпретаторах работать, но почему-то в бизнесе любят работать с объектами.

robux
()
Ответ на: комментарий от tailgunner

>> Что-то я не пойму, с каких это пор математика стала заканчиваться аксиомами а не начинаться с них?

Здесь скорее как физика - исследования заканчиваются открытием законов, а не начинаются с них.

Да ты сейчас, наверняка, многих удивил...

anonymous
()
Ответ на: комментарий от tailgunner

Ты драйверы хоть раз писал? Там ООП в полный рост.

ахахахах Не знаю какие ты драйвера ты там писал, но я не понимаю, зачем там ооп?? ведь нужен просто набор функций. Здесь нужно получить API (это уже интерфейс), а не фраемворк xD

Drdiesel
()
Ответ на: и еще в защиту ООП от robux

> у ООП очень хорошая кросплатформенная переносимость, начиная от модели, и заканчивая интерфейсом.

Пример из жизни: интернет-банк Bifit iBank написанный на Java. Он работает и на Windows и на Linux.

Это заслуга разработчиков Java, а не ООП.

Какие кроссплатформенные языки программирования ты знаешь? Сколько из них реализуют ООП?

anonymous
()

>провалилось?

ООП - всего лишь одна из парадигм программирования в процессе практического применения которой проявились недостатки, некоторые из которых учтены, например, в компонентно-ориентированном программировании.

>Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, только тогда на этой основе выводится аксиома.

Нет теорем без аксиом. Наборы базовых аксиом не выводят, а постулируют.

quickquest ★★★★★
()
Ответ на: комментарий от jtootf

согласен, я погнал )))

А бл$ять точно! Я спутал ФП с ПП.

Я ж это, инженер-электромеханик по образованию, мне можно O:-)

robux
()
Ответ на: комментарий от Drdiesel

>> Ты драйверы хоть раз писал? Там ООП в полный рост.

ахахахах Не знаю какие ты драйвера ты там писал

Ты явно многого не знаешь.

но я не понимаю, зачем там ооп??

Можешь считать, что драйвер (и ФС) - это библиотеки, реализующие абстрактные классы.

ведь нужен просто набор функций. Здесь нужно получить API (это уже интерфейс), а не фраемворк xD

Мде. API, фреймворк... каша в голове.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> Какие кроссплатформенные языки программирования ты знаешь? Сколько из них реализуют ООП?

Знаю Ruby, Python, Perl, PHP5. Все из них могут. А чо?

robux
()
Ответ на: комментарий от DNA_Seq

>Первой доказанной теоремой была теорема Фалеса и это было задолго до выдвижения Евклидом списка аксиом

Чтоб не травмировать моск. В учебниках дается уже сформировавшаяся система знаний и формироваться она не обязана в том порядке в каком излагается в учебниках

Если ты так хорошо помнишь школу, вспомни доказательство этой теоремы, и ты увидишь, что оно основывается на аксиомах.

Я не спорю, что формирование системы знаний может быть не в том порядке в каком оно дано в учебниках.

BlacKeeper
()
Ответ на: комментарий от DNA_Seq

>>разницу между предметом «геометрия» и геометрией улавливаем?

Геометрия зиждется на аксиомах. Они определяют применимость данной версии геометрии. Поэтому есть геометрия Евклида и Лобачевского. Первое, с чего начинается геометрия - это определение фигур и простейших законов, которые свойственны именно этой геометрии. Если без аксиомы невозможно доказательство, но аксиома первична. Почему? Потому что это граница применимых знаний, как квантовая механика.

alex_custov ★★★★★
()
Ответ на: комментарий от tailgunner

> Если ты повнимательнее почитаешь нытье Габриеля, то увидишь там две вещи: итеративная разработка vs каскадная; динамическая типизация vs статическая. Что больше всего удивляет, так это, что он приписывание ООП каскадность и статичность. Прозреваю либо слабоумие, либо передергивание.

Э... ООП основана на идеи сохранения преимуществ статической типизации, не?

Или ты имеешь что-то против каскадности ({[][]}{[][()][]}) ?

anonymous
()
Ответ на: комментарий от quickquest

>Нет теорем без аксиом. Наборы базовых аксиом не выводят, а постулируют.

еще один поциент. Чтоб постулировать аксиомы нужно иметь основания. Сначала дедукция, а лишь потом индукция. Как говорил Мефистофель Гете «чтобы разобраться в большом надо сперва различать а затем связывать». Ладно, я спать, глаза слипаются. Надеюсь идея понятна. А чтоб вначале проиндуцировать общее правило (тот же набор аксиом) из которого все остальное выводиться дедукционно... это Богом надо быть, с большой буквы. Нет парочки знакомых Богов?

DNA_Seq ★★☆☆☆
()
Ответ на: и еще в защиту ООП от robux

> Пример из жизни: интернет-банк Bifit iBank написанный на Java.

Знаем, знаем. Java: write once — debug everywhere

annoynimous ★★★★★
()
Ответ на: комментарий от DNA_Seq

Ну погоди, куда ты сваливаешь на самом интересном месте:) Я согласен с тем, что аксиомы не придуманы на пустом месте, например собрались ученые, и один из них говорит- «парни, у меня трава есть первоклассная, давайте пару аксиом придумаем?»

BlacKeeper
()
Ответ на: комментарий от anonymous

> ООП основана на идеи сохранения преимуществ статической типизации, не?

Не. Smalltalk, но который молятся Ъ-ООПшники, вообще динамический. Сейчас я не вспомню точную цитату Кея, но он говорил об «extremely late binding», что фактически означает динамическую типизацию.

Или ты имеешь что-то против каскадности ({[][]}{[][()][]}) ?

Ни разу не видел, чтобы каскадность работала.

tailgunner ★★★★★
()
Ответ на: и еще в защиту ООП от robux

> Пример из жизни: ...

Кстати, я помню, что когда еще учился писал программы на С под виндой, а мой препод компилял их под какой-то юниксовой ОС и все работало. Это же не значит, что _любая_ программа на С кросплатформенна.

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

А где я говорил что C кроссплатформенна? Я говорил про Java, про Ruby и т.д., т.е. про интерпретируемые языки.

Вобще, насколько я понял, ПП, ФП и ООП идут рука об руку в любом уважающем себя языке. Поэтому кто какой подход будет использовать - зависит от задачи, или от извращенности программиста.

robux
()
Ответ на: комментарий от DNA_Seq

> Сначала дедукция, а лишь потом индукция.

Хм. Вообще-то сначала индукция %)

tailgunner ★★★★★
()
Ответ на: комментарий от DNA_Seq

>Чтоб постулировать аксиомы нужно иметь основания.

В Древнем Мире основаниями был практический опыт землемеров. Современная абстрактная математика может развиваться даже на базе абстактных постулатов.

>теоремы Фалеса

Доказательство теоремы Фалеса основано на равенстве треугольников. Равенство - понятие аксиоматическое.

>Нет парочки знакомых Богов?

Парочка всегда найдётся: Бахус, Эрос :)

quickquest ★★★★★
()

я в Common Lispe вполне успешно(по моим меркам) применяю ООП

pseudo-cat ★★★
()
Ответ на: комментарий от quickquest

Современная абстрактная математика может развиваться даже на базе абстактных постулатов.

А что, если некто математик, и пофиг, что абстрактный, на него молиться надо. Можно строить сколь угодно большую отеорию на сколь угодно укуренных абстрактных аксиомах. Только вот с реалностью это может и не и мет общего. Вначале доказательства и связь с реальностью, потом аксиомы.

dizza ★★★★★
()
Ответ на: комментарий от alex_custov

Геометрия зиждется на аксиомах

ну, строго говоря - не обязательно. вместо аксиоматического задания геометрии можно задать её с помощью соответствующей группы симметрий, из которой выводится и метрика, и блоки инцидентности, и всё остальное (см. Эрлангенскую программу Клейна)

вот только во-первых, в таком случае надо начинать с аксиоматики группы; во-вторых, Степанов явно не это имел в виду

jtootf ★★★★★
()
Ответ на: комментарий от dizza

Вначале доказательства и связь с реальностью, потом аксиомы.

вся абстрактная алгебра развивалась как математика ради математики, но впоследствии многие сугубо абстрактные конструкции получили великолепное приложение (комплексные числа, кватернионы, теория групп, теория Галуа, теория Ли to name a few). а связь с реальность - вообще понятие крайне расплывчатое

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

Школота набИжала

Не кажется, так оно и есть.

bk_ ★★
()
Ответ на: комментарий от dizza

>Вначале доказательства

Приведи хотя бы 1 доказательство без аксиом.

и связь с реальностью

У многих математических моделей связь с реальностью не очевидна (например, квантовая механика).

потом аксиомы.

Потом можно предлагать другие аксиомы, на базе которых развивать другие модели.

quickquest ★★★★★
()

Торт

Толкиен с Эвклидом хорошо пошли. Странно, что о ТО и КМ перестали говорить, там же столько еды... Вот кто мне объяснит парадокс близнецов? И как считаете, если в Церне ничего не найдут, сместит ли квантовая гравитация теорию струн с места главного претендента на теорию всего?

По сабжу: кто защищал ООП?

сторона, представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала даже запуталась в своих же концепциях

Если я позву студентов-гуманитариев защищать теорию эволюции, а им в оппоненты назначу каких нибудь богословов с дипломами, какой будет результат?

KDE41user
()
Ответ на: комментарий от VladimirMalyk

> объекты есть развитие идеи структур. к чему холивары не понятно

Объекты есть развитие системы типов, позволяющее выводить одни типы из других, а также задавать возможные операции над конкретным типом.

annoynimous ★★★★★
()
Ответ на: Торт от KDE41user

> Если я позву студентов-гуманитариев защищать теорию эволюции, а им в оппоненты назначу каких нибудь богословов с дипломами, какой будет результат?

Можно не экспериментировать, потому что годные специалисты в области ТЭ - и те сливают богословам публичные диспуты :)

fang
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.