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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 19:01 
Здравствуйте!
Вопрос: как отлаживать программы на форт?
- Ну вот скажем, делаю я программу на форт на устройстве без защиты памяти, понятно что ошибка может мне завалить всю систему (да вобщем и на Линуксе тоже программа может вывалиться в core (аналог GPF винды), и тоже очень тяжело чего-то найти). Как эту проблему решают опытные фортеры?

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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 19:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Отлаживать надо по частям.
Проверять каждое новое слово.
Например, путем вставки после каждого слова некоего отладочного слова, распечатывающего стек или(и) некие рабочие данные, чтобы увидеть, как слово работает и правильно ли отрабатываются входящие в него слова.

Или примерно так:

: квадрат DUP * ; - определили новое слово

2 квадрат . -- проверили, что оно работает правильно и печатается 4

: куб DUP DUP * * ; - определили следующее

опять проверили, что
2 куб . - печатает 8

и т.д.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 22:19 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
WingLion писал(а):
Отлаживать надо по частям.
Проверять каждое новое слово..

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 23:52 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
simne писал(а):
А что если я хочу использовать достаточно крупный, уже готовый кусок кода, скажем, который портировал с другой архитектуры (или даже просто с другого, несовместимого форта)?

то скорее всего текст придется адаптировать к конкретной системе, так как стандартизирован по сути только один вид форт-системы на, приблизительно среднем уровне. Все что ниже него или выше находится на совести создателя системы. Поэтому перенести пример, к примеру с Win32Forth на SPF и обратно не получится без серьезных переделок 8( это уже многократно отмечалось и многократно обсуждалось. Нужен качественно другой стандарт и, соответственно, соответствующие ему системы.

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

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 23:52 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
Тут язык "бестиповый". Все проверки - на откуп разработчика системы. Считается, что все мы такие умныя и организованныя, что сами догадаемся, когда нам нужно чего проверять и напишем соответствующий код...
Для тестирования кода писать надо будет раза в 3-4 больше основного алгоритма. И для проверки.
В тестах (и не токма Форта это касаемо, от языка вообще это не зависит!) я обычно выбираю пример внутри "области определения" входных данных, по краям, - граничныяе значения, и значения (на "ловлю") вне диапазонов разрешённых значений.
Написано несколько утилит для генерации тестовых наборов (машина - дура - не хай генерит по полному Декартовому произведению сочетание диапазонов указанных областей) -
- Хлопотно только первый раз!
Потом в ножки народ кланяется!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 23:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
simne писал(а):
А что если я хочу использовать достаточно крупный, уже готовый кусок кода, скажем, который портировал с другой архитектуры (или даже просто с другого, несовместимого форта)?


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

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

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 22, 2009 10:54 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
В конце концов - где мы ещё имеем возможность самим синтаксис в языке (и сам язык!) переопределять и подстраивать под своё понимание, нужды и эстетические требования??? :)
А две характерные ошибки - ошибки в диапазонах индексов и при операциях адресной арифметики - вполне можно ловить (и даже пытаться "на лету" исправлять) в определяемых словах...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 23, 2009 22:39 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
simne писал(а):
А что если я хочу использовать достаточно крупный, уже готовый кусок кода, скажем, который портировал с другой архитектуры (или даже просто с другого, несовместимого форта)?


Если хочется пошаговую отладку - http://www.easy-share.com/1906074126/DBGWC11.7z


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 00:29 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail писал(а):
Если хочется пошаговую отладку - http://www.easy-share.com/1906074126/DBGWC11.7z

А что это?
PS и можно куда-то в другое место выложить - у меня под FF не сохраняет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 01:01 
Не в сети

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Wlad писал(а):
В конце концов - где мы ещё имеем возможность самим синтаксис в языке (и сам язык!) переопределять и подстраивать под своё понимание, нужды и эстетические требования??? :)
А две характерные ошибки - ошибки в диапазонах индексов и при операциях адресной арифметики - вполне можно ловить (и даже пытаться "на лету" исправлять) в определяемых словах...


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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 06:28 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
simne писал(а):
а вот сделать отлов даже характерных ошибок мне кажется уже намного больший объем работы, или нет?


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

simne писал(а):
возможность валить систему труднообнаружимыми ошибками ставит крест на идее..


Чтобы такого не было, имеет смысл написать подмножество слов, исполняющих требуемые действия, которые из принципа к системе доступа иметь не будут, чтобы не ее не заваливать. А затем, например, специальным интерпретатором ограничить возможность использования всех остальных слов (т.е. говоря по-русски, сделать "защиту от дурака").

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 08:39 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
simne писал(а):
..
Я сейчас продумываю встраиваемый в программу на Си форт, и мне сразу показалось здорово что можно многое делать на форте намного удобнее и красивее чем на Си, но вот возможность валить систему труднообнаружимыми ошибками ставит крест на идее..
.


Размышления:

Труднообнаруживаемыми - это какими?
Обнаруживаемыми на этапе эксплуатации программы?
( предположу возникшими по невнимательности,
нерабочим кодом и не локально проверенным кодом, плохо понимаемым диапазоном
применимости существующего кода из-за узконапраленности применённого решения, ......
- это всё практика реального программирования и лучше пусть тест определит, что система не работает
сейчас, чем впоследствии )
Из реальных ошибок Форта может проявляться несбалансированность стека из-за
некоректного использования слов. Ещё, навскидку, есть переменные VARIABLE и VALUE .

P.S. Это лирика, а практика подсказывает, что пытаться решить "неизвестную" или
частично надуманную, без определения целевой аудитории пользователей данного
решения, проблему - проблематично. Но попробовать, всё же, стоит если есть
потребность:) Для Форта, что то подобное, Lint были разработки какой выход
не известно.
Существует миф, что Форт программы обладают повышенной надёжностью, но
подтвердить или опровергнуть его мне сложно. ( Возможно вопрос к Nasa :)
Близко к обозначенному вопросу - защищённость Форт систем уже обсуждался на местном форуме.
а контролировать Форт программы на предмет потенциальных ошибок - это возможно из
трудно осуществимого:) "Хороший" контроль - это изначальное ограничение возможностей
использования инструментария и другие способы к языку почти не относящиееся


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 10:13 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Мой опыт отладки в форте - необходимо - никуда не денешься - делать собственные отладочные слова и даже модули.
Сначала отладка намного медленнее, чем в среде С
да и потом тоже
я вот задавался вопросом о таком средстве, полезном часто при отладке как
форматный вывод
http://fforum.winglion.ru/viewtopic.php?t=2069
обсуждение в теме показательно


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 11:26 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
simne писал(а):
Mihail писал(а):
Если хочется пошаговую отладку - http://www.easy-share.com/1906074126/DBGWC11.7z

А что это?


Проход по строкам в редакторе.
Клавиша F7 - шаг дебагера
Клавиша F8 - шаг дебагера с заходом в подпрограмму
Клавиша F4 - исполнять до курсора

Команда F7_ED играет роль точки останова.

Файл DBG.BAT - запуск примера

simne писал(а):
можно куда-то в другое место выложить


http://uploading.com/files/XP46NL8M/dbgwc11.7z.html


Последний раз редактировалось Mihail Ср июн 24, 2009 11:27, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 11:27 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Грамотно написанная на форте программа практически не имеет ошибок. Весь вопрос в том, как грамотно писать программы на форте. Писать определения не больше двух-четырех строк по паре-тройке слов, не лениться качественно тестировать каждое определение(например проследить работу каждого слова в определении). Большинство ошибок возникают от невнимательности и недостаточной проработанности алгоритма.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


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

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


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

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


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

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