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

Прошло ровно 10 лет с публикации известной и классической в мире программирования статьи, написанной Ричардом Гэбриелом, название которой стало уже нарицательным и вынесено в заголовок моей заметки. Его статья стала настолько острой и злободневной для своего времени, что вызвала бурный всплеск обсуждений в сообществе программистов, целый ряд известных программистов включились в открытую полемику с автором, от редакции известнейшего американского программистского журнала Др.Доббс, до таких ученых как Энди Танненбаум.

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

И, чтобы по старой доброй американской традиции, превратить это в горячее шоу, в качестве его оппонента одновременно пригласили Гая Стили, отца-разработчика языка Scheme, крупнейшего специалиста-теоретика по ООП, авторитет которого в американской академической среде непререкаем. Чтобы максимально отразить позиции выступающих, их решили усилить ещё двумя выступающими. В качестве «анти-объектника» дополнительно пригласили Пола Грэма, крупнейшего специалиста по Lisp, автора многочисленных книг и стандартизаций Lisp, кстати, согласноВикипедии в 1995 году создавшего вместе с Робертом Моррисомпервое в мире web-приложение - Viaweb, которое затем выкупило у них Yahoo (как мы все знаем, Роберт Моррис, близкий друг и коллега Пола, этим историческим достижением не ограничился, до этого он уже успел написать пожалуй самый знаменитый червь в истории интернета, но это уже совсем другая история).

В стан объектников пригласили Джеймса Ноубла, автора одних из первых книг и работ по теории ООП. Многие участники вспоминают, что конференция этого года надолго запомнилась им по тому уровню обсуждения, которое завязалось тогда в этой публичной "интеллектуальной дуэли" фактически диаметрально разных школ программирования. Но факт остаётся фактом: сторона представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала, даже запуталась в своих же концепциях. Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp'еров была куда убедительней и последовательней, чем сторонников ООП (любопытно, что главным докладчиком по ООП был создатель языкаScheme  — главного современного диалекта того же Lisp'а).

Пол Грэм, утверждал, что половина всех концепций ООП являются скорее плохими, чем хорошими, в связи с чем он искренне сочувствует ООП-программистам, тогда как вторая половина от оставшихся концепций — и вовсе не имеет никакого отношения к ООП, с которыми их почему-то постоянно ассоциируют. Например, он говорит:

 

«В восьмидесятых годах метод повторного использования каким-то неясным мне образом связали с объектно-ориентированным программированием, и сколь угодно многочисленные имеющиеся доказательства обратного, по-видимому, уже не избавят этот метод от этого клейма. Хотя иногда объектно-ориентированный код действительно годится для повторного использования, таким его делает вовсе не объектно-ориентированность, а программирование в стиле „снизу вверх“. Возьмём, например, библиотеки: их можно подгружать и повторно использовать сколько угодно, потому что, по сути, они представляют собой отдельный язык. И при этом, совсем неважно, написаны ли они в объектно-ориентированном стиле или нет.»

 

Другой крупный критик ООП — это известный специалист по программированию - Александр Степанов, который работая в Bell Labs участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии, уже по приглашению в HP Labs, написал Standard Template Library (STL). Александр Александрович полностью разочаровался в парадигме ООП, в частности он пишет:

 

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

 

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

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

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

Другой ветеран программистского ремесла, Джоэл Спольски, рассказывает, что во время его работы в Microsoft его так достали тамошние адепты-инженеры ООП,  что даже сейчас, по прошествии почти десяти лет, его передергивает от людей, “с головой погрязших” в этой парадигме. Джоел — автор популярного в англоязычной литературе шутливого термина Архитектурные Астронавты, который пошел гулять из его популярной статьи “Не дайте Астронавтам Архитектуры вас запугать”, посвященной именно тем самым архитекторам-инженерам из Microsoft, которые так упорно преследовали Джоела со своими абстрактными концепциями и шаблонами.

Почти все пункты своего выступления и претензии к ООП как к парадигме, Ричард Гэбриел, позже, заново систематизировал, с учетом имевшего место широкого обсуждения и критики, после чего все было сведено в брошюру, которую Ричард выложил в свободный доступ вместе с поясняющими их слайдами (очень краткое содержание его выступления можно найти и в переводе на русский язык). После этого очень сильного  выступления у него появилось очень много последователей, которые попытались систематизировать все мифы и дефекты ООП в своихмногочисленных статьях и работах. К сожалению, вероятно из-за того, что как я уже сказал выше, ответное выступление объектников "Почему ООП не провалилось" получилось несколько скомканным из-за интеллектуального натиска Lisp'еров, выступающие так и не оформили впоследствии свою позицию преимуществ ООП в развернутом виде. В интернете сохранилось лишь краткое содержание-конспект их выступления, которое также существует как в английской оригинальной версии, так и в русском переводе.

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

 

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

 

По мнению Ричарда, абсолютно с точностью тоже самое произошло и с ООП, которая в 80-ых годах была провозглашена "серебряной пулей" в «борьбе со сложностью программистского бытия», была искусственно и безальтернативно навязана в академической среде, причем мифы, которые кочуют из учебника в учебник по ООП «часто забавны и высосаны буквально из пальца».

Только время покажет, кто в итоге окажется правым, а кто в этой горячей методологической дискуссии — искренне заблуждался. Но в любом случае, лично я за то, чтобы у нас всегда оставались возможности для альтернативных взглядов, пусть даже отличных от выбора большинства (как провокационно замечают американцы в таких случаях "лемминги не могут ошибаться". И да, будьте смелее в своих поисках и размышлениях, не нужно бояться, если в очередной раз в истории вдруг окажется,  что...  «король-то голый»!

Комментариев: 0
Мир Си++
Участников: 6