Pull to refresh

Программирование — как выражение строгой математической теории

Level of difficultyMedium
Reading time2 min
Views2.3K

А что если представлять программу как не набор ключевых слов, а как какой-то формальный язык, с математической строгостью. Тогда программу можно выразить через линии (например).

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

Любой рисунок будет представлять из себя программу.

Тогда мы можем писать программы, которые удовлетворяют определенным математическим законам. Например:

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

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

Данную концепцию замкнутости можно расширить от 0-мерного пространства, до 1-мерного, 2-мерного, 3-мерного, 4-мерного и бесконечно-мерного пространства.

Тогда мы можем писать только программы, которые будут выражены линиями и в обязательным требованием - замкнутыми. Т.е. рисовать замкнутые линии - писать программы на языке линий и только замкнутыми.

Еще одна математическая концепция - бесконечная асимптота - бесконечное приближение.

Например есть какая-то линия, для которой НЕ существует формулы вида

y=a_0x^0 + a_1x^1 + a_2x^2 + ... + a_nx^n + a_{\infty}x^\infty

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

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

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

Тогда мы можем писать программы (опять же линиями), которые будут бесконечно приближенными к какой-то нужной нам иррациональной требуемой линии.

Допустим требуемая линия - достать все товары из базы данных. И мы раскладываем эту 1 иррациональную линию в бесконечный ряд линий - ключевых слов языка программирования "линии".

Что в доставании товаров - иррационального? А как назвать функцию доставания товаров - getProducts или просто Something::products() или свойством - Something.products. А должна ли быть функция вообще? Или несколько? А какие еще GOF паттерны применить?

Или есть другая математическая концепция - увеличение. Вначале это + сложение, затем * умножение, затем это ^ возведение в степень, затем еще и еще, мы можем увеличивать что-то бесконечно быстро.

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

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

Tags:
Hubs:
-4
Comments9

Articles

Change theme settings