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

12

Я прочитал этот вопрос, и это заставило меня задуматься о еще одной довольно недавней вещи. Объектно-ориентированные языки. Я не уверен, когда был создан первый, но почему прошло так много времени, прежде чем они стали мейнстримом?

  • C стал чрезвычайно популярным, но не стал объектно-ориентированным C ++ в течение многих лет (десятилетий?) Спустя
  • Ни один основной язык до 90-х не был объектно-ориентированным
  • Похоже, что объектно-ориентированные приложения действительно взлетели с Java и C ++ одновременно.

Теперь мой вопрос, почему это заняло так много времени? Почему C изначально не задумывался как объектно-ориентированный язык? Принятие очень маленького подмножества C ++ не сильно повлияло бы на основной язык, так почему же эта идея не была популярна до 90-х годов?

Earlz
источник
1
Ха! Я был уверен, что кто-то спросит это в конце концов;) Однако вам нужно сделать немного больше исследований, Smalltalk, возможно, не был очень популярен, но я думаю, что он считается основным, по крайней мере, по определению термина в начале 70-х (и давайте не забудь симулу). Кроме того, вы говорите конкретно об объектной ориентации на основе классов?
Яннис
6
Интересный вопрос. Недавно я обнаружил, что у Simula 67 есть виртуальные методы (уже в 60-х годах!). Кажется, что многие из наиболее важных концепций в CS были открыты в течение первых двух, трех десятилетий его истории (1950-1970). Многие новые вещи, которые мы видим сегодня, на самом деле представляют собой смесь очень старых концепций.
Джорджио
3
@ Джорджио: Я считаю, что это открытие - обряд, который отмечает, что вы выросли от увлечения новейшими и лучшими достижениями до того, чтобы стать опытным разработчиком, который может видеть сквозь причуды и различать, что на самом деле полезно.
Майкл Боргвардт
@ Майкл Боргвардт: Я полностью согласен с вами (и меня не так легко увлекать новейшие технологии :-)). Я думаю, что опытный разработчик должен судить о технологии по тому, насколько эффективно она может решить его / ее проблемы. Новичок может быть впечатлен новым материалом и считает его лучше просто потому, что он новый (реклама). Относительно ООП: я знал, что эти концепции разрабатывались в течение многих лет, но когда я взглянул на Simula и увидел, что они уже изобрели множество концепций, которые мы обычно используем сегодня, я был действительно поражен.
Джорджио

Ответы:

25

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

  • 1963 - Sketchpad Ивана Сазерленда считается новаторской работой в области объектной ориентации и графических интерфейсов.
  • 1967 г. Появляется Simula , и вопрос о том, следует ли считать его Smalltak первым объектно-ориентированным языком, все еще остается предметом дискуссий.
  • 1969 - Деннис Ритчи начинает развиваться C .
  • 1972 - появляется Smalltalk , язык, находящийся под сильным влиянием Simula. Это детище Алана Кея, который обычно считается изобретателем термина «объектная ориентация» (Алан Кей также вдохновил одноименного персонажа в Троне ;).
  • 1979 - Бьярн Страуструп начинает работать над C с Classes, предшественником C ++ .
  • 1983 - появляется цель C , и, по сути, это попытка добавить вкус Smalltalk к объектной ориентации к C.
  • 1985 - появляется Object Pascal , и он почти сразу популяризируется Turbo Pascal 5.5.
  • 1986 - Начинается работа над CLOS , целью которой является привлечение объектной ориентации в Common Lisp.
  • 1991 - Visual Basic выпущен.
  • 1995 - выпущена Java .
  • 1995 - Delphi выпущен.

Основными влияниями Ричи были BCPL и ALGOL (оба являются императивными языками), и C был создан в то время, когда подход Simula и Smalltalk к объектной ориентации еще не был хорошо известен. Это было завершено около 1972 года, и C с классами появился только 7 лет спустя, и Деннис Ричи и Брайан Керниган были вовлечены в его создание :

В то время я считал C лучшим из доступных языков системного программирования. Тогда это было не так очевидно (1979), как позже, но у меня были эксперты, такие как Деннис Ричи, Стив Джонсон, Сэнди Фрейзер, Грег Чессон, Даг Макилрой и Брайан Керниган, по которым я мог учиться и получать отзывы. Без их помощи и совета, а также без C, C ++ был бы мертворожденным.

Вопреки повторным слухам, мне никогда не говорили, что я должен использовать C; и при этом я никогда не говорил, чтобы не использовать C. Фактически, первое руководство по C ++ выросло из troff-источника руководства по C, которое дал мне Деннис. Многие новые языки были разработаны в лабораториях Bell; в «Исследованиях», по крайней мере, не было правил, усиливающих языковой фанатизм.

Цель C появилась 11 лет спустя, и она, и C ++ были крупными и успешными усилиями по привлечению объектной ориентации к C. Теперь этот разрыв может показаться долгим, но я не думаю, что он был особенно долгим в то время, помните, что мы говорим об эпохе до всемирной паутины. 1993 год, когда появился Mosaic (первый браузер), стал поворотным моментом в отрасли. Java и Delphi, выпущенные пару лет спустя, имели огромное преимущество перед своими предшественниками, по крайней мере, с точки зрения популярности. Веб также был одна из платформ Sun целился с их WORA обещанием , возможно , более важным в то время, и Java тяжело на рынке как на языке для затем новорожденной платформы.

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

Очевидно, что агрессивный маркетинг Sun Java также сыграл свою роль, однако, поскольку я до сих пор хорошо помню свое первое общение с ним, меня это точно не впечатлило. Моей первой реакцией на Java было: «Хм, не более чем истолкованный C ++ голодный ресурс, я буду придерживаться Turbo Pascal, большое спасибо» (эй, мне тогда было всего 17 лет;). Я не знаю, как кто-то еще отреагировал на Java в то время, но для меня это было просто увлечением, и я быстро перешел на Delphi (и Visual Basic, вздох), и начал использовать Java только несколько лет спустя, в колледже. И только потому, что это был обязательный курс.

Несмотря на то, что Java и ее разновидность объектной ориентации становятся очень популярными очень быстро, я не думаю, что эта парадигма не была достаточно популярной до середины 1990-х годов, но появление Интернета изменило наше определение популярности. В любом случае, середина 1990-х годов была периодом, когда разработка программного обеспечения в целом имела всплеск популярности, когда ключевыми факторами были Интернет, распространение графических интерфейсов и более дешевое оборудование. Ява была просто в нужном месте в нужное время.

Дальнейшее чтение:

Смежные вопросы:

Яннис
источник
Недавняя находка: ИСТОРИЯ АЛГОЛЯ 68. Хотя это не имеет большого отношения к объектной ориентации, это увлекательное чтение для любителей истории программирования.
Яннис
В 1994 году был выпущен Python 1.0 .
Gerrit
2
@gerrit Я знаю, и есть несколько других языков, выпущенных в начале и середине 90-х, которые я намеренно пропустил (например, Perl, PHP, Ruby, JavaScript), либо потому, что они не были действительно популярны сначала, либо потому, что они на самом деле не поддерживал ориентацию объекта с самого начала. Python не был действительно влиятельным языком в его первые годы ...
Яннис