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 века, когда, в сущности, произошла “тихая революция”.

Прогнозирую эпичный срач...

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

> Прогнозирую эпичный срач...

я тоже от торта не откажусь.

Rastafarra ★★★ ()

>объектно-ориентированное программирование провалилось

ORLY?

Yareg ★★★ ()

Ну это вообще аргумент не только против ООП но и вообще всего итеративного программирования в сравнении с рекурсионным

DNA_Seq ★★☆☆☆ ()

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

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

> лучше бы такие темы в Development создавать.

переноси, не вопрос.

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

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

Анонимусов бы добавилось? Быстрее бы скатилась в срач просто =)

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

>итеративного программирования в сравнении с рекурсионным

Может императивного в сравнении с функциональным? Всё-таки и рекурсия, и итерация и там, и там есть...

Yareg ★★★ ()

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

Мнэээ...

thesis ★★★★★ ()

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

Просто со стороны лиспа выступали более годные тролли, а со стороны ООП менее годные. Но годность троллей != годности языка.

Yareg ★★★ ()

>“Я уверен, что парадигма ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, только тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы вы приходите к тому, что оказываетесь в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг – из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле”

Донской Элитный Премиум Экстра Крепкие.

redgremlin ★★★★★ ()

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

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

>Быстрее бы скатилась в срач просто =)

в толксах неадекватных личностей больше)

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

>Все равно бы перешло в Lisp vs *

а разве посыл этого топика в другом заключается?

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

> в толксах неадекватных личностей больше)

правильно. онанимуса в толксы!

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

>Не нужно ООП считать панацеей

А никто и не считает, кроме некоторых особо фанатичных граждан. Вот только функциональщина еще менее панацейная.

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

> а разве посыл этого топика в другом заключается?

да. я хочу еще раз «про альтруизм», только в этот раз про что-то другое, но с такой же витиеватой путей.

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

> функциональщина еще менее панацейная.

4.2 жэ.

более.

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

против Ъ анонимных функций это не выглядит просто никак.

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

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

В C++ для этого сделали lambda функции.

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

>Может императивного в сравнении с функциональным? Всё-таки и рекурсия, и итерация и там, и там есть...

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

DNA_Seq ★★☆☆☆ ()

Годный вброс.

Тем не менее, всё остальное ещё хуже (c).

JackYF ★★★★ ()

Интересно, а какой сегодня спрос на лисповых программистов? Много ли программ для внешнего пользования сегодня пишут на лиспе? Много ли решений внедрено на лиспе без последующей миграции на какой-нибудь C++ или, прости Господи, C#? Много ли существует внятно документированных фреймворков на лиспе для решения повседневных задач, которые развиваются и поддерживаются внедряющими их компаниями, а не одинокими академическими задротами в качестве курсовой работы или очередного proof of concept?

Короче, раз такие умные, то почему в такой заднице?

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

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

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

> функциональщина еще менее панацейная.

вот стрелки переводить не нужно. Функциональщина инкапсулируется ООП. Просто речь о том, что где можно записать проще, надо писать проще. Нефиг городить огороды.

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

> В C++ для этого сделали lambda функции.

т.е. фп более панацея, да? ;)

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

>Короче, раз такие умные, то почему в такой заднице?

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

DNA_Seq ★★☆☆☆ ()

запуталась в своих же концепциях

Кто бы сомневался.

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

> Пожалуй да. Еще Вирт писал о необходимости тщательного продумывания структур данных,

http://c2.com/cgi/wiki?AnalysisParalysis

а как их продумать если программа только начала писаться? Тут уж точно без экстрасенсорных способностей не обойтись


http://c2.com/cgi/wiki?YouArentGonnaNeedIt

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

>В C++ для этого сделали lambda функции.

лямбды это и есть функциональное программирование

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

> Интересно, а какой сегодня спрос на лисповых программистов?

фтопку лисп. давай лучше про scala, clojure и f#. их есть немного.

Много ли программ для внешнего пользования сегодня пишут на лиспе? Много ли решений внедрено на лиспе без последующей миграции на какой-нибудь C++ или, прости Господи, C#? Много ли существует внятно документированных фреймворков на лиспе для решения повседневных задач, которые развиваются и поддерживаются внедряющими их компаниями, а не одинокими академическими задротами в качестве курсовой работы или очередного proof of concept?

если отвязаться от лиспа, то цельный .net и jvm. хватит, для начала?

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

>Просто речь о том, что где можно записать проще, надо писать проще

Кто бы спорил.

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

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

«Умных» не любит начальство, потому что «умные» умеют строить красивые теории, но зачастую не умеют работать на воспроизводимый результат достаточного качества за вменяемое время.

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

При чем здесь ФП? Я отвечал на пост про кучу классов сравнителей в Java.

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

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

А еще бензопила Дружба малопригодна для разрезания бумаги, ножницы лучше.

redgremlin ★★★★★ ()

Кстати, убери тег «Вброс», вдруг эта тема наберет >50 страниц и войдет в историю. А тут этот тег, уродующий название.

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

Ты не веришь Степанову? OMG, низвержение столпов на наших глазах!!

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

И как это спасет от рефакторинга? С указанным подходом по мере реализации программу придется переписывать по всему листингу

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

> А тут этот тег, уродующий название.

тег как раз для поиска.

Rastafarra ★★★ ()

“Ну и где мы теперь, с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни после целого века её ковыряния и массового насаждения?” – как всегда язвительно вопрошает Гэбриел.

После такой заявы невозможно серьёзно относиться к доводам в статье.

Artificial_Thought ★★★★ ()

А такой вопрос: что люди считают ООП?

Построение пользовательских классов, клгда объединяются данные и методы работы с ними — это ООП? Наследование — это ООП? Шаблоны — это ООП? Обязательно ли сочетать все подходы, или достаточно одного?

Хорошо бы понять, где и в какой момент возникают трудности.

annoynimous ★★★★★ ()

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

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

> И как это спасет от рефакторинга? С указанным подходом по мере реализации программу придется переписывать по всему листингу

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

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

Не, даркбэйсик не показатель. Там последовательное программирование, а тут событийное. Тогда уж с ВизуалБэйсиком сравнивай.

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

> с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни

GPS, ускорители как источники излучения для нужд физики, химии и биологии. Это первое, что приходит в голову

annoynimous ★★★★★ ()

> кстати, согласно Википедии, в 1995 году создавшего вместе с Робертом Моррисом первое в мире web-приложение – Viaweb, которое затем выкупила у них Yahoo (как мы все знаем, Роберт Моррис (Robert Morris), близкий друг и коллега Пола, на этом достижении не остановился, и написал, пожалуй, самый знаменитый червь в истории интернета, но это уже совсем другая история).

В 1995 году Роберт Моррис посоавторствовал в написании Viaweb, после чего не остановился на этом достижении, а взял хроноцикл, слетал в 1988 год и написал самый знаменитый червь... Короче, после таких пассажей статья серьезно не воспринимается, увы.

shimon ★★★★★ ()

Аргументы Габриеля - просто нытье. Впрочем, чего еще ждать от лиспера.

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

Только вот он сравнивает ООП и теорию относительности - типа ни у той, ни у другой не было ровно никаких убедительных доказательств.

tailgunner ★★★★★ ()

Программирование компьютера провалилось. Гораздо выгоднее и дешевле программировать людей.

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