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

 
 
> Форт (Forth) и MSP430 для изучения, Программирование и исследование на Форт
Kopa
сообщение Sep 20 2012, 15:31
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 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 осталасьsm.gif
И если приобрести launch pad ($4,6) то можно многое сделать используя Форт идеалогию.
Есть и другие Форт системы для MSP430, но наверное без "продвижителя" данного направления тема "заглохнет":)

Сообщение отредактировал Kopa - Sep 20 2012, 17:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Nov 3 2012, 10:51
Сообщение #2


Гуру
******

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



Форт - детище ещё тех времен, когда ... экономили на спичках sm.gif. К тому же времени относится популярность паскалевских вызовов (под x86), когда можно было сэкономить один-два байта за счет того, что вызываемая подпрограмма/функция сама снимала со стека аргументы/параметры, с которыми она была вызвана. И этому располагала инструкция "RET число", которая одновременно с возвратом из подпрограммы заодно и очищала указанное число элементов стека. По программистским канонам это было не совсем правильно, т.к. убирать мусор должен тот, кто намусорил. Но ради мизерной экономии на это тогда пошли, и ныне все функции Windows API написаны именно в этом стиле, ибо так повелось с тех времен, когда байт стоил дорого.

Форт - продолжение этого же подхода, когда пытались сэкономить не только на этапе сброса аргументов со стека, но и на этапе выдачи результата. Т.е. идея была вполне здравая - функция должна была сначала (именно сначала, а не в момент завершения, как у паскалевских вызовов!) забрать со стека необходимые для себя аргументы, а после выложить на стек результаты своей работы. Такой подход обещал два профита. Первый - позволял функциям выдавать не один результат, а много, чем делал ее работу симметричной относительно входных и выходных данных. Второй - (и это, видимо, было в те времена наиболее важным), позволял обойтись без закладки аргументов в стек, если последовательность вызова функций была такова, что результат, выложенный на стек предшествующей функцией, служил аргументом для следующей. Именно на этом принципе в первую очередь была реализована стековая арифметика, и всё благодаря тому, что любая арифметическая операция (несмотря на то, что она бинарная) выдает всего один результат. Это обстоятельство позволяло к тому же, выстраивать последовательность операций в таком залихвастском порядке sm.gif, чтобы промежуточные результаты со стекового конвейера не надо было снимать. Многие программисты тогда на этом деле преуспели, наловчившись экономить обращения к стеку ценой искривления своего сознания sm.gif. Пишу слово "искривления" без кавычек, т.к. программист должен в первую очередь думать об алгоритме и предельной ясности его реализации, а не о том, чтобы сэкономить лишний элемент стека. Однако Форт - такой язык, который никак не дает программисту (даже в задачах высокого уровня) отвлечься от мыслей о стеке, ибо стек за такое отвлечение наказывает очень строго - стоит только просчитаться с балансом, сколько положил/взял, как всё сразу ломается, как карточный домик.

В наши дни и функции стали более сложными (по числу и типам аргументов) и данные стали крупнее (структуры, классы). И нынче их всё больше передают функции по адресам, а не по значению. А в таких случаях фортовской функции и выдавать на стек нечего. А раз на стек нечего выдавать, то и сама идея "предшественник оставил, а идущий за ним следом подобрал" перестает давать отдачу. В этих случаях выкладка аргументов на стек происходит общим порядком, уже не давая Форту преимущества над Фортаном, Пасклем, С++ и прочими нормальными sm.gif языками.

Акции Форта еще больше понизились в цене, когда у процессов вместо единственного сумматора появилось больше регистров, которые к тому же были способны к самостоятельной арифметике/логике. В этой ситуации идея прогонки всех вычислений через посредство стека становилось уже невыгодным, т.к. стек был всего один. Более того, операции с/над регистрами оказались на редкость быстрыми, по сравнению с операциями над ячейками памяти, не говоря уже о стеке. Например, операция инкремента (увеличения значения на единичку) осуществляется в регистре всего за один такт процессора, тогда как фортовский инкремент вылился бы в засылку числа в стек (одна запись в память), вызов подпрограммы инкремента (второе обращение к памяти), чтение ею числа из стека (третье обращение к памяти), засылка в стек инкрементированного результата (4-ое обращение к памяти), выход из подпрограммы инкремента (5-ое обращение к памяти), забор результата из стека вызывающей программой (6-е обращение к памяти). Всё это в тактах процессора стоит довольно дорого. Тем более что при отсутствии специальной фортовской функции вычисления инкремента пришлось бы прибавлять единичку явным образом - заталкивая ее в стек дополнительно. Обращений к памяти получилось бы тогда еще в полтора раза больше.

На микропроцессорной ниве (а за нее сейчас как раз и сватают Форт) ситуация для Форта тоже не слишком оптимистичная. У большинства МК имеется большое число регистров (скажем, у AVR их аж целых 32 штуки), из которых обычно половина используется компилятором, как "мусорные". Т.е., главным образом, для того, чтобы использовать их для передачи аргументов в подпрограммы/функции и обратно. В этой ситуации Форт вообще не конкурент, т.к. ему (со своим неповоротливым и медленным стеком) невозможно тягаться с таким предельно эффективным методом обмена данными.

Перспективы дальнейшего развития программирования, как дисциплины, тоже не сулят Форту ничего хорошего. Данные проявляют тенденцию к сильной "кристаллизации" (в сложные системы вложенных классов/структур), на порядки выросло число объектов (имен переменных), с которыми приходится локально работать. А в таком окружении программист различает все эти объекты только по именам (которые сам же придумывает такими, чтобы их смысл был ему понятен), а не по адресу в стеке. В такой ситуации код все равно выльется в постоянный перелив содержимого переменных в стек и обратно при вызове обязательных фортовских подпрограмм, тогда как в большинстве случаев компилятор способен выполнить прямую операцию над переменными, не используя стековый механизм и работающие на его основе подпрограммы. Дело идет к тому, что стек (а уж тем более единственный в программе) превратился в атавизм. Ибо сама глубинная суть Форта в том, что использующий его программист заодно должен выполнять работу компилятора. sm.gif Т.е. компилятор Форту не нужен не потому, что он сам так удал, а только потому, что работу компилятора возложили на программиста неявным образом!

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

С точки зрения ручной отладки код, генерируемый Фортом, выглядит как бесконечная череда вызовов CALL, прерывающаяся лишь добавлением данных в стек (обычно PUSH). Зрелище крайне малоприятное. Трассирование промежуточных результатов - тоже дело не сахар, т.к. стек забит не только данными, но и адресами возвратов из многочисленных подпрограмм. Ко всей этой кухне со временем можно привыкнуть, но на начальном этапе освоения вызывает тошноту вместе головной болью sm.gif. После этого программирование на любом другом языке, где не надо думать о стеке, кажется просто райским наслаждением. sm.gif
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 3 2012, 11:46
Сообщение #3


Знающий
****

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



+

Сообщение отредактировал Kopa - Nov 3 2012, 12:11
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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, 13:51) Перспек...   Nov 3 2012, 13:20
||- - Xenia   Цитата(Kopa @ Nov 3 2012, 15:46) + Цитата...   Nov 3 2012, 15:15
|- - 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 страниц V   1 2 >


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 13:35
Рейтинг@Mail.ru


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