Чому об’єктно-орієнтовані парадигми знадобилися так довго, щоб перейти в мейнстрім?


12

Я прочитав це запитання, і це змусило мене задуматися про ще одну досить недавню річ. Об'єктно-орієнтовані мови. Я не впевнений, коли було створено перше, але чому пройшло так багато часу, перш ніж вони стали мейнстрімом?

  • C набув великої популярності, але не став об’єктно-орієнтованим C ++ протягом багатьох років (десятиліть?) Пізніше
  • Жодна основна мова до 90-х років не була орієнтована на об'єкти
  • Об'єктно орієнтоване дійсно схоже на те, що він знімався з Java та C ++ приблизно в один і той же час

Тепер, моє запитання, чому це зайняло так довго? Чому C спочатку не мислився як об'єктно-орієнтована мова? Прийняття дуже невеликого підмножини C ++ не вплинуло б на основну мову дуже багато, тож чому ця ідея не була популярною до 90-х?


1
Га! Я був певний, що хтось запитає це зрештою;) Однак вам потрібно зробити трохи більше досліджень, Smalltalk, можливо, не був надзвичайно популярним, але я думаю, що він вважається основним, принаймні за визначенням цього терміна на початку 70-х (і давайте не забудь Simula). Крім того, ви конкретно говорите про орієнтацію об'єкта на основі класу?
янніс

6
Цікаве запитання. Нещодавно я виявив, що в Simula 67 були віртуальні методи (вже 60-ті!). Схоже, що багато найважливіших понять у КС було виявлено протягом перших двох, трьох десятиліть його історії (1950-1970). Багато нових речей, які ми бачимо сьогодні, насправді є сукупністю дуже старих понять.
Джорджіо

3
@ Giorgio: Я вважаю це відкриття обрядом проходу, який знаменує ваше дорослішання від того, що ви зачаровуєтесь останніми і найбільшими до того, щоб бути досвідченим розробником, який може бачити примхи і розрізняти, що насправді корисне.
Майкл Боргвардт

@Michael Borgwardt: Я повністю погоджуюся з вами (і мене не так легко захоплюють новітні технології :-)). Я думаю, що досвідчений розробник повинен оцінити технологію за тим, наскільки ефективно вона може вирішити свої проблеми. Новачок може бути вражений новими речами і вважати його кращим просто тому, що він новий (ажіотаж). Стосовно OOP: Я знав, що ці концепції розроблялися протягом багатьох років, але коли я подивився на Simula і побачив, що вони вже вигадали багато понять, якими ми сьогодні зазвичай користуємось, я був дуже вражений.
Джорджіо

Відповіді:


25

Спочатку спробуємо встановити часову шкалу:

  • 1963 - Івана Сазерленда Sketchpad вважається Новаторська робота як в орієнтації об'єкта і ДПІ.
  • 1967 року з'являється Simula , і чи варто вважати це чи Smalltak першою об'єктно-орієнтованою мовою, все ще є предметом дискусій.
  • 1969 - Денніс Рітчі починає розвиватися C .
  • 1972 р. - з'являється Smalltalk , мова, на яку сильно впливає Симула. Це дітище Алана Кей, якого, як правило, вважають винахідником терміна "орієнтація на об'єкт" (Алан Кей також надихнув однойменного персонажа в Троні ;).
  • 1979 - Bjarne Stroustrup починає працювати над C з класами, попередником C ++ .
  • 1983 - з'являється мета C , і по суті це намагання додати смаку Smalltalk орієнтації об'єкта на C.
  • 1985 - з'являється об'єкт Pascal , який майже відразу популяризується Turbo Pascal 5.5.
  • 1986 р. - розпочинається робота над CLOS , намаганням навести орієнтацію об'єкта на Common Lisp.
  • 1991 - випущено Visual Basic .
  • 1995 - випущена Java .
  • 1995 - випущено Delphi .

Основними впливами Річі були BCPL та ALGOL (обидва - імперативні мови), а C був створений у той час, коли підхід Симули та Малталка до орієнтації на об'єкти ще не був добре відомий. Він був завершений близько 1972 року, а C разом із класами з'явився лише через 7 років, причому в його заснуванні брали участь і Деніс Річі, і Брайан Керніган :

У той час я вважав C найкращою доступною мовою програмування систем. Це було не так очевидно (1979), як це стало згодом, але в мене по коридору були такі експерти, як Денніс Річі, Стів Джонсон, Сенді Фрейзер, Грег Чессон, Даг Макілрой та Брайан Керніган, від яких я міг навчитися та отримати відгуки. Без їх допомоги та порад та без C, C ++ був би мертвонароджений.

Всупереч неодноразовим чуткам, мені ніколи не казали, що я повинен використовувати C; і мені ніколи не казали не використовувати C. Насправді, перший посібник з C ++ виріс із джерела Troff керівництва C, який мені подарував Денніс. У лабораторіях Белла було розроблено багато нових мов; принаймні, в "Дослідженнях" не було правил, що забезпечували б мовну фанатизм.

Об'єктив C з'явився через 11 років, і це, і C ++ були великими і успішними зусиллями для того, щоб довести орієнтацію на об'єкт до C. Розрив може здатися давно, але я не думаю, що він був особливо довгим часом, пам’ятайте, ми говорили про епоху до всесвітньої павутини. 1993 рік, коли з'явився Mosaic (перший браузер), став поворотним моментом у цій галузі. Java та Delphi, випущені через пару років, мали величезну перевагу перед своїми попередниками, принаймні з точки зору популярності. Веб також був одна з платформ Sun цілився з їх WORA обіцянкою , можливо , більш важливим в той час, і Java важко на ринку як на мові для потім новонародженої платформи.

Ще одним ключовим фактором є те, що кінець 1980-х і початок 1990-х були часом, коли графічні інтерфейси почали набувати популярності, особливо в домашніх обчисленнях, в той же час апаратне забезпечення стало дешевше і дешевше. Об'єктна орієнтація є надзвичайно зручною парадигмою при розробці графічних інтерфейсів і графічно орієнтованих додатків загалом, а Turbo Pascal, Delphi, Visual Basic і (можливо, в меншій мірі) Java були схвалені (на той час) за простоту, яку вони ввели до розробки графічного інтерфейсу.

Агресивний маркетинг Java від Sun, очевидно, також зіграв свою роль, проте, оскільки я все ще яскраво пам’ятаю свою першу взаємодію з нею, мене точно не вразили. Моя перша реакція на Java була: "гм, не що інше, як голосний ресурс інтерпретував C ++, я буду дотримуватися Turbo Pascal, дуже дякую" (ага, мені тоді було лише 17 років). Я не знаю, як ще хтось відреагував на Java на той час, але для мене це була просто пристрасть, і я швидко перейшов до Delphi (і Visual Basic, зітхаючи), і почав використовувати Java через кілька років, в коледжі і лише тому, що це був обов'язковий курс.

Хоча це правда, що Java та її аромат орієнтації на об’єкти стають популярними надзвичайно швидко, я дійсно не думаю, що парадигма була не досить популярною до середини 1990-х, впровадження Інтернету змінило наше визначення популярності. У будь-якому випадку, середина 1990-х років була часом, коли розробка програмного забезпечення взагалі мала приплив популярності: ключовим фактором були Інтернет, розповсюдження графічних інтерфейсів та дешевше обладнання. Java в потрібний час виявилася просто в потрібному місці.

Подальше читання:

Пов’язані запитання:


Нещодавня знахідка: ІСТОРІЯ АЛГОЛУ 68 - Хоча це не має великого відношення до орієнтації на об'єкти, це захоплююче прочитання для програвачів історії програмування.
янніс


2
@gerrit Я знаю, і є кілька інших мов, випущених на початку і в середині 90-х, які я навмисно пропустив (наприклад, Perl, PHP, Ruby, JavaScript) або тому, що спочатку вони не були дуже популярними, або тому, що вони насправді не підтримував орієнтацію на об'єкти з самого початку. Python не був насправді впливовою мовою протягом своїх перших років ...
yannis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.