реклама на сайте
подробности

 
 
16 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> А вот бы на FORTH написать..., ;-)
RodionGork
сообщение Apr 16 2009, 04:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 30-10-07
Из: Санкт-Петербург
Пользователь №: 31 866



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

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

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

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

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

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

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

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

извините если глупость...
Родион
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 16 2009, 07:32
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 062
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Работал в своё время с Forth и это к сожалению (или к счастью) совсем не баловство и уж точно не глупость. Это не только новый экзотический язык, это своего рода совсем иная философия программирования.
Для начала надо почитать что-нибудь, хоть от Лео Броуди.
amforth и PFAVR из бесплатных вроде не плохи на первый взгляд, но я с ними не работал.
Для реализации форт-системы наиболее подходящими являются традиционно 16-битные архитектуры с развитым стеком, но и AVR тоже потянет.
Результат может быть одно из двух: либо Вы разочаруетесь и навсегда забросите Форт, либо проникнетесь и забьёте на все остальные языки.

Посмотрите ещё в сторону avrforth, достаточто минималистичный.
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 4 2009, 05:52
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(RodionGork @ Apr 16 2009, 07:55) *
Кстати какие архитектуры более "удачно" для FORTH подходят? Проектик я собирался (учитывая отсутствие особых требований) на AVR делать, хотя конечно можно и более другое что-нибудь (главное, чтоб с прошивкой особых сложностей не возникло... и проц был не дороже 5 баксов желательно)

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


Если в архитектуре есть команды с автоинкрементными ( декрементными) указателями данных
( хотя бы одного операнда команды ), то это уже большое подспорье в использовании Forth ( Форт )
языка.smile.gif
Железную поддержку поддержкустека данных можно реализовать в Плис, как наиболее гибкий
и доступный вариант для исследований.

P.S. Больше информации по плюсам и минусам Форт подхода можно порекомендовать посетить
форум рускоязычных пользователей Форт языка http://fforum.winglion.ru
( там можно более продуктивно пообщаться На electronix, похоже, Форт не приживётся )
Поддерживаю высказанное в сообщении выше. и т.к. Форт, малоизвестен, то это часто
инструментарий для Fun. Интересно будет, а вот лёгкого пути никто не укажетsmile.gif
У меня тоже хорошие впечатления при его использовании.

Сообщение отредактировал Kopa - May 4 2009, 06:04
Go to the top of the page
 
+Quote Post
ukpyr
сообщение May 4 2009, 07:01
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



а в чем преимущество конструкции 1 1 + перед 1+1 ?
для разветвленного алгоритма Forth превращается в write-only language типа Перла.
Разобраться в такой мешанине намного сложнее чем в C.
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 4 2009, 07:26
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(ukpyr @ May 4 2009, 11:01) *
а в чем преимущество конструкции 1 1 + перед 1+1 ?
для разветвленного алгоритма Forth превращается в write-only language типа Перла.
Разобраться в такой мешанине намного сложнее чем в C.


Если это всё, что Вы можете высказать по данной тематике, тогда это не для Васsmile.gif
( без оскорблений ).

Польза 1 1 + не в непривычной форме записи, а возможности единообразно ( + комбинаторно)
создавать алгоритм ( в Tcl похожий принцип ) опираясь на синтаксис и семантику близкую к естественным языкам.
Например: чем плохо Включить 1-й мотор или Вам привычнее 1-й.мотор.включить
( могут быть вариации на любой вкус, включая всевозможные реализации ООП )
При этом, есть возможность впоследствии, при поддержке
интерфейса входа/выхода, легко заменить семантику требуемого слова на изменённую.
( основное понятие в Форт языке СЛОВО )
т.к. фактически нет связи формальных параметров по имени в связке с минимальной системой типов в языке.

P.S. Если привычнее традиционная форма записи, то подключите одну из Форт библиотек
на Форте, но не делайте обсуждение поверхностным. Ваш пример выбран неудачноsmile.gif
Некоторое представление об Форт языке можно почерпнуть из Википедии.
Во Write only можно превратить любой проект.smile.gif Форт в этом не оригинален.
Умелое использование Форта этому тоже стоит уделять внимание, например расширяя
его в сторону DSL языков.

Сообщение отредактировал Kopa - May 4 2009, 07:47
Go to the top of the page
 
+Quote Post
ukpyr
сообщение May 4 2009, 08:05
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
основное понятие в Форт языке СЛОВО
угу, а в С - функция.
Цитата
Например: чем плохо Включить 1-й мотор или Вам привычнее 1-й.мотор.включить
мне привычнее "включить_мотор(1)". или это хуже чем "1 включить_мотор" ? для меня - нет.
да, парсер и компилятор в Форте простейшие, но компилятор С например может раскидать локальные переменные по регистрам, соптимизировать циклы и ариф.выражения. В Форте это возможно ?

Сообщение отредактировал ukpyr - May 4 2009, 08:08
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 4 2009, 08:53
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(ukpyr @ May 4 2009, 12:05) *
угу, а в С - функция.
мне привычнее "включить_мотор(1)". или это хуже чем "1 включить_мотор" ? для меня - нет.
да, парсер и компилятор в Форте простейшие, но компилятор С например может раскидать локальные переменные по регистрам, соптимизировать циклы и ариф.выражения. В Форте это возможно ?


Если скажу Да, то поверите?smile.gif

1. Есть некоторое число коммерческих Форт систем, как в них распределяются регистры
не знаю, но например в оптимизаторе русской Форт системе SPF4 используется
принцип выявления макроцепочек и их оптимизация. Со слов автора оптимизатора
используя этот принцип можно с необходимой степенью оптимизировать конкретный
код. На тестах в сравнении с Cи этот оптимизатор показывает неплохие результаты,
при малых затратах на разработку оптимизатора.smile.gif

2. В браузерах Мozila разрабатывается проект tamarin-tracing для ускорения
flash анимации ( java script ) где код сначала переводится в стековые примитивы,
а потом уже собирается для регистровой архитектуры. ( наверное есть резон в этом )

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

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

Цитата(ukpyr @ May 4 2009, 12:05) *
угу, а в С - функция.
мне привычнее "включить_мотор(1)". или это хуже чем "1 включить_мотор" ? для меня - нет.


Если это Вам удобнее, то противоречий этому нет в рамках Форт языкаsmile.gif Пока не потребуются
изменения и функция потребует провести над собой декомпозицию. Вместо "моторов" потребуется
управлять "клапанами" и.т.д.

Цитата(ukpyr @ May 4 2009, 12:05) *
да, парсер и компилятор в Форте простейшие, но компилятор С например может раскидать локальные переменные по регистрам, соптимизировать циклы и ариф.выражения. В Форте это возможно ?


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

Сообщение отредактировал Kopa - May 4 2009, 08:59
Go to the top of the page
 
+Quote Post
Microwatt
сообщение May 4 2009, 12:46
Сообщение #8


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Ребята, давно я отошел от программирования, но если кто-то возродит ФОРТ - стоящее дело. Особенно для микроконтроллеров с объектно-ориентированным алгоритмом.
Это действительно другая, принципиально новая философия программирования. Хорошо структурированная, понятная с какого-то уровня конечному пользователю. Нигде больше вся программа не сводится к одной, финишной строке. Или не начинается с нее.
Go to the top of the page
 
+Quote Post
ukpyr
сообщение May 4 2009, 13:23
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
Нигде больше вся программа не сводится к одной, финишной строке. Или не начинается с нее.

?
Код
int main(void) { run(); }
Go to the top of the page
 
+Quote Post
Microwatt
сообщение May 4 2009, 20:11
Сообщение #10


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(ukpyr @ May 4 2009, 16:23) *
?
Код
int main(void) { run(); }

Это совсем не то, что в ФОРТе. ФОРТ имеет порождающую грамматику, без всяких долгих нудных скобок шести сортов. Что-то вроде (грубо, реальный синтаксис давно не смотрел)
ИДТИ=ШАГ ЛЕВОЙ, ШАГ ПРАВОЙ
ШАГ ЛЕВОЙ=ВЕС НАПРАВО, СОГНУТЬ ЛЕВОЕ КОЛЕНО и т.д
В самом низу детализации появляются чисто процессорные команды, до которых пользователь, создатель программы прикладной, не опускается. Он может писать верхний уровень в понятных ему технологических терминах, не заморачиваясь состоянием стека, памяти, передачей данных в подпрограммы и проч.
Вот в этом и есть основная привлекательность ФОРТА. Кроме того, этот язык очень экономно расходует аппаратные ресурсы, о чем современное поколение программеров вообще думать не привыкло.
В этот язык нужно влюбиться с первого взгляда, либо вообще о нем зря не думать.
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 5 2009, 01:49
Сообщение #11


pontificator
******

Группа: Свой
Сообщений: 3 025
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Kopa @ May 4 2009, 15:22) *
Если в архитектуре есть команды с автоинкрементными ( декрементными) указателями данных ( хотя бы одного операнда команды ), то это уже большое подспорье в использовании Forth ( Форт ) языка.

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

Цитата(Kopa @ May 4 2009, 15:22) *
Железную поддержку поддержкустека данных можно реализовать в Плис, как наиболее гибкий и доступный вариант для исследований.

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

Цитата(RodionGork @ Apr 16 2009, 14:25) *
А какие нынче контроллеры есть со встроенным FORTH

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

Посмотрите http://c-fvm.sourceforge.net/index.php Внутренний интерпретатор Форта занимает всего пару килобайт, и это не предел, можно и поменьше ужать. Зато отлаженный Форт-код занимает в несколько раз меньше места, чем эквивалентный С код, поэтому "потраченные" килобайты вернутся с лихвой. Программы пишутся/отлаживаются в кросс-системе, на PC. Вся система написана на С, поэтому скрестить ее с С-шным кодом проблем не вызовет.
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 5 2009, 03:19
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(=AK= @ May 5 2009, 04:49) *
Посмотрите http://c-fvm.sourceforge.net/index.php Внутренний интерпретатор Форта занимает всего пару килобайт, и это не предел, можно и поменьше ужать. Зато отлаженный Форт-код занимает в несколько раз меньше места, чем эквивалентный С код, поэтому "потраченные" килобайты вернутся с лихвой. Программы пишутся/отлаживаются в кросс-системе, на PC. Вся система написана на С, поэтому скрестить ее с С-шным кодом проблем не вызовет.


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

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

P.S. Кросс компиляцию можно производить и в непосредственно asm команды ( примеры есть ).
Сам использовал интегрированную свободную мультипроцессорную среду разработки.
( из недочётов - слабая оптимизация кода и не встроена возможность убирания
неиспользуемого кода, что впрочем решаемо и не так критично )



Цитата(Microwatt @ May 4 2009, 15:46) *
Ребята, давно я отошел от программирования, но если кто-то возродит ФОРТ - стоящее дело. Особенно для микроконтроллеров с объектно-ориентированным алгоритмом.


Кто хотит, тот и так использует.( примеров достаточно)
А силком тягать никого не нужно.
Возрождать Форт не надо он и не умирал и имеет своих пользователейsmile.gif


P.S. Понятие СЛОВА, механизм чатичной параметризации, словарики в системе и др. элементы
Форт системы - это мощные возможности для создания программ. СЛОВО - может выступать
в роли чего угодно ( меняя контекст окружения) , хоть и объекта.smile.gif

Сообщение отредактировал Kopa - May 5 2009, 03:26
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 5 2009, 04:27
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Microwatt @ May 4 2009, 15:46) *
Ребята, давно я отошел от программирования, но если кто-то возродит ФОРТ - стоящее дело.


Интересно узнать, что для этого надо?
Go to the top of the page
 
+Quote Post
Microwatt
сообщение May 5 2009, 10:46
Сообщение #14


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(Kopa @ May 5 2009, 07:27) *
Интересно узнать, что для этого надо?

Хм. Пусть действующие программисты меня поправят, но это вроде сводится к написанию ядра в 20-30 аппаратно оптимизированных команд (подпрограмм). Далее ФОРТ сам разворачивается через несложный компиллятор.
Аппаратно ФОРТ хорошо работает в процессорах, где есть глубокий стек. Вокруг процедур со стеком он почти весь и крутится. Если порыть, то ядро для многих процессоров реализовано и его можно скачать.
Существенный недостаток ФОРТА - работа с целочисленной арифметикой. Во всяком случае, там плавающей запятой нет. Но логика - великолепная. Для объектно- ориентированного программирования почти идеально.
Странно, но при использовании бесконечно вложенных подпрограмм, ФОРТ обеспечивает скорость работы, соизмеримую с программами, написанными в ассемблере.
Где-то давным-давно была статейка с заголовком "Язык высокого уровня из 25 команд ассемблера" Это просто характеризует проблему качественно.
Успехов всем, кто за это дело возьмется!
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 5 2009, 11:27
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



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


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

Цитата(Microwatt @ May 5 2009, 13:46) *
Существенный недостаток ФОРТА - работа с целочисленной арифметикой. Во всяком случае, там плавающей запятой нет.


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

Цитата(Microwatt @ May 5 2009, 13:46) *
Странно, но при использовании бесконечно вложенных подпрограмм, ФОРТ обеспечивает скорость работы, соизмеримую с программами, написанными в ассемблере.


Реальные цифры в сравнении с asm могут быть разные,
но не стоит думать что в Форте, за счёт более интенсивного использования стека,
( и не используя оптимизацию кода для целевой платформы ) алгоритмы работают быстрееsmile.gif
Компактность же он может обеспечить, но тоже в ущерб производительности если она не нужна.


Цитата(Microwatt @ May 5 2009, 13:46) *
Где-то давным-давно была статейка с заголовком "Язык высокого уровня из 25 команд ассемблера" Это просто характеризует проблему качественно.


Можно и меньше, примерно 16 команд-примитивов.
В SeaForth ~32 ( про него можно почитать публикацию в 4-ом номере журнала "Компоненты и технологии"
за этот год.

Цитата(Microwatt @ May 5 2009, 13:46) *
Успехов всем, кто за это дело возьмется!


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

P.S. Мой же вопрос звучал, в продвижении Форт подхода среди российских разработчиков
и что этому может способствовать?
И мне видется пока Форт не будет использоваться не хуже чем Си и изучаться в базовых
учебных программах
и работодатели не будут благосклонны к его использованию в разработках
никуда ни прийдём unsure.gif

Сообщение отредактировал Kopa - May 5 2009, 11:45
Go to the top of the page
 
+Quote Post

16 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th April 2018 - 21:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01302 секунд с 7
ELECTRONIX ©2004-2016