Парадигмы программирования — это способы программирования, не связанные с однократным выбором языка программирования. Парадигма сообщает, какую структуру программирования использовать и когда ее использовать.

На сегодняшний день существует 3 парадигмы программирования. Вы будете удивлены, узнав, что все они были обнаружены до 1968 года. Ниже приведены 3:

Структурированное программирование

Структурированное программирование налагает дисциплину на прямую передачу управления.

Парадигма структурированного программирования была открыта Эдсгером Вайбом Дейкстрой в 1968 году. Это была первая парадигма программирования, которая была принята (а не изобретена).

Дейкстра продемонстрировал, что использование неограниченных переходов (операторов перехода) вредно для структуры программы. В структурном программировании goto был заменен более привычными конструкциями if/then/else и do/while/until.

Объектно-ориентированное программирование

Объектно-ориентированное программирование налагает дисциплину на непрямую передачу управления.

Это была вторая принятая парадигма, но она была открыта в 1966 году двумя программистами Оле Йоханом Далем и Кристен Найгаард.

Программисты заметили, что фрейм стека вызовов функций в языке ALGOL можно переместить в начало, тем самым позволяя локальным переменным, объявленным функцией, существовать долгое время после возврата функции. Эта функция стала конструктором класса, локальные переменные стали переменными экземпляра, а вложенная функция стала методами. Это неизбежно привело к открытию полиморфизма благодаря дисциплинированному использованию указателей на функции.

Функциональное программирование

Функциональное программирование требует дисциплины при назначении.

Это третья принятая парадигма, но первая обнаруженная. Функциональное программирование является прямым результатом работы Алонзо Черча, который в 1936 году изобрел I-исчисление, которое, в свою очередь, является основой языка LISP, изобретенного Джоном Маккарти в 1958 году.

Основополагающей записью I-исчисления является неизменность, то есть запись о том, что значения символов не меняются. В большинстве языков функционального программирования есть средства для изменения значения переменной, но только при соблюдении строгой дисциплины.

Пища для размышлений

Каждая из парадигм лишает программиста возможностей (во благо 😉). Ни один из них не добавляет новых возможностей, но налагает какую-то дополнительную дисциплину, негативную по своему замыслу. Они говорят нам, чего не делать, больше, чем говорят нам, что делать.

Обратите внимание, что все парадигмы были открыты в течение десяти лет между 1958 и 1968 годами.

[1] Чистая архитектура — Робер К. Мартин