Forth
http://fforum.winglion.ru/

Вольному Воля!
http://fforum.winglion.ru/viewtopic.php?f=36&t=1779
Страница 1 из 2

Автор:  WingLion [ Пт дек 19, 2008 23:19 ]
Заголовок сообщения:  Вольному Воля!

Вольному Воля!

начнем-с...

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

А по сему возникает простой вопрос, а не следует ли узаконить это положение, стандартное de facto?

И, соответственно с положительным ответом вводить стандарт так, чтобы он включал в себя все уже наработанное фортерами ранее. Если не по программам, то хотя бы по стандартам.

Цитата:
Я вот, думаю, надо вводить MultiStandard Forth (MSF)

Слова, которые прямо определяют, на каком именно стандарте написан исходник.

В начало исходника (хотя, в принципе, это можно и в любом месте делать) вписывается слово, определяющее используемый стандарт.

F83, ANSI94, RuF09 да, в принципе, и любой другой.

Компьютеры давно переросли то время, когда возможна поддержка одного и только одного стандарта.

Мне, вот, например, больше нравится стандарт F83 (его минимальное подмножество следует включить в ядро)

И сам стандарт строить в виде стандарта на ядро (NucStd) с опциями и стандартных расширений (F83.Ext, ANSI94.Ext, RuF09.Ext) к нему. При чем, расширения, не плохо бы написать НЕПОСРЕДСТВЕННО НА ФОРТЕ,
т.е. в виде исходника, который прямо компилируется на минимальном ядре. Машинно зависимые расширения, пишутся на соответствующих машинных "ассмеблерных" вставках. В кавычках - потому что ассемблера может и не быть как такового.

Ядро должно иметь опции - разрядность, минимальный объем памяти, указание на процессор (x86, i386, fCPU), и т.п. (надо продумать, что еще надо)

Часть расширений, конечно, не может быть написана на Форте (та же работа с файлами - зависит от ОС), поэтому нужен прямой механизм подключения машинно зависимых расширений ядра - проще всего, это сделать неким стандартным словом, которое должен определить стандарт. NucStd.16bit.64K.fCPU NucStd.32bit.4М.i386 - пример слов, определяющих ядро с включенными опциями.

Автор:  Hishnik [ Сб дек 20, 2008 01:31 ]
Заголовок сообщения: 

Вот сам подход мне очень нравится! Зачем долго и мучительно выращивать кактус, об который потом придется колоться, но продолжать жрать? :) Действительно, разбиение форт-системы на разумно-максимальное количество независимых модулей резко повысит привлекательность выполнения стандартов для отдельных разработчиков. Кстати, такому подходу и не противоречат альтернативные реализации одного и того же набора (например, словари, обработка исключений и прочие "проблемные" вещи могут подразумевать несколько реализаций). Стандартизованностью в Форте является скорее единообразность документирования возможностей, чем единообразность слов в словаре. В самом деле, сколько можно повторять, что в Форте легко делается что угодно, но тут же заставлять всенепременно называть слово так-то и так-то, и уж если появилось одно из набора, описанного в подпункте 123, то обязательно надо реализовать и все остальные.

Автор:  WingLion [ Сб дек 20, 2008 10:06 ]
Заголовок сообщения: 

Для начала, надо бы распланировать сам стандарт так,
чтобы он соответствовал идеям свободы, расширяемости и модульности.

Поэтому, просто начну его составлять...





Цитата:
<pre>
RuFIG Russia, 2008-2009

MultiStandard Forth (MSF)

Вольному Воля!
</pre>


1. Концепция-Манифест (KМ)

Свобода неистребима. Стремление писать по-своему было, есть и никуда не денется.
А по сему, данный Стандарт на Форт описывает не сам язык, а свободу программиста,
и рамки, в которых РЕКОМЕНДОВАНО ДЕЙСТВОВАТЬ, чтобы труд не пропадал впустую
и мог быть использован коллегами и будущим поколением.

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

Единственный требуемый шаг - соответствующее оформление программ, о чем
будет сказано в 4-м разделе.

Разумеется, в соответствии с главной концепцией свободы, программист может оформлять
свои программы ровно так, как ему хочется, писать хоть на папирусе, однако, в этом случае
он рискует остаться в одиночестве и забытьи со своими работами, чего мы никому не желаем.

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

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

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

подписи:

WingLion Изображение

1.1. Соглашения.
1.1.1. Документ изначально пишется на русском языке и может быть переведен на любой иной язык, в том числе с подходящим переводом терминов. Использование английского (а не русского) алфавита для написания программ, используемое в данном документе является лишь признанием исторически сложившегося стандарта de facto и ничуть не мешает программисту использовать свой родной алфавит для написания своих программ.
Английский алфавит (и язык) рекомендуется использовать только для достижения взаимопонимания в международной среде.

Форт бесконечно-расширяем, поэтому и стандарт для него должен быть расширяем, а не застывшим. Это значит, что стандарт должен предусматривать возможность добавления к самому себе дополнительных секций с описанием появляющихся в процессе развития вычислительной техники и программирования возможностей. Принципы добавления секций в стандарт - подобны принципам добавления новых слов в Форт. Секции добавляются в конец документа в соответствии с добавляемыми возможностями. Вклинивание добавлений в центр документа считать недопустимым, пока для этого не появится объективная необходимость.



далее предполагается появление следующих секций документа

Цитата:
2. Рекомендации по способам сборки Форта (ССФ)
Здесь будет рассказано, как с помощью этого документа и минимального ядра, описанного в следующем разделе, построить (скомпилировать) нужный программисту Форт-инструмент.
на данный момент еще не все ясно, поэтому здесь остается некоторый вакуум


Цитата:
3. "Минимальное" Ядро Форта (МЯФ)
Вопрос о самозарождении МЯФ-а оставим философам будущего,
а здесь просто опишем его и способ работы с ним.

3.1. реализация МЯФ может быть любой.
Главное, чтобы оно исполняла свое предназначение - а именно быть первым инструментом,
с помощью которого строится все остальные инструменты и программы.

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

3.4. МЯФ должен уметь следующее:
a. компилировать самого себя по шестнадцатеричному (двоичному, десятичному) дампу (представление дампа - самое простое - последовательность чисел, соответствующих ячейкам целевой системы, разделенных пробелом);
b. сохранять скомпилированный код в виде отдельной программы (.exe файла или иного исполняемого в целевой системе файла);
c. работать подобно Форту с сокращенным набором слов (стандартов F83 и ANSI94) используемым для построения целевого Форта - Форта на целевой системе;

3.5. Сокращенный набор слов (слова надо еще четко описать, чтобы не было двусмысленностей и недопонимания):
<pre>
а. работа со стеком DUP, DROP, NIP, OVER, SWAP, ROT, -ROT и их аналоги для данных двойной ширины
b. работа с памятью @ ! MOVE <MOVE
c. работа с портами ввода/вывода (IN), (OUT) безотносительно к организации портов
d. ввод/вывод на консоль KEY, ?KEY, EMIT, TYPE
e. операции на стеке + - * / mod and or xor
f. комментарии ( .( //
g. строки и символы " ." C" S, C,
h. определение новых слов и компиляция : ; , C, S, CREATE DOES> VARIABLE CONSTANT VALUE TO IMMEDIATE
i. структуры управления IF THEN ELSE EXECUTE DO LOOP +LOOP BEGIN WHILE UNTIL REPEAT EXIT QUIT
j. работа со стеком возвратов >R R@ R>
k. работа с входным потоком INTERPRET - интерпретирует поданную на вход строку со счетчиком
(блоки из F83 отправляются в соответствующий модуль расширения)
l. минимальная работа с файлами
INCLUDE - переключение входного потока интерпретатора на файл
LOAD - загрузка в память файла в бинарном виде
SAVE - бинарное сохранение блока памяти в файле
более сложную работу с файлами следует делать через модуль расширения, зависимый от целевой системы.
m. вспомогательные и специальные слова слова INFO RESTART BYE
</pre>

Надо отметить, что в сокращенный набор могут войти и иные слова. Здесь указаны лишь те, что необходимы для дальнейшего построения данного документа и для сборки Форта по рекомендациям 2-го раздела. Возможно, некоторые слова и лишние. Иные могут быть выражены через друг друга и т.п. Здесь не обсуждается и не утверждается минимальная необходимость данного набора. Можно сказать, что этот набор - есть "реальность, данная нам в ощущениях" - кирпичики, из которых строится все остальное.

Опять же, никто не запрещает построить из этих кирпичиков нечто свое и использовать полученный набор вместо первоначального. Надо только, чтобы это построение было явным. Либо непосредственно в исходном тексте программы, либо в виде Модуля Расширения Форта, о которых будет сказано в 5-м разделе.

4. Рекомендации по документированию Форт-программ (ДФП)

5. Модули Расширения Форта (МРФ)
Цитата:
Форт бесконечно-расширяем, поэтому и стандарт для него должен быть расширяем, а не застывшим. Это значит, что стандарт должен предусматривать возможность добавления к самому себе дополнительных секций с описанием появляющихся в процессе развития вычислительной техники и программирования возможностей. Принципы добавления секций в стандарт - подобны принципам добавления новых слов в Форт. Секции добавляются в конец документа в соответствии с добавляемыми возможностями. Вклинивание добавлений в центр документа следует считать недопустимым, пока для этого не появится объективная необходимость.

Каждый Модуль Расширения Форта должен сопровождаться дополнительной секцией к стандарту или указателем на секцию (секции), реализацию которой он представляет.

Добавления секций к стандарту производится для каждой конкретной реализации Форта соответственно с реализованными в нем функциями. Если же в некой реализации Форта нет реализации функций некой секции стандарта, в документации для этого Форта должно быть указано, какие секции не реализованы и по какой причине.

В дальнейшем, в общий стандарт могут быть включены некоторые новые секции, которые станут стандартны "де факто".

Автор:  вопрос [ Сб дек 20, 2008 10:24 ]
Заголовок сообщения: 

f. комментарии многострочные
?. работа с входным потоком : форт - интерпретатор
ИМХО

также предусмотреть часть по диагностическим или информационным словам (как без них?)
которые должны сообщать программисту, в какую сторону растёт стек ит.п.

Автор:  WingLion [ Сб дек 20, 2008 10:37 ]
Заголовок сообщения: 

вопрос писал(а):
f. комментарии многострочные


а разве ( - не является многострочным комментарием?

вопрос писал(а):
?. работа с входным потоком : форт - интерпретатор


да, согласен. плюс минимальные возможности по работе с файлами.

вопрос писал(а):
также предусмотреть часть по диагностическим или информационным словам (как без них?)
которые должны сообщать программисту, в какую сторону растёт стек ит.п.


Есть предложения по тому, какие именно слова нужны?

p.s. исправления внесены

Автор:  вопрос [ Сб дек 20, 2008 10:49 ]
Заголовок сообщения: 

Цитата:
Есть предложения по тому, какие именно слова нужны?

fort.mininfo
должен вывести:
название поддерживаемого стандарта
оп. система, на кот. ориентирован (или без системы)
разрядность данных (сколько С в одном СЕLL )
информация о встроенном ассемблере
направление роста стека данных и расположение головы стека
может быть - "занятость" регистров процессора (последние три строки - для ассемблерных вставок)
формат вызова системных функций операционной системы. на кот. ориентирован (может формат работы с файлом?) или название библиотеки, где это хранится

Автор:  WingLion [ Сб дек 20, 2008 10:59 ]
Заголовок сообщения: 

Думаю, это надо оформлять в виде отдельного топика с предложением на модуль расширения,
заодно туда же можно отнести и HELP-слова.

Хотя, наверно, и в ядре минимальная функция должна быть.
просто некое INFO

Автор:  Pretorian [ Сб дек 20, 2008 20:40 ]
Заголовок сообщения: 

Пускай ржут, а ходить будут!

Автор:  Pretorian [ Сб дек 20, 2008 20:44 ]
Заголовок сообщения: 

Пускай ржут, а ходить будут! Есчли уж подписи идут, то надо, надо.Есть два варианта, конь или для блага нас. Чем непонятней тем лучше

Автор:  WingLion [ Сб дек 20, 2008 21:15 ]
Заголовок сообщения: 

что два последних поста написаны под впечатлением затерявшихся двух стаканов пива... :(

Автор:  F-MAP [ Сб дек 20, 2008 21:38 ]
Заголовок сообщения: 

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

Автор:  WingLion [ Сб дек 20, 2008 21:48 ]
Заголовок сообщения: 

F-MAP писал(а):
Мне кажеться сначало нужно опредилить Табу на изменение той "классики" слов форта
которые одиноково описаны во всех стандартах и включить их новый стандарт,
а далее вольному воля


ВСЯ Классика нигде не вводит табу на:

: + ." не хочу ничего складывать! хочу умножать!" * ;

А по сему, вводить какие-либо табу не имеет смысла, тем более, когда в самом начале явно прописывается Ядро, которое, как раз, всю ту классику (плюс некоторые современные добавления/удаления) и содержит. А дальше - вольному воля!

Автор:  mOleg [ Сб дек 20, 2008 21:51 ]
Заголовок сообщения: 

мня, вы надеюсь понимаете, что придется сразу и систему делать, под создаваемый стандарт?

Автор:  Hishnik [ Сб дек 20, 2008 22:46 ]
Заголовок сообщения: 

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

Автор:  WingLion [ Сб дек 20, 2008 22:54 ]
Заголовок сообщения: 

mOleg писал(а):
мня, вы надеюсь понимаете, что придется сразу и систему делать, под создаваемый стандарт?


Уточнение - Форт-систему, но не Операционную-систему - а то двусмысленность в этом вопросе дикая.

А создание новой Форт-системы - дело достаточно привычное для фортера, не правда ли? Почему не создать?

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/