ukpyr 0 27 мая, 2009 Опубликовано 27 мая, 2009 · Жалоба по моему, возможности и крутость Форта сильно преувеличены. передача и обработка данных через стек неэффективна, в С автоматическое распределение регистров, напр. WinAVR передает до 4х параметров функции в регистрах. синтаксис - в сложном алгоритме "туши свет", необходимость постоянных ручных манипуляций со стеком только все усложняет. ограниченность системы типов - опять же ограничение накладываемое стеком. бедность программного окружения - С есть везде, с кучей библиотек. Если не хватает - с минимальными изменениями можно перейти на C++/ObjC. А как с Фортом ? модификация словаря, замена слов и т.д. - какой в этом смысл ? когда-то давно это может и было актуально - когда на машине с ограниченными ресурсами писалась, олаживалась, и выполнялась программа. все равно сейчас все пишется, отлаживается и компилируется на хост-компьютере с практически неограниченными ресурсами, и нет смысла возится со списком слов и т.д., проще все перекомпилировать и отладить нужный кусок в отладчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 27 мая, 2009 Опубликовано 27 мая, 2009 · Жалоба Интерес и предложения возникают из необходимости или желания сделать что-то конкретное, пусть даже это конкретное заключается в просвещении, а не просто в поднятии темы. Просвящение и есть в обсуждении данной тематики Для серьёзного, не в частном порядке практического применения, необходима критическая масса разработчиков в предложенной к обсуждению области. До сих пор подобного не наблюдалось, но в случае возникновения интереса у пользователей и создания большого количества полезных тем о Forth будет создан даже отдельный подфорум как это происходило и раньше. И как это Вы представляете? "Нет тем -> нет практического интереса -> Нет тем" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 27 мая, 2009 Опубликовано 27 мая, 2009 · Жалоба Я имел виду следующее. Нет тем (или их очень мало) поскольку массовый пользователь довольно слабо осведомлён в данной области. Темы просветительского плана могли бы (сугубо добровольно) взять на себя гуру типа Вас. Начало положено, теперь можно отвечать на критические сообщения, например. Появится осведомлённость -> появится интерес -> появятся темы. Главное, чтобы информационно-просветительские темы были полезны и интересны, чтобы пользователи сами захотели развиваться в этом направлении. Критическую массу разработчиков можно наработать на мой взгляд только так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 27 мая, 2009 Опубликовано 27 мая, 2009 · Жалоба по моему, возможности и крутость Форта сильно преувеличены. Кем преувеличена? Пользователями которые применяют Форт в программировании и решении практических задач? Наверное это так и есть:) передача и обработка данных через стек неэффективна, в С автоматическое распределение регистров, напр. WinAVR передает до 4х параметров функции в регистрах. Статья о стеке синтаксис - в сложном алгоритме "туши свет", необходимость постоянных ручных манипуляций со стеком только все усложняет. В этом есть правда:) Необходимость в постоянных несложных ручных манипуляциях со стеком присутствует. но есть также возможность использования именованных локальных переменных, при необходимости. Для борьбы со сложностью бывают разные способы и в Форте можно использовать разные методы. ограниченность системы типов - опять же ограничение накладываемое стеком. Скорее нет ограничения по контролю программистом способа использования данных. Стек типы данных никак не ограничивает:) бедность программного окружения - С есть везде, с кучей библиотек. Если не хватает - с минимальными изменениями можно перейти на C++/ObjC. А как с Фортом ? В Форте, как и в любом другом языке используют не только свои наработанные библиотеки:) Перейти к использованию той или иной Форт системы сложностей почти не существует. Сложнее перенести программы из одной системы в другую. модификация словаря, замена слов и т.д. - какой в этом смысл ? Практический т.к. варианты использования Форта могут быть разные. Возможность, в той или иной степенью, работать с внутренностями системы применяется при создании инструментальных средств. ( например с целью расширения конечным пользователем ) когда-то давно это может и было актуально - когда на машине с ограниченными ресурсами писалась , олаживалась, и выполнялась программа. все равно сейчас все пишется, отлаживается и компилируется на хост-компьютере с практически неограниченными ресурсами, и нет смысла возится со списком слов и т.д., проще все перекомпилировать и отладить нужный кусок в отладчике. Мой способ программирования: Быстрый интерактивный цикл ( Far - командная строка - оценка неработоспособности кода - Far ) Интерактивность Форта - дополнительный уровень возможности комфортного тестирования кода. P.S. Возможно это всё субъективно и не достаточно доходчиво написано.:) Я имел виду следующее. Нет тем (или их очень мало) поскольку массовый пользователь довольно слабо осведомлён в данной области. На данном форуме тем, полезных для прочтения по Форту, не присутствует. Эта, наверное, первое хорошее обсуждение.:) Хотя реплики, давнишние и в основном мои могут быть в разных топиках Темы просветительского плана могли бы (сугубо добровольно) взять на себя гуру типа Вас. Появится осведомлённость -> появится интерес -> появятся темы. Уже оживил обсуждение данного топика, хотя гуру или нет не знаю. Ждёмс появления интереса? :smile3046: Главное, чтобы информационно-просветительские темы были полезны и интересны, чтобы пользователи сами захотели развиваться в этом направлении. Критическую массу разработчиков можно наработать на мой взгляд только так. Полностью согласен с этим. Лишь бы темы ( тема) не затерялись и были. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 27 мая, 2009 Опубликовано 27 мая, 2009 · Жалоба Интерактивность Форта - дополнительный уровень возможности комфортного тестирования кода. Да, вот это мне тоже больше всего нравится. Особенно после того, как всю неделю раздербанивал чужую программу на модули - и до последней секунды (пока не устранил последнюю ошибку компилятора) не мог даже одним глазком глянуть, что же в итоге получилось. Скоро буду пробовать форт на МСП. Вот только схему срочную доделаю, отдам на разводку - и там опять намечается прогал в работе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 27 мая, 2009 Опубликовано 27 мая, 2009 (изменено) · Жалоба Скорее нет ограничения по контролю программистом способа использования данных. Стек типы данных никак не ограничивает ну например, как писать и читать через стек 8,16,32 битные данные, float, double, строки ? эмулировать вручную байтами ? опять же получается что нужны разные наборы команд для манипуляции со стеком, арифметики, преобразований типов для разных типов данных. вопрос - зачем весь этот огород если в C все уже сделано ? касательно отладки - кто мешает в С отлаживать каждую функцию отдельно ? на современных процессорах перекомпиляция программы для котроллера - секундное дело, у меня как-то получается отлаживать функции для SDCC, AVR-GCC, ARM-GCC в обычном GCC/Mingw. а функции, завязанные на периферию процессора и обработку данных в реальном времени не получится отдельно отладить и в Форте - для этого больше подходит вывод на индикацию/терминал. Изменено 27 мая, 2009 пользователем ukpyr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 27 мая, 2009 Опубликовано 27 мая, 2009 (изменено) · Жалоба ну например, как писать и читать через стек 8,16,32 битные данные, float, double, строки ? Обычно размерность ячейки памяти у Форт систем разная - типично 16 или 32 бита ( это как основа для данной реализации Форта ) Для сложения, например, чисел двойной размерности - то один элемент стека будет занимать уже две ячейки и слово 2+ ( удачнее D+ ) сложит уже 2-е ( двойной размерности каждая ) ячейки. Для float в стандарте 94года определён отдельный стек и соответственно слова использования float. Строки могут размещаться как в буферах так и коде программы ( "кодофайле" ) так и в хипе Есть разные библиотеки для работы со строками. Можно завести и отдельный стек:) Для байт, наример также введены отдельные слова C@ C! ( работа с байтом ячейки ) вопрос - зачем весь этот огород если в C все уже сделано ? Форт тоже это имеет. Явная типизация на этапе компиляции, как показывает практика, в Форте почти никому не нужны. ( типы можно ввести или при желании для дополнительного контроля выводить динамически по семантике слова ) Скоро буду пробовать форт на МСП. Какой вариант выбран для опробации? касательно отладки - кто мешает в С отлаживать каждую функцию отдельно ? Ничего не мешает, кроме необходимости простого предоставления данных отлаживаемой функции и выяснении неработоспособного кода ( или вы предлагаете вычленить весь код необходимый отлаживаемой функции из проекта и его отдельно тестировать, не учитывая даже накладные расходы на перекомпиляцию?) P.S. Внесу немного ясности - в работе используется лицензионный IAR. ( требование текущих рабочих реалий ) Изменено 27 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 27 мая, 2009 Опубликовано 27 мая, 2009 · Жалоба Какой вариант выбран для опробации? Да вот скачал уже давно camelforth с camelforth.com Немного напрягает, что нет исходников ядра, дают готовую прошивку под свои параметры, а у меня например, все железки с 2МГц кварцами, а не с 8. Но это мелочи. Попробовать хватит. ********* Хотя нет, погорячился. Сейчас глянул, исходники все есть, на ассемблере (.s43 для ИАРа) Ну и хорошо, будет чем поиграться. А там уж, если понравится, можно будет выбирать пути дальнейшего развития. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 27 мая, 2009 Опубликовано 27 мая, 2009 (изменено) · Жалоба Да вот скачал уже давно camelforth с camelforth.com А там уж, если понравится, можно будет выбирать пути дальнейшего развития. Для msp можно "накидать" симулятор ядра, хотя msp это не контроллер моего использования:) и рассмотреть другие варианты использования Форта для него. Пока. Изменено 27 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forever failure 0 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба Уважаемые участники, а приведите плз., кто владеет этим языком, так, хотя бы ради интереса, код вычисления контрольной суммы CRC16 на форте ? Просто интересно сравнить с привычными решениями на Ц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 28 мая, 2009 Опубликовано 28 мая, 2009 (изменено) · Жалоба Уважаемые участники, а приведите плз., кто владеет этим языком, так, хотя бы ради интереса, код вычисления контрольной суммы CRC16 на форте ? Просто интересно сравнить с привычными решениями на Ц. Один из вариантов ( поиск "crc16 forth" ) алгоритм с номером #44 P.S. Можно и найти другие реализации и замерить скорость после компиляции и посмотреть asm код, например, на PC для разных Форт систем:) Си варианты Изменено 28 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forever failure 0 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба Если честно, не впечатлило. Букаф зело много. В сравнении с сишным 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); } } пресловутого лаконизма исходного кода не замечено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба Вот если бы ввести слова для работы с предпоследним и пред-предпоследним элементом стека (вместо ротов и свопов), гораздо быстрее было бы. В МСП, кстати, без проблем. Хотя бы что-то типа Inc_Prev (инкремент предпоследнего) и Dec_Prev Можно было бы менять счётчик "через голову" верхнего значения (CRC) Правда, проверять его тоже также нужно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forever failure 0 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба Не, я вовсе не к тому, что Forth vs C, а просто хотелось бы какой-нить пример, который реально показывает преимущества форта, чтоб понять его мощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 28 мая, 2009 Опубликовано 28 мая, 2009 (изменено) · Жалоба Если честно, не впечатлило. Букаф зело много. В сравнении с сишным. ... пресловутого лаконизма исходного кода не замечено. Вопрос, в этом случае, был поставлен некоректно:) В Форте можно написать полный аналог приведённого Вами кода. используя локальные именованные переменные или другие варианты с неменьшей поонимаемостью кода . P.S. Расчёт CRC ещё для увеличения скорости алгоритма часто реализовывают на asm ( как это будет по впечатлениям? Нужно ехать или смотреть на автомобиль? ) Одна из ловушек Форта - это желание оптимально создавать код:) Изменено 28 мая, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться