Perché i paradigmi orientati agli oggetti hanno impiegato così tanto tempo per diventare mainstream?


12

Ho letto questa domanda e mi ha fatto pensare a un'altra cosa abbastanza recente. Linguaggi orientati agli oggetti. Non sono sicuro di quando sia stato creato il primo, ma perché ci è voluto così tanto tempo prima che diventassero mainstream?

  • Il C divenne molto popolare, ma non divenne il C ++ orientato agli oggetti per anni (decenni?) Dopo
  • Nessun linguaggio tradizionale prima degli anni '90 era orientato agli oggetti
  • Orientato agli oggetti sembrava davvero decollare con Java e C ++ nello stesso periodo

Ora, la mia domanda, perché ci è voluto così tanto tempo? Perché C non era originariamente concepito come un linguaggio orientato agli oggetti? Prendere un piccolo sottoinsieme di C ++ non avrebbe influenzato molto il linguaggio principale, quindi perché questa idea non è stata popolare fino agli anni '90?


1
Ha! Ero certo che qualcuno lo avrebbe chiesto alla fine;) Tuttavia, è necessario fare un po 'più di ricerca, Smalltalk potrebbe non essere stato immensamente popolare, ma penso che conti come mainstream, almeno per la definizione del termine nei primi anni '70 (e non dimenticare Simula). Inoltre, stai parlando specificamente dell'orientamento agli oggetti basato sulla classe?
yannis,

6
Domanda interessante. Di recente ho scoperto che Simula 67 aveva metodi virtuali (già negli anni '60!). Sembra che molti dei concetti più importanti in CS siano stati scoperti durante i primi due, tre decenni della sua storia (1950-1970). Molte cose nuove che vediamo oggi sono in realtà un mix di concetti molto vecchi.
Giorgio,

3
@Giorgio: considero quella scoperta un rito di passaggio che segna la tua crescita dall'essere infatuato dell'ultimo e il più grande ad essere uno sviluppatore esperto che può vedere attraverso le mode e distinguere ciò che è effettivamente utile.
Michael Borgwardt,

@Michael Borgwardt: sono totalmente d'accordo con te (e non sono facilmente infatuato dalle ultime tecnologie :-)). Penso che uno sviluppatore esperto dovrebbe giudicare la tecnologia in base all'efficacia con cui può risolvere i suoi problemi. Un principiante può essere colpito dalle nuove cose e considerarlo meglio semplicemente perché è nuovo (hype). Per quanto riguarda OOP: sapevo che questi concetti erano stati sviluppati nel corso di molti anni, ma quando ho dato un'occhiata a Simula e ho visto che avevano già inventato molti concetti che oggi usiamo comunemente, sono rimasto davvero sorpreso.
Giorgio,

Risposte:


25

Innanzitutto, proviamo a stabilire una sequenza temporale:

  • 1963 - Sketchpad di Ivan Sutherland è considerato un lavoro pionieristico sia nell'orientamento agli oggetti che nelle GUI.
  • 1967 appare Simula , e se sia esso o Smalltak da considerare il primo linguaggio orientato agli oggetti è ancora oggetto di dibattito.
  • 1969 - Dennis Ritchie inizia in via di sviluppo C .
  • 1972 - Appare Smalltalk , una lingua fortemente influenzata da Simula. È il frutto di Alan Kay, che è generalmente considerato l'inventore del termine "orientamento dell'oggetto" (Alan Kay ha anche ispirato l'omonimo personaggio di Tron ;).
  • 1979 - Bjarne Stroustrup inizia a lavorare su C con Classes, il precursore di C ++ .
  • 1983 - Appare l' obiettivo C , ed è essenzialmente uno sforzo per aggiungere il sapore dell'orientamento degli oggetti di Smalltalk a C.
  • 1985 - Appare Object Pascal , ed è quasi immediatamente reso popolare da Turbo Pascal 5.5.
  • 1986 - Inizia il lavoro su CLOS , uno sforzo per portare l'orientamento agli oggetti in Common Lisp.
  • 1991 - Viene rilasciato Visual Basic .
  • 1995 - Viene rilasciato Java .
  • 1995 - Viene rilasciato Delphi .

Le principali influenze di Ritchie furono BCPL e ALGOL (entrambi sono linguaggi imperativi), e C fu creato in un momento in cui l'approccio di Simula e Smalltalk all'orientamento agli oggetti non era ancora ben noto. Fu completato intorno al 1972 e C con Classes apparve solo 7 anni dopo, con Dennis Ritchie e Brian Kernighan coinvolti nel suo inizio :

A quel tempo, ho considerato C il miglior linguaggio di programmazione dei sistemi disponibile. Non era poi così ovvio (1979) come divenne in seguito, ma avevo esperti come Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy e Brian Kernighan lungo il corridoio da cui potevo imparare e ottenere feedback. Senza il loro aiuto e consiglio e senza C, il C ++ sarebbe nato morto.

Contrariamente alle voci ripetute, non mi è mai stato detto che dovevo usare C; né mi è mai stato detto di non usare C. In effetti, il primo manuale C ++ è cresciuto dalla fonte di troff del manuale C che Dennis mi ha dato. Molte nuove lingue furono progettate nei laboratori Bell; almeno nella "ricerca" non c'erano regole che imponessero il bigottismo linguistico.

L'obiettivo C è apparso 11 anni dopo, e sia esso che C ++ sono stati grandi e riusciti sforzi per portare l'orientamento degli oggetti a C. Il divario potrebbe sembrare lungo ora, ma non credo che fosse particolarmente lungo, ricorda che stiamo parlando circa un'era prima del World Wide Web. 1993, quando apparve Mosaic (il primo browser) è stato un punto di svolta nel settore. Java e Delphi, rilasciati un paio di anni dopo, avevano un enorme vantaggio rispetto ai loro predecessori, almeno in termini di popolarità. Il web è stato anche una delle piattaforme Sun si indirizzava con la loro promessa WORA , forse la più importante, al momento, e Java è stato pesantemente commercializzato come la lingua per la piattaforma poi appena nato.

Un altro fattore chiave è che la fine degli anni '80 e l'inizio degli anni '90 furono un periodo in cui le GUI iniziarono a diventare popolari, specialmente nell'home computing, mentre allo stesso tempo l'hardware stava diventando sempre più economico. L'orientamento agli oggetti è un paradigma estremamente conveniente quando si sviluppano GUI e applicazioni orientate alla grafica in generale, e Turbo Pascal, Delphi, Visual Basic e (forse in misura minore) Java sono stati elogiati (all'epoca) per la semplicità che hanno portato allo sviluppo della GUI.

Ovviamente anche il marketing aggressivo di Sun di Java ha avuto un ruolo, tuttavia poiché ricordo ancora vividamente la mia prima interazione con esso, non sono stato sicuramente impressionato. La mia prima reazione a Java è stata "hm, nient'altro che una risorsa affamata interpretata in C ++, mi atterrò a Turbo Pascal, grazie mille" (ehi, avevo solo 17 anni all'epoca;). Non so come nessun altro abbia reagito a Java in quel momento, ma per me era solo una mania e sono passato rapidamente a Delphi (e Visual Basic, sospiro), e ho iniziato a usare Java solo pochi anni dopo, al college e solo perché era un corso obbligatorio.

Mentre è vero che Java, e il suo sapore di orientamento agli oggetti, diventano molto popolari molto rapidamente, non penso davvero che il paradigma non fosse abbastanza popolare prima della metà degli anni '90, l'introduzione del web ha cambiato la nostra definizione di popolarità. In ogni caso, la metà degli anni '90 è stata un'epoca in cui lo sviluppo del software in generale ha avuto uno scatto di popolarità, con il web, la proliferazione di GUI e l'hardware più economico come fattori chiave. Java era semplicemente nel posto giusto al momento giusto.

Ulteriori letture:

Domande correlate:


Una scoperta recente: UNA STORIA DI ALGOL 68 - Sebbene non abbia molto a che fare con l'orientamento agli oggetti, è una lettura affascinante per gli appassionati di storia della programmazione.
yannis,


2
@gerrit lo so, e ci sono molte altre lingue rilasciate all'inizio e alla metà degli anni '90 che ho saltato intenzionalmente (ad esempio Perl, PHP, Ruby, JavaScript), o perché all'inizio non erano molto popolari, o perché non ha davvero supportato l'orientamento agli oggetti sin dall'inizio. Python non era davvero un linguaggio influente nei suoi primi anni ...
yannis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.