Главная

SINT

Главная
SINT
Ликбез
Уровни
Монитор
Код

Карта

Среда программирования SINT




Далее...

SINT появился сам собой, "непорочным зачатием", в результате тривиального желания минимизировать время на разработку (и, разумеется, сопровождение) программных модулей, используемых в прикладных задачах самого различного назначения. Уже из самой этой цели понятно, что SINT призван обеспечить максимально возможную унификацию алгоритмов и программ, автоматическую поддержку различных версий исполнения (коммерческая, отладочная, демонстрационная), независимость программного кода от используемых платформ, компиляторов, операционных систем и даже, по возможности, от разрабатываемого конечного продукта. Как видим, уже в плане постановки задачи подход SINT радикально отличается от общепринятого: все до единого разработчики поступают с точностью до наоборот! Почему? Да просто цель совсем иная: не снижение трудоёмкости разработки, а максимальное извлечение прибыли от продажи программного обеспечения, которое рассматривается лишь как насос для выкачивания денег. Соответственно, главной задачей его создателей становится попытка намертво привязать пользователей к собственному дерьму. Почему дерьму? Потому, что та же цель диктует требование выпускать как можно большее количество версий, впаривая и впаривая их вконец одуревшим юзерам. Что может получиться в результате такой политики? Правильно: только дерьмо!

Существует и другая, принципиально отличающаяся концепция разработки - так называемое "свободное программное обеспечение". Идеология весьма интересна: здесь, по крайней мере, получение дерьмового софта не является целью - ни явной, ни тайной. Хорошо смотрится открытость исходных текстов, свобода использования, распространения, модернизации и прочие "копилефты". Но если абстрагироваться от всех этих авторских прав, юридических и финансовых вопросов, сосредоточившись только на качестве программного обеспечения, мы увидим, что качество здесь тоже хромает, но уже по другой причине: софт "размывается" низкокачественной продукцией амбициозных дилетантов или просто бесталанных программистов. Одним словом, проблема классическая: либо деревянная структура по типу "фюрер и стадо", либо болото "самоорганизации". Решение, как обычно, где-то посередине, и называется оно, как обычно, "многомерный граф".

Попробуем объединить преимущества обоих подходов и постараемся при этом не унаследовать их недостатки. Или можно поступить ещё наглее: попытаться сразу описать идеальную систему программирования. Понятно, что это и будет SINT, но какой он? Если определить SINT одним словом, то слово это будет интерпретация. А если назвать "три кита", на которых он покоится, то "киты" будут такие:

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

Первая же попытка реализации оказалась очень удачной, и инструментарий SINT практически сразу стал использоваться для создания буквально всего программного обеспечения. Причина проста: это было удобно! Концепция единого пространства текстов позволяет максимально использовать наработки, выполненные ранее в других проектах. В частности, сам факт регистрации в системе новой прикладной программы автоматически снабжает её перечнем необходимых инструментальных модулей (файловый менеджер, диспетчер памяти, преобразование типов данных, отладочные функции и т.п.). Ещё одним преимуществом данного подхода явилось повышение качества алгоритмов и программ за счёт более широкого тестирования модулей общего назначения на разных прикладных задачах. Эта же концепция позволяет ранее созданным программам, простой перетрансляцией их кода, "впитывать" все последующие наработки. Например, при регистрации модуля управления манипулятором "мышь" его получат сразу все "заинтересованные" программы. При регистрации в системе каждого нового транслятора (GNU, BC, MSVC, WATCOM) или операционной системы (DOS, Windows, UNIX), сохраняется возможность компиляции всех ранее разработанных модулей без какой-либо переделки их программного кода. Программы, написанные на SINT, реально работали и в среде MSDOS, и как консольные приложения WindowsXX, и в специализированных электронных блоках с собственными микропроцессорами. Все компоненты графовой СУБД Синдбад также были созданы в этой среде.

Принципы построения среды программирования неоднократно видоизменялись. Так, опыт создания диалоговых программных комплексов привёл к расширенному толкованию термина "меню" (трёхмерное, неоднородное, виртуальное и т.д.). Понятие метод, обычно понимаемое как функция, здесь чаще всего реализуется через данные вида группа объектов, группа событий, переключатели. По сути, большинство методов вообще не требуют операторного программирования, а иногда даже перетрансляции кода, если они вынесены во внешние файлы (templates, databases).

А теперь приглашаю познакомиться с SINT поближе. Тема эта, разумеется, безбрежна, но кое-что я постараюсь изложить - надеюсь, понятным языком. Добро пожаловать!
Далее...

08.12.2017 20:43
 
`