Перейти к содержанию
    

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

Amforth

В оживление темы:) от chu

amForth 4.2 + AVR ATmega32 + шаговые двигатели

http://roboforum.ru/forum58/topic4406-60.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А подниму ка я ещё раз данный топик:)

 

Созданы ещё пара любительских Форт систем для AVR

Очередной AVRForth система кросс компиляции из Linux|Windows

Форт-система для смарт-карт AtMega163+24c256

4

P.S. Авось не даром.

 

Из недавних ещё можно отметить Retro Forth для Arduino (avr mega 328p)

А как же без фотографий?

плата 1 https://plus.google.com/photos/114372642424...541341335572530

плата 2 https://lh6.googleusercontent.com/-26T-MEsq...73/2012%2B-%2B1

 

от from Oleksandr Kozachuk

 

Попытка создать на базе Форт синтаксиса и семантики графическую (с иконками) табличную среду быстрой разработки программ (почти плиточный интерфейс) Thyrd в разработке применён язык TCL/TK (текущая версия 0.3) и возможно с хорошими перспективами.

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а нет ли форта на чистом С, независимого от архитектуры ?

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

Изменено пользователем polyname

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а нет ли форта на чистом С, независимого от архитектуры ?

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

На чистом С есть разные реализации и в разных вариантах:)

 

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

из предпочтений разработчика. Будет ли Форт следовать существующим "отраслевым" разновидностям стандарта или Форт подобным

или это будет "свой" Форт или другой конкатинавный (цепочечный) язык. Для Форта нет ограничений на возможные реализации

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

 

P.S. Изучение материалов Рускоязычного Форт форума может прояснить многие вопросы.

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

(хорошо заданный вопрос получается если половина вопроса уже известна:)

Это всё написано не для "восхволения" Форт подхода, а чтоб обрисовать общую картину т.к. сам по себе Форт подход и программирование

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

которой заложены несколько ключевых составляющих. Этим Форт так и привлекает к созданию и использованию своих "предпочтений"

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

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

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

или это будет "свой" Форт или другой конкатинавный (цепочечный) язык
думал над приближением синтаксиса к конечному юзеру, нужно что-то ближе с интерпретируемому С и Басику. Как минимум хочется сделать человеческий вызов функций (имя парам1 парам2 ...). В принципе перевернуть перед компиляцией - не проблема.

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

Должно работать как минимум на AVR и STM32

Изменено пользователем polyname

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

думал над приближением синтаксиса к конечному юзеру, нужно что-то ближе с интерпретируемому С и Басику. Как минимум хочется сделать человеческий вызов функций (имя парам1 парам2 ...). В принципе перевернуть перед компиляцией - не проблема.

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

Есть и отдельные разработанные на Форте (GForth) библиотеки BNF, EBNF разбора. Несложно расширить, в рантайме, и введением формы обычных математически выражений и если необходимо добавить объектное расширение заданной функциональности. Имеются и наработанные математические библиотеки разных алгоритмов.

 

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

Должно работать как минимум на AVR и STM32

Подразумевалось немного другое - элементы внутреннего устройства Форт системы.

 

P.S. Делать на чистом С не принципиально т.к. создание или доработка под себя существующих Форт систем (для разных контроллеров - коих достаточно) не такое уж и обременительное занятие, если не пытаться "выжать" производительность. Есть и без привлечния или минимального использования ассемблера "самораскручиваемые" разработки. Форт также, бывает, имплантируют в существующие готовые разные инструментарии и программы.

 

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

(ообенно при чтении, хотя и в чём то устаревших, но описывающих суть Форт языка книг.) Уровень вхождения в Форт существует и не всем этот язык "показан"

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

 

На этом пока всё. (надо и поспать перед работой)

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще вопросик - какой наиболее эффективный метод организации стека данных для хранения чисел разной разрядности, строк, ссылок на функции и т.д. ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще вопросик - какой наиболее эффективный метод организации стека данных для хранения чисел разной разрядности, строк, ссылок на функции и т.д. ?

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

так и указатели на строки, 2-е стековых ячейки уже представляют число двойной разрядности), при этом для повышения эффективности кода,

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

элемента стека. При поддержке "плавучки" для неё тоже обычно выделяется отдельный стек с необходимой разрядностью элементов. Стек возвратов

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

 

P.S. Какие структуры для компилятора С, например, эффективны в поддержке можно посмотреть по имеющимся реализациям Форт системам и как ускоряется код написанный на С (например в GFORTH) и как этому способствует конкретный компилятор. Можно даже в скомпилированном коде предусмотреть слой оптимизации потока транслируемой программы (например peephole) или использовать технологии JIT ускорения кода.

 

Для представления о компактности кода ядра Форт системы можно привести такой пример. Реализация российской Форт системы SPF4 для Windows занимает порядка 60-70кб "чистого" процессорного кода x86 архитектуры (c хорошей поддержкой операционки), при этом больше половины этого объёма - макрооптимизатор машинного кода получаемого при трансляции Форт программы в x86 архитектуру и измеренные показатели скорости на тестовых задачах сравнимы с комерческими Форт системами VFX, iForth, SwiftForth (уступает первым двум.) и намного опережает другие открытые (свободные) Форт системы (GForth, BigForth, Win32Forth, kForth, FICL и др.) для PC и не кардинально уступает коду С компиляторов.

benchmark

******************************************
Core i7 3.4GHz, 8Gb RAM, Windows 7-64, SP1
******************************************

12 May 2012
===========
VFX        VFX Forth for Windows v4.60 [build 3332]
SF3        SwiftForth i386-Win32 3.4.2 11-Feb-2012
iForth       version 4.0.400, generated December 31, 2010.
SP-Forth   Version 4.20 Build 001 at 21.Jan.2009
W32FS      Win32Forth-STC version: 0.05.01 build: 273
gff        gforth-fast 0.7.0

All with no specifics and no hackery

Test time including overhead (ms)         VFX  iForth     SF3    SPF4   W32FS     gff
DO LOOP                                     4       0       4       0      16       0
+                                           5       0       4       0       0       0
M+                                          4       0       5      15      16       0
*                                           5       0       5       0       0      16
/                                           7       0       3       0      15       0
M*                                          4       0       2       0       0       0
M/                                          4       0       3      16       0      15
/MOD                                        3       0       4       0       0       0
*/                                          4      16       4       0      16      16
ARRAY fill                                  2       0       9       0       0       0
================================================================================
====
Total:                                     42      16      43      31      63      47

Win32 API: SendMessage                      5       0       2       0       0       0
Win32 API: COUNTER                         36       0      20       0       0     218
System I/O: KEY?                            7       0     112     359     359     765
================================================================================
====
Total:                                     48       0     134     359     359     983

Eratosthenes sieve 1899 Primes             43      47      64      47     109     171
Fibonacci recursion ( 35 -> 9227465 )      44     109      43      62      47     234
Hoare's quick sort (reverse order)         38      47      80      47      93     203
Generate random numbers (1024 kb array)    55      62      78      63      78     172
LZ77 Comp. (400 kb Random Data Mem>Mem)    65      78     306      93     109     249
Dhrystone (integer)                        38      32      96      47      78     156
================================================================================
====
Total:                                    283     375     667     359     514    1105
Time (ratio to VFX):                     1.00    1.32    2.36    1.27    1.82    3.90

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что?

Никто и ничего не сделал с применением Форт пока топик был предан забвению? :)

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что?

Никто и ничего не сделал с применением Форт пока топик был предан забвению? :)

 

А смысл? Процентов 90 кодит на сях :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А смысл? Процентов 90 кодит на сях :rolleyes:

 

Forth великолепен в исследованиях, изучении, поиске решения.

То, что называется "design iterations" гораздо (в разы, как минимум)

эффективнее чем Ваши пресловутые "Процентов 90...".

Так как:

1. быстрее \ цикл "компиляция-прошивка-проверка"

2. качественнее \ интерактивное тестирование создаваемого кода

3. дешевле \ время+ограниченный ресурс "записи/стирания" флеша

 

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

 

Конечно на производстве, где "поток и массовость", смысла применять форт наверное нет.

Но, те "Процентов 90...", не занятые на производстве, постоянно вопиют на различных форумах

"Где взять библиотеки??!", "Поделитесь скетчем!!"... уныло.

 

ПыСы. Это как сравнивать композитора

и духовой оркестр парка культуры и отдыха им. "90%" :1111493779:

Изменено пользователем chu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Forth великолепен в исследованиях, изучении, поиске решения.

 

Конечно на производстве, где "поток и массовость", смысла применять форт наверное нет.

 

На вкус и цвет, конечно, фломастеры разные, сам этот язык не изучал, но почему тогда повсеместно изучают паскаль и си, даже бейсик, а вот про форт не слыхал?? Учился в политехе 1995-2001 год, везде был паскаль...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вот про форт не слыхал??

Просвещайтесь: Язык Форт в СССР и России

 

И вот, почитайте на досуге язык и философия для решения задач .

Думаю, будет полезно безотносительно к форту. Это НЕ учебник.

Изменено пользователем chu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В конце https://en.wikipedia.org/wiki/Forth_(programming_language) есть любопытная и довольно редкая ссылка NASA applications of Forth (original NASA server no longer running, copy from archive.org)

Изменено пользователем chu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...