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

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

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

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

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

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

Данную концепцию замкнутости можно расширить от 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 паттерны применить?

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

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

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

Комментарии (8)


  1. youngmysteriouslight
    00.00.0000 00:00
    +6

    Честно говоря, я совсем не понял, что именно предлагается в статье.

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

    Впервые встречаю, чтобы отдельно взятая программа рассматривалась как формальный язык. Если же речь идёт о том, чтобы рассматривать ЯП как математическую теорию, то для ЯП с системой типов это уже более 40 лет как делается.

    Тогда программу можно выразить через линии (например)

    В полной общности это тоже уже делается последние 20 лет.

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


    1. MasterMentor
      00.00.0000 00:00

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


  1. iig
    00.00.0000 00:00
    +1

    навеяло

    банан велик, но кожура у него еще больше

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


  1. LyuMih
    00.00.0000 00:00
    +3

    Язык из фильма "Прибытие"
    Язык из фильма "Прибытие"

    Интересная идея с визуализацией ЯП через линии. Похожее было в фильме "Прибытие"


  1. gmtd
    00.00.0000 00:00
    +1

    После того как окружность названа кругом возникли вопросы математической компетентности статьи


    1. MasterMentor
      00.00.0000 00:00

      Да, вопросов к "математической компетентности" - по ходу прочтения статьи возникает много. Но, ИМХО, она относится более (скорее) к поэзии, философии математики, нежели к её точным выкладкам. Отсюда я статью заплюсовал. :)


  1. Dr_Dash
    00.00.0000 00:00
    +2

    Рукописный текст с рецептами, в котором буквы соединены в слова - тоже, своего рода, программа


  1. YuryZakharov
    00.00.0000 00:00

    Почему-то вспомнилось:

    буэнос айрес,шлемазл, беса ме мучо