Risposta breve
Penso che sia stata la sfornata di progetti software prima dei giorni di OO. OO ha aiutato aggiungendo il concetto fondamentalmente critico: modellare il mondo reale .
Il primo linguaggio di programmazione orientato agli oggetti era Simula nel lontano 1967. Tuttavia, a quel tempo lo sviluppo del software era ancora nei laboratori e la maggior parte dei paradigmi era ancora più vicina al caso hardware .
In oltre un altro decennio di sviluppo di software per applicazioni aziendali, altre applicazioni commerciali sono cresciute e lo sviluppo del software in generale è aumentato negli anni '70. Le lingue che sopravvivono ancora oggi di quell'età (prima del 1980) erano C, Cobol, Fortran e altri simili. La maggior parte di queste lingue sono procedurali. Lisp esisteva anche da quel giorno - tuttavia, non sono sicuro che fosse un linguaggio di uso generale di primo piano per lo sviluppo commerciale. Il famoso termine modello Cascata fu coniato anche all'inizio degli anni '70.
Nella maggior parte degli ambienti commerciali, l'elemento più importante emerso nello sviluppo del software è stata la gestione dei progetti. C'era la disperata necessità di budget ristretti e almeno prevedibili e di gestione dei requisiti da congelare per garantire che il progetto raggiungesse il traguardo rispettabilmente. Durante questo periodo fu anche uno dei mitici manmonth del 1975.
Immagino che alla fine degli anni '70 le persone fossero esaurite, dato che i linguaggi procedurali non mantenevano tali promesse. E un nuovo paradigma orientato agli oggetti che esisteva da allora lo ha reso grande. Sebbene le persone potrebbero non essere d'accordo, penso che il C ++ che aiuti la familiarità e l'esperienza comprovata e di C, e la Promessa di orientamento agli oggetti (originariamente con il nome C con Classi) nel 1983 sia stata una pietra angolare per il successo della programmazione orientata agli oggetti.
Qualche riferimento per ulteriori prospettive: http://journal.thedacs.com/issue/43/88
Allora perché OO?
Penso a quei tempi (se si guarda al punto di vista del successo del progetto) - aveva senso che ciò che si capisce meglio sarebbe meglio gestibile. La metodologia orientata agli oggetti con una promessa "... tutto nella vita è un oggetto" sembrava più un buon senso prima ancora che si dimostrasse significativo. Il successo pratico di questo fattore è stato il concetto stesso di modellare sufficientemente il mondo reale e il problema attuale prima di saltare la pistola, cosa che penso sia qualcosa di fondamentalmente nuovo che OO ha offerto e che nessun altro paradigma ha offerto fino a quella data. E sicuramente dato che questo paradigma ti ha costretto a pensare un po ' prima di codificare più dei linguaggi procedurali, ha mostrato un successo visibile sui progetti software che hanno impiegato e da allora hanno preso piede!
EDIT
Aggiungerei anche che i linguaggi di programmazione si sono evoluti simultaneamente in parallelo a tali concetti fondamentali (paradigma OO, aspetto, macchine virtuali). Ogni nuovo concetto e pensiero nuovo sono emersi solo quando un nuovo linguaggio di programmazione nuovo lo ha dominato - mantenere solo la familiarità ma cambiare i fondamenti da nucleo! Allo stesso tempo, questi nuovi concetti e nuove lingue sono emerse solo a causa di nuovi problemi commerciali. Anni '80 - OO per software su larga scala, 1990 Java nell'era di Internet, PHP / ASP e molti altri per il web. Anche l'innovazione nei linguaggi di programmazione è stata guidata principalmente dalle esigenze discontinue del mercato.
In sintesi, all'inizio degli anni '80 era l'epoca in cui il software commerciale su larga scala decollava - mentre i progetti con linguaggi procedurali avevano i loro problemi, OO mostrava la luce migliore e rendeva i progetti più efficaci.