Введение сложное, длинное описание более потяное.

Есть 2 популярные парадигмы программирования: функциональное и ООП.

Я придумал следующее: в сущностях (можно написать "объектах" или любое другое слово, но это не прям объекты ООП, а в целом то, что мы используем при написании программы, функция - тоже какого-то рода "объект", который используется при написании программ, класс - это тоже некая сущность, некий "объект", который мы использвем при написании программ, переменная - тоже самое, т.е. те сущности их которых состоит программа).

В общем в этих сущностях/объектах выделять минимальные "свойства" (или можно сказать минимальное "поведение" или "элементарные свойства"), и создавать программы не на основе чего-то стандартного, например функции или класса, а создавать программы комбинируя эти выделенные минимальные "свойства" получая новые сущности/объекты.

В статье я попытался расписать подробнее, что я имею ввиду.

Возьмем например "объект", который используется при написании программ - функция.

У нее есть свойства:

  • имеет имя

  • можно вызывать ее - выполнять ее как код

  • можно присваивать в переменные (не в каждом языке программирования (ЯП))

  • можно передавать в другие функции или возвращать из других функций (не в каждом ЯП)

Т.е, относитесь к "свойствам" - как к предложениям на русском языке, которыми можно описать функцию. Я привел несколько. Вот сколько предложений о функции вы сможете сказать - столько свойств и есть у функции.

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

И затем мы можем создать новый "объект" из этих свойств:

  • имеет имя

  • можно передавать в другие функции

  • и все, других свойств у нашего нового "объекта" нету (для примера)

Такого объекта языка программирования конечно не существует, но мы можем его представить в образе и каким-то образом запрограммировать (используя классы ООП или функции в функциональном программировании, используя стандартные сущности, которые есть в языке программирования) и дальше использовать.

Очень хочется разобрать еще пару других стандартных "объектов", которые мы используем при написании программ.

Класс:

  • имеет даннные

  • имеет несколько функций

  • функции имеют доступ к данным

JSON строка:

  • может передаваться по сети (сериализоваться)

  • простая в структура и понимании

Вы можете выделить совершенно другие "элементарные свойства" этих 2 объектов.

Теперь мы можем комбинировать все свойства этих 3 объектов (функция, класс, json строка) вместе в любой комбинации:

  • имеет имя

  • может выполняться как код

  • может передаваться по сети (сериализоваться)

  • именно такая комбинация свойств и больше никаких свойств нету

Мы можем создать такой "объект" в нашей программе, используя стандартные сущности языка программирования (через классы в ООП или через функции в функциональном программировании) и запрограммировать такой "объект" и дальше использовать.

В общем суть моей парадигмы программирования:

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