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. "Минимальное" Ядро Форта (МЯФ) 4. Рекомендации по документированию Форт-программ (ДФП)Вопрос о самозарождении МЯФ-а оставим философам будущего, а здесь просто опишем его и способ работы с ним. 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-м разделе. 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/ |