Вход в систему
Логин
Пароль
 

Sprint #26: Terrain.Сейчас на сайте 7 посетителей
WoWCore
История 2.0
История 1.0
SandBox

Ресурсы
Форум
Файлы

Документация
Литература
Ссылки


Здравствуйте,  Anonymous [ Вход ]

Тема: Почему объектно-ориентированное программирование провалилось?Новая тема | Список тем

RomanRom2 ··· 16.10.2011, 04:19 ··· Ответить
Прошло ровно 10 лет с публикации известной и классической в мире программирования статьи, написанной Ричардом Гэбриелом (1), название которой стало уже нарицательным и вынесено в заголовок моей заметки. Его статья стала настолько острой и злободневной для своего времени, что вызвала бурный всплеск обсуждений в сообществе программистов, целый ряд известных программистов включились в открытую полемику с автором, от редакции известнейшего американского программистского журнала Dr.Dobb’s Journal, до таких ученых как Энди Танненбаум.

Автор этой нашумевшей статьи, доктор компьютерных наук Стэнфорда, старший архитектор по разработке ПО сначала Sun, а потом и IBM, Ричард Гэбриел (1), никогда не скрывал своего скептического отношения к парадигме ООП. В 2002 году, по прошествии 2 лет после первоначальной публикации своей критической статьи, автора пригласили выступить, теперь уже живьем и перед большой аудиторией, - изложить свои критические взгляды на ежегодной конференции OOPSLA (2) (центральная конференция IT-специалистов по объектно-ориентированным языкам и методологиям разработки ПО).

И, чтобы по старой доброй американской традиции, превратить это в горячее шоу, в качестве его оппонента одновременно пригласили Гая Стили (3), отца-разработчика языка Scheme, крупнейшего специалиста-теоретика по ООП, авторитет которого в американской академической среде непререкаем. Чтобы максимально отразить позиции выступающих, их решили усилить ещё двумя выступающими. В качестве "анти-объектника" дополнительно пригласили Пола Грэма (4), крупнейшего специалиста по Lisp, автора многочисленных книг и стандартизаций Lisp, кстати, согласно Википедии в 1995 году создавшего вместе с Робертом Моррисом первое в мире web-приложение – Viaweb (5), которое затем выкупило у них Yahoo (как мы все знаем, Роберт Моррис, близкий друг и коллега Пола, этим историческим достижением не ограничился, до этого он уже успел написать, пожалуй, самый знаменитый червь в истории интернета, но это уже совсем другая история).
RomanRom2 ··· 16.10.2011, 04:20 ··· Ответить
В стан объектников пригласили Джеймса Ноубла, автора одних из первых книг и работ по теории ООП. Многие участники вспоминают, что конференция этого года надолго запомнилась им по тому уровню обсуждения, которое завязалось тогда в этой публичной "интеллектуальной дуэли" фактически диаметрально разных школ программирования. Но факт остаётся фактом: сторона представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала, даже запуталась в своих же концепциях. Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp'еров была куда убедительней и последовательней, чем сторонников ООП (любопытно, что главным докладчиком по ООП был создатель языка Scheme (6)- главного современного диалекта того же Lisp'а).

Пол Грэм, утверждал, что половина всех концепций ООП являются скорее плохими, чем хорошими, в связи с чем он искренне сочувствует ООП-программистам, тогда как вторая половина от оставшихся концепций - и вовсе не имеет никакого отношения к ООП, с которыми их почему-то постоянно ассоциируют. Например, он говорит: "В восьмидесятых годах метод повторного использования каким-то неясным мне образом связали с объектно-ориентированным программированием, и сколь угодно многочисленные имеющиеся доказательства обратного, по-видимому, уже не избавят этот метод от этого клейма. Хотя иногда объектно-ориентированный код действительно годится для повторного использования, таким его делает вовсе не объектно-ориентированность, а программирование в стиле "снизу вверх". Возьмём, например, библиотеки: их можно подгружать и повторно использовать сколько угодно, потому что, по сути, они представляют собой отдельный язык. И при этом, совсем неважно, написаны ли они в объектно-ориентированном стиле или нет."
RomanRom2 ··· 16.10.2011, 04:20 ··· Ответить
Другой крупный критик ООП - это известный специалист по программированию - Александр Степанов (7), который работая в Bell Labs участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии, уже по приглашению в HP Labs, написал Standard Template Library (STL). Александр Александрович полностью разочаровался в парадигме ООП, в частности он пишет: "Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг - из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле".

Ричард Столлман (8) также известен своим критическим отношением к ООП, особенно он любит шутить насчет мифа о том, что ООП "ускоряет разработку программ": "ООП ради самой ООП уже давно превратилось в замкнутый круг. Конечно, можно попытаться считать C# в .NET 3.5 с более чем 50,000 реализованных классов "венцом эволюции". Добавить в следующей версии .NET ещё миллион классов – что может быть более правильным и более вожделенным, с точки зрения ООП-программиста? Так вы говорите, это и есть то самое бегство от сложности?" (на этом месте интервью Ричард демонстративно делает паузу и выкашливается от приступа смеха).

Томас Поток из Oak Ridge National Laboratory даже провел масштабное прикладное исследование (9), которое продемонстрировало, что нет никакой заметной разницы в производительности между программистами, работающими в ООП и в обычном процедурном стиле программирования.
RomanRom2 ··· 16.10.2011, 04:21 ··· Ответить
Почти все пункты своего выступления и претензии к ООП как к парадигме Ричард Гэбриел позже заново систематизировал с учетом имевшего место широкого обсуждения и критики, после чего все было сведено в брошюру (10), которую Ричард выложил в свободный доступ вместе с поясняющими ее слайдами (11) (очень краткое содержание его выступления можно найти и в переводе на русский язык (12)). После этого очень сильного выступления у него появилось очень много последователей, которые попытались систематизировать все мифы и дефекты ООП в своих многочисленных статьях и работах (13, 14, 15). К сожалению, вероятно из-за того, что как я уже сказал выше, ответное выступление объектников "Почему ООП не провалилось" получилось несколько скомканным из-за интеллектуального натиска Lisp'еров, выступающие так и не оформили впоследствии свою позицию преимуществ ООП в развернутом виде. В интернете сохранилось лишь краткое содержание-конспект их выступления, которое также существует как в английской оригинальной версии (16), так и в русском переводе (17).
RomanRom2 ··· 16.10.2011, 04:21 ··· Ответить
Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла "тихая революция". Молодые сторонники теории относительности, массово пришедшие в номенклатуру университетов, тогда постепенно захватили власть в области преподавания физики, навязав свою, столь любимую интеллектуалами того времени, теорию относительности широким массам физиков. На самом деле, в то время имелись как положительные эксперименты и опыты, подтверждающие существование эфира, так и отрицательные. Первые были полностью проигнорированы и исключены административными мерами из всех учебников физики, после чего эфир был незаслуженно "закрыт" и отправлен в отставку, и вот, уже нынешнее поколение студентов-физиков даже и не знает о тех весьма успешных опытах по обнаружению эфирного ветра. "Ну и где мы теперь, с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни после целого века её ковыряния и массового насаждения?"- как всегда язвительно вопрошает Гэбриел. По мнению Ричарда, абсолютно с точностью тоже самое произошло и с ООП, которая в 80-ых годах была провозглашена "серебряной пулей" в "борьбе со сложностью программистского бытия", была искусственно и безальтернативно навязана в академической среде, причем мифы, которые кочуют из учебника в учебник по ООП "часто забавны и высосаны буквально из пальца".

Только время покажет, кто в итоге окажется правым, а кто в этой горячей методологической дискуссии - искренне заблуждался. Но в любом случае, лично я за то, чтобы у нас всегда оставались возможности для альтернативных взглядов, пусть даже отличных от выбора большинства (как провокационно замечают американцы в таких случаях "лемминги не могут ошибаться"). И да, будьте смелее в своих поисках и размышлениях, не нужно бояться, если в очередной раз в истории вдруг окажется, что... "король-то голый"!
RomanRom2 ··· 16.10.2011, 04:22 ··· Ответить
Список литературы
[1] http://www.dreamsongs.com/Bio.html
[2] http://en.wikipedia.org/wiki/OOPSLA
[3] http://en.wikipedia.org/wiki/Guy_L._Steele
[4] http://en.wikipedia.org/wiki/Paul_Graham_(computer_programmer)
[5] http://en.wikipedia.org/wiki/Viaweb
[6] http://en.wikipedia.org/wiki/Scheme_(programming_language)
[7] http://en.wikipedia.org/wiki/Alexander_Stepanov
[8] http://ru.wikipedia.org/wiki/Richard_Stallman
[9] http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf
[10] http://www.dreamsongs.com/Files/ObjectsHaveFailed.pdf
[11] http://www.dreamsongs.com/Files/ObjectsHaveFailedSlides.pdf
[12] http://bugtraq.ru/library/programming/objectshavefailed.html
[13] http://www.devx.com/DevX/Article/26776
[14] http://www.geocities.com/tablizer/oopbad.htm
[15] http://www.softpanorama.org/SE/anti_oo.shtml
[16] http://www.dreamsongs.com/ObjectsHaveNotFailedNarr.html
[17] http://bugtraq.ru/library/programming/objectshavenotfailed.html

(c) RSDN: http://www.rsdn.ru/article/philosophy/WhyOOP.xml
Регистрация | Новая тема | Список тем


Copyright © 2005-2019 WoWCore Team