Сообщений 448 Оценка 290 [+1/-12] Оценить |
Список литературы |
Прошло ровно 10 лет с публикации известной и классической в мире программирования статьи, написанной Ричардом Гэбриелом (1), название которой стало уже нарицательным и вынесено в заголовок моей заметки. Его статья стала настолько острой и злободневной для своего времени, что вызвала бурный всплеск обсуждений в сообществе программистов, целый ряд известных программистов включились в открытую полемику с автором, от редакции известнейшего американского программистского журнала Dr.Dobb’s Journal, до таких ученых как Энди Танненбаум.
Автор этой нашумевшей статьи, доктор компьютерных наук Стэнфорда, старший архитектор по разработке ПО сначала Sun, а потом и IBM, Ричард Гэбриел
И, чтобы по старой доброй американской традиции, превратить это в горячее шоу, в качестве его оппонента одновременно пригласили Гая Стили
В стан объектников пригласили Джеймса Ноубла, автора одних из первых книг и работ по теории ООП. Многие участники вспоминают, что конференция этого года надолго запомнилась им по тому уровню обсуждения, которое завязалось тогда в этой публичной "интеллектуальной дуэли" фактически диаметрально разных школ программирования. Но факт остаётся фактом: сторона представлявшая объектно-ориентированное программирование, во время открытой дискуссии с противниками под смех зала, даже запуталась в своих же концепциях. Люди вспоминают, что у всех создалось стойкое впечатление, что аргументация Lisp'еров была куда убедительней и последовательней, чем сторонников ООП (любопытно, что главным докладчиком по ООП был создатель языка Scheme (6)- главного современного диалекта того же Lisp'а).
Пол Грэм, утверждал, что половина всех концепций ООП являются скорее плохими, чем хорошими, в связи с чем он искренне сочувствует ООП-программистам, тогда как вторая половина от оставшихся концепций - и вовсе не имеет никакого отношения к ООП, с которыми их почему-то постоянно ассоциируют. Например, он говорит: "В восьмидесятых годах метод повторного использования каким-то неясным мне образом связали с объектно-ориентированным программированием, и сколь угодно многочисленные имеющиеся доказательства обратного, по-видимому, уже не избавят этот метод от этого клейма. Хотя иногда объектно-ориентированный код действительно годится для повторного использования, таким его делает вовсе не объектно-ориентированность, а программирование в стиле "снизу вверх". Возьмём, например, библиотеки: их можно подгружать и повторно использовать сколько угодно, потому что, по сути, они представляют собой отдельный язык. И при этом, совсем неважно, написаны ли они в объектно-ориентированном стиле или нет."
Другой крупный критик ООП - это известный специалист по программированию - Александр Степанов
Ричард Столлман (8) также известен своим критическим отношением к ООП, особенно он любит шутить насчет мифа о том, что ООП "ускоряет разработку программ": "ООП ради самой ООП уже давно превратилось в замкнутый круг. Конечно, можно попытаться считать C# в .NET 3.5 с более чем 50,000 реализованных классов "венцом эволюции". Добавить в следующей версии .NET ещё миллион классов – что может быть более правильным и более вожделенным, с точки зрения ООП-программиста? Так вы говорите, это и есть то самое бегство от сложности?" (на этом месте интервью Ричард демонстративно делает паузу и выкашливается от приступа смеха).
Томас Поток из Oak Ridge National Laboratory даже провел масштабное прикладное исследование (9), которое продемонстрировало, что нет никакой заметной разницы в производительности между программистами, работающими в ООП и в обычном процедурном стиле программирования.
Почти все пункты своего выступления и претензии к ООП как к парадигме Ричард Гэбриел позже заново систематизировал с учетом имевшего место широкого обсуждения и критики, после чего все было сведено в брошюру (10), которую Ричард выложил в свободный доступ вместе с поясняющими ее слайдами (11) (очень краткое содержание его выступления можно найти и в переводе на русский язык (12)). После этого очень сильного выступления у него появилось очень много последователей, которые попытались систематизировать все мифы и дефекты ООП в своих многочисленных статьях и работах (13, 14, 15). К сожалению, вероятно из-за того, что как я уже сказал выше, ответное выступление объектников "Почему ООП не провалилось" получилось несколько скомканным из-за интеллектуального натиска Lisp'еров, выступающие так и не оформили впоследствии свою позицию преимуществ ООП в развернутом виде. В интернете сохранилось лишь краткое содержание-конспект их выступления, которое также существует как в английской оригинальной версии (16), так и в русском переводе (17).
Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла "тихая революция". Молодые сторонники теории относительности, массово пришедшие в номенклатуру университетов, тогда постепенно захватили власть в области преподавания физики, навязав свою, столь любимую интеллектуалами того времени, теорию относительности широким массам физиков. На самом деле, в то время имелись как положительные эксперименты и опыты, подтверждающие существование эфира, так и отрицательные. Первые были полностью проигнорированы и исключены административными мерами из всех учебников физики, после чего эфир был незаслуженно "закрыт" и отправлен в отставку, и вот, уже нынешнее поколение студентов-физиков даже и не знает о тех весьма успешных опытах по обнаружению эфирного ветра. "Ну и где мы теперь, с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни после целого века её ковыряния и массового насаждения?"- как всегда язвительно вопрошает Гэбриел. По мнению Ричарда, абсолютно с точностью тоже самое произошло и с ООП, которая в 80-ых годах была провозглашена "серебряной пулей" в "борьбе со сложностью программистского бытия", была искусственно и безальтернативно навязана в академической среде, причем мифы, которые кочуют из учебника в учебник по ООП "часто забавны и высосаны буквально из пальца".
Только время покажет, кто в итоге окажется правым, а кто в этой горячей методологической дискуссии - искренне заблуждался. Но в любом случае, лично я за то, чтобы у нас всегда оставались возможности для альтернативных взглядов, пусть даже отличных от выбора большинства (как провокационно замечают американцы в таких случаях "лемминги не могут ошибаться"). И да, будьте смелее в своих поисках и размышлениях, не нужно бояться, если в очередной раз в истории вдруг окажется, что... "король-то голый"!
Сообщений 448 Оценка 290 [+1/-12] Оценить |