Beobaxter (beobaxter) wrote,
Beobaxter
beobaxter

Categories:

Почему провалилось ООП?

  Прошло ровно 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-ых годах была провозглашена "серебряной пулей" в "борьбе со сложностью программистского бытия", была искусственно и безальтернативно навязана в академической среде, причем мифы, которые кочуют из учебника в учебник по ООП - "часто забавны и высосаны буквально из пальца".

Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 10 comments