Kopa 0 2 октября, 2011 Опубликовано 2 октября, 2011 · Жалоба Amforth В оживление темы:) от chu amForth 4.2 + AVR ATmega32 + шаговые двигатели http://roboforum.ru/forum58/topic4406-60.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 18 сентября, 2012 Опубликовано 18 сентября, 2012 (изменено) · Жалоба А подниму ка я ещё раз данный топик:) Созданы ещё пара любительских Форт систем для 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) и возможно с хорошими перспективами. Изменено 18 сентября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
polyname 0 18 сентября, 2012 Опубликовано 18 сентября, 2012 (изменено) · Жалоба а нет ли форта на чистом С, независимого от архитектуры ? с компиляцией на лету, то есть с возможностью обработки строк, компиляции их в псевдо-код или в шитый код, и выполнения Изменено 18 сентября, 2012 пользователем polyname Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 18 сентября, 2012 Опубликовано 18 сентября, 2012 (изменено) · Жалоба а нет ли форта на чистом С, независимого от архитектуры ? с компиляцией на лету, то есть с возможностью обработки строк, компиляции их в псевдо-код или в шитый код, и выполнения На чистом С есть разные реализации и в разных вариантах:) Универсальный рецепт, сразу сложно определить, т.к. схемы конкретных реализаций Форт языка разнообразны и выбираются из предпочтений разработчика. Будет ли Форт следовать существующим "отраслевым" разновидностям стандарта или Форт подобным или это будет "свой" Форт или другой конкатинавный (цепочечный) язык. Для Форта нет ограничений на возможные реализации парадигм программирования (всё зависит от воли и разума разработчика и возможности использования существующих решений, по необходимости) P.S. Изучение материалов Рускоязычного Форт форума может прояснить многие вопросы. Там же можно найти конкретные ссылки и задать необходимые вопросы. (хорошо заданный вопрос получается если половина вопроса уже известна:) Это всё написано не для "восхволения" Форт подхода, а чтоб обрисовать общую картину т.к. сам по себе Форт подход и программирование основывается на определённой системной архитектуре (часто определяемой как FVM Форт виртуальной машине) в основе построения которой заложены несколько ключевых составляющих. Этим Форт так и привлекает к созданию и использованию своих "предпочтений" Если начнёте "погружение" в данной тематике, то желаю чтобы оно не "поглотило" сознание и осталось время для других интересных вещей. Форт тематика интересна, но существует на "задворках" местного форума и почти не обсуждается. Похоже все и так "сыты" и "довольны" Изменено 18 сентября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
polyname 0 18 сентября, 2012 Опубликовано 18 сентября, 2012 (изменено) · Жалоба или это будет "свой" Форт или другой конкатинавный (цепочечный) языкдумал над приближением синтаксиса к конечному юзеру, нужно что-то ближе с интерпретируемому С и Басику. Как минимум хочется сделать человеческий вызов функций (имя парам1 парам2 ...). В принципе перевернуть перед компиляцией - не проблема. основывается на определённой системной архитектуревот этого не нужно, хочется сделать на чистом С, без платформо-зависимых выкрутасов. Быстродействие не критично. Должно работать как минимум на AVR и STM32 Изменено 18 сентября, 2012 пользователем polyname Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 18 сентября, 2012 Опубликовано 18 сентября, 2012 (изменено) · Жалоба думал над приближением синтаксиса к конечному юзеру, нужно что-то ближе с интерпретируемому С и Басику. Как минимум хочется сделать человеческий вызов функций (имя парам1 парам2 ...). В принципе перевернуть перед компиляцией - не проблема. Да, пользователю желательно дать разные варианты. Хотя в общем рассмотрении проще синтаксиса и мощнее (комбинаторно) чем у Форта (цепочечных языков) вряд ли придумаешь (слово полиморфно и может использоваться в разных контекстах т.к. не использует передаваемые именованные параметры, хотя и может использовать имеющеюся возможность). Да и забыть правила или операторы Форт языка гораздо сложнее. (т.к. всё последовательно и "единобезобразно") Форт систему можно "расширять" динамически (дополнять, подменять, переопределять или удалять ресурсы Форт системы) до синтаксиса подходящего языка и при этом производить минимальный синтаксиеский разбор входного текста. (ввести в использование префиксные if( else( и др. слова ) Показателен, в этом аспекте, переложенный на Форт язык материал популярного "эссе" Креншоу "Давайте сделаем компилятор". Есть и отдельные разработанные на Форте (GForth) библиотеки BNF, EBNF разбора. Несложно расширить, в рантайме, и введением формы обычных математически выражений и если необходимо добавить объектное расширение заданной функциональности. Имеются и наработанные математические библиотеки разных алгоритмов. вот этого не нужно, хочется сделать на чистом С, без платформо-зависимых выкрутасов. Быстродействие не критично. Должно работать как минимум на AVR и STM32 Подразумевалось немного другое - элементы внутреннего устройства Форт системы. P.S. Делать на чистом С не принципиально т.к. создание или доработка под себя существующих Форт систем (для разных контроллеров - коих достаточно) не такое уж и обременительное занятие, если не пытаться "выжать" производительность. Есть и без привлечния или минимального использования ассемблера "самораскручиваемые" разработки. Форт также, бывает, имплантируют в существующие готовые разные инструментарии и программы. Р.S. Перечислять здесь существующие сделанные варианты, например на С, не имеет особого смысла т.к. их много и разных. Если только сделать, по возможности, краткий обзор и некоторые рекомендации при проблеме начального понимания. Но при знакомстве с Форт уровень начального понимания не сильно затруднителен. (ообенно при чтении, хотя и в чём то устаревших, но описывающих суть Форт языка книг.) Уровень вхождения в Форт существует и не всем этот язык "показан" (может быть отторжение т.к. имеет много отличий от Си подобных языков, хотя и ровесник Си и мало изменился в сути с того времени, в частности при знакомстве с широко используемыми стеками в языке и необходимости с ними уметь обращаться) На этом пока всё. (надо и поспать перед работой) Изменено 18 сентября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
polyname 0 19 сентября, 2012 Опубликовано 19 сентября, 2012 · Жалоба еще вопросик - какой наиболее эффективный метод организации стека данных для хранения чисел разной разрядности, строк, ссылок на функции и т.д. ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 19 сентября, 2012 Опубликовано 19 сентября, 2012 (изменено) · Жалоба еще вопросик - какой наиболее эффективный метод организации стека данных для хранения чисел разной разрядности, строк, ссылок на функции и т.д. ? Типичная организация стека в Форт системах через регистр указатель на ячейки одинаковой размерности (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 Изменено 19 сентября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 4 января, 2016 Опубликовано 4 января, 2016 (изменено) · Жалоба И что? Никто и ничего не сделал с применением Форт пока топик был предан забвению? :) Изменено 4 января, 2016 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 50 13 января, 2016 Опубликовано 13 января, 2016 · Жалоба И что? Никто и ничего не сделал с применением Форт пока топик был предан забвению? :) А смысл? Процентов 90 кодит на сях :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 19 января, 2016 Опубликовано 19 января, 2016 (изменено) · Жалоба А смысл? Процентов 90 кодит на сях :rolleyes: Forth великолепен в исследованиях, изучении, поиске решения. То, что называется "design iterations" гораздо (в разы, как минимум) эффективнее чем Ваши пресловутые "Процентов 90...". Так как: 1. быстрее \ цикл "компиляция-прошивка-проверка" 2. качественнее \ интерактивное тестирование создаваемого кода 3. дешевле \ время+ограниченный ресурс "записи/стирания" флеша ( редкий случай, когда все три параметра совместимы. обычно один(любой) надо вычеркивать) Конечно на производстве, где "поток и массовость", смысла применять форт наверное нет. Но, те "Процентов 90...", не занятые на производстве, постоянно вопиют на различных форумах "Где взять библиотеки??!", "Поделитесь скетчем!!"... уныло. ПыСы. Это как сравнивать композитора и духовой оркестр парка культуры и отдыха им. "90%" :1111493779: Изменено 19 января, 2016 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 20 января, 2016 Опубликовано 20 января, 2016 · Жалоба цикл "компиляция-прошивка-проверка" самое важное упустил "-редактирование" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 50 20 января, 2016 Опубликовано 20 января, 2016 · Жалоба Forth великолепен в исследованиях, изучении, поиске решения. Конечно на производстве, где "поток и массовость", смысла применять форт наверное нет. На вкус и цвет, конечно, фломастеры разные, сам этот язык не изучал, но почему тогда повсеместно изучают паскаль и си, даже бейсик, а вот про форт не слыхал?? Учился в политехе 1995-2001 год, везде был паскаль... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 21 января, 2016 Опубликовано 21 января, 2016 (изменено) · Жалоба а вот про форт не слыхал?? Просвещайтесь: Язык Форт в СССР и России И вот, почитайте на досуге язык и философия для решения задач . Думаю, будет полезно безотносительно к форту. Это НЕ учебник. Изменено 21 января, 2016 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 21 января, 2016 Опубликовано 21 января, 2016 (изменено) · Жалоба В конце https://en.wikipedia.org/wiki/Forth_(programming_language) есть любопытная и довольно редкая ссылка NASA applications of Forth (original NASA server no longer running, copy from archive.org) Изменено 21 января, 2016 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться