Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Embedded Forth ( встраивание Форта в Си ) |
|
|
Ещё один проект создания Форта на С The nano-Forth projectКод: The goal of this project is to develop a small Forth kernel suitable for use in small devices, driven by microcontrollers. This means that the kernel has to be as small as possible, need as little resources as possible and work as fast as possible.
This project is a static library, licensed under the terms of GNU Lesser General Public License (former GNU Library Public License) version 3 or later.
nano-Forth is written in a relatively portable manner, but as of today has been successfuly built and tested on the following platforms:
Atmel AVR This is the primary target platform for nano-Forth. You will need the avr-gcc toolchain for building. Linux x86_64 This is my primary debugging platform. nano-Forth can be successfuly built in debug mode on it, and then you may use gdb to locate various problems in the kernel. Linux x86 Unfortunately, due to some limitations in object file format, x86 (AKA i386) is not the best target platform for nano-Forth. You can build a x86 linux executable, but it will run only from a root account.
Дата последнего обновление проекта 03.19.2010г. Copyright (C) 2010 Andrew Zabolotny <zap@cobra.ru>
Ещё один проект создания Форта на С [url=http://nforth.berlios.de/]The nano-Forth project[/url] [code] The goal of this project is to develop a small Forth kernel suitable for use in small devices, driven by microcontrollers. This means that the kernel has to be as small as possible, need as little resources as possible and work as fast as possible.
This project is a static library, licensed under the terms of GNU Lesser General Public License (former GNU Library Public License) version 3 or later.
nano-Forth is written in a relatively portable manner, but as of today has been successfuly built and tested on the following platforms:
Atmel AVR This is the primary target platform for nano-Forth. You will need the avr-gcc toolchain for building. Linux x86_64 This is my primary debugging platform. nano-Forth can be successfuly built in debug mode on it, and then you may use gdb to locate various problems in the kernel. Linux x86 Unfortunately, due to some limitations in object file format, x86 (AKA i386) is not the best target platform for nano-Forth. You can build a x86 linux executable, but it will run only from a root account. [/code] Дата последнего обновление проекта 03.19.2010г. Copyright (C) 2010 Andrew Zabolotny <zap@cobra.ru>
|
|
|
|
Добавлено: Сб апр 21, 2012 12:46 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Ссылка для темы uForth
Код: uForth is a Forth like scripting system for microcontrollers with limited resources. It is written in C and is best used as a glue language to tie C functions and services together dynamically. With that intention, uForth is not a full system Forth. It is neither ANSI compliant nor suitable for Forth programming from the ground up.
uForth can be compiled as a 16 bit or 32 bit stack Forth. The dictionary is stored as 16 bit values.
The VM and interpreter fits in as little as 8KB of Flash and 1KB of RAM (assuming, but not counting, a flash resident dictionary).
The dictionary stores all entries as 16 bit cells in the processor's native endianess. The dictionary can be saved and loaded on processes with the same endianess. It should be trivial to transform the dictionary between processes of different endian.
uForth implements ~55 primitives in C. While some of these words can be defined in uForth itself, they are implemented in C for space efficiency and speed.
P.S. Есть и собранный bin файл для MSP430
Ссылка для темы [url=http://maplefish.com/todd/uforth.html]uForth[/url]
[code] uForth is a Forth like scripting system for microcontrollers with limited resources. It is written in C and is best used as a glue language to tie C functions and services together dynamically. With that intention, uForth is not a full system Forth. It is neither ANSI compliant nor suitable for Forth programming from the ground up.
uForth can be compiled as a 16 bit or 32 bit stack Forth. The dictionary is stored as 16 bit values.
The VM and interpreter fits in as little as 8KB of Flash and 1KB of RAM (assuming, but not counting, a flash resident dictionary).
The dictionary stores all entries as 16 bit cells in the processor's native endianess. The dictionary can be saved and loaded on processes with the same endianess. It should be trivial to transform the dictionary between processes of different endian.
uForth implements ~55 primitives in C. While some of these words can be defined in uForth itself, they are implemented in C for space efficiency and speed. [/code]
P.S. Есть и собранный bin файл для MSP430
|
|
|
|
Добавлено: Чт мар 11, 2010 00:10 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Сегодня ещё кое-что нашёл:
http://sourceforge.net/projects/forpost/
Цитата: Forpost is an embeddable, interpreted stack-based(Forth-like) language which has simple, compact and effective implementation in ANSI C. Main features: heterogeneous arrays, higher-order functions, program/data equivalence. Кажется, то что надо. Хотя надо сначала попробовать. Синтаксис несколько необычный, зато Цитата: Интерпретатор Форпоста является безопасным, в том смысле, что ошибки программиста не приводят к краху всей системы.
Вообще на sf.net целая куча разных фортов, на любой вкус и цвет. Не надо изобретать свой велосипед , выбирай готовый!
Сегодня ещё кое-что нашёл:
[url]http://sourceforge.net/projects/forpost/[/url]
[quote]Forpost is an embeddable, interpreted stack-based(Forth-like) language which has simple, compact and effective implementation in ANSI C. Main features: heterogeneous arrays, higher-order functions, program/data equivalence.[/quote] Кажется, то что надо. Хотя надо сначала попробовать. Синтаксис несколько необычный, зато [quote]Интерпретатор Форпоста является безопасным, в том смысле, что ошибки программиста не приводят к краху всей системы.[/quote]
Вообще на sf.net целая куча разных фортов, на любой вкус и цвет. Не надо изобретать свой велосипед , выбирай готовый!
|
|
|
|
Добавлено: Сб окт 31, 2009 10:38 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Неожиданный поворот сюжета.
http://c-fvm.sourceforge.net/index.php
Кросс-компилятор с форта на си.
Правда, на таргет заливается уже готовая прошивка, интерпретатор байт-кода и готовые же скрипты.
Горячая смесь форта и си!:
Код: #define PortA 0x80
#define PortB 0x90
// ----------------------------
// Initialises ports
: InitPorts ( -- )
0x57 PortA !
0xFF PortB !
;
// ----------------------------
// Initialisation
: InitTarget ( -- )
InitPorts
;
// ----------------------------
// Main routine
: main ( -- )
5 6 * DROP
;
Неожиданный поворот сюжета.
[url]http://c-fvm.sourceforge.net/index.php[/url]
Кросс-компилятор с форта на си.
Правда, на таргет заливается уже готовая прошивка, интерпретатор байт-кода и готовые же скрипты.
Горячая смесь форта и си!:
[code] #define PortA 0x80
#define PortB 0x90
// ----------------------------
// Initialises ports
: InitPorts ( -- )
0x57 PortA !
0xFF PortB !
;
// ----------------------------
// Initialisation
: InitTarget ( -- )
InitPorts
;
// ----------------------------
// Main routine
: main ( -- )
5 6 * DROP
;
[/code]
|
|
|
|
Добавлено: Сб июл 11, 2009 19:59 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Mihail писал(а): Времени у меня мало. Заботится о фортерах мало кому интересно. Гм. Ну а зачем тогда с завидной регулярностью давать ссылки на свои полуфабрикаты? Люди начинают интересоваться, а им ррраз - "уже давно есть". А потом начинаются уточнения, что это еще не доведено, что времени мало и вообще... Mihail писал(а): Меня интересует глобальное развитие Форта. А меня - где поблизости можно найти вкусный кофе. Здесь же не ЖЖ, чтобы просто рассказывать об интересах без полезного выхода для других людей. Mihail писал(а): Вообще достаточно сделать хороший конвертер из Си в Форт. (неважно на чем написан конвертер). Можно наоборот встроить форт в программу на Си. Можно программу на Си представить в виде ДЛЛ и вызвать из Форта.
Три пункта, совершенно разные по сложности. Хороший конвертер - из разряда благих пожеланий. Форт в Си встраивается элементарно, была бы dll (кварк и Спф такое предоставляют, очевидно, есть и еще). Си в Форт встраивается постоянно, поскольку подключение библиотек в Windows-трансляторах Форта используется повсеместно. Чего же еще не хватает?
[quote="Mihail"]Времени у меня мало. Заботится о фортерах мало кому интересно. [/quote] Гм. Ну а зачем тогда с завидной регулярностью давать ссылки на свои полуфабрикаты? Люди начинают интересоваться, а им ррраз - "уже давно есть". А потом начинаются уточнения, что это еще не доведено, что времени мало и вообще... [quote="Mihail"]Меня интересует глобальное развитие Форта. [/quote] А меня - где поблизости можно найти вкусный кофе. Здесь же не ЖЖ, чтобы просто рассказывать об интересах без полезного выхода для других людей. [quote="Mihail"]Вообще достаточно сделать хороший конвертер из Си в Форт. (неважно на чем написан конвертер). Можно наоборот встроить форт в программу на Си. Можно программу на Си представить в виде ДЛЛ и вызвать из Форта. [/quote]
Три пункта, совершенно разные по сложности. Хороший конвертер - из разряда благих пожеланий. Форт в Си встраивается элементарно, была бы dll (кварк и Спф такое предоставляют, очевидно, есть и еще). Си в Форт встраивается постоянно, поскольку подключение библиотек в Windows-трансляторах Форта используется повсеместно. Чего же еще не хватает?
|
|
|
|
Добавлено: Чт июл 09, 2009 17:24 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Но так и не увидел практических результатов Времени у меня мало. Заботится о фортерах мало кому интересно. Хищник писал(а): почему не потратить такие усилия на что-то другое Меня интересует глобальное развитие Форта. Хищник писал(а): надо написать компилятор и IDE В данном случае, си компилятор и IDE смешивать ненужно. Приличное IDE нужно в форте вне зависимости от применяемых в Форте синтаксисов. При этом, как компилятор так и IDE писать на Форте не обязательно. Вообще достаточно сделать хороший конвертер из Си в Форт. (неважно на чем написан конвертер). Можно наоборот встроить форт в программу на Си. Можно программу на Си представить в виде ДЛЛ и вызвать из Форта. Хищник писал(а): надо написать ФортОС... а что еще - Doom 3 повторить?
Не нужно ничего повторять. Форт можно встраивать в любые программы и прежде всего
в ядра всех ОС. Я например, встраиваю Форт в игру spring.
[quote="Хищник"] Но так и не увидел практических результатов[/quote] Времени у меня мало. Заботится о фортерах мало кому интересно.
[quote="Хищник"]почему не потратить такие усилия на что-то другое[/quote] Меня интересует глобальное развитие Форта.
[quote="Хищник"]надо написать компилятор и IDE[/quote] В данном случае, си компилятор и IDE смешивать ненужно. Приличное IDE нужно в форте вне зависимости от применяемых в Форте синтаксисов. При этом, как компилятор так и IDE писать на Форте не обязательно. Вообще достаточно сделать хороший конвертер из Си в Форт. (неважно на чем написан конвертер). Можно наоборот встроить форт в программу на Си. Можно программу на Си представить в виде ДЛЛ и вызвать из Форта.
[quote="Хищник"]надо написать ФортОС... а что еще - Doom 3 повторить?[/quote]
Не нужно ничего повторять. Форт можно встраивать в любые программы и прежде всего
в ядра всех ОС. Я например, встраиваю Форт в игру spring.
|
|
|
|
Добавлено: Чт июл 09, 2009 17:13 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Mihail писал(а): Почему формально? Я предлагаю не написание компилятора Си, а размещение его в рамках форт-системы. Другое дело, написанный на Форте Си легче разместить в форт-системе. Об этом я уже неоднократно слышал. Но так и не увидел практических результатов, а главное, обоснования, зачем бы такое понадобилось, и почему не потратить такие усилия на что-то другое. Mihail писал(а): Этого не достаточно, к компилятору Си еще требуется интегрированная среда разработки. Сама по себе возможность Форта воспринимать любой синтаксис - раскрывает сущность Форта и потенциальное превосходство над другими средствами программирования. И получается, надо написать компилятор и IDE, чтобы только убедить всех, что "Форт тоже может"? Выходит, из подобных же соображений надо написать ФортОС... а что еще - Doom 3 повторить? Только чтобы не краснеть перед сишниками? Mihail писал(а): Зачем switch ?
Чтобы впоследствии добавить обработку литералов и превратить все это в интерпретатор ШК.
Да и кстати, а зачем макросы-то? Чтобы постоянно таскать за собой компилятор Си, и постоянно перекомпилировать этот набор макросов? Так об этом и шла речь - простейший интерпретатор позволит сократить число повторных компиляций и общаться с МК по несложному протоколу, посылая короткие команды. А не перезаливая всю прошивку.
[quote="Mihail"]Почему формально? Я предлагаю не написание компилятора Си, а размещение его в рамках форт-системы. Другое дело, написанный на Форте Си легче разместить в форт-системе. [/quote] Об этом я уже неоднократно слышал. Но так и не увидел практических результатов, а главное, обоснования, зачем бы такое понадобилось, и почему не потратить такие усилия на что-то другое. [quote="Mihail"]Этого не достаточно, к компилятору Си еще требуется интегрированная среда разработки. Сама по себе возможность Форта воспринимать любой синтаксис - раскрывает сущность Форта и потенциальное превосходство над другими средствами программирования. [/quote] И получается, надо написать компилятор и IDE, чтобы только убедить всех, что "Форт тоже может"? :) Выходит, из подобных же соображений надо написать ФортОС... а что еще - Doom 3 повторить? Только чтобы не краснеть перед сишниками? [quote="Mihail"]Зачем switch ? [/quote]
Чтобы впоследствии добавить обработку литералов и превратить все это в интерпретатор ШК.
Да и кстати, а зачем макросы-то? Чтобы постоянно таскать за собой компилятор Си, и постоянно перекомпилировать этот набор макросов? Так об этом и шла речь - простейший интерпретатор позволит сократить число повторных компиляций и общаться с МК по несложному протоколу, посылая короткие команды. А не перезаливая всю прошивку.
|
|
|
|
Добавлено: Чт июл 09, 2009 15:32 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): еще можно привязать переключение задач к таймеру
И количество тиков таймера, выделенных задаче, будут соответствовать приоритету задачи.
[quote="Хищник"]еще можно привязать переключение задач к таймеру [/quote]
И количество тиков таймера, выделенных задаче, будут соответствовать приоритету задачи.
|
|
|
|
Добавлено: Чт июл 09, 2009 15:25 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
MrYuran писал(а): Ну нет, это уж слишком примитивно. Это самый минимальный движок, призванный обеспечить понимание механизмов работы транслятора Форта. MrYuran писал(а): А переключаться наверно лучше при переходе к новому слову, чтобы никакие дополнительные регистры не сохранять.
Да, можно и так, и как раз в развитие приведенного мной куска. Представление функций Си индексами - это так называемый шитый код (его разновидность). Если представить разные задачи наборами таких индексов, и завести собственный указатель (ip) для каждой задачи, то окажется достаточным просто выполнять по одному индексу для каждой задачи. Конечно, можно и не по одному, чтобы накладные расходы были поменьше, еще можно привязать переключение задач к таймеру и т.п.
[quote="MrYuran"]Ну нет, это уж слишком примитивно. [/quote] Это самый минимальный движок, призванный обеспечить понимание механизмов работы транслятора Форта. [quote="MrYuran"]А переключаться наверно лучше при переходе к новому слову, чтобы никакие дополнительные регистры не сохранять.[/quote]
Да, можно и так, и как раз в развитие приведенного мной куска. Представление функций Си индексами - это так называемый шитый код (его разновидность). Если представить разные задачи наборами таких индексов, и завести собственный указатель (ip) для каждой задачи, то окажется достаточным просто выполнять по одному индексу для каждой задачи. Конечно, можно и не по одному, чтобы накладные расходы были поменьше, еще можно привязать переключение задач к таймеру и т.п.
|
|
|
|
Добавлено: Чт июл 09, 2009 15:18 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Формально, на Форте можно написать компилятор Си. Почему формально? Я предлагаю не написание компилятора Си, а размещение его в рамках форт-системы. Другое дело, написанный на Форте Си легче разместить в форт-системе. Хищник писал(а): Михаил вот уже не первый год считает, что такой компилятор существенно "продвинет" Форт, потому что многие сразу начнут писать на Форте. Этого не достаточно, к компилятору Си еще требуется интегрированная среда разработки. Сама по себе возможность Форта воспринимать любой синтаксис - раскрывает сущность Форта и потенциальное превосходство над другими средствами программирования. Хищник писал(а): Код: это программа на Си. Независимо от того, на чем написан компилятор, обрабатывающий этот текст. И что с того? Для меня главное, чтобы были доступны ресурсы форт-системы. При этом, могут быть использованы любые языки программирования вне зависимости на чем написаны их интерпретаторы. Хищник писал(а): Код: switch index
case 1: func1() case 2: func2() case 3: func3()
и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида
Код: FUNC1 FUNC2 FUNC3
Зачем switch ?
Код: #define FUNC1 func1(); #define FUNC2 func2(); #define FUNC3 func3(); #define ADD DSP[1]+=*DSP++;
Я встречал подобный прием при программировании на ассемблере.
Можно так модифицировать дизфорт, что но сгенерит подобную Си программу.
[quote="Хищник"]Формально, на Форте можно написать компилятор Си.[/quote]
Почему формально? Я предлагаю не написание компилятора Си, а размещение его в рамках форт-системы. Другое дело, написанный на Форте Си легче разместить в форт-системе.
[quote="Хищник"] Михаил вот уже не первый год считает, что такой компилятор существенно "продвинет" Форт, потому что многие сразу начнут писать на Форте.[/quote]
Этого не достаточно, к компилятору Си еще требуется интегрированная среда разработки. Сама по себе возможность Форта воспринимать любой синтаксис - раскрывает сущность Форта и потенциальное превосходство над другими средствами программирования.
[quote="Хищник"]Код: это программа на Си. Независимо от того, на чем написан компилятор, обрабатывающий этот текст.[/quote]
И что с того? Для меня главное, чтобы были доступны ресурсы форт-системы. При этом, могут быть использованы любые языки программирования вне зависимости на чем написаны их интерпретаторы.
[quote="Хищник"]Код: switch index
case 1: func1() case 2: func2() case 3: func3()
и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида
Код: FUNC1 FUNC2 FUNC3[/quote]
Зачем switch ?
[code] #define FUNC1 func1(); #define FUNC2 func2(); #define FUNC3 func3(); #define ADD DSP[1]+=*DSP++; [/code]
Я встречал подобный прием при программировании на ассемблере.
Можно так модифицировать дизфорт, что но сгенерит подобную Си программу.
|
|
|
|
Добавлено: Чт июл 09, 2009 12:54 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хищник писал(а): Код: switch index case 1: func1() case 2: func2() case 3: func3() и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида Код: FUNC1 FUNC2 FUNC3
Ну нет, это уж слишком примитивно.
Пока для себя отобрал CamelForth, pForth и MrForth.
Буду разбираться.
Вариант Михаила тоже ничего, но он подходит для работы с чистым фортом и для компиляции целевого словаря.
Помимо прочего, меня очень интересует реализация многозадачности в форте.
Самое простое и понятное - кооперативная. Там просто через несколько операций нужно вставлять слово, которое будет передавать управление планировщику, а он, в свою очередь, будет переключать контекст.
А вот с вытесняющей многозадачностью посложнее. Классические RTOS сохраняют полный контекст каждой задачи (чуть не половину регистров) при каждом переключении задач, а период переключения может быть десятки-сотни микросекунд. Накладные расходы очень велики.
В форте, что меня очень привлекло, контекст намного меньше. Нужно сохранять только указатели стеков и IP.
А переключаться наверно лучше при переходе к новому слову, чтобы никакие дополнительные регистры не сохранять.
[quote="Хищник"]Код: switch index case 1: func1() case 2: func2() case 3: func3() и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида Код: FUNC1 FUNC2 FUNC3 [/quote]
Ну нет, это уж слишком примитивно.
Пока для себя отобрал CamelForth, pForth и MrForth.
Буду разбираться.
Вариант Михаила тоже ничего, но он подходит для работы с чистым фортом и для компиляции целевого словаря.
Помимо прочего, меня очень интересует реализация многозадачности в форте.
Самое простое и понятное - кооперативная. Там просто через несколько операций нужно вставлять слово, которое будет передавать управление планировщику, а он, в свою очередь, будет переключать контекст.
А вот с вытесняющей многозадачностью посложнее. Классические RTOS сохраняют полный контекст каждой задачи (чуть не половину регистров) при каждом переключении задач, а период переключения может быть десятки-сотни микросекунд. Накладные расходы очень велики.
В форте, что меня очень привлекло, контекст намного меньше. Нужно сохранять только указатели стеков и IP.
А переключаться наверно лучше при переходе к новому слову, чтобы никакие дополнительные регистры не сохранять.
|
|
|
|
Добавлено: Чт июл 09, 2009 09:26 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
MrYuran писал(а): Поэтому и была идея встроить форт в проект и подцепить, скажем, к обработчику прерываний технологического UARTа. При этом так, чтобы можно было вызывать сишные процедуры из форта.
Это хорошая и продуктивная идея, которая, кроме прочего, имеет несложное решение. Конкретно можно ограничиться интерпретатором. К примеру, первая функция откусывает из переданной строки очередной токен (выделяя его по пробелам), вторая ищет в словаре (списке, БД, руками выписанной сравнивалке - что проще) либо исполняемый адрес, либо просто некий номер (опять же, что проще). Дальше делаем
(пишу сильно упрощенно)
Код: switch index
case 1: func1() case 2: func2() case 3: func3() и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида Код: FUNC1 FUNC2 FUNC3
Функции можно и желательно назвать красиво и осмысленно. Итогом должно стать некоторое сокращение компиляций проекта, поскольку часть задач тестирования и отладки можно будет решать посылкой разных комбинаций подобных команд.
[quote="MrYuran"]Поэтому и была идея встроить форт в проект и подцепить, скажем, к обработчику прерываний технологического UARTа. При этом так, чтобы можно было вызывать сишные процедуры из форта. [/quote]
Это хорошая и продуктивная идея, которая, кроме прочего, имеет несложное решение. Конкретно можно ограничиться интерпретатором. К примеру, первая функция откусывает из переданной строки очередной токен (выделяя его по пробелам), вторая ищет в словаре (списке, БД, руками выписанной сравнивалке - что проще) либо исполняемый адрес, либо просто некий номер (опять же, что проще). Дальше делаем
(пишу сильно упрощенно)
[code]switch index
case 1: func1() case 2: func2() case 3: func3()[/code]
и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида
[code]FUNC1 FUNC2 FUNC3[/code]
Функции можно и желательно назвать красиво и осмысленно. Итогом должно стать некоторое сокращение компиляций проекта, поскольку часть задач тестирования и отладки можно будет решать посылкой разных комбинаций подобных команд.
|
|
|
|
Добавлено: Ср июл 08, 2009 23:24 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
simne писал(а): А Форт сейчас плохо воспринимает синтаксис Си? - У него наверное рвотный рефлекс возникает
Формально, на Форте можно написать компилятор Си. Почему, собственно, нет? Другое дело, что лично мне такой продукт видится несколько несвоевременной боковой веткой, которой, возможно, стоило бы заниматься специалисту по компиляторам (а не по Форту). Михаил вот уже не первый год считает, что такой компилятор существенно "продвинет" Форт, потому что многие сразу начнут писать на Форте. Хотя я таки убежден, что программа
Код: int main() { int a = 10; int b = 20; int c = a + b; return c; }
это программа на Си. Независимо от того, на чем написан компилятор, обрабатывающий этот текст.
[quote="simne"]А Форт сейчас плохо воспринимает синтаксис Си? - У него наверное рвотный рефлекс возникает [/quote]
Формально, на Форте можно написать компилятор Си. Почему, собственно, нет? Другое дело, что лично мне такой продукт видится несколько несвоевременной боковой веткой, которой, возможно, стоило бы заниматься специалисту по компиляторам (а не по Форту). Михаил вот уже не первый год считает, что такой компилятор существенно "продвинет" Форт, потому что многие сразу начнут писать на Форте. Хотя я таки убежден, что программа
[code]int main() { int a = 10; int b = 20; int c = a + b; return c; }[/code]
это программа на Си. Независимо от того, на чем написан компилятор, обрабатывающий этот текст.
|
|
|
|
Добавлено: Ср июл 08, 2009 23:17 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): Опять перепалка Какая добрая критика.
Ну а сколько можно? Я понимаю, что Михаил уже обжил свой любимый уголок, в котором он гуру Форта, только окружающие никак не признают перспективность именно его идей. Вот только не надо сбивать с толку окружающих, а тем более тех, у кого нет намерения сидеть годами в обрывках форт-программок и перекладывать с места на место полуфабрикаты, ценность которых очевидна только их автору. Вообще-то жизнь идет вперед, и Форт по факту является языком, на котором можно писать сейчас. А не когда-то там в будущем, после реализации пачки глобальных проектов. Надо же соображать немного, в конце-то концов. Если приходят студенты, можно понять, что у них сроки достаточно сжаты, и результат с явно ощущаемым эффектом нужен как можно раньше.
[quote="вопрос"]Опять перепалка Какая добрая критика.[/quote]
Ну а сколько можно? Я понимаю, что Михаил уже обжил свой любимый уголок, в котором он гуру Форта, только окружающие никак не признают перспективность именно его идей. Вот только не надо сбивать с толку окружающих, а тем более тех, у кого нет намерения сидеть годами в обрывках форт-программок и перекладывать с места на место полуфабрикаты, ценность которых очевидна только их автору. Вообще-то жизнь идет вперед, и Форт [b]по факту [/b]является языком, на котором можно писать сейчас. А не когда-то там в будущем, после реализации пачки глобальных проектов. Надо же соображать немного, в конце-то концов. Если приходят студенты, можно понять, что у них сроки достаточно сжаты, и результат с явно ощущаемым эффектом нужен как можно раньше.
|
|
|
|
Добавлено: Ср июл 08, 2009 23:08 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
MrYuran писал(а): Поэтому и была идея встроить форт в проект и подцепить, скажем, к обработчику прерываний технологического UARTа. При этом так, чтобы можно было вызывать сишные процедуры из форта.
короче, вам лучше всего использовать Форт-ядро, написанное на сях (чтобы интеграция с нужными либами была простой) и встроенный интерпретатор, возможно токенов.
[quote="MrYuran"]Поэтому и была идея встроить форт в проект и подцепить, скажем, к обработчику прерываний технологического UARTа. При этом так, чтобы можно было вызывать сишные процедуры из форта.[/quote]
короче, вам лучше всего использовать Форт-ядро, написанное на сях (чтобы интеграция с нужными либами была простой) и встроенный интерпретатор, возможно токенов.
|
|
|
|
Добавлено: Ср июл 08, 2009 22:31 |
|
|
|
|