Если не считать теории, то, что действительно привело к принятию OOPS, стало появление графических интерфейсов на основе Windows.
Если вы просто программируете терминальное приложение для DOS или мейнфрейма, то вам действительно не нужен ООП, конечно, это может быть полезно, но нет веских причин для его применения. Однако, как только вы начнете писать код для любого графического интерфейса на основе wimp, эффективная обработка его без ООП становится очень сложной, особенно когда вы выходите за рамки простой системы.
Я сократил свои навыки кодирования для Mac, когда Pascal был языком по умолчанию, вы должны были обработать свой собственный цикл основных событий и делать такие вещи, проходя через прямоугольники, чтобы перерисовать окно, когда оно было на заднем плане, покрытое окнами перед этим. Следовательно, огромное количество даже самой простой программы было связано с базовой инфраструктурой, и было непросто поддерживать чистоту интерфейсов, чтобы код не превращался в запутанные спагетти. То же самое относится и к Windows (читайте любую из ранних книг Чарльза Петцольда «Окна программирования») и к различным другим графическим интерфейсам того времени.
Принятие ООП значительно упростило это, поскольку ООП естественным образом подходит для графических интерфейсов. В настоящее время мы считаем это очевидным и естественным, но это не всегда было так, и, конечно, принятие ООП считалось в то время серьезной проблемой для программистов. Однако в результате все новые программисты, начиная с конца 90-х годов, выросли с ООП, потому что это действительно необходимо для обработки GUI, в результате чего это в значительной степени стандартный способ кодирования и, следовательно, его использование широко распространилось за пределы интерфейса.