|
Форт (Forth) и MSP430 для изучения, Программирование и исследование на Форт |
|
|
|
Sep 20 2012, 15:31
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Есть интересное направление - например, в частности, использование Форт языка для быстрого и эффективного изучения возможностей контроллера MSP430 и внешней периферии. 4e4thКод 4E4th on the LaunchPad - 8/16K Recently we had a meeting in the Lower Rhine region dreaming about a small nice affordable board with a modern MCU and a compact Forth inside.
There it is!
The TI LaunchPad with 4E4th on it. 16K FLASH - 8K Forth and 8K for our own apps. The 4E4th is covered in a 20Pin DIL MSP430G2553. Now our goal is to supply a TI LaunchPad ready with the MSP430G2553 and Forth inside - all for 4€ - plug in the USB, open the terminal, and there we go! CamelForth430 is the kernel of 4E4th.
I think these are exciting developments.
Michael P.S. Возможно окажется полезным инструментарием проект немецкого Форт сообщества. В репозитарии есть ещё некоторые Форт системы для MSP430. Хотчется услышать мнение участников местного форума. C MSP430 близко не работал, но "ностальгия" по системе команд PDP-11 осталась  И если приобрести launch pad ($4,6) то можно многое сделать используя Форт идеалогию. Есть и другие Форт системы для MSP430, но наверное без "продвижителя" данного направления тема "заглохнет":)
Сообщение отредактировал Kopa - Sep 20 2012, 17:15
|
|
|
|
|
 |
Ответов
|
Nov 3 2012, 10:51
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Форт - детище ещё тех времен, когда ... экономили на спичках  . К тому же времени относится популярность паскалевских вызовов (под x86), когда можно было сэкономить один-два байта за счет того, что вызываемая подпрограмма/функция сама снимала со стека аргументы/параметры, с которыми она была вызвана. И этому располагала инструкция "RET число", которая одновременно с возвратом из подпрограммы заодно и очищала указанное число элементов стека. По программистским канонам это было не совсем правильно, т.к. убирать мусор должен тот, кто намусорил. Но ради мизерной экономии на это тогда пошли, и ныне все функции Windows API написаны именно в этом стиле, ибо так повелось с тех времен, когда байт стоил дорого. Форт - продолжение этого же подхода, когда пытались сэкономить не только на этапе сброса аргументов со стека, но и на этапе выдачи результата. Т.е. идея была вполне здравая - функция должна была сначала (именно сначала, а не в момент завершения, как у паскалевских вызовов!) забрать со стека необходимые для себя аргументы, а после выложить на стек результаты своей работы. Такой подход обещал два профита. Первый - позволял функциям выдавать не один результат, а много, чем делал ее работу симметричной относительно входных и выходных данных. Второй - (и это, видимо, было в те времена наиболее важным), позволял обойтись без закладки аргументов в стек, если последовательность вызова функций была такова, что результат, выложенный на стек предшествующей функцией, служил аргументом для следующей. Именно на этом принципе в первую очередь была реализована стековая арифметика, и всё благодаря тому, что любая арифметическая операция (несмотря на то, что она бинарная) выдает всего один результат. Это обстоятельство позволяло к тому же, выстраивать последовательность операций в таком залихвастском порядке  , чтобы промежуточные результаты со стекового конвейера не надо было снимать. Многие программисты тогда на этом деле преуспели, наловчившись экономить обращения к стеку ценой искривления своего сознания  . Пишу слово "искривления" без кавычек, т.к. программист должен в первую очередь думать об алгоритме и предельной ясности его реализации, а не о том, чтобы сэкономить лишний элемент стека. Однако Форт - такой язык, который никак не дает программисту (даже в задачах высокого уровня) отвлечься от мыслей о стеке, ибо стек за такое отвлечение наказывает очень строго - стоит только просчитаться с балансом, сколько положил/взял, как всё сразу ломается, как карточный домик. В наши дни и функции стали более сложными (по числу и типам аргументов) и данные стали крупнее (структуры, классы). И нынче их всё больше передают функции по адресам, а не по значению. А в таких случаях фортовской функции и выдавать на стек нечего. А раз на стек нечего выдавать, то и сама идея " предшественник оставил, а идущий за ним следом подобрал" перестает давать отдачу. В этих случаях выкладка аргументов на стек происходит общим порядком, уже не давая Форту преимущества над Фортаном, Пасклем, С++ и прочими нормальными  языками. Акции Форта еще больше понизились в цене, когда у процессов вместо единственного сумматора появилось больше регистров, которые к тому же были способны к самостоятельной арифметике/логике. В этой ситуации идея прогонки всех вычислений через посредство стека становилось уже невыгодным, т.к. стек был всего один. Более того, операции с/над регистрами оказались на редкость быстрыми, по сравнению с операциями над ячейками памяти, не говоря уже о стеке. Например, операция инкремента (увеличения значения на единичку) осуществляется в регистре всего за один такт процессора, тогда как фортовский инкремент вылился бы в засылку числа в стек (одна запись в память), вызов подпрограммы инкремента (второе обращение к памяти), чтение ею числа из стека (третье обращение к памяти), засылка в стек инкрементированного результата (4-ое обращение к памяти), выход из подпрограммы инкремента (5-ое обращение к памяти), забор результата из стека вызывающей программой (6-е обращение к памяти). Всё это в тактах процессора стоит довольно дорого. Тем более что при отсутствии специальной фортовской функции вычисления инкремента пришлось бы прибавлять единичку явным образом - заталкивая ее в стек дополнительно. Обращений к памяти получилось бы тогда еще в полтора раза больше. На микропроцессорной ниве (а за нее сейчас как раз и сватают Форт) ситуация для Форта тоже не слишком оптимистичная. У большинства МК имеется большое число регистров (скажем, у AVR их аж целых 32 штуки), из которых обычно половина используется компилятором, как "мусорные". Т.е., главным образом, для того, чтобы использовать их для передачи аргументов в подпрограммы/функции и обратно. В этой ситуации Форт вообще не конкурент, т.к. ему (со своим неповоротливым и медленным стеком) невозможно тягаться с таким предельно эффективным методом обмена данными. Перспективы дальнейшего развития программирования, как дисциплины, тоже не сулят Форту ничего хорошего. Данные проявляют тенденцию к сильной "кристаллизации" (в сложные системы вложенных классов/структур), на порядки выросло число объектов (имен переменных), с которыми приходится локально работать. А в таком окружении программист различает все эти объекты только по именам (которые сам же придумывает такими, чтобы их смысл был ему понятен), а не по адресу в стеке. В такой ситуации код все равно выльется в постоянный перелив содержимого переменных в стек и обратно при вызове обязательных фортовских подпрограмм, тогда как в большинстве случаев компилятор способен выполнить прямую операцию над переменными, не используя стековый механизм и работающие на его основе подпрограммы. Дело идет к тому, что стек (а уж тем более единственный в программе) превратился в атавизм. Ибо сама глубинная суть Форта в том, что использующий его программист заодно должен выполнять работу компилятора.  Т.е. компилятор Форту не нужен не потому, что он сам так удал, а только потому, что работу компилятора возложили на программиста неявным образом! Это понимают не только программисты, но и разработчики железа. Например, в архитектуре x86 произошло фактическое отмирание механизма вычислений с плавающей точкой F87, имеющей стековый механизм, и переход на SSE-регистры, которые допускают прямую адресацию. С точки зрения ручной отладки код, генерируемый Фортом, выглядит как бесконечная череда вызовов CALL, прерывающаяся лишь добавлением данных в стек (обычно PUSH). Зрелище крайне малоприятное. Трассирование промежуточных результатов - тоже дело не сахар, т.к. стек забит не только данными, но и адресами возвратов из многочисленных подпрограмм. Ко всей этой кухне со временем можно привыкнуть, но на начальном этапе освоения вызывает тошноту вместе головной болью  . После этого программирование на любом другом языке, где не надо думать о стеке, кажется просто райским наслаждением.
|
|
|
|
|
Nov 3 2012, 13:20
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(Xenia @ Nov 3 2012, 13:51)  Перспективы дальнейшего развития программирования, как дисциплины, тоже не сулят Форту ничего хорошего. Данные проявляют тенденцию к сильной "кристаллизации" (в сложные системы вложенных классов/структур), на порядки выросло число объектов (имен переменных), с которыми приходится локально работать. ... Похвальное желание "закопать" Форт поглубже. Есть, например, и такие экспериментальные площадки разработки http://thyrd.orgЦитата(Xenia @ Nov 3 2012, 13:51)  На микропроцессорной ниве (а за нее сейчас как раз и сватают Форт) ситуация для Форта тоже не слишком оптимистичная. Форт всегда присутствовал и присутствует на нише встроенных приложений. (если кто то не в курсе) P.S. Хenia. Предлагаю Вам написать корректирующий пост на весь "пафос" высказанный постом выше. (короче полный пипец и суши вёсла) C описываемыми Вами перспективами по оперированию информацией можно стать "инвалидом" программерского труда, а ситуация с компиляторами которые только и занимаются в RISK архитектуре "считыванием" информации для ппрограмм в "мусорные" регисты вообще плачевна. (поэтому возможно стековый код и "уделывал" Си регистровую оптимизацию компиляторами (по обсуждению с RSDN) до появления Pentium процессоров?) Прозвучавшее слово обязательный забудьте в применении к Форт (там больше правит анархия программиста разработчика, который может установить свои "правила игры" исходя из ситуации) и не смешивайти языковые возможности Форта и результирующий нативный код который будет выполняться на целевом процессоре. По Вашему Java, MSIL байт код (в основе стековая модель) вообще один сплошной тормоз?
Сообщение отредактировал Kopa - Nov 3 2012, 14:26
|
|
|
|
Сообщений в этой теме
Kopa Форт (Forth) и MSP430 для изучения Sep 20 2012, 15:31 zhevak Ага. Спасибо. Уже читаю.
Н-н... да. Забавно. Очер... Sep 20 2012, 18:49 MrYuran Цитата(zhevak @ Sep 20 2012, 22:49) Я, во... Sep 21 2012, 05:15  zhevak Цитата(MrYuran @ Sep 21 2012, 11:15) 1. м... Sep 23 2012, 10:43   Kopa Цитата(zhevak @ Sep 23 2012, 14:43) Вы ве... Sep 23 2012, 13:20    zhevak Цитата(Kopa @ Sep 23 2012, 19:20) На само... Sep 23 2012, 15:50     Kopa Цитата(zhevak @ Sep 23 2012, 19:50) Обыва... Sep 23 2012, 16:18      zhevak Цитата(Kopa @ Sep 23 2012, 22:18) А их (Ф... Sep 23 2012, 17:07       Kopa Цитата(zhevak @ Sep 23 2012, 21:07) И еще... Sep 23 2012, 17:52   MrYuran Цитата(zhevak @ Sep 23 2012, 14:43) Какая... Sep 24 2012, 05:33   SyncLair Цитата(zhevak @ Sep 23 2012, 14:43) 1.Но ... Oct 30 2012, 22:26    MrYuran Цитата(SyncLair @ Oct 31 2012, 02:26) 2. ... Oct 31 2012, 06:38     shreck 2MrYuran
А чем закончились ваши отношения с Forpo... Oct 31 2012, 07:24      MrYuran Цитата(shreck @ Oct 31 2012, 11:24) А чем... Oct 31 2012, 07:50    Kopa Цитата(SyncLair @ Oct 31 2012, 02:26) 1. ... Oct 31 2012, 12:30     MrYuran Цитата(Kopa @ Oct 31 2012, 16:30) На MSP4... Nov 1 2012, 13:59      Kopa Цитата(MrYuran @ Nov 1 2012, 17:59) Цена ... Nov 1 2012, 16:19 Microwatt Есть в ФОРТе нечто особенное. То, что сейчас кроме... Sep 20 2012, 23:33 Kopa Цитата(Microwatt @ Sep 21 2012, 03:33) Вр... Sep 21 2012, 12:50 Bloom я тоже изучал в свое время форт, было очень интере... Sep 21 2012, 01:14 polyname ЦитатаНо пока, я в упор не вижу -- где можно испол... Sep 23 2012, 11:16 zhevak Спасибо за примеры, polyname.
Да, действительно, ... Sep 23 2012, 11:46 Kopa Цитата(zhevak @ Sep 23 2012, 14:43) Тепер... Sep 23 2012, 12:55  zhevak Цитата(Kopa @ Sep 23 2012, 18:55) @ ... Sep 23 2012, 16:33   Kopa Цитата(zhevak @ Sep 23 2012, 20:33) Извин... Sep 23 2012, 17:06    zhevak я безвылазно сижу в Лине. Так что "левые проц... Sep 23 2012, 17:14    ReAl Цитата(Kopa @ Sep 23 2012, 20:06) За свое... Sep 23 2012, 18:30 polyname ЦитатаОдин из вариантов, можно и оптимальнееда, эт... Sep 23 2012, 13:08 polyname ЦитатаЕсли бы в языке было что-то стоящее, то наве... Sep 23 2012, 17:11 rezident Обращаюсь к модераторам раздела публично, поскольк... Sep 24 2012, 11:48 Kopa Цитата(rezident @ Sep 24 2012, 15:48) Обр... Sep 24 2012, 12:13  rezident Цитата(Kopa @ Sep 24 2012, 17:13) Парадок... Sep 24 2012, 13:56 Виктория Наверно лучше перенести в "Операционные систе... Sep 25 2012, 16:16 Kopa Цитата(Виктория @ Sep 25 2012, 20:16) Нав... Sep 25 2012, 19:34  MrYuran Цитата(Kopa @ Sep 25 2012, 23:34) Фoрт та... Sep 26 2012, 05:10   Виктория Цитата(MrYuran @ Sep 26 2012, 08:10) Очен... Sep 26 2012, 11:19    MrYuran Цитата(Виктория @ Sep 26 2012, 15:19) - П... Sep 26 2012, 11:55    Kopa Цитата(Виктория @ Sep 26 2012, 15:19) Да ... Sep 26 2012, 11:56    Tanya Цитата(Виктория @ Sep 26 2012, 15:19) - П... Sep 26 2012, 12:05 Kopa Немного ссылок на презентации Форта.
Включены сла... Sep 26 2012, 17:32 Виктория Цитата(Kopa @ Sep 26 2012, 20:32) Немного... Sep 27 2012, 13:42  MrYuran Цитата(Виктория @ Sep 27 2012, 17:42) Спа... Sep 27 2012, 13:57  Kopa Цитата(Виктория @ Sep 27 2012, 17:42) Спа... Sep 27 2012, 13:58   Виктория Цитата(Kopa @ Sep 27 2012, 16:58) А зачем... Sep 27 2012, 14:48 polyname ЦитатаСтудент ввел строку программы и тут же запус... Sep 26 2012, 18:26 Kopa Цитата(polyname @ Sep 26 2012, 22:26) и к... Sep 26 2012, 18:36  MrYuran Цитата(Kopa @ Sep 26 2012, 22:36) Встреча... Sep 27 2012, 04:41   Kopa Цитата(MrYuran @ Sep 27 2012, 08:41) А сс... Sep 27 2012, 12:28 MrYuran Специально заказал TI Launchpad, чтобы попробовать... Oct 30 2012, 13:38 Timmy Моё мнение по исходному вопросу: основной рыночной... Oct 31 2012, 19:59 Kopa Цитата(Timmy @ Oct 31 2012, 22:59) Моё мн... Oct 31 2012, 20:22 SBE Добавлю свои пять копеек, как бывший пользователь ... Nov 2 2012, 14:55 Kopa Цитата(SBE @ Nov 2 2012, 17:55) Время Фор... Nov 2 2012, 18:52  zhevak Что-то я вообще потерял всякую логику.
Один говор... Nov 2 2012, 22:07 chu Цитата(SBE @ Nov 2 2012, 21:55) До сих по... Nov 4 2012, 06:02  Kopa Цитата(chu @ Nov 4 2012, 10:02) Рискну пр... Nov 4 2012, 23:55  SBE Цитата(chu @ Nov 4 2012, 10:02) Рискну пр... Nov 8 2012, 16:05   chu Цитата(SBE @ Nov 8 2012, 23:05) ИМХО поле... Nov 8 2012, 17:55    Kopa Цитата(chu @ Nov 8 2012, 20:55) Точка зре... Nov 9 2012, 12:00 Kopa + Nov 3 2012, 11:46 Kopa Цитата(Xenia @ Nov 3 2012, 13:51) ...
... Nov 3 2012, 12:10  MrYuran Цитата(Kopa @ Nov 3 2012, 16:10) Например... Nov 9 2012, 13:37   Kopa Цитата(MrYuran @ Nov 9 2012, 17:37) Форт ... Nov 9 2012, 14:16   SBE Цитата(MrYuran @ Nov 9 2012, 17:37) Сравн... Nov 9 2012, 16:11   zhevak Цитата(MrYuran @ Nov 9 2012, 19:37) Знаю,... Nov 9 2012, 17:57 Kopa Цитата(Xenia @ Nov 3 2012, 14:51) Более т... Nov 3 2012, 15:15 Kopa Цитата(Xenia @ Nov 3 2012, 14:51) Форт - ... Nov 3 2012, 15:21 chu MrYuran, а 4e4th имеется в наличии только в виде ... Nov 9 2012, 14:24 Kopa Цитата(chu @ Nov 9 2012, 17:24) MrYuran, ... Nov 9 2012, 14:39  chu О! точно. Kopa, спасибо. Полезная, на первый в... Nov 9 2012, 15:33 Xenia Еще позволю себе запузырить камень в огород Форта ... Nov 9 2012, 15:39 chu Цитата(Xenia @ Nov 9 2012, 22:39) Да и са... Nov 9 2012, 16:54  SBE Цитата(chu @ Nov 9 2012, 20:54) А програм... Nov 9 2012, 20:56   zhevak Цитата(SBE @ Nov 10 2012, 02:56) "Ср... Nov 9 2012, 22:05    Kopa Цитата(zhevak @ Nov 10 2012, 02:05) +1
Фо... Nov 10 2012, 03:42     zhevak Цитата(Kopa @ Nov 10 2012, 09:42) Это тол... Nov 10 2012, 07:53      Kopa Цитата(zhevak @ Nov 10 2012, 11:53) Дак з... Nov 10 2012, 08:21      Kopa Цитата(zhevak @ Nov 10 2012, 11:53) Замеч... Nov 10 2012, 09:17       zhevak Цитата(Kopa @ Nov 10 2012, 14:57) Да, дей... Nov 10 2012, 09:20        Kopa Цитата(zhevak @ Nov 10 2012, 12:20) PDP11... Nov 10 2012, 09:54         zhevak Цитата(Kopa @ Nov 10 2012, 15:54) Сейчас ... Nov 10 2012, 16:14          Kopa Цитата(zhevak @ Nov 10 2012, 20:14) Ревну... Nov 10 2012, 17:17    chu Цитата(zhevak @ Nov 10 2012, 05:05) Форт ... Nov 10 2012, 07:12     zhevak Цитата(chu @ Nov 10 2012, 13:12) В 1971 г... Nov 10 2012, 08:33      chu Цитата(zhevak @ Nov 10 2012, 15:33) Конкр... Nov 10 2012, 18:00       Kopa Цитата(chu @ Nov 10 2012, 22:00) Я полнос... Nov 10 2012, 18:28        chu Цитата(Kopa @ Nov 11 2012, 01:28) ... и ж... Nov 10 2012, 18:40       ReAl Цитата(chu @ Nov 10 2012, 20:00) "В ... Nov 10 2012, 18:43   Kopa Цитата(SBE @ Nov 10 2012, 00:56) Не могу ... Nov 10 2012, 06:38 ReAl Вот вы тут спорте, спорите...
Десять и пятнадцать ... Nov 10 2012, 18:36 chu Цитата(ReAl @ Nov 11 2012, 01:36) Впрочем... Nov 10 2012, 19:20  ReAl Цитата(chu @ Nov 10 2012, 21:20) Могу под... Nov 10 2012, 19:38 Kopa Цитата(ReAl @ Nov 10 2012, 21:36) Впрочем... Nov 10 2012, 20:17  ReAl Цитата(Kopa @ Nov 10 2012, 22:17) Вариант... Nov 10 2012, 20:39   Kopa Цитата(ReAl @ Nov 10 2012, 23:39) Так что... Nov 10 2012, 21:48 chu http://oko-planet.su/finances/financesday/...nih-l... Nov 11 2012, 07:13 Kopa Цитата(chu @ Nov 11 2012, 11:13) Sorry, н... Nov 11 2012, 08:29
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|