Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт окт 16, 2018 14:59

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 16:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Mihail писал(а):
Лучше заставить Форт воспринимать синтаксис Си.

Не так - "заставить Форт воспринимать синтаксис Си лучше" :)
Mihail писал(а):
Прикрутил http://fpauk.narod.ru/cinf13.rar к системе для МСП.

Выпил кофе, собираюсь прогуляться... или все же не будем превращать форум в ЖЖ?
Mihail писал(а):
Правда еще не все работает.

А тогда зачем об этом упоминать?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 16:30 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
Mihail писал(а):
Лучше заставить Форт воспринимать синтаксис Си.

Не так - "заставить Форт воспринимать синтаксис Си лучше" :)
Mihail писал(а):
Прикрутил http://fpauk.narod.ru/cinf13.rar к системе для МСП.

Выпил кофе, собираюсь прогуляться... или все же не будем превращать форум в ЖЖ?
Mihail писал(а):
Правда еще не все работает.

А тогда зачем об этом упоминать?

Опять перепалка :D
Какая добрая критика.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 16:41 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Прикрутил http://fpauk.narod.ru/cinf13.rar к системе для МСП.

Выпил кофе,


Это комментарий к выложенному продукту.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 18:42 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
"заставить Форт воспринимать синтаксис Си лучше" :)

А Форт сейчас плохо воспринимает синтаксис Си? - У него наверное рвотный рефлекс возникает :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 20:31 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail писал(а):
Лучше заставить Форт воспринимать синтаксис Си.

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

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

Да и форт я пока не на таком уровне знаю, чтобы на нём рабочие проекты писать. А так конечно, лучше использовать чистый форт.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 22:23 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
izvr писал(а):
Даааа, "размер имеет значение" Smile

Особенно, если хочешь его куда-то встроить

Вот CamelForth у меня занял около 6 кБ, вроде немного, если из 48к флеши используется около 20, и очень много, если из 16к - 15, но там правда может быть выигрыш от использования чисто форта


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 22:31 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4953
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
MrYuran писал(а):
Поэтому и была идея встроить форт в проект и подцепить, скажем, к обработчику прерываний технологического UARTа.
При этом так, чтобы можно было вызывать сишные процедуры из форта.

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 23:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
вопрос писал(а):
Опять перепалка
Какая добрая критика.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 23:17 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
simne писал(а):
А Форт сейчас плохо воспринимает синтаксис Си? - У него наверное рвотный рефлекс возникает

Формально, на Форте можно написать компилятор Си. Почему, собственно, нет? Другое дело, что лично мне такой продукт видится несколько несвоевременной боковой веткой, которой, возможно, стоило бы заниматься специалисту по компиляторам (а не по Форту). Михаил вот уже не первый год считает, что такой компилятор существенно "продвинет" Форт, потому что многие сразу начнут писать на Форте. Хотя я таки убежден, что программа

Код:
int main()
{
   int a = 10;
   int b = 20;
   int c = a + b;
   return c;
}


это программа на Си. Независимо от того, на чем написан компилятор, обрабатывающий этот текст.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 08, 2009 23:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
MrYuran писал(а):
Поэтому и была идея встроить форт в проект и подцепить, скажем, к обработчику прерываний технологического UARTа.
При этом так, чтобы можно было вызывать сишные процедуры из форта.

Это хорошая и продуктивная идея, которая, кроме прочего, имеет несложное решение. Конкретно можно ограничиться интерпретатором. К примеру, первая функция откусывает из переданной строки очередной токен (выделяя его по пробелам), вторая ищет в словаре (списке, БД, руками выписанной сравнивалке - что проще) либо исполняемый адрес, либо просто некий номер (опять же, что проще). Дальше делаем
(пишу сильно упрощенно)
Код:
switch index

case 1: func1()
case 2: func2()
case 3: func3()


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

Код:
FUNC1 FUNC2 FUNC3


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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 09, 2009 09:26 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Код:
switch index
case 1: func1()
case 2: func2()
case 3: func3()
и так далее. После этого окажется возможным скармливать такому интерпретатору более или менее осмысленные строки вида
Код:
FUNC1 FUNC2 FUNC3

Ну нет, это уж слишком примитивно.
Пока для себя отобрал CamelForth, pForth и MrForth.
Буду разбираться.
Вариант Михаила тоже ничего, но он подходит для работы с чистым фортом и для компиляции целевого словаря.

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

В форте, что меня очень привлекло, контекст намного меньше. Нужно сохранять только указатели стеков и IP.
А переключаться наверно лучше при переходе к новому слову, чтобы никакие дополнительные регистры не сохранять.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 09, 2009 12:54 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Формально, на Форте можно написать компилятор Си.


Почему формально? Я предлагаю не написание компилятора Си, а размещение
его в рамках форт-системы. Другое дело, написанный на Форте Си легче разместить
в форт-системе.

Хищник писал(а):
Михаил вот уже не первый год считает, что такой компилятор существенно "продвинет" Форт, потому что многие сразу начнут писать на Форте.


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

Хищник писал(а):
Код:
это программа на Си. Независимо от того, на чем написан компилятор, обрабатывающий этот текст.


И что с того? Для меня главное, чтобы были доступны ресурсы форт-системы.
При этом, могут быть использованы любые языки программирования вне зависимости
на чем написаны их интерпретаторы.

Хищник писал(а):
Код:
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++;


Я встречал подобный прием при программировании на ассемблере.
Можно так модифицировать дизфорт, что но сгенерит подобную Си программу.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 09, 2009 15:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
MrYuran писал(а):
Ну нет, это уж слишком примитивно.

Это самый минимальный движок, призванный обеспечить понимание механизмов работы транслятора Форта.
MrYuran писал(а):
А переключаться наверно лучше при переходе к новому слову, чтобы никакие дополнительные регистры не сохранять.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 09, 2009 15:25 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 223
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Хищник писал(а):
еще можно привязать переключение задач к таймеру

И количество тиков таймера, выделенных задаче, будут соответствовать приоритету задачи.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 09, 2009 15:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Mihail писал(а):
Почему формально? Я предлагаю не написание компилятора Си, а размещение
его в рамках форт-системы. Другое дело, написанный на Форте Си легче разместить
в форт-системе.

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

И получается, надо написать компилятор и IDE, чтобы только убедить всех, что "Форт тоже может"? :) Выходит, из подобных же соображений надо написать ФортОС... а что еще - Doom 3 повторить? Только чтобы не краснеть перед сишниками?
Mihail писал(а):
Зачем switch ?

Чтобы впоследствии добавить обработку литералов и превратить все это в интерпретатор ШК.
Да и кстати, а зачем макросы-то? Чтобы постоянно таскать за собой компилятор Си, и постоянно перекомпилировать этот набор макросов? Так об этом и шла речь - простейший интерпретатор позволит сократить число повторных компиляций и общаться с МК по несложному протоколу, посылая короткие команды. А не перезаливая всю прошивку.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB