Чому об'єктно-орієнтоване програмування провалилося?, Різне, Програмування, статті

Ігор Савчук

Минуло рівно 10 років з часу публікації відомою і класичною в світі програмування статті, написаної Річардом Гебріел (Richard Gabriel), Назва якої стало вже загальним і винесено в заголовок моєї статті. Стаття стала настільки гострою і злободенною для свого часу, що викликала бурхливий сплеск обговорень в співтоваристві програмістів, цілий ряд відомих програмістів включився у відкриту полеміку з автором, від редакції відомого американського програміста журналу Dr. Dobb "s Journal до таких вчених як Ендрю Таненбаум (Andrew Tanenbaum).

Автор цієї резонансної статті, доктор комп'ютерних наук Стенфорда, старший архітектор з розробки ПЗ спочатку Sun, а потім і IBM, Річард Гебріел ніколи не приховував свого скептичного ставлення до парадигми ООП. У 2002 році, після 2 років після первісної публікації своєї критичної статті автора запросили виступити, тепер вже живцем і перед великою аудиторією, – і викласти свої критичні погляди на щорічній конференції OOPSLA (Центральна конференція IT-фахівців з об'єктно-орієнтованим мовам і методологій розробки ПЗ). І, щоб за старою доброю американською традицією перетворити це на гаряче шоу, як його опонента одночасно запросили Гая Стіла (Guy Steele), Батька-розробника мови Scheme, найбільшого фахівця-теоретика з ООП, авторитет якого в американській академічному середовищі незаперечний.

Щоб максимально відобразити позиції виступаючих, їх вирішили посилити ще двома виступаючими. У якості "анти-об'ектніка" додатково запросили Пола Грема (Paul Graham), Найбільшого фахівця з Lisp, автора численних книг та стандартизації Lisp, до речі, згідно Вікіпедії, в 1995 році створив разом з Робертом Морісом перше в світі web-додаток – Viaweb, Яке потім викупила у них Yahoo (як ми всі знаємо, Роберт Морріс (Robert Morris), близький друг і колега Пола, на цьому досягненні не зупинився, і написав, мабуть, найвідоміший черв'як в історії інтернету, але це вже зовсім інша історія). У стан об'ектніков запросили Джеймса Ноубла (James Noble), автора одних з перших книг і робіт з теорії ООП. Багато учасників згадують, що конференція цього року надовго запам'яталася їм по тому рівню обговорення, яке зав'язалося тоді в цій публічній "інтелектуальної дуелі" фактично діаметрально різних шкіл програмування.

Але факт залишається фактом: сторона, яка представляла об'єктно-орієнтоване програмування, під час відкритої дискусії з супротивниками під сміх залу навіть заплуталася в своїх же концепціях. Люди згадують, що у всіх склалося стійке враження, що аргументація Lisp "еров була куди переконливіше і послідовніше, ніж прихильників ООП (цікаво, що головним доповідачем з ООП був творець мови Scheme – Головного сучасного діалекту того ж Lisp "а).

Пол Грем стверджував, що половина всіх концепцій ООП є скоріше поганими, ніж хорошими, у зв'язку з чим він щиро співчуває ООП-програмістам, тоді як друга половина від залишилися концепцій і зовсім не має ніякого відношення до ООП, з якими їх чомусь постійно асоціюють. Наприклад, він говорить: "У вісімдесятих роках метод повторного використання якимось незрозумілим мені чином пов'язали з об'єктно-орієнтованим програмуванням, і як завгодно численні наявні докази зворотного, мабуть, вже не позбавлять цей метод від клейма ООП. Хоча іноді об'єктно-орієнтована код годиться для повторного використання, таким його робить зовсім не об'єктно-орієнтованість, а програмування в стилі "знизу-вверх". Візьмемо, наприклад, бібліотеки: їх можна довантажувати і повторно використовувати скільки завгодно, тому що, по суті, вони являють собою окрема мова. І при цьому зовсім неважливо, написані вони в об'єктно-орієнтованому стилі чи ні. "

Інший великий критик ООП – це відомий фахівець з програмування Олександр Степанов, Який, працюючи в Bell Labs, брав участь у створенні C + + разом c Бйорн Страуструпом (Bjarne Stroustrup), а згодом, вже після запрошення в HP Labs, написав Standard Template Library (STL). Олександр Олександрович повністю розчарувався в парадигмі ООП; зокрема, він пише: "Я впевнений, що парадигма ООП методологічно невірна. Вона починає з побудови класів. Це так, ніби математики починали б з аксіом. Але реально ніхто не починає з аксіом, всі починають з доказів. Тільки коли знайдений набір відповідних доказів, тільки тоді на цій основі виводиться аксіома. Тобто в математиці ви закінчуєте аксіомою. Теж саме і з програмуванням: спочатку ви повинні починати розвивати алгоритми, і тільки в кінці цієї роботи ви приходите до того, що опиняєтеся в змозі сформулювати чіткі і несуперечливі інтерфейси. Саме через цю плутанину в ООП такий популярний рефакторинг – через ущербності парадигми ви просто приречені на переписування програми, вже в той самий момент, коли тільки задумали її спроектувати в ООП-стилі ". Річард Столлман (Richard Stallman) також відомий своїм критичним ставленням до ООП, особливо він любить жартувати щодо того міфу об'ектніков, що ООП" прискорює розробку програм ":" Як тільки ти сказав слово "об'єкт", можеш відразу забути про модульності ".

Томас Потік (Thomas Potok) з Oak Ridge National Laboratory навіть провів масштабне прикладне дослідження, Яке продемонструвало, що немає жодної помітної різниці в продуктивності між програмістами, які працюють у стилі ООП і в звичайному процедурному стилі програмування.

Майже всі пункти свого виступу і претензії до ООП як до парадигми Річард Гебріел пізніше заново систематизував з урахуванням мав місце широкого обговорення і критики, після чого все було зведено в брошуру, Яку Річард виклав у вільний доступ разом з пояснюючими її слайдами (Дуже короткий зміст його виступу можна знайти і в перекладі на російську мову). Після цього дуже сильного виступу в нього з'явилося багато послідовників, які спробували систематизувати всі міфи і дефекти ООП у своїх численних статтях і роботах. На жаль, ймовірно, через те, що як я вже сказав вище, у відповідь виступ об'ектніков "Чому ООП не провалилося" вийшло кілька зім'ятим через інтелектуального натиску Lisp "еров; виступали так і не оформили згодом свою позицію переваг ООП в розгорнутому вигляді. В інтернеті збереглося лише короткий зміст-конспект їх виступу, який також існує як в англійської оригінальної версії, Так і в російською перекладі.

Річард Гебріел несподівано порівнює нинішню ситуацію з ООП з провалом ефіродінамікі у фізиці початку 20 століття, коли, по суті, відбулася "тиха революція". Молоді прихильники теорії відносності, масово прийшли в номенклатуру університетів, тоді поступово захопили владу в області викладання фізики, нав'язавши свою, настільки улюблену інтелектуалами того часу, теорію відносності широким масам фізиків. Насправді, в той час були як позитивні експерименти і досліди, які підтверджували існування ефіру, так і негативні. Перші були повністю проігноровані і виключені адміністративними заходами із усіх підручників фізики, після чого ефір був незаслужено "закрито" і відправлений у відставку, і ось вже нинішнє покоління студентів-фізиків навіть і не знає про ті вельми успішних дослідах з виявлення ефірного вітру. "Ну і де ми тепер, з цією вашою гарною теорією відносності, хто-небудь може мені назвати хоч якісь реально-практичні результати її застосування у вашій повсякденного життя після цілого століття її колупання і масового насадження? "- як завжди уїдливо запитує Гебріел.

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

Тільки час покаже, хто в підсумку виявиться правим, а хто в цій гарячій методологічної дискусії щиро помилявся. Але в будь-якому випадку, особисто я за те, щоб у нас завжди залишалися можливості для альтернативних поглядів, нехай навіть відмінних від вибору більшості (як провокаційно помічають американці в таких випадках, "лемінги не можуть помилятися"). І так, будьте сміливіше в своїх пошуках і роздумах, не потрібно боятися, якщо в черговий раз в історії раптом виявиться, що … "король-то голий"!


 

Blogerator.ru


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*