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

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

по моему, возможности и крутость Форта сильно преувеличены.

передача и обработка данных через стек неэффективна, в С автоматическое распределение регистров, напр. WinAVR передает до 4х параметров функции в регистрах.

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

ограниченность системы типов - опять же ограничение накладываемое стеком.

бедность программного окружения - С есть везде, с кучей библиотек. Если не хватает - с минимальными изменениями можно перейти на C++/ObjC. А как с Фортом ?

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

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


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

Интерес и предложения возникают из необходимости или желания сделать что-то конкретное, пусть даже это конкретное заключается в просвещении, а не просто в поднятии темы.

 

Просвящение и есть в обсуждении данной тематики

Для серьёзного, не в частном порядке практического применения, необходима

критическая масса разработчиков в предложенной к обсуждению области.

 

 

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

 

И как это Вы представляете?

"Нет тем -> нет практического интереса -> Нет тем"

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


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

Я имел виду следующее.

Нет тем (или их очень мало) поскольку массовый пользователь довольно слабо осведомлён в данной области. Темы просветительского плана могли бы (сугубо добровольно) взять на себя гуру типа Вас. Начало положено, теперь можно отвечать на критические сообщения, например. Появится осведомлённость -> появится интерес -> появятся темы. Главное, чтобы информационно-просветительские темы были полезны и интересны, чтобы пользователи сами захотели развиваться в этом направлении. Критическую массу разработчиков можно наработать на мой взгляд только так.

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


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

по моему, возможности и крутость Форта сильно преувеличены.

 

Кем преувеличена?

Пользователями которые применяют Форт в программировании и решении практических задач?

Наверное это так и есть:)

 

передача и обработка данных через стек неэффективна, в С автоматическое распределение регистров, напр. WinAVR передает до 4х параметров функции в регистрах.

 

Статья о стеке

 

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

 

В этом есть правда:)

 

Необходимость в постоянных несложных ручных манипуляциях со стеком присутствует.

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

Для борьбы со сложностью бывают разные способы и в Форте можно использовать разные методы.

 

 

 

ограниченность системы типов - опять же ограничение накладываемое стеком.

 

Скорее нет ограничения по контролю программистом способа использования данных.

Стек типы данных никак не ограничивает:)

 

бедность программного окружения - С есть везде, с кучей библиотек. Если не хватает - с минимальными изменениями можно перейти на C++/ObjC. А как с Фортом ?

 

В Форте, как и в любом другом языке используют не только свои наработанные библиотеки:)

Перейти к использованию той или иной Форт системы сложностей почти не существует.

Сложнее перенести программы из одной системы в другую.

 

модификация словаря, замена слов и т.д. - какой в этом смысл ?

 

Практический т.к. варианты использования Форта могут быть разные.

Возможность, в той или иной степенью, работать с внутренностями системы применяется при

создании инструментальных средств. ( например с целью расширения конечным пользователем )

 

когда-то давно это может и было актуально - когда на машине с ограниченными ресурсами писалась

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

 

Мой способ программирования:

Быстрый интерактивный цикл ( Far - командная строка - оценка неработоспособности кода - Far )

Интерактивность Форта - дополнительный уровень возможности комфортного тестирования кода.

 

P.S. Возможно это всё субъективно и не достаточно доходчиво написано.:)

 

 

 

Я имел виду следующее.

Нет тем (или их очень мало) поскольку массовый пользователь довольно слабо осведомлён в данной области.

 

На данном форуме тем, полезных для прочтения по Форту, не присутствует.

Эта, наверное, первое хорошее обсуждение.:)

Хотя реплики, давнишние и в основном мои могут быть в разных топиках

 

 

Темы просветительского плана могли бы (сугубо добровольно) взять на себя гуру типа Вас. Появится осведомлённость -> появится интерес -> появятся темы.

 

Уже оживил обсуждение данного топика, хотя гуру или нет не знаю.

Ждёмс появления интереса?

:smile3046:

 

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

 

Полностью согласен с этим.

Лишь бы темы ( тема) не затерялись и были.

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


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

Интерактивность Форта - дополнительный уровень возможности комфортного тестирования кода.

Да, вот это мне тоже больше всего нравится.

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

Скоро буду пробовать форт на МСП.

Вот только схему срочную доделаю, отдам на разводку - и там опять намечается прогал в работе.

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


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

Скорее нет ограничения по контролю программистом способа использования данных.

Стек типы данных никак не ограничивает

ну например, как писать и читать через стек 8,16,32 битные данные, float, double, строки ? эмулировать вручную байтами ? опять же получается что нужны разные наборы команд для манипуляции со стеком, арифметики, преобразований типов для разных типов данных. вопрос - зачем весь этот огород если в C все уже сделано ?

 

касательно отладки - кто мешает в С отлаживать каждую функцию отдельно ? на современных процессорах перекомпиляция программы для котроллера - секундное дело, у меня как-то получается отлаживать функции для SDCC, AVR-GCC, ARM-GCC в обычном GCC/Mingw. а функции, завязанные на периферию процессора и обработку данных в реальном времени не получится отдельно отладить и в Форте - для этого больше подходит вывод на индикацию/терминал.

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

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


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

ну например, как писать и читать через стек 8,16,32 битные данные, float, double, строки ?

 

Обычно размерность ячейки памяти у Форт систем разная - типично 16 или 32 бита

( это как основа для данной реализации Форта )

Для сложения, например, чисел двойной размерности - то один элемент

стека будет занимать уже две ячейки и слово 2+ ( удачнее D+ ) сложит уже 2-е ( двойной размерности

каждая ) ячейки.

 

Для float в стандарте 94года определён отдельный стек и соответственно слова использования float.

 

Строки могут размещаться как в буферах так и коде программы ( "кодофайле" ) так и в хипе

Есть разные библиотеки для работы со строками.

Можно завести и отдельный стек:)

 

Для байт, наример также введены отдельные слова C@ C! ( работа с байтом ячейки )

 

вопрос - зачем весь этот огород если в C все уже сделано ?

 

Форт тоже это имеет.

 

Явная типизация на этапе компиляции, как показывает практика,

в Форте почти никому не нужны. ( типы можно ввести или при желании для дополнительного контроля

выводить динамически по семантике слова )

 

 

Скоро буду пробовать форт на МСП.

 

Какой вариант выбран для опробации?

 

 

касательно отладки - кто мешает в С отлаживать каждую функцию отдельно ?

 

Ничего не мешает,

кроме необходимости простого предоставления данных отлаживаемой функции и выяснении неработоспособного

кода ( или вы предлагаете вычленить весь код необходимый отлаживаемой функции из проекта

и его отдельно тестировать, не учитывая даже накладные расходы на перекомпиляцию?)

 

P.S. Внесу немного ясности - в работе используется лицензионный IAR.

( требование текущих рабочих реалий )

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

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


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

Какой вариант выбран для опробации?

Да вот скачал уже давно camelforth с camelforth.com

 

Немного напрягает, что нет исходников ядра, дают готовую прошивку под свои параметры, а у меня например, все железки с 2МГц кварцами, а не с 8.

Но это мелочи. Попробовать хватит.

 

*********

Хотя нет, погорячился. Сейчас глянул, исходники все есть, на ассемблере (.s43 для ИАРа)

Ну и хорошо, будет чем поиграться.

 

А там уж, если понравится, можно будет выбирать пути дальнейшего развития.

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


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

Да вот скачал уже давно camelforth с camelforth.com

А там уж, если понравится, можно будет выбирать пути дальнейшего развития.

 

Для msp можно "накидать" симулятор ядра,

хотя msp это не контроллер моего использования:)

 

и рассмотреть другие варианты использования Форта для него.

 

Пока.

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

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


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

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

Просто интересно сравнить с привычными решениями на Ц.

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


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

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

Просто интересно сравнить с привычными решениями на Ц.

 

Один из вариантов ( поиск "crc16 forth" )

алгоритм с номером #44

 

P.S. Можно и найти другие реализации и замерить скорость после компиляции

и посмотреть asm код, например, на PC для разных Форт систем:)

Си варианты

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

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


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

Если честно, не впечатлило. Букаф зело много. В сравнении с сишным

static void word_checksum (uint8_t * cs, const uint8_t * s, uint8_t size, const uint16_t poly)
   {
   uint16_t * crc = (uint16_t *)cs;

   for (;size--;)
      {
      register uint8_t i = 8;
      *crc ^= *s++;
      do
         {
         uint8_t f = *crc & 1;
         *crc >>= 1;

         if (f)
            *crc ^= poly;
         }
      while (--i);
      }
   }

пресловутого лаконизма исходного кода не замечено.

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


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

Вот если бы ввести слова для работы с предпоследним и пред-предпоследним элементом стека (вместо ротов и свопов), гораздо быстрее было бы.

В МСП, кстати, без проблем.

 

Хотя бы что-то типа Inc_Prev (инкремент предпоследнего) и Dec_Prev

Можно было бы менять счётчик "через голову" верхнего значения (CRC)

Правда, проверять его тоже также нужно

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


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

Не, я вовсе не к тому, что Forth vs C, а просто хотелось бы какой-нить пример, который реально показывает преимущества форта, чтоб понять его мощь.

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


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

Если честно, не впечатлило. Букаф зело много. В сравнении с сишным.

...

пресловутого лаконизма исходного кода не замечено.

 

Вопрос, в этом случае, был поставлен некоректно:)

 

В Форте можно написать полный аналог приведённого Вами кода.

используя локальные именованные переменные или другие варианты с неменьшей поонимаемостью кода .

 

 

P.S. Расчёт CRC ещё для увеличения скорости алгоритма часто реализовывают на asm

( как это будет по впечатлениям?

Нужно ехать или смотреть на автомобиль? )

 

Одна из ловушек Форта - это желание оптимально создавать код:)

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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