¿Por qué los paradigmas orientados a objetos tardaron tanto en convertirse en la corriente principal?

12

Leí esta pregunta y me hizo pensar en otra cosa bastante reciente. Lenguajes orientados a objetos. No estoy seguro de cuándo se creó el primero, pero ¿por qué pasó tanto tiempo antes de que se generalizara?

  • C se hizo muy popular, pero no se convirtió en el C ++ orientado a objetos durante años (¿décadas?) Más tarde
  • Ningún lenguaje convencional antes de los 90 estaba orientado a objetos
  • Orientado a objetos realmente parecía despegar con Java y C ++ casi al mismo tiempo

Ahora, mi pregunta, ¿por qué tomó tanto tiempo? ¿Por qué no se concibió originalmente C como un lenguaje orientado a objetos? Tomar un subconjunto muy pequeño de C ++ no habría afectado mucho el lenguaje central, entonces, ¿por qué esta idea no fue popular hasta los años 90?

Earlz
fuente
1
¡Decir ah! Estaba seguro de que alguien preguntaría esto eventualmente;) Sin embargo, debe investigar un poco más, Smalltalk podría no haber sido muy popular, pero creo que cuenta como corriente principal, al menos según la definición del término a principios de los años 70 (y vamos a no te olvides de Simula). Además, ¿estás hablando específicamente sobre la orientación a objetos basada en la clase?
Yannis
66
Interesante pregunta. Recientemente descubrí que Simula 67 tenía métodos virtuales (¡en los años 60 ya!). Parece que muchos de los conceptos más importantes en CS se descubrieron durante las primeras dos o tres décadas de su historia (1950-1970). Muchas cosas nuevas que vemos hoy son en realidad una mezcla de conceptos muy antiguos.
Giorgio el
3
@Giorgio: Considero que el descubrimiento es un rito de iniciación que marca su crecimiento de estar enamorado de lo último y mejor a ser un desarrollador experimentado que puede ver a través de las modas pasajeras y distinguir lo que es realmente útil.
Michael Borgwardt
@Michael Borgwardt: estoy totalmente de acuerdo con usted (y no estoy enamorado de las últimas tecnologías :-)). Creo que un desarrollador experimentado debería juzgar la tecnología por la eficacia con la que puede resolver sus problemas. Un novato puede quedar impresionado con cosas nuevas y considerarlo mejor simplemente porque es nuevo (bombo). Con respecto a la POO: sabía que estos conceptos se desarrollaron durante muchos años, pero cuando eché un vistazo a Simula y vi que ya habían inventado muchos conceptos que comúnmente usamos hoy en día, me sorprendió mucho.
Giorgio el

Respuestas:

25

Primero, intentemos establecer una línea de tiempo:

  • 1963: el Sketchpad de Ivan Sutherland se considera un trabajo pionero tanto en orientación a objetos como en GUI.
  • 1967 Simula aparece, y si él o Smalltak deben considerarse el primer lenguaje orientado a objetos es aún un tema de debate.
  • 1969 - Dennis Ritchie comienza a desarrollar C .
  • 1972 - Smalltalk , un lenguaje fuertemente influenciado por Simula, aparece. Es una creación de Alan Kay, a quien generalmente se le considera el inventor del término "orientación a objetos" (Alan Kay también inspiró el personaje homónimo en Tron ;).
  • 1979 - Bjarne Stroustrup comienza a trabajar en C con Classes, el precursor de C ++ .
  • 1983 - Aparece el objetivo C , y esencialmente es un esfuerzo para agregar el sabor de Smalltalk de la orientación del objeto a C.
  • 1985 - Aparece Object Pascal , y Turbo Pascal 5.5 lo populariza casi de inmediato .
  • 1986 - Comienza el trabajo en CLOS , un esfuerzo por llevar la orientación de los objetos a Common Lisp.
  • 1991 - Se lanza Visual Basic .
  • 1995 - Se lanza Java .
  • 1995 - Delphi es lanzado.

Las principales influencias de Ritchie fueron BCPL y ALGOL (ambos son lenguajes imperativos), y C se creó en un momento en que el enfoque de Simula y Smalltalk para la orientación a objetos aún no era conocido. Se completó alrededor de 1972 y C con clases apareció solo 7 años después, con Dennis Ritchie y Brian Kernighan involucrados en su inicio :

En ese momento, consideraba que C era el mejor lenguaje de programación de sistemas disponible. Eso no era tan obvio entonces (1979) como más tarde se convirtió, pero tuve expertos como Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy y Brian Kernighan por el corredor de quienes pude aprender y obtener retroalimentación. Sin su ayuda y consejo, y sin C, C ++ habría nacido muerto.

Contrariamente a los rumores repetidos, nunca me dijeron que tenía que usar C; tampoco me dijeron que no usara C. De hecho, el primer manual de C ++ surgió de la fuente troff del manual de C que Dennis me dio. Se diseñaron muchos idiomas nuevos en los laboratorios Bell; al menos en "Investigación", no había reglas que obligaran a la intolerancia lingüística.

El objetivo C apareció 11 años después, y tanto él como C ++ fueron esfuerzos importantes y exitosos para llevar la orientación de los objetos a C. La brecha puede parecer larga ahora, pero no creo que fuera particularmente larga en ese momento, recuerda que estamos hablando sobre una era anterior a la World Wide Web. 1993, cuando apareció Mosaic (el primer navegador) fue un punto de inflexión en la industria. Java y Delphi, lanzados un par de años después, tenían una gran ventaja sobre sus predecesores, al menos en términos de popularidad. La web también fue una de las plataformas a las que Sun apuntaba con su promesa de WORA , quizás la más importante en ese momento, y Java se comercializó fuertemente como el lenguaje para la plataforma recién nacida.

Otro factor clave es que a fines de la década de 1980 y principios de la década de 1990 fue cuando las GUI comenzaron a ser populares, especialmente en la informática doméstica, mientras que al mismo tiempo el hardware se volvía cada vez más barato. La orientación a objetos es un paradigma extremadamente conveniente cuando se desarrollan GUI y aplicaciones orientadas a gráficos en general, y Turbo Pascal, Delphi, Visual Basic y (quizás en menor medida) Java fueron elogiados (en ese momento) por la simplicidad que aportaron al desarrollo de GUI.

El marketing agresivo de Sun de Java obviamente también jugó un papel, sin embargo, dado que todavía recuerdo vívidamente mi primera interacción con él, definitivamente no me impresionó. Mi primera reacción a Java fue "hm, nada más que un recurso hambriento interpretado en C ++, me quedaré con Turbo Pascal, muchas gracias" (hey, solo tenía 17 años en ese momento;). No sé cómo alguien más reaccionó a Java en ese momento, pero para mí fue solo una moda y rápidamente me mudé a Delphi (y Visual Basic, suspiro), y solo comencé a usar Java unos años más tarde, en la universidad , y solo porque era un curso obligatorio.

Si bien es cierto que Java, y su sabor de orientación a objetos, se hicieron populares extremadamente rápido, realmente no creo que el paradigma no fuera bastante popular antes de mediados de la década de 1990, la introducción de la web cambió nuestra definición de popularidad. En cualquier caso, a mediados de la década de 1990 fue un momento en que el desarrollo de software en general tuvo un aumento de popularidad, con la web, la proliferación de GUI y hardware más barato como factores clave. Java estaba simplemente en el lugar correcto en el momento correcto.

Otras lecturas:

Preguntas relacionadas:

Yannis
fuente
Un hallazgo reciente: UNA HISTORIA DE ALGOL 68 : aunque no tiene mucho que ver con la orientación a objetos, es una lectura fascinante para los aficionados a la historia de la programación.
Yannis
En 1994, se lanzó Python 1.0 .
gerrit
2
@gerrit Lo sé, y hay varios otros idiomas lanzados a principios y mediados de los 90 que he omitido intencionalmente (por ejemplo, Perl, PHP, Ruby, JavaScript), ya sea porque no eran muy populares al principio o porque Realmente no admitía la orientación a objetos desde el principio. Python no fue realmente un lenguaje influyente durante sus primeros años ...
yannis