Владимир Паронджанов писал(а):
Степан Митькин писал(а):
А вот тот же алгоритм на секретно разрабатываемом диалекте ДРАКОНа...
Прошу критиковать.
Степан, просьба пояснить основные принципы этого диалекта.
Укажите хотя бы два-три пункта.
Идея вкратце:
Компьютерная программа - это блок информации.
Этот блок неизбежно содержит в себе информацию двух видов:
1.
Ключевая часть. Сама суть программы. Содержательная часть, без которой программа - не программа. Ядро, остов.
2.
Производная часть. Шлейф. Технические детали, которые необходимы для работы реального компьютера. Производная часть функционально зависит он ключевой части.
Чтобы создать ядро программы, требуется интеллект, опыт, понимание.
Чтобы создать производную часть, требуется следование правилам, аккуратность, исполнительность.
Задача стоит следующая:1. Свести ядро программы к минимуму.
2. Автоматизировать производство производной части.
Как это сделать? Один из способов - уменьшение связывания (байндинга).
Что такое связывание? Передача параметров в процедуры, возврат значения, порядок вызовов процедур, конвертация параметров.
Как можно уменьшить связывание?
Есть несколько способов:
1. Для многих задач расчётного типа - программирование "с конца", от требуемого результата. Например, как в языке утопист.
2. Глобальные переменные. Да, я не ошибся. Глобальные переменные упрощают жизнь в разы. Но не всегда. И тут есть тонкость.
3. Подразумеваемые переменные. Так называемое "текущее значение". Одна функция возвращает значение, которое принимает следующее и т.п. Юниксовые пайпы.
4. Подвид подразумеваемых переменных при хождении по графу данных программы. Если компилятор знает модель данных, он догадается, какое именно значение "подразумевается" в каждом конкретном случае.
Думаю вот, как это всё организовать и усилить ДРАКОНом.