А что если представлять программу как не набор ключевых слов, а как какой-то формальный язык, с математической строгостью. Тогда программу можно выразить через линии (например).
Т.е. чисто теоретически может существовать такой язык программирования, где вместо ключевых слов в котором будут линии и изгибы. Например вот такая линия выражает программу "достать все товары без фильтров из базы данных".
![](https://habrastorage.org/getpro/habr/upload_files/36d/112/a25/36d112a25323ef46c3884d99ec292cb6.png)
Любой рисунок будет представлять из себя программу.
![](https://habrastorage.org/getpro/habr/upload_files/9ef/f08/d5a/9eff08d5a833b6d892565a65edf6b270.png)
![](https://habrastorage.org/getpro/habr/upload_files/fb8/c59/0be/fb8c590bec7995e002edfda5f5133246.png)
Тогда мы можем писать программы, которые удовлетворяют определенным математическим законам. Например:
В математике есть определенные геометрические фигуры, которые обладают одним свойством - замкнутые. Например круг, или знак бесконечности.
![](https://habrastorage.org/getpro/habr/upload_files/509/d16/a74/509d16a74c1098a79514e6f1624f624e.png)
![](https://habrastorage.org/getpro/habr/upload_files/bfb/2ba/664/bfb2ba6640886d99b6d2962784330d1c.png)
Эти фигуры выражают определенную математическую концепцию - замкнутость. Т.е. в фигурах нет какого-то конца, который торчит в сторону.
Данную концепцию замкнутости можно расширить от 0-мерного пространства, до 1-мерного, 2-мерного, 3-мерного, 4-мерного и бесконечно-мерного пространства.
Тогда мы можем писать только программы, которые будут выражены линиями и в обязательным требованием - замкнутыми. Т.е. рисовать замкнутые линии - писать программы на языке линий и только замкнутыми.
Еще одна математическая концепция - бесконечная асимптота - бесконечное приближение.
Например есть какая-то линия, для которой НЕ существует формулы вида
Сама формула тоже уже выражает определенную строгую математическую концепцию.
Так вот в математике есть концепция разложения любой линии в бесконечный многочлен, который будет максимально близко приближен к оригинальной линии, но никогда не равен ей.
![](https://habrastorage.org/getpro/habr/upload_files/625/946/2b0/6259462b08fe88e071318b648f6cc786.png)
![](https://habrastorage.org/getpro/habr/upload_files/e49/c24/cb0/e49c24cb062f7443ff5358e658fc5b79.png)
![](https://habrastorage.org/getpro/habr/upload_files/183/ca0/cf7/183ca0cf7c6c328541815eac8ef575b4.png)
А что если программирование - это выражение какой-то математической концепции - например "бесконечное приближение с помощью разложения в многочлен к линии, для которой не существует простой формулы".
Тогда мы можем писать программы (опять же линиями), которые будут бесконечно приближенными к какой-то нужной нам иррациональной требуемой линии.
Допустим требуемая линия - достать все товары из базы данных. И мы раскладываем эту 1 иррациональную линию в бесконечный ряд линий - ключевых слов языка программирования "линии".
Что в доставании товаров - иррационального? А как назвать функцию доставания товаров - getProducts или просто Something::products() или свойством - Something.products. А должна ли быть функция вообще? Или несколько? А какие еще GOF паттерны применить?
Или есть другая математическая концепция - увеличение. Вначале это + сложение, затем * умножение, затем это ^ возведение в степень, затем еще и еще, мы можем увеличивать что-то бесконечно быстро.
И что если программирование выражает какую-то такую математическую концепцию? Как замкнутость, разложение в бесконечный ряд, бесконечно быстрое увеличение. А не просто решает проблемы бизнеса - показать товары в списке таблицей.
Т.е. показать товары - надо, но какую "линию", т.е. "программу" нарисовать для этого - вот уже где есть полет для выражения определенной строгой математической концепции. Т.е. идеальной программы.