Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 23:08

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 109 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Чт мар 08, 2018 21:07 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Ethereal писал(а):
Исключение, "выброшенное" одной из программ IRS, явилось следствием выполнения преобразования данных из 64-разрядного формата с плавающей точкой в 16-разрядное целое со знаком, что привело к "Operand Error".

Ну а преобразование-то это что производило ? А абстрактное присвоение и производило.
Грубо говоря абстрактное А := B ;
А какого типа A и какого типа B было раскидано по разным модулям программы.
И программист, просматривая исходник никакого криминала в этом месте не видел.
Потому-что абстрактное присвоение выглядело зашибись.
Да как оно вообще скомпилировалось?)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Чт мар 08, 2018 21:12 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
===========думато=========
Гы. Там где я раньше читал причина ошибки в Ариан описывалась чуть по другому, нежели по этой ссылке. А ну и хрен с ним. Тут не поймешь UC_16S_EN_16NS это что так выглядело явное преобразование типа или это что-то другое со столь странным названием ? Зато заметно, что разработчики тип переменной обозначают в ее названии (приставками типа _16S на конце), борясь с Алгольностью. Для них тоже тип, описанный где-то далеко и не видный в данной конкретной строчке, очевидная проблема. И факт, что повторное использование кода имело место и оно оказалось роковым.


Последний раз редактировалось Ethereal Чт мар 08, 2018 21:48, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Чт мар 08, 2018 21:37 
Не в сети

Зарегистрирован: Пн ноя 05, 2007 13:54
Сообщения: 144
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
Ethereal писал(а):
Та Ариан как-раз и погубило повторное использование кода.
Был использован отлаженный исходник от другой версии Ариан.
Ну а то, что в новой версии некоторые переменные другие типы имеют, ну так лежало новое описание типов совсем не в том углу исходника, где эти переменные применялись.


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

Понятно, что Ada это язык со своими проблемами, но программа на ANS Forth в качестве бортового ПО у меня вызвала бы еще большие подозрения :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Чт мар 08, 2018 21:57 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Не понял про определения переменных в Форте. Они-же всегда одинаковые
VARIABLE ZZZ
поэтому даже если они описаны где-то далеко, это ничегошеньки не меняет.
А если исходные операнды целые и результат целый, то на то есть */ и плавающей точкой при вычислении пропорций, как это было в той злополучной строчке ПО Ариана, пользоваться не нужно. А для обработки выхода за допустимый диапазон есть MIN и MAX.
32767 MIN -32768 MAX переменная_результата !
примерно так.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Чт мар 08, 2018 22:10 
Не в сети

Зарегистрирован: Пн ноя 05, 2007 13:54
Сообщения: 144
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
CREATE (+ ALLOT и ALLOCATE), 2VARIABLE, FVARIABLE. А еще классические фортовские хаки с HERE и PAD. Что там лежит, какой оно длины? :)

Фиксированная запятая поддерживается в Ada, другое дело, что ее использование усложняет (а, значит, и удорожает) разработку ПО.

Вообще говоря, главный плюс использования хороших системных ЯВУ даже не в строгой типизации. Аннотации являются, скорее, необходимым условием для осуществления статического анализа программы. Вот этот самый статический анализ можно считать наиболее важным инструментом в помощь программисту. Он позволяет, в частности, автоматически просмотреть по коду возможные пути исполнения и обнаружить явные ошибки, что очень ценно, особенно для таких задач, как создание бортового ПО.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пт мар 09, 2018 12:41 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
От автоматического поиска ошибок больше вреда, чем пользы. Он приучает сначала делать ошибки, а потом их искать. При этом некоторые ошибки найдены так и не будут.
Форт-же помогает программисту не делать ошибок. Это совершенно перпендикулярный подход. Если программист эту помощь не принимает, то он все равно наделает, конечно.
Помогает и тем, что ничего за программиста не проверяет (дескать и не надейся) и тем, что позволяет собирать программу снизу вверх из железно отлаженных кирпичиков. А Алгольство суть написание программы сверху вниз. Сначала написание неполного и может даже местами неправильного и потом процесс уточнения до полного и правильного. Да только этот процесс может быть ведь и не доведен до конца. Риск этого есть. Сам процесс это предполагает.
true-grue писал(а):
А еще классические фортовские хаки с HERE и PAD. Что там лежит, какой оно длины? :)
То, что я туда положил и какой мне надо, какой-же еще ? Если я возьмусь писать бортовое ПО, то в заголовке программы будет написано в комментариях подо что и как используется HERE. Я сам для себя нарисую соглашение и буду его придерживаться.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пт мар 09, 2018 18:09 
Не в сети

Зарегистрирован: Пн ноя 05, 2007 13:54
Сообщения: 144
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
Ага, тема приобрела интересное направление, близкое заявленному заголовку.

На мой взгляд, ручное управление и отсутствие всякого рода проверок не следует записывать в особенные плюсы Форта. Теми же самыми "достоинствами" отличается и макроассемблер. С помощью макросов без особого труда можно записать классическое фортовское "WASH SPIN RINSE SPIN". Разумеется, потенциально возможности расширения синтаксиса у Форта достаточно велики, но на практике программисты не так уж широко ими пользуются. По двум причинам, в основном: 1) это требует понимания принципов конструирования ЯП, 2) результат не должен быть получен чрезмерными усилиями, что приводит к типичным фортовским хакам, когда расширения языка получаются хрупкими и негибкими.

Плюс Форта в том, что это макроассемблер для виртуальной архитектуры. В этом смысле он похож на промежуточные языки (IR), которые вводятся компилятором в процессе трансляции исходного кода ЯВУ непосредственно перед переводом результата в текст на языке ассемблера конкретного процессора. Выбор стековой машины здесь вполне логичен, но не является единственным. Вместо стека можно было бы использовать вычислительную модель с бесконечным числом регистров, такой вариант тоже используется компиляторами в качестве IR. Но зачем вообще писать программы на промежуточном языке? Самый разумный ответ: для быстрого создания программных тестов новой процессорной архитектуры. И это слишком узкоспециальная задача, чтобы ее сейчас рассматривать.

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

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

Если посмотреть на известные проекты по созданию бортового ПО и прочего mission critical software, то можно обнаружить, что реализуются они сверху вниз. Это не означает, что разработчики не понимают плюсов использования проектирования снизу вверх. Просто в такого рода проектах различают стадии разработки архитектуры и собственно низкоуровневое кодирование, в котором статический анализ оказывает существенную помощь. На стадии разработки архитектуры применяются модельные языки (графические, интерпретаторы с динамической типизацией и так далее), которые позволяют проектировать от модуля к модулю, экспериментируя и исследуя различные варианты.

Но в некоторых случаях фортовского диалогового режима на удаленном устройстве все-таки не хватает, это надо признать. Интерпретаторы большинства обычных языков (даже если это подмножества Scheme или Lua) слишком тяжеловесны для данной задачи. И это та область, которая интересует лично меня, но говорить об этом лучше отдельно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 16:00 
Не в сети

Зарегистрирован: Пн июл 04, 2016 13:28
Сообщения: 39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
true-grue писал(а):
Но в некоторых случаях фортовского диалогового режима на удаленном устройстве все-таки не хватает, это надо признать. Интерпретаторы большинства обычных языков (даже если это подмножества Scheme или Lua) слишком тяжеловесны для данной задачи.
Что же это за "удаленное устройство", для которого даже примитивный лисповский репл тяжеловесен? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 16:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
loztcatz писал(а):
Что же это за "удаленное устройство", для которого даже примитивный лисповский репл тяжеловесен?

А почему туда надо ставить именно лисповский репл, а не Форт? Лисп и Форт друг друга стоят, а для общения с оборудованием я бы предпочел вариант записи без вороха скобок.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 16:22 
Не в сети

Зарегистрирован: Пн июл 04, 2016 13:28
Сообщения: 39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Hishnik писал(а):
А почему туда надо ставить именно лисповский репл, а не Форт?
Я о том, что у лиспа, в принципе, такой же примитивный репл, как и у форта. Поэтому я не вижу никакой существенной выгоды.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 16:35 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
loztcatz писал(а):
Я о том, что у лиспа, в принципе, такой же примитивный репл, как и у форта. Поэтому я не вижу никакой существенной выгоды.

О выгоде можно было бы говорить, если бы Лисп существовал для большинства платформ. Но если из инструментов ассемблер и Си (да и то не всегда), то речь идет только о том, что Форт позволяет обеспечить этот самый интерактивный режим при разумной сложности разработки. Если нет ни Форта, ни Лиспа, то все равно что-то надо написать. И я не могу сказать, что написать Лисп в данном случае на порядок проще.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 17:16 
Не в сети

Зарегистрирован: Пн июл 04, 2016 13:28
Сообщения: 39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Hishnik писал(а):
О выгоде можно было бы говорить, если бы Лисп существовал для большинства платформ.
Типа форт существует для большинства платформ?
Hishnik писал(а):
Но если из инструментов ассемблер и Си (да и то не всегда), то речь идет только о том, что Форт позволяет обеспечить этот самый интерактивный режим при разумной сложности разработки.
Так речь шла о том, что у лиспа примитивный диалоговый режим. И суть его даже не в скобках :), а в навешивании обработчиков на символы.
Hishnik писал(а):
И я не могу сказать, что написать Лисп в данном случае на порядок проще.
Тут многое зависит от конкретной цели, да и опыта. Ведь лиспы в 80-х на асме писались.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 18:26 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
loztcatz писал(а):
Типа форт существует для большинства платформ?

Для отладки часто появляются прообразы интерпретатора - послать символ или строку, разобрать ее через switch на стороне прибора, по результатам выполнить одно из действий. Форт приводит данный процесс в нормальное русло.
loztcatz писал(а):
Так речь шла о том, что у лиспа примитивный диалоговый режим. И суть его даже не в скобках , а в навешивании обработчиков на символы.

Вопрос не в том, у кого проще, а в том, где это конкретно. Я не знаю устоявшихся рекомендаций по разработке Лиспа для embedded.

loztcatz писал(а):
Тут многое зависит от конкретной цели, да и опыта. Ведь лиспы в 80-х на асме писались.

Цель использования Форта обычно обеспечение диалогового режима для отладки. Постфиксная запись в данном случае существенно удобнее записи со скобками, поскольку определяет порядок действий, а при работе с оборудованием это удобно и наглядно. Опять же, при работе с оборудованием много внимания уделяется именно оборудованию, а не тем дополнительным программным технологиям, которые используются в помощь разработчику. При ответе на вопрос "что там с новым модулем, работает ли?" странно отвечать "нет, не работает, зато я написал Лисп". Гораздо приятнее услышать ответ "да, я тут организовал простенький диалоговый режим, он пока умеет включать и выключать светодиод на модуле подачей команд по интерфейсу". Это означает, что интерфейс заработал и можно потихоньку отлаживать прочее оборудование. А от такого режима уже очень близко стоит Форт. Всего-то надо стек организовать, класть на него литералы, если не распознано слово, организовать распознавание слов, а не просто отдельных символов. Затем можно уже и подумать о словаре и компиляции. Если бы для Лиспа был похожий подход, можно было бы сравнивать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 18:36 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Похоже структуру форума можно менять на подборку "однотипных" тем :)
но это, скорее всего, не так просто. И поэтому можно ткнуть "пальцем в небо" и найти кучу тем из стартовавшего топика и продолжить обсуждение и там.
Пример похожей темы Форт-2016 - какой он?

P.S. Какой Форт-2018? :) Можно, наверное, одно сказать - дуальный.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: О естественности FORTH-решений
СообщениеДобавлено: Пн мар 12, 2018 19:44 
Не в сети

Зарегистрирован: Пн ноя 05, 2007 13:54
Сообщения: 144
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
loztcatz писал(а):
Что же это за "удаленное устройство", для которого даже примитивный лисповский репл тяжеловесен? :)


Как Вы себе представляете использование командной строки Лиспа без реализации самой Лисп-системы? Успешных реализаций Лиспа на слабом микроконтроллере с ОЗУ, объемом в считанные килобайты, значительно меньше, чем в случае Форт-систем. Возможно, у Вас есть свой опыт эффективного использования Лиспа в системах, ограниченных по ресурсам?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 109 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB