Pourquoi les paradigmes orientés objet ont-ils mis tant de temps à se généraliser?

12

J'ai lu cette question et cela m'a fait penser à une autre chose assez récente. Langages orientés objet. Je ne sais pas quand le premier a été créé, mais pourquoi a-t-il fallu si longtemps avant qu'ils ne deviennent courants?

  • C est devenu très populaire, mais n'est pas devenu le C ++ orienté objet pendant des années (décennies?) Plus tard
  • Aucune langue dominante avant les années 90 n'était orientée objet
  • Orienté objet semble vraiment décoller avec Java et C ++ à la même époque

Maintenant, ma question, pourquoi cela a-t-il pris si longtemps? Pourquoi C n'a-t-il pas été conçu à l'origine comme un langage orienté objet? Prendre un très petit sous-ensemble de C ++ n'aurait pas beaucoup affecté le langage de base, alors pourquoi cette idée n'était-elle pas populaire avant les années 90?

Earlz
la source
1
Ha! J'étais certain que quelqu'un le demanderait finalement;) Cependant, vous devez faire un peu plus de recherche, Smalltalk n'a peut-être pas été extrêmement populaire, mais je pense qu'il compte comme courant dominant, du moins selon la définition du terme au début des années 70 (et disons sans oublier Simula). Parlez-vous également spécifiquement de l'orientation des objets basée sur les classes?
yannis
6
Question interessante. J'ai récemment découvert que Simula 67 avait des méthodes virtuelles (dans les années 60 déjà!). Il semble que bon nombre des concepts les plus importants de CS aient été découverts au cours des deux ou trois premières décennies de son histoire (1950-1970). Beaucoup de nouvelles choses que nous voyons aujourd'hui sont en fait un mélange de concepts très anciens.
Giorgio
3
@Giorgio: Je considère que la découverte est un rite de passage qui marque votre passage de l'engouement pour les plus récents et les plus grands à un développeur expérimenté qui peut voir à travers les modes et distinguer ce qui est réellement utile.
Michael Borgwardt
@Michael Borgwardt: Je suis totalement d'accord avec vous (et je ne suis pas facilement entiché par les dernières technologies :-)). Je pense qu'un développeur expérimenté devrait juger la technologie en fonction de son efficacité à résoudre ses problèmes. Un débutant peut être impressionné par de nouvelles choses et le considérer mieux simplement parce qu'il est nouveau (battage médiatique). Concernant la POO: je savais que ces concepts ont été développés pendant de nombreuses années, mais quand j'ai jeté un coup d'œil à Simula et j'ai vu qu'ils avaient déjà inventé beaucoup de concepts que nous utilisons couramment aujourd'hui, j'ai été vraiment étonné.
Giorgio

Réponses:

25

Tout d'abord, essayons d'établir une chronologie:

  • 1963 - Sketchpad d' Ivan Sutherland est considéré comme un travail de pionnier à la fois dans l'orientation des objets et dans les interfaces graphiques.
  • 1967 Simula apparaît, et si elle ou Smalltak doit être considérée comme le premier langage orienté objet est encore un sujet de débat.
  • 1969 - Dennis Ritchie commence à développer C .
  • 1972 - Smalltalk , une langue fortement influencée par Simula, apparaît. C'est l'idée originale d'Alan Kay, qui est généralement considéré comme l'inventeur du terme "orientation d'objet" (Alan Kay a également inspiré le personnage éponyme de Tron ;).
  • 1979 - Bjarne Stroustrup commence à travailler sur C avec Classes, le précurseur de C ++ .
  • 1983 - Objectif C apparaît, et est essentiellement un effort pour ajouter la saveur de Smalltalk de l'orientation d'objet à C.
  • 1985 - Object Pascal apparaît, et est presque immédiatement popularisé par Turbo Pascal 5.5.
  • 1986 - Début des travaux sur CLOS , un effort pour apporter une orientation objet à Common Lisp.
  • 1991 - Visual Basic est publié.
  • 1995 - Java est sorti.
  • 1995 - Delphi est publié.

Les principales influences de Ritchie étaient BCPL et ALGOL (les deux sont des langages impératifs), et C a été créé à une époque où l'approche de Simula et Smalltalk pour l'orientation des objets n'était pas encore bien connue. Il a été achevé vers 1972 et C with Classes est apparu seulement 7 ans plus tard, Dennis Ritchie et Brian Kernighan étant impliqués dans sa création :

À l'époque, je considérais C comme le meilleur langage de programmation de systèmes disponible. Ce n'était pas aussi évident à l'époque (1979) que c'est devenu plus tard, mais j'avais des experts tels que Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy et Brian Kernighan dans le couloir d'où je pouvais apprendre et obtenir des commentaires. Sans leur aide et leurs conseils, et sans C, C ++ serait mort-né.

Contrairement aux rumeurs répétées, on ne m'a jamais dit que je devais utiliser C; on ne m'a jamais dit de ne pas utiliser C. En fait, le premier manuel C ++ est issu de la source troff du manuel C que Dennis m'a donné. De nombreux nouveaux langages ont été conçus dans les laboratoires Bell; dans "Research" au moins, il n'y avait pas de règles imposant le fanatisme linguistique.

L'objectif C est apparu 11 ans plus tard, et C ++ et C ++ ont tous deux été des efforts importants et couronnés de succès pour apporter une orientation objet à C. L'écart peut sembler long maintenant, mais je ne pense pas qu'il était particulièrement long à l'époque, rappelez-vous que nous parlons sur une époque avant le World Wide Web. 1993, quand Mosaic (le premier navigateur) est apparu a été un tournant dans l'industrie. Java et Delphi, sortis quelques années plus tard, avaient un énorme avantage sur leurs prédécesseurs, du moins en termes de popularité. Le Web a également été l' une des plates - formes Sun ciblaient leur WORA promesse , peut - être plus importante à l'époque, et Java a été largement commercialisé comme la langue pour la plate - forme alors née récemment.

Un autre facteur clé est que la fin des années 1980 et le début des années 1990 ont été une époque où les interfaces graphiques ont commencé à devenir populaires, en particulier dans l'informatique domestique, alors que le matériel devenait de moins en moins cher. L'orientation objet est un paradigme extrêmement pratique lors du développement d'interfaces graphiques et d'applications orientées graphiques en général, et Turbo Pascal, Delphi, Visual Basic et (peut-être dans une moindre mesure) Java ont été loués (à l'époque) pour la simplicité qu'ils apportaient au développement d'interfaces graphiques.

Le marketing agressif de Java par Sun a évidemment également joué un rôle, mais comme je me souviens encore très bien de ma première interaction avec lui, je n'ai certainement pas été impressionné. Ma première réaction à Java a été "hm, rien de plus qu'une ressource avide de C ++, je m'en tiendrai à Turbo Pascal, merci beaucoup" (hé, je n'avais que 17 ans à l'époque;). Je ne sais pas comment quelqu'un d'autre a réagi à Java à l'époque, mais pour moi, c'était juste une mode et je suis rapidement passé à Delphi (et Visual Basic, soupir), et j'ai commencé à utiliser Java quelques années plus tard, à l'université , et uniquement parce qu'il s'agissait d'un cours obligatoire.

S'il est vrai que Java, et sa saveur d'orientation d'objet, deviennent très rapidement populaires, je ne pense vraiment pas que le paradigme n'était pas assez populaire avant le milieu des années 1990, l'introduction du Web a changé notre définition de la popularité. Dans tous les cas, le milieu des années 1990 a été une période où le développement de logiciels en général a connu un regain de popularité, le Web, la prolifération des interfaces graphiques et le matériel moins cher étant des facteurs clés. Java était simplement au bon endroit au bon moment.

Lectures complémentaires:

Questions connexes:

yannis
la source
Une découverte récente: UNE HISTOIRE D'ALGOL 68 - Bien que cela n'ait pas grand-chose à voir avec l'orientation des objets, c'est une lecture fascinante pour les amateurs d'histoire de programmation.
yannis
En 1994, Python 1.0 est sorti .
gerrit
2
@gerrit Je sais, et il y a plusieurs autres langues publiées au début et au milieu des années 90 que j'ai intentionnellement sautées (par exemple Perl, PHP, Ruby, JavaScript), soit parce qu'elles n'étaient pas vraiment populaires au début, soit parce qu'elles n'a pas vraiment pris en charge l'orientation des objets dès le début. Python n'était pas vraiment un langage influent au cours de ses premières années ...
yannis