Warum haben objektorientierte Paradigmen so lange gebraucht, um sich durchzusetzen?

12

Ich habe diese Frage gelesen und darüber nachgedacht. Objektorientierte Sprachen. Ich bin mir nicht sicher, wann die erste entstanden ist, aber warum hat es so lange gedauert, bis sie zum Mainstream wurden?

  • C wurde sehr populär, wurde aber jahrelang (Jahrzehnte?) Später nicht zum objektorientierten C ++
  • Vor den 90er Jahren war keine gängige Sprache objektorientiert
  • Objektorientiert schien sich mit Java und C ++ ungefähr zur gleichen Zeit zu entwickeln

Nun, meine Frage, warum hat das so lange gedauert? Warum wurde C ursprünglich nicht als objektorientierte Sprache konzipiert? Die Verwendung einer sehr kleinen Teilmenge von C ++ hätte die Kernsprache nicht wesentlich beeinflusst. Warum war diese Idee also erst in den 90er Jahren populär?

Earlz
quelle
1
Ha! Ich war mir sicher, dass dies irgendwann jemand fragen würde;) Auch wenn Sie ein bisschen mehr Nachforschungen anstellen müssen, Smalltalk war vielleicht nicht besonders beliebt, aber ich denke, es zählt als Mainstream, zumindest nach der Definition des Begriffs in den frühen 70ern (und lasst uns) Simula nicht vergessen). Sprechen Sie auch speziell über klassenbasierte Objektorientierung?
Yannis
6
Interessante Frage. Ich habe kürzlich herausgefunden, dass Simula 67 über virtuelle Methoden verfügt (bereits in den 60er Jahren!). Es scheint, dass viele der wichtigsten Konzepte in CS in den ersten zwei, drei Jahrzehnten seiner Geschichte (1950-1970) entdeckt wurden. Viele neue Dinge , die wir heute sehen, sind eigentlich eine Mischung aus sehr alten Konzepten.
Giorgio
3
@Giorgio: Ich betrachte diese Entdeckung als einen Übergangsritus, der Ihre Kindheit von der Begeisterung für das Neueste und Beste bis hin zu einem erfahrenen Entwickler kennzeichnet, der Modeerscheinungen durchschaut und erkennt, was tatsächlich nützlich ist.
Michael Borgwardt
@Michael Borgwardt: Da stimme ich dir voll und ganz zu (und ich bin nicht leicht von den neuesten Technologien verliebt :-)). Ich denke, ein erfahrener Entwickler sollte die Technologie danach beurteilen, wie effektiv sie seine Probleme lösen kann. Ein Neuling kann von neuen Dingen beeindruckt sein und es einfach deshalb besser finden, weil es neu ist (Hype). Zu OOP: Ich wusste, dass diese Konzepte über viele Jahre hinweg entwickelt wurden, aber als ich mir Simula ansah und feststellte, dass sie bereits viele Konzepte erfunden hatten, die wir heute üblicherweise verwenden, war ich wirklich erstaunt.
Giorgio

Antworten:

25

Versuchen wir zunächst, eine Zeitleiste zu erstellen:

  • 1963 - Ivan Sutherlands Sketchpad gilt als Pionierarbeit sowohl in der Objektorientierung als auch in der grafischen Benutzeroberfläche.
  • 1967 erscheint Simula , und ob es oder Smalltak als die erste objektorientierte Sprache gelten soll, ist immer noch umstritten.
  • 1969 - Dennis Ritchie beginnt mit der Entwicklung C .
  • 1972 - Smalltalk , eine stark von Simula beeinflusste Sprache, erscheint. Es ist die Idee von Alan Kay, der allgemein als Erfinder des Begriffs "Objektorientierung" gilt (Alan Kay hat auch die gleichnamige Figur in Tron inspiriert ;).
  • 1979 - Bjarne Stroustrup beginnt mit der Arbeit an C with Classes, dem Vorläufer von C ++ .
  • 1983 - Ziel C erscheint und ist im Wesentlichen ein Versuch, Smalltalks Geschmack der Objektorientierung zu C hinzuzufügen.
  • 1985 - Object Pascal erscheint und wird von Turbo Pascal 5.5 fast sofort populär .
  • 1986 - Die Arbeit an CLOS beginnt , um Common Lisp die Objektorientierung näher zu bringen.
  • 1991 - Visual Basic wird veröffentlicht.
  • 1995 - Java wird veröffentlicht.
  • 1995 - Delphi wird veröffentlicht.

Ritchies Haupteinflüsse waren BCPL und ALGOL (beide sind imperative Sprachen), und C wurde zu einer Zeit entwickelt, als Simulas und Smalltalks Herangehensweise an die Objektorientierung noch nicht bekannt war. Es wurde um 1972 fertiggestellt und C with Classes erschien nur 7 Jahre später, wobei sowohl Dennis Ritchie als auch Brian Kernighan an seiner Gründung beteiligt waren :

Zu dieser Zeit hielt ich C für die beste verfügbare Programmiersprache für Systeme. Das war damals (1979) nicht so offensichtlich, wie es später wurde, aber ich hatte Experten wie Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy und Brian Kernighan den Korridor entlang, von denen ich lernen und Feedback bekommen konnte. Ohne ihre Hilfe und ihren Rat und ohne C wäre C ++ tot geboren worden.

Entgegen wiederholten Gerüchten wurde mir nie gesagt, dass ich C verwenden müsse; Es wurde mir auch nie gesagt, ich solle C nicht verwenden. Tatsächlich ist das erste C ++ - Handbuch aus der troff-Quelle des C-Handbuchs entstanden, das Dennis mir gegeben hat. In den Bell-Labors wurden viele neue Sprachen entwickelt. Zumindest in "Research" gab es keine Regeln zur Durchsetzung der Sprachbigoterie.

Objective C erschien 11 Jahre später, und sowohl it als auch C ++ waren wichtige und erfolgreiche Bemühungen, um die Objektorientierung auf C zu bringen. Die Lücke mag jetzt lang erscheinen, aber ich denke, es war zu der Zeit nicht besonders lang, denken Sie daran, wir reden über eine Ära vor dem World Wide Web. 1993, als Mosaic (der erste Browser) erschien, war ein Wendepunkt in der Branche. Java und Delphi, die einige Jahre später veröffentlicht wurden, hatten einen enormen Vorteil gegenüber ihren Vorgängern, zumindest in Bezug auf die Popularität. Die Bahn war auch eine der Plattformen Sun wurde gezielt mit ihren WORA Versprechen , vielleicht wichtigeren zu der Zeit, und Java wurde stark wie vermarktet die Sprache für die damals neu geboren Plattform.

Ein weiterer Schlüsselfaktor ist, dass in den späten 1980er und frühen 1990er Jahren GUIs immer beliebter wurden, insbesondere im Heimcomputer, während gleichzeitig die Hardware immer billiger wurde. Die Objektorientierung ist ein äußerst praktisches Paradigma bei der Entwicklung von GUIs und grafikorientierten Anwendungen im Allgemeinen, und Turbo Pascal, Delphi, Visual Basic und (vielleicht in geringerem Umfang) Java wurden (zu dieser Zeit) für die Einfachheit der GUI-Entwicklung gelobt.

Die aggressive Vermarktung von Java durch Sun spielte natürlich auch eine Rolle, aber da ich mich noch genau an meine erste Interaktion damit erinnere, war ich definitiv nicht beeindruckt. Meine erste Reaktion auf Java war "hm, nichts weiter als ein ressourcenhungriger interpretierter C ++, ich bleibe bei Turbo Pascal, vielen Dank" (hey, ich war damals erst 17;). Ich weiß nicht, wie andere zu dieser Zeit auf Java reagierten, aber für mich war es nur eine Modeerscheinung, und ich wechselte schnell zu Delphi (und Visual Basic, seufz) und begann erst ein paar Jahre später im College mit Java Und nur, weil es ein Pflichtkurs war.

Java und seine Objektorientierung werden zwar sehr schnell populär, aber ich glaube nicht, dass das Paradigma vor Mitte der neunziger Jahre ziemlich populär war. Die Einführung des Webs hat unsere Definition der Popularität geändert. Auf jeden Fall war Mitte der 1990er Jahre eine Zeit, in der die Softwareentwicklung allgemein einen rasanten Aufschwung erlebte, wobei das Internet, die Verbreitung von GUIs und billigere Hardware die Schlüsselfaktoren waren. Java war einfach zur richtigen Zeit am richtigen Ort.

Weitere Lektüre:

Verwandte Fragen:

yannis
quelle
Ein neuerer Fund: A HISTORY OF ALGOL 68 - Obwohl es nicht viel mit Objektorientierung zu tun hat, ist es eine faszinierende Lektüre für die Programmierung von Geschichtsinteressierten.
Yannis
1994 wurde Python 1.0 veröffentlicht .
Gerrit
2
@gerrit Ich weiß, und es gibt mehrere andere Sprachen, die Anfang und Mitte der 90er Jahre veröffentlicht wurden und die ich absichtlich übersprungen habe (zum Beispiel Perl, PHP, Ruby, JavaScript), entweder weil sie anfangs nicht wirklich beliebt waren oder weil sie hat die Objektorientierung von Anfang an nicht wirklich unterstützt. Python war in den ersten Jahren keine wirklich einflussreiche Sprache ...
yannis