Глава, в которой дядя Боб рассказывает нам о самых популярных парадигмах программирования.

Об этой статье

Это часть моей серии статей, где я по главам просматриваю Чистую архитектуру Роберта Мартина и делюсь своими мыслями, анализом и полученными знаниями. Предыдущую часть можно найти здесь.

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

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

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

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

Затем последовало объектно-ориентированное программирование, хотя на самом деле оно было открыто за два года до структурной парадигмы, в 1966 году, Оле Йоханом Далем и Кристен Найгаард. Они заметили, что в языке ALGOL кадр стека вызовов функций может быть перемещен в кучу. Это позволяло локальным переменным, объявленным функцией, существовать долгое время после ее возврата. Затем функция стала конструктором класса, локальные переменные стали переменными экземпляра, а вложенная функция стала методами. Это также привело к открытию полиморфизма благодаря дисциплинированному использованию указателей на функции.

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

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

Третья парадигма была изобретена первой и последней, популяризируемой и широко адаптированной. Это изобретение предшествовало компьютерному программированию в том виде, в каком мы его знаем. Функциональное программирование, получившее сейчас широкую известность, является прямым результатом l-исчисления, изобретенного Алонзо Черчем в 1936 году. Его l-исчисление легло в основу Язык LISP, изобретенный Джоном Маккарти в 1958 году. Основное правило функциональной парадигмы - неизменность, что означает, что значения символов не могут быть изменены после того, как они были установлены. Это в значительной степени означает, что в языках, следующих этой парадигме, нет операции присваивания (на самом деле она есть, это сложно, и я вернусь к этому в одной из будущих статей).

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

Убирая, а не добавляя

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

Структурированное программирование убирает gotos, объектно-ориентированное программирование убирает указатели на функции, а функциональное программирование убирает назначения. Если мы объединим всех троих вместе, из программирования почти нечего будет убирать, поэтому с 1968 года не было добавлено ни одной новой парадигмы.

Связь с архитектурой

Хорошо, но какое это имеет отношение к реальной архитектуре программного обеспечения?

Что ж, каждая часть архитектуры построена на одной из этих парадигм, хороший архитектор программного обеспечения использует ограничения, предоставляемые этими парадигмами, и использует их для достижения преимущества проекта.

Резюме

Я призываю вас поделиться со мной своим мнением и мнением, это лучший способ для всех нас учиться и расти. Также ознакомьтесь с полной книгой, это действительно замечательный источник знаний для любого разработчика. Мои статьи - это всего лишь краткое изложение информации, которую можно найти в этой книге, сделайте себе одолжение и прочтите ее целиком! Следующую часть этой серии можно найти здесь.