Какие существуют основные подходы к программированию?

В процессе истории развития программирования, оно пережило множество различных этапов, каждый из которых чем-то характеризировался. Мне было бы очень интересно узнать какие именно подходы к программированию были популярны/развивались со времён зарождения самого программирования и вплоть до наших дней.

Как только программирование возникло как такое, первые программы имели простейшую структуру. Это появление первых программ, впринципе, можно назвать первым этапом развития программирования. Возникли первые подпрограммы, которые можно было сохранять отдельно и использовать в разных программах, появлиись локальные даные.

Вторым этапом развития можно назвать структурный подход к программированию. Возникли разные принципы декомпозиции сложных систем с целью их реализации в виде небольших подпрограмм. Возникли такие известные языки программирования, как C, Pascal, ALGOL.

Третий этам - объектный подход к программированию. ООП - обектно-ориентированное программирование - определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экзампляром определёного типа (или класса), а классы, в свою очередь, образуют целую иерархию с наследованием различных свойств. Возникли такие языки как C , Java, а немного вскорее - и C#. Основными достоинствами ООП по сравнению с его предками - более естественная декомпозиция программного обеспечения, локализация данных, что позволяет вести практически полностью независимую разработку отдельных частей программы (объектов), возникновение знаменитых парадигм ООП - инкапсуляция, наследование, полиморфизм, композиция.

Четвёртый этап - ныне последний - это введение CASE технологий и компонентного подхода к разработки ПО. Новый вид программирования - КОП - компонентно-ориентированное программирование. Отличительной особенностью современного этапа развития технологии программирования является создание и внедрение автоматизированных технологий разработки и сопровождения программного обеспечения, которые были названы CASE-технологиями.