KPG писал(а):
Осталось определится "что" и при каких условиях можно считать Форт осью
Внезапно:
Пусть у нас в наличии некоторая OC. Уровень нам не важен: может полуразобранный Синклер, может MS Excel... Мы можем лишь вводить команды и мечтать писать для этой "машины" программы. Для определенности/понятности возьмем MS-DOS.
Теперь начнем "изобретать программирование".
0) Программа нулевого уровня - ручной ввод команд одна за другой. В MS-DOS мы так и делали. Скопировать файл, запустить игру, почистить директорий...
1) Когда мы видели, что набирать по одной команде лениво. Мы писали командные файлы (скрипты) - несколько команд "упакованных в оду", возможно даже с какой-то примитивной логикой "если ошибка, то...".
2) Покопавшись в журналах, мы узнали, что командные файлы можно научить не тупо выполнять "что прошито", но и спрашивать у пользователя "чего изволите?". Правда, изначально в DOS не было никаких средств для обращения к оператору, но их можно было легко создать или спереть готовые на стороне, не суть. Главное, что мы научились писать, как определил Мур "Программы с вводом".
Пропустим следующий этап и сразу перейдем к (4):
4) Мы столь круты, что написали свой BASIC - систему, которая позволяет нам писать программы не на убогом командном языке MS-DOS, который даже не знает, что наш IBM PC может выводить на экран графику, а на крутой машине, умеющей работать с массивами и строками, бибикать ноты и рисовать цветные линии...
По сути, мы возвращаемся к (0), но уже на новом технологическом уровне - можем вводить мощные команды, писать продвинутые скрипты-программы и т.д.
Теперь заткнем дыру:
3) Мы ищем способ не только увязывать команды в скрипты, но и создавать новые простые команды (а, заодно, и способы обмена информацией и управлением между ними). Т.к. результатом (4) будет новый язык (проблемно-ориентированный), то есть большое искушение назвать то, что, мы делаем на этом этапе, FORTH.
Однако, как ни назови, несомненно одно: нам придется залезть внутрь нашей исходной MS-DOS машины. И начать писать не на исходном языке команд command.com, а в кодах (например, в debug.com). И большая часть нашего BASIC-интерпретатора будет в этих кодах и написана (хотя он и сможет обращаться к MS-DOS, например, для работы с файлами. В случае же использования FORTH-метода "отскок в коды" будет совсем не велик - всего десяток основополагающих слов. Но, все равно, будет.
Исходя из этого цикла я предлагаю такое определение FORTH-OS:
это ОС, в которой на этапе (3) не надо будет откатываться назад. Где язык команд будет достаточным для создания "машины" следующего уровня. А будет ли там стек данных - дело десятое (на самом деле, будет, ведь надо же где-то сохранять введенные части команд).