Программирование графами

Программирование графами это метод создания реальных работающих программ с использованием ориентированных графов, на горизонтальных дугах которых записывается элементарная математика — логические выражения, формулы, функции, простейшие операции типа ⟸, :=, ∑, ∍ и т. д.

Историческая справка

Исторически концепция программирования графами возникла в конце 70-х при создании систем управления основных ракет бывшего Союза.

Существующие языки программирования в ней не используются, но их библиотеки (машинный интеллект) сохраняются и используются как функции в математике, поэтому эта концепция называется еще «Программированием без языков программирования».

Метод программирования графами

В ориентированных графах используются только горизонтальные дуги, на которых сверху и снизу записывается информация на любых языках — русском, английском, китайском, математическом и т. д. без ограничений. Граф имеет имя с параметрами или без, которое записывается сверху около желтого эллипса на естественном языке. На дуге сверху записывается Условие прохождения по дуге, а снизу — Действия (функции, формулы или их описание на естественном языке), которые выполняются, если условие «истинно»:

Фиксированные операторы типа if, for, while существующих языков программирования не используются и вместо них из аксиомы формируются любые операторы нужные и эффективные для решения конкретной задачи, см. абстрактную R*-схему оператора 3-х вложенных циклов без деталей реализации (без записей на дугах). Записи на дугах могут быть декларативны (функциональны) и императивны. При этом не фиксированные и специализированные по месту использовагия R-схемы максимально удобны для выполнения императивных абстракций декларативных описаний.

Для выполнения на компьютере такого графа эти записи преобразуются (вручную, математическим выводом под контролем разработанной графической среды программирования — ГСП) в строго определенные выражения и формулы элементарной математики, «понятные компьютеру». Такой граф имеет стандарт ISO 8631/1989 и только одна его дуга — аксиома, эффективно используется для записи любых алгоритмов, данных, программ, объектно-ориентированных программ (ООП), баз знаний, сетевых графиков и компьютерных схем реализации, значительно упрощая, ускоряя и улучшая процессы их проектирования, доказательства правильности и модификации по результату эксплуатации. Программирование графами улучшает характеристики по наглядности, простоте, компактности, скорости ввода и занимаемой памяти компьютера, что позволяет программировать практически всем желающим, а не только программистам. Это делает программирование элементом всеобщей грамотности и культуры общества.

Графическая программа компактнее записи программ в существующих языках. Например, известный максимум в 133 раза компактнее С++, а запись R* этой программы в 400 раз компактнее. Ввод в компьютер R-схемы из 10 горизонтальных + 10 альтернативных дуг осуществляется за три нажатия клавиш вместо 1010 — для традиционной записи текстом, а в памяти машины такая программа будет занимать 5 байт, что в 202 раза меньше и т. д. Ниже приведена запись алгоритма вычисления Факториала числа N в общепринятых блок-схемах (граф, нагруженный по вершинам) и в R-схемах (граф, нагруженный по дугам), которые — R-схема и R*-аксиома (выше) имеют «золотое сечение»:

RR*-схема в математической концепции — это компактный и быстрый способ для разработки, записи и ввода алгоритмов, данных и программ в компьютер. Программирование графами решает проблему сложности и доказательства правильности программ и при этом все лучшее (библиотеки, «охраняемые команды», ООП и т. д.), накопленное в существующей практике программирования, сохранено в новой концепции.

В практике современного программирования большое распространение получило ООП. Ниже в графическом ООП приведена запись известного базового класса Point (точка) и двух его наследников: «Отрезок» (LineSegment) и «Треугольник» (Triangle). Данные (= объекты класса) задаются параметрами соответствующих имен класса и записываются в R-схемах НАД дугой, а Методы записываются ПОД дугой и выполняются, если Условие над дугой ИСТИННО. Красным цветом выделены формулы, по которым работают соответствующие методы класса — вычисление площади (Square) и периметра (Perimeter). Эти формулы и операции типа «⟸, :=, ∑, ∍ и т. д.» и т. д. задаются с помощью обычной клавиатуры и соответствующей виртуальной клавиатуры в ГСП.

По сравнению с JAVA, RR* ООП компактнее: R=9, R*=75 раз.

Выводы

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

  • функциональная полнота и эффективная универсальность сочетающаяся с простотой, наглядностью, компактностью, скоростью ввода, доказательством правильности и эффективной трансляцией прямо в коды компьютера без языков-посредников
  • нужные для работы операторы определяются решаемой задачей, библиотекой и естественно задаются из одной аксиомы декларативно или императивно. Фиксированных операторов нет
  • получаемое графическое изображение программы является уже готовым промышленным изделием, что формирует информационную индустрию программирования нового поколения
  • доступность и простота обучения позволяет вывести культуру программирования на новый уровень во всех сферах деятельности человека и сделать программирование доступным для всех
  • программирование графами имеет некую аналогию с нейронной сетью, которую в R-схемах играют дуги между вершинами, что может приблизить нас к решению проблемы искусственного интеллекта и упростить разработку логически суперсложных программ
  • программирование графами вводит понятие «золотого сечения», что делает его единым с общей системой мироздания и становится своеобразным критерием качества и устойчивости (полезности) в обществе результатов процесса программирования.