|
|
  |
А вот бы на FORTH написать..., ;-) |
|
|
|
Oct 2 2011, 09:23
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(chu @ Jul 9 2010, 18:41)  Amforth В оживление темы  от chu amForth 4.2 + AVR ATmega32 + шаговые двигатели http://roboforum.ru/forum58/topic4406-60.html
|
|
|
|
|
Sep 18 2012, 14:59
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(polyname @ Sep 18 2012, 17:13)  а нет ли форта на чистом С, независимого от архитектуры ? с компиляцией на лету, то есть с возможностью обработки строк, компиляции их в псевдо-код или в шитый код, и выполнения На чистом С есть разные реализации и в разных вариантах Универсальный рецепт, сразу сложно определить, т.к. схемы конкретных реализаций Форт языка разнообразны и выбираются из предпочтений разработчика. Будет ли Форт следовать существующим "отраслевым" разновидностям стандарта или Форт подобным или это будет "свой" Форт или другой конкатинавный (цепочечный) язык. Для Форта нет ограничений на возможные реализации парадигм программирования (всё зависит от воли и разума разработчика и возможности использования существующих решений, по необходимости) P.S. Изучение материалов Рускоязычного Форт форума может прояснить многие вопросы. Там же можно найти конкретные ссылки и задать необходимые вопросы. (хорошо заданный вопрос получается если половина вопроса уже известна  Это всё написано не для "восхволения" Форт подхода, а чтоб обрисовать общую картину т.к. сам по себе Форт подход и программирование основывается на определённой системной архитектуре (часто определяемой как FVM Форт виртуальной машине) в основе построения которой заложены несколько ключевых составляющих. Этим Форт так и привлекает к созданию и использованию своих "предпочтений" Если начнёте "погружение" в данной тематике, то желаю чтобы оно не "поглотило" сознание и осталось время для других интересных вещей. Форт тематика интересна, но существует на "задворках" местного форума и почти не обсуждается. Похоже все и так "сыты" и "довольны"
Сообщение отредактировал Kopa - Sep 18 2012, 15:17
|
|
|
|
|
Sep 18 2012, 19:47
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 18-05-12
Пользователь №: 71 915

|
Цитата или это будет "свой" Форт или другой конкатинавный (цепочечный) язык думал над приближением синтаксиса к конечному юзеру, нужно что-то ближе с интерпретируемому С и Басику. Как минимум хочется сделать человеческий вызов функций (имя парам1 парам2 ...). В принципе перевернуть перед компиляцией - не проблема. Цитата основывается на определённой системной архитектуре вот этого не нужно, хочется сделать на чистом С, без платформо-зависимых выкрутасов. Быстродействие не критично. Должно работать как минимум на AVR и STM32
Сообщение отредактировал polyname - Sep 18 2012, 19:47
|
|
|
|
|
Sep 18 2012, 20:37
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(polyname @ Sep 18 2012, 23:47)  думал над приближением синтаксиса к конечному юзеру, нужно что-то ближе с интерпретируемому С и Басику. Как минимум хочется сделать человеческий вызов функций (имя парам1 парам2 ...). В принципе перевернуть перед компиляцией - не проблема. Да, пользователю желательно дать разные варианты. Хотя в общем рассмотрении проще синтаксиса и мощнее (комбинаторно) чем у Форта (цепочечных языков) вряд ли придумаешь (слово полиморфно и может использоваться в разных контекстах т.к. не использует передаваемые именованные параметры, хотя и может использовать имеющеюся возможность). Да и забыть правила или операторы Форт языка гораздо сложнее. (т.к. всё последовательно и "единобезобразно") Форт систему можно "расширять" динамически (дополнять, подменять, переопределять или удалять ресурсы Форт системы) до синтаксиса подходящего языка и при этом производить минимальный синтаксиеский разбор входного текста. (ввести в использование префиксные if( else( и др. слова ) Показателен, в этом аспекте, переложенный на Форт язык материал популярного "эссе" Креншоу "Давайте сделаем компилятор". Есть и отдельные разработанные на Форте (GForth) библиотеки BNF, EBNF разбора. Несложно расширить, в рантайме, и введением формы обычных математически выражений и если необходимо добавить объектное расширение заданной функциональности. Имеются и наработанные математические библиотеки разных алгоритмов. Цитата(polyname @ Sep 18 2012, 23:47)  вот этого не нужно, хочется сделать на чистом С, без платформо-зависимых выкрутасов. Быстродействие не критично. Должно работать как минимум на AVR и STM32 Подразумевалось немного другое - элементы внутреннего устройства Форт системы. P.S. Делать на чистом С не принципиально т.к. создание или доработка под себя существующих Форт систем (для разных контроллеров - коих достаточно) не такое уж и обременительное занятие, если не пытаться "выжать" производительность. Есть и без привлечния или минимального использования ассемблера "самораскручиваемые" разработки. Форт также, бывает, имплантируют в существующие готовые разные инструментарии и программы. Р.S. Перечислять здесь существующие сделанные варианты, например на С, не имеет особого смысла т.к. их много и разных. Если только сделать, по возможности, краткий обзор и некоторые рекомендации при проблеме начального понимания. Но при знакомстве с Форт уровень начального понимания не сильно затруднителен. (ообенно при чтении, хотя и в чём то устаревших, но описывающих суть Форт языка книг.) Уровень вхождения в Форт существует и не всем этот язык "показан" (может быть отторжение т.к. имеет много отличий от Си подобных языков, хотя и ровесник Си и мало изменился в сути с того времени, в частности при знакомстве с широко используемыми стеками в языке и необходимости с ними уметь обращаться) На этом пока всё. (надо и поспать перед работой)
Сообщение отредактировал Kopa - Sep 18 2012, 21:40
|
|
|
|
|
Sep 19 2012, 11:47
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(polyname @ Sep 19 2012, 14:25)  еще вопросик - какой наиболее эффективный метод организации стека данных для хранения чисел разной разрядности, строк, ссылок на функции и т.д. ? Типичная организация стека в Форт системах через регистр указатель на ячейки одинаковой размерности (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 - Sep 19 2012, 12:37
|
|
|
|
|
Jan 19 2016, 06:49
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(mantech @ Jan 13 2016, 20:44)  А смысл? Процентов 90 кодит на сях  Forth великолепен в исследованиях, изучении, поиске решения. То, что называется " design iterations" гораздо (в разы, как минимум) эффективнее чем Ваши пресловутые "Процентов 90...". Так как: 1. быстрее \ цикл "компиляция-прошивка-проверка" 2. качественнее \ интерактивное тестирование создаваемого кода 3. дешевле \ время+ограниченный ресурс "записи/стирания" флеша ( редкий случай, когда все три параметра совместимы. обычно один(любой) надо вычеркивать) Конечно на производстве, где "поток и массовость", смысла применять форт наверное нет. Но, те "Процентов 90...", не занятые на производстве, постоянно вопиют на различных форумах "Где взять библиотеки??!", "Поделитесь скетчем!!"... уныло. ПыСы. Это как сравнивать композитора и духовой оркестр парка культуры и отдыха им. "90%"
Сообщение отредактировал chu - Jan 19 2016, 07:51
|
|
|
|
|
Jan 20 2016, 08:45
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(chu @ Jan 19 2016, 13:49)  цикл "компиляция-прошивка-проверка" самое важное упустил "-редактирование"
|
|
|
|
|
Jan 20 2016, 19:25
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(chu @ Jan 19 2016, 09:49)  Forth великолепен в исследованиях, изучении, поиске решения.
Конечно на производстве, где "поток и массовость", смысла применять форт наверное нет. На вкус и цвет, конечно, фломастеры разные, сам этот язык не изучал, но почему тогда повсеместно изучают паскаль и си, даже бейсик, а вот про форт не слыхал?? Учился в политехе 1995-2001 год, везде был паскаль...
|
|
|
|
|
Jan 21 2016, 04:33
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(mantech @ Jan 21 2016, 02:25)  а вот про форт не слыхал?? Просвещайтесь: Язык Форт в СССР и РоссииИ вот, почитайте на досуге язык и философия для решения задач . Думаю, будет полезно безотносительно к форту. Это НЕ учебник.
Сообщение отредактировал chu - Jan 21 2016, 04:38
|
|
|
|
|
Jan 21 2016, 06:33
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
В конце https://en.wikipedia.org/wiki/Forth_(programming_language) есть любопытная и довольно редкая ссылка NASA applications of Forth (original NASA server no longer running, copy from archive.org)
Сообщение отредактировал chu - Jan 21 2016, 06:39
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|