Dlaczego paradygmaty obiektowe trwały tak długo, zanim znalazły się w głównym nurcie?

12

Przeczytałem to pytanie i zaczęło mi się zastanawiać nad kolejną całkiem nową rzeczą. Języki obiektowe. Nie jestem pewien, kiedy powstał pierwszy, ale dlaczego minęło tak dużo czasu, zanim stały się głównym nurtem?

  • C stał się bardzo popularny, ale nie stał się obiektowym C ++ przez lata (dekady?) Później
  • Żaden główny język przed latami 90. nie był zorientowany obiektowo
  • Zorientowane obiektowo wydawało się, że w tym samym czasie wystartowało z Javą i C ++

Teraz moje pytanie, dlaczego to trwało tak długo? Dlaczego C nie był pierwotnie pomyślany jako język obiektowy? Biorąc bardzo mały podzbiór C ++, nie miałoby to większego wpływu na podstawowy język, więc dlaczego ten pomysł nie był popularny aż do lat 90.?

Earlz
źródło
1
Ha! Byłem pewien, że ktoś w końcu o to zapyta;) Jednak trzeba przeprowadzić trochę więcej badań, Smalltalk może nie był tak popularny, ale myślę, że zalicza się to do głównego nurtu, przynajmniej według definicji tego terminu na początku lat 70. (i załóżmy nie zapomnij Simula). Czy mówisz także o orientacji obiektowej opartej na klasach?
yannis,
6
Interesujące pytanie. Niedawno odkryłem, że Simula 67 ma metody wirtualne (już w latach 60-tych!). Wydaje się, że wiele najważniejszych pojęć w CS odkryto podczas pierwszych dwóch, trzech dekad jego historii (1950–1970). Wiele nowych rzeczy , które dziś widzimy, są w rzeczywistości mieszanką bardzo starych koncepcji.
Giorgio
3
@Giorgio: Uważam to odkrycie za rytuał przejścia, który oznacza, że ​​dorastasz od bycia zauroczonym najnowszym i największym do bycia doświadczonym programistą, który potrafi dostrzec modę i rozróżnić, co jest naprawdę przydatne.
Michael Borgwardt,
@Michael Borgwardt: Całkowicie się z tobą zgadzam (i nie jestem zauroczony najnowszymi technologiami :-)). Myślę, że doświadczony programista powinien oceniać technologię pod kątem skuteczności rozwiązania jej problemów. Początkujący mogą być pod wrażeniem nowych rzeczy i uważają to za lepsze po prostu dlatego, że jest nowy (hype). Odnośnie OOP: Wiedziałem, że te koncepcje były rozwijane przez wiele lat, ale kiedy spojrzałem na Simulę i zobaczyłem, że wymyślili już wiele koncepcji, które dziś powszechnie używamy, byłem naprawdę zaskoczony.
Giorgio

Odpowiedzi:

25

Najpierw spróbujmy ustalić linię czasu:

  • 1963 - Sketchpad Ivana Sutherlanda jest uważany za pionierskie dzieło zarówno w orientacji obiektowej, jak i GUI.
  • 1967 Pojawia się Simula i kwestia, czy należy uznać ją lub Smalltaka za pierwszy język obiektowy, jest nadal przedmiotem dyskusji.
  • 1969 - Dennis Ritchie rozpoczyna rozwijanie C .
  • 1972 - Pojawia się Smalltalk , język będący pod silnym wpływem Simuli. Jest to pomysł Alana Kay, który jest powszechnie uważany za wynalazcę terminu „orientacja obiektowa” (Alan Kay również zainspirował tytułową postać z Tron ;).
  • 1979 - Bjarne Stroustrup rozpoczyna pracę nad C z Classes, prekursorem C ++ .
  • 1983 - Pojawia się Cel C i zasadniczo jest to próba dodania smaku orientacji obiektowej Smalltalk do C.
  • 1985 - Pojawia się Object Pascal , który niemal natychmiast został spopularyzowany przez Turbo Pascal 5.5.
  • 1986 - Rozpoczęto prace nad CLOS , próbą dostosowania orientacji obiektowej do Common Lisp.
  • 1991 - Wydanie Visual Basic .
  • 1995 - Wydano Javę .
  • 1995 - Wydano Delphi .

Główne wpływy Ritchiego to BCPL i ALGOL (oba są językami imperatywnymi), a C powstał w czasie, gdy podejście Simuli i Smalltalk do orientacji obiektowej nie było jeszcze dobrze znane. Został ukończony około 1972 roku, a C z klasami pojawił się zaledwie 7 lat później, a zarówno Dennis Ritchie, jak i Brian Kernighan byli zaangażowani w jego powstanie :

W tym czasie uważałem C za najlepszy dostępny język programowania systemów. Nie było to wtedy tak oczywiste (1979), jak się później stało, ale miałem takich ekspertów, jak Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy i Brian Kernighan, z których mogłem się uczyć i uzyskiwać opinie. Bez ich pomocy i porad, bez C, C ++ byłby martwy.

W przeciwieństwie do powtarzających się plotek, nigdy nie powiedziano mi, że muszę używać C; nigdy też nie kazano mi używać C. W rzeczywistości pierwszy podręcznik C ++ wyrósł ze źródła troffa podręcznika C, który dał mi Dennis. Wiele nowych języków zaprojektowano w laboratoriach Bell; przynajmniej w „Badaniach” nie było żadnych reguł wymuszających bigoterię językową.

Cel C pojawił się 11 lat później, zarówno C ++, jak i C ++ były głównymi i udanymi próbami dostosowania orientacji obiektowej do C. Luka może wydawać się teraz długa, ale nie sądzę, żeby była ona szczególnie długa w tym czasie, pamiętajmy, że rozmawiamy o epoce przed WWW. 1993, kiedy pojawił się Mosaic (pierwsza przeglądarka), był punktem zwrotnym w branży. Wydane kilka lat później Java i Delphi miały ogromną przewagę nad swoimi poprzednikami, przynajmniej pod względem popularności. Zwój był również jednym z peronów Słońce kierowanie ich obietnicy wora , być może bardziej ważne w momencie, Java i był mocno sprzedawany jako w języku dla ówczesnego nowo urodzonego platformy.

Innym kluczowym czynnikiem jest to, że na przełomie lat 80. i 90. XX wieku GUI stały się popularne, szczególnie w komputerach domowych, podczas gdy sprzęt był coraz tańszy. Orientacja obiektowa jest niezwykle wygodnym paradygmatem przy tworzeniu GUI i ogólnie aplikacji graficznych, a Turbo Pascal, Delphi, Visual Basic i (być może w mniejszym stopniu) Java były chwalone (wówczas) za prostotę, jaką wnieśli przy tworzeniu GUI.

Pewna rola odegrała także agresywna marketingowa Java firmy Sun, ale ponieważ wciąż żywo pamiętam moją pierwszą interakcję, zdecydowanie nie byłem pod wrażeniem. Moją pierwszą reakcją na Javę było „hm, nic więcej niż głodny zasobów interpretowany C ++, pozostanę przy Turbo Pascal, dziękuję bardzo” (hej, miałem wtedy tylko 17 lat;). Nie wiem, jak w tamtym czasie ktoś zareagował na Javę, ale dla mnie była to tylko moda i szybko przeszedłem do Delphi (i Visual Basic, westchnienie) i zacząłem używać Javy dopiero kilka lat później, na studiach i tylko dlatego, że był to kurs obowiązkowy.

Chociaż prawdą jest, że Java i jej smak obiektowy bardzo szybko stały się popularne, nie sądzę, aby ten paradygmat nie był dość popularny przed połową lat 90. XX wieku, jednak wprowadzenie Internetu zmieniło naszą definicję popularności. W każdym razie połowa lat 90. była okresem, gdy rozwój oprogramowania generalnie cieszył się dużą popularnością, przy czym kluczowym czynnikiem była sieć, rozpowszechnianie GUI i tańszy sprzęt. Java była po prostu we właściwym miejscu we właściwym czasie.

Dalsza lektura:

Powiązane pytania:

Yannis
źródło
Ostatnie odkrycie: HISTORIA ALGOLU 68 - Chociaż nie ma wiele wspólnego z orientacją obiektową, jest to fascynująca lektura dla miłośników programowania.
yannis,
W 1994 r . Wydano Python 1.0 .
gerrit
2
@gerrit Wiem i istnieje kilka innych języków wydanych na początku i w połowie lat 90., które celowo pominąłem (na przykład Perl, PHP, Ruby, JavaScript), albo dlatego, że początkowo nie były bardzo popularne, albo dlatego, że od samego początku tak naprawdę nie obsługiwał orientacji obiektowej. Python nie był tak naprawdę wpływowym językiem przez pierwsze lata ...
yannis