Jump to content

    
RodionGork

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

Recommended Posts

Уважаемые товарищи!

 

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

 

Вопрос отчасти абстрактный и растущий из желания поразвлечься... Просто грядет проектик который... Да пригрёл уже... Ну малотребовательный ко всему и программулина небольшая... В общем, скучноватый... ;-)

 

А если нарисовать на FORTH - и душе забавно - и у заказчика глазки могут округлиться... Но вообще он добрый, стерпит... ;-)))

 

Желательно услышать кого-нибудь, кому приходилось в достаточно недавнее время сталкиваться, работать... ;-)

 

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

 

Знаю, что если в гугле ввести AVR FORTH или 8051 FORTH - кое-что навыпадает... Но не хочется по неведению связаться с чем-нибудь совсем непрактичным. ;-)

 

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

 

извините если глупость...

Родион

Share this post


Link to post
Share on other sites

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

Для начала надо почитать что-нибудь, хоть от Лео Броуди.

amforth и PFAVR из бесплатных вроде не плохи на первый взгляд, но я с ними не работал.

Для реализации форт-системы наиболее подходящими являются традиционно 16-битные архитектуры с развитым стеком, но и AVR тоже потянет.

Результат может быть одно из двух: либо Вы разочаруетесь и навсегда забросите Форт, либо проникнетесь и забьёте на все остальные языки.

 

Посмотрите ещё в сторону avrforth, достаточто минималистичный.

Share this post


Link to post
Share on other sites
Кстати какие архитектуры более "удачно" для FORTH подходят? Проектик я собирался (учитывая отсутствие особых требований) на AVR делать, хотя конечно можно и более другое что-нибудь (главное, чтоб с прошивкой особых сложностей не возникло... и проц был не дороже 5 баксов желательно)

 

извините если глупость...

Родион

 

Если в архитектуре есть команды с автоинкрементными ( декрементными) указателями данных

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

языка.:)

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

и доступный вариант для исследований.

 

P.S. Больше информации по плюсам и минусам Форт подхода можно порекомендовать посетить

форум рускоязычных пользователей Форт языка http://fforum.winglion.ru

( там можно более продуктивно пообщаться На electronix, похоже, Форт не приживётся )

Поддерживаю высказанное в сообщении выше. и т.к. Форт, малоизвестен, то это часто

инструментарий для Fun. Интересно будет, а вот лёгкого пути никто не укажет:)

У меня тоже хорошие впечатления при его использовании.

Edited by Kopa

Share this post


Link to post
Share on other sites

а в чем преимущество конструкции 1 1 + перед 1+1 ?

для разветвленного алгоритма Forth превращается в write-only language типа Перла.

Разобраться в такой мешанине намного сложнее чем в C.

Share this post


Link to post
Share on other sites
а в чем преимущество конструкции 1 1 + перед 1+1 ?

для разветвленного алгоритма Forth превращается в write-only language типа Перла.

Разобраться в такой мешанине намного сложнее чем в C.

 

Если это всё, что Вы можете высказать по данной тематике, тогда это не для Вас:)

( без оскорблений ).

 

Польза 1 1 + не в непривычной форме записи, а возможности единообразно ( + комбинаторно)

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

Например: чем плохо Включить 1-й мотор или Вам привычнее 1-й.мотор.включить

( могут быть вариации на любой вкус, включая всевозможные реализации ООП )

При этом, есть возможность впоследствии, при поддержке

интерфейса входа/выхода, легко заменить семантику требуемого слова на изменённую.

( основное понятие в Форт языке СЛОВО )

т.к. фактически нет связи формальных параметров по имени в связке с минимальной системой типов в языке.

 

P.S. Если привычнее традиционная форма записи, то подключите одну из Форт библиотек

на Форте, но не делайте обсуждение поверхностным. Ваш пример выбран неудачно:)

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

Во Write only можно превратить любой проект.:) Форт в этом не оригинален.

Умелое использование Форта этому тоже стоит уделять внимание, например расширяя

его в сторону DSL языков.

Edited by Kopa

Share this post


Link to post
Share on other sites
основное понятие в Форт языке СЛОВО
угу, а в С - функция.

Например: чем плохо Включить 1-й мотор или Вам привычнее 1-й.мотор.включить
мне привычнее "включить_мотор(1)". или это хуже чем "1 включить_мотор" ? для меня - нет.

да, парсер и компилятор в Форте простейшие, но компилятор С например может раскидать локальные переменные по регистрам, соптимизировать циклы и ариф.выражения. В Форте это возможно ?

Edited by ukpyr

Share this post


Link to post
Share on other sites
угу, а в С - функция.

мне привычнее "включить_мотор(1)". или это хуже чем "1 включить_мотор" ? для меня - нет.

да, парсер и компилятор в Форте простейшие, но компилятор С например может раскидать локальные переменные по регистрам, соптимизировать циклы и ариф.выражения. В Форте это возможно ?

 

Если скажу Да, то поверите?:)

 

1. Есть некоторое число коммерческих Форт систем, как в них распределяются регистры

не знаю, но например в оптимизаторе русской Форт системе SPF4 используется

принцип выявления макроцепочек и их оптимизация. Со слов автора оптимизатора

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

код. На тестах в сравнении с Cи этот оптимизатор показывает неплохие результаты,

при малых затратах на разработку оптимизатора.:)

 

2. В браузерах Мozila разрабатывается проект tamarin-tracing для ускорения

flash анимации ( java script ) где код сначала переводится в стековые примитивы,

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

 

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

самый лучший оптимизатор, в голове у программиста :)

 

P.S. Функция в Cи - это намного более "негибкое" понятие, чем Слово в Форт языке.

( полезно почитать про это в книге у Ноздрунова, Баранова )

 

угу, а в С - функция.

мне привычнее "включить_мотор(1)". или это хуже чем "1 включить_мотор" ? для меня - нет.

 

Если это Вам удобнее, то противоречий этому нет в рамках Форт языка:) Пока не потребуются

изменения и функция потребует провести над собой декомпозицию. Вместо "моторов" потребуется

управлять "клапанами" и.т.д.

 

да, парсер и компилятор в Форте простейшие, но компилятор С например может раскидать локальные переменные по регистрам, соптимизировать циклы и ариф.выражения. В Форте это возможно ?

 

А когда это оптимизатор был составляющей любого языка программирования?

Edited by Kopa

Share this post


Link to post
Share on other sites

Ребята, давно я отошел от программирования, но если кто-то возродит ФОРТ - стоящее дело. Особенно для микроконтроллеров с объектно-ориентированным алгоритмом.

Это действительно другая, принципиально новая философия программирования. Хорошо структурированная, понятная с какого-то уровня конечному пользователю. Нигде больше вся программа не сводится к одной, финишной строке. Или не начинается с нее.

Share this post


Link to post
Share on other sites
?

int main(void) { run(); }

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

ИДТИ=ШАГ ЛЕВОЙ, ШАГ ПРАВОЙ

ШАГ ЛЕВОЙ=ВЕС НАПРАВО, СОГНУТЬ ЛЕВОЕ КОЛЕНО и т.д

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

Вот в этом и есть основная привлекательность ФОРТА. Кроме того, этот язык очень экономно расходует аппаратные ресурсы, о чем современное поколение программеров вообще думать не привыкло.

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

Share this post


Link to post
Share on other sites
Если в архитектуре есть команды с автоинкрементными ( декрементными) указателями данных ( хотя бы одного операнда команды ), то это уже большое подспорье в использовании Forth ( Форт ) языка.

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

 

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

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

 

А какие нынче контроллеры есть со встроенным FORTH

Совсем не обязательно иметь встроенный Форт. Виртуальная форт-машина встает практически на любой микроконтроллер.

 

Посмотрите http://c-fvm.sourceforge.net/index.php Внутренний интерпретатор Форта занимает всего пару килобайт, и это не предел, можно и поменьше ужать. Зато отлаженный Форт-код занимает в несколько раз меньше места, чем эквивалентный С код, поэтому "потраченные" килобайты вернутся с лихвой. Программы пишутся/отлаживаются в кросс-системе, на PC. Вся система написана на С, поэтому скрестить ее с С-шным кодом проблем не вызовет.

Share this post


Link to post
Share on other sites
Посмотрите http://c-fvm.sourceforge.net/index.php Внутренний интерпретатор Форта занимает всего пару килобайт, и это не предел, можно и поменьше ужать. Зато отлаженный Форт-код занимает в несколько раз меньше места, чем эквивалентный С код, поэтому "потраченные" килобайты вернутся с лихвой. Программы пишутся/отлаживаются в кросс-системе, на PC. Вся система написана на С, поэтому скрестить ее с С-шным кодом проблем не вызовет.

 

Компактность выполнения байт кода - это ещё бывает не главное, если потребуется

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

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

 

С точки зрения портируемости, то Си не плохое решение. Но в текущем развитии Форта это уже

не сильно актуально. ( особенно для контроллеров )

 

P.S. Кросс компиляцию можно производить и в непосредственно asm команды ( примеры есть ).

Сам использовал интегрированную свободную мультипроцессорную среду разработки.

( из недочётов - слабая оптимизация кода и не встроена возможность убирания

неиспользуемого кода, что впрочем решаемо и не так критично )

 

 

 

Ребята, давно я отошел от программирования, но если кто-то возродит ФОРТ - стоящее дело. Особенно для микроконтроллеров с объектно-ориентированным алгоритмом.

 

Кто хотит, тот и так использует.( примеров достаточно)

А силком тягать никого не нужно.

Возрождать Форт не надо он и не умирал и имеет своих пользователей:)

 

 

P.S. Понятие СЛОВА, механизм чатичной параметризации, словарики в системе и др. элементы

Форт системы - это мощные возможности для создания программ. СЛОВО - может выступать

в роли чего угодно ( меняя контекст окружения) , хоть и объекта.:)

Edited by Kopa

Share this post


Link to post
Share on other sites
Интересно узнать, что для этого надо?

Хм. Пусть действующие программисты меня поправят, но это вроде сводится к написанию ядра в 20-30 аппаратно оптимизированных команд (подпрограмм). Далее ФОРТ сам разворачивается через несложный компиллятор.

Аппаратно ФОРТ хорошо работает в процессорах, где есть глубокий стек. Вокруг процедур со стеком он почти весь и крутится. Если порыть, то ядро для многих процессоров реализовано и его можно скачать.

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

Странно, но при использовании бесконечно вложенных подпрограмм, ФОРТ обеспечивает скорость работы, соизмеримую с программами, написанными в ассемблере.

Где-то давным-давно была статейка с заголовком "Язык высокого уровня из 25 команд ассемблера" Это просто характеризует проблему качественно.

Успехов всем, кто за это дело возьмется!

Share this post


Link to post
Share on other sites
Хм. Пусть действующие программисты меня поправят, но это вроде сводится к написанию ядра в 20-30 аппаратно оптимизированных команд (подпрограмм). Далее ФОРТ сам разворачивается через несложный компиллятор.

 

Схемы развёртывания Форт системы могут быть разные, но в общем рассуждении верно:)

 

Существенный недостаток ФОРТА - работа с целочисленной арифметикой. Во всяком случае, там плавающей запятой нет.

 

В стандарте 94 года уже появилась, а есть ли конкретные реализации библиотеки на конкретное

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

 

Странно, но при использовании бесконечно вложенных подпрограмм, ФОРТ обеспечивает скорость работы, соизмеримую с программами, написанными в ассемблере.

 

Реальные цифры в сравнении с asm могут быть разные,

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

( и не используя оптимизацию кода для целевой платформы ) алгоритмы работают быстрее:)

Компактность же он может обеспечить, но тоже в ущерб производительности если она не нужна.

 

 

Где-то давным-давно была статейка с заголовком "Язык высокого уровня из 25 команд ассемблера" Это просто характеризует проблему качественно.

 

Можно и меньше, примерно 16 команд-примитивов.

В SeaForth ~32 ( про него можно почитать публикацию в 4-ом номере журнала "Компоненты и технологии"

за этот год.

 

Успехов всем, кто за это дело возьмется!

 

Уже много чего существует в Форт области.

 

P.S. Мой же вопрос звучал, в продвижении Форт подхода среди российских разработчиков

и что этому может способствовать?

И мне видется пока Форт не будет использоваться не хуже чем Си и изучаться в базовых

учебных программах

и работодатели не будут благосклонны к его использованию в разработках

никуда ни прийдём :unsure:

Edited by Kopa

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.