Jump to content

    

А вот бы на FORTH написать...

Recommended Posts

MrYuran

Ещё вот в глубине души борются две мысли:

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

и вторая (ещё не окрепшая) - что форт - это хороший стиль программирования.

Как тут быть?

Пока вижу выход в том, чтобы писать 2 определения: одно на ассемблере, а рядом - на HiLevel.

И все ассемблерные определения - в отдельный файл типа LowLevel.F

Share this post


Link to post
Share on other sites

Kopa
Дык хотя бы самые глубокие циклы JIT'ить на ходу. Можно не весь код.

 

Можно, но зачем если проще сразу указать компилятору какие циклы заинлайнить ( ускорить),

а какие оставить, для компактности как есть. JIT, всё же, требует набор статистики по

оптимизации исполнения циклов.

 

 

Ещё вот в глубине души борются две мысли:

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

 

Смотря какой ассемблер ( например kolibri ос пишут на ассемблере ) и степень его использования.

Форт, отчасти, можно считать ассемблером стековой виртуальной машины Форт.

И ассемблер в Форте не обременителен т.к. у него минимальная необходимая функциональность и

т.к. он интегрируется с Форт. Лёгкость тестирования ассемблерного определения в рамках

Форт системы тоже стоит учесть.

 

и вторая (ещё не окрепшая) - что форт - это хороший стиль программирования.

Как тут быть?

 

Размышлять, пробовать использовать :)

 

P.S. Симулируя ядро AVR контроллера, после начального тестирования, дальнейшими

тестами уже выступают примитивы Форт системы. ( пробовал сопряжение с tinyboot )

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

оптимизационные стратегии кода могут более полно использоваться на ограниченном

входном материале.

Edited by Kopa

Share this post


Link to post
Share on other sites

Rst7
Можно, но зачем если проще сразу указать компилятору какие циклы заинлайнить ( ускорить),

а какие оставить, для компактности как есть. JIT, всё же, требует набор статистики по

оптимизации исполнения циклов.

 

Ну а что, тоже правильный план. Два слова - STARTJIT и STOPJIT :)

Share this post


Link to post
Share on other sites

Kopa
Ещё вот в глубине души борются две мысли:

...

 

У меня так:

( непроходящая за время писания на си) - что форт - это лучший стиль программирования

 

 

Ну а что, тоже правильный план. Два слова - STARTJIT и STOPJIT :)

 

И желательно в режиме простоя процессора:)

с анализом предыдущих действий пользователя.

 

Пока.

Edited by Kopa

Share this post


Link to post
Share on other sites

MrYuran

Ну вот, предварительный черновик книги готов.

Формат - doc (совершенно не предназначенный для таких документов)

Некоторые рисунки переделал, некоторые лень было или ниасилил тонкий английский юмор

Короче, вот:

________________________________001.txt

________________________________002.txt

________________________________003.txt

________________________________004.txt

________________________________.bat.txt

 

Блин, просто так хрен зальёшь, только с костылями...

получилось залить сплит-архив zip, ---bat.txt нужно переименовать в .bat, он склеивает обратно.

 

Извиняйте, если что, больше пока никак. Сисадмин прикрыл всё что можно. ftp - в том числе.

 

Эх, новый большой многолетний проект начинается...

Не успел форт изучить...

Придётся опять по старинке, на си...

Share this post


Link to post
Share on other sites

Kopa
Ну вот, предварительный черновик книги готов.

Формат - doc (совершенно не предназначенный для таких документов)

Некоторые рисунки переделал, некоторые лень было или ниасилил тонкий английский юмор

 

Спасибо!

 

Эх, новый большой многолетний проект начинается...

Не успел форт изучить...

Придётся опять по старинке, на си...

 

Ничего страшного.

У меня, только, через несколько лет совпало желание и возможность использовать

Форт в работе:)

Share this post


Link to post
Share on other sites

Kopa
Ну вот, предварительный черновик книги готов.

Короче, вот:

 

Можно взять и здесь

Edited by IgorKossak
Битые ссылки

Share this post


Link to post
Share on other sites

MrYuran

Решил таки делать кросс-систему на основе spf-4 (замахнуться тсз, на Вильяма нашего Шекспира), заодно одновременно переползаю под мандриву.

И вот такое чудо с русскими исходниками: (не совсем по теме, конечно)

post-33646-1244984017_thumb.png

Как изменить кодировку - непонятно.

Какие линёвые редакторы понимают русскую кодировку?

Попробовал emacs - это что-то с чем-то!

Кстати, калькулятор там использует лисп - на форт весьма похоже

Да похоже, что и не только калькулятор.

Пока идеи роятся в голове, выхода нет, а от винды тошнит.

Эх, будет чем заняться долгими зимними вечерами!

(если к компу подпустят :-/ )

 

Ещё одно наблюдение:

почему-то многие редакторы определяют фортовые исходники как фортрановые...

Share this post


Link to post
Share on other sites

ukpyr
Какие линёвые редакторы понимают русскую кодировку?
юзаю GEdit. в мено File/Open внизу можно задать или добавить любую кодировку. подсветка Форта есть, если чего нет можно добавить файл синтаксиса. Есть кучка интересных плагинов, можно писать свои на Питоне.

Для меня работа в нем более привычна чем в таких монстрах как Vim/Emacs. Пробывал Eclipse/Netbeans, но тормоза и ненужные навороты (кстати редакторы в них так себе по сравнению с gedit / scite) все портят.

Есть еще Scite с похожими возможностями, там тоже вроде бы есть поддержка разных кодировок.

Для перекодирования пользуюсь iconv.

Share this post


Link to post
Share on other sites

MrYuran
юзаю GEdit. в мено File/Open внизу можно задать или добавить любую кодировку. подсветка Форта есть, если чего нет можно добавить файл синтаксиса. Есть кучка интересных плагинов, можно писать свои на Питоне.

Ура, заработало!

Я тоже GEdit пользовал, только этой строчки не заметил.

Спасибо.

Share this post


Link to post
Share on other sites

Kopa
Какие линёвые редакторы понимают русскую кодировку?

 

Возможно это поможет

Sp-Forth, Linux и Vim

 

 

Решил таки делать кросс-систему на основе spf-4 (замахнуться тсз, на Вильяма нашего Шекспира),

 

От чего "оттолкнутся" уже сделан выбор?

 

Кстати, калькулятор там использует лисп - на форт весьма похоже

Да похоже, что и не только калькулятор.

 

У лиспа есть некоторые сходные моменты с Фортом, но скобки,скобки.:)

 

Ещё близок, например, Tcl построен на командах. Есть варианты "скрещивания" Tcl и Форт.

 

Пока идеи роятся в голове, выхода нет, а от винды тошнит.

Эх, будет чем заняться долгими зимними вечерами!

(если к компу подпустят :-/ )

 

Т.е. могут отлучить от компьютера :biggrin:

 

Ещё одно наблюдение:

почему-то многие редакторы определяют фортовые исходники как фортрановые...

 

Скорее по незнанию и расширению файлов.

Share this post


Link to post
Share on other sites

MrYuran
От чего "оттолкнутся" уже сделан выбор?

Да вот пока не решил...

Полдня вчера исходники колупал, в некоторых местах понятно, некоторые - как китайская грамота...

Может, посоветуете что-то подобное, например, для АВР

Если в тинибуте прямо с ходу всё понятно, то тут не всё так прозрачно.

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

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

Ещё для нормальной работы нужна не только подсветка синтаксиса, но и интерактивная навигация по тексту.

Например, навожу курсор на слово, <Right Mouse> -> <GO TO DEFINITION> и попадаю на кусок, где оно определено.

Или всплывающая подсказка с комментариями (включая стековый).

Есть такие плагины к распространённым IDE?

Или готовые ИДЕ (наверняка коммерческие :( )

Share this post


Link to post
Share on other sites

Kopa
Да вот пока не решил...

Полдня вчера исходники колупал, в некоторых местах понятно, некоторые - как китайская грамота...

Может, посоветуете что-то подобное, например, для АВР

 

Какие исходники? ( и что подобное?)

 

Если в тинибуте прямо с ходу всё понятно, то тут не всё так прозрачно.

 

Может с ней и поэкспериментировать?

 

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

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

 

Можно и ядро перенести в рамках другого Форт подхода.

 

Ещё для нормальной работы нужна не только подсветка синтаксиса, но и интерактивная навигация по тексту.

Например, навожу курсор на слово, <Right Mouse> -> <GO TO DEFINITION> и попадаю на кусок, где оно определено.

Или всплывающая подсказка с комментариями (включая стековый).

Есть такие плагины к распространённым IDE?

Или готовые ИДЕ (наверняка коммерческие :( )

 

Возможно в Scite есть там специально добавляли поддержку Форт языка.

( узнать поподробнее можно на форуме поддержки разработки )

Share this post


Link to post
Share on other sites

MrYuran
Какие исходники? ( и что подобное?)

исходники spf, особенно compiler и asm.

Возможно, у меня пока каша в голове.

Я пока представляю себе процесс следующим образом:

1. Делаю инлайн-(или кросс?)-ассемблер.

2. На основе него строю ядро таргет-системы.

3. На полученное ядро навешиваю остальное "мясо"

Таргет можно переключать каким-нибудь управляющим словом, например TARGET MSP430

или как-то по другому, не знаю пока, как правильно.

Share this post


Link to post
Share on other sites

chu
Таргет можно переключать каким-нибудь управляющим словом, например TARGET MSP430

или как-то по другому, не знаю пока, как правильно.

 

 

Forth - подход подразумевает:

 

MSP430 TARGET ! или

MSP430 TO TARGET

:laughing:

 

P.S. Go Forth!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.