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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Литературная отладка
СообщениеДобавлено: Сб июл 09, 2011 23:48 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Литературная концепция отладки.

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

Иначе зачем?

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

Потому, нужно бы «продвинутую» отладку.

Что может входить в продвинутую отладку.

Самое простое - воспользоваться свободой синтаксиса форта и создать некоторые дополнительные возможности для отладки. Например, то обстоятельство, что слова форта могут включать любые символы (а также управление комментариями свободно) способствует созданию «отладочно-комментирующих» слов. Что есть комментарий в С?
A = (b + c) * pow(a,d);
/* комментарий - сумма чего-то помножается на для того, чтобы */

теперь представим, что эта сумма не та, что нужно и нам трудно уловить момент, нужно добавить отладочную информацию

A = (b + c) * pow(a,d);
/* комментарий - сумма чего-то помножается на для того, чтобы */
printf( « что-то не то с (b + c): b = %d, c = %d, при лимите N \n»,b,c);
/* не забыть поменять лимит если ... */

Итак, нам потребовался ещё один комментарий - к отладочной информации, если же ситуация сложнее, то собственно код и код для отладки (и для тестирования иногда отдельно) перемешиваются и ...
какие преимущества даёт форт?
по крайней мере можно совместить комментарий и отладчный код
a d pow b c + *
можно прокомментировать словом
a d pow b c + * (сумма-помножается-чтобы-)
(сумма-помножается-чтобы-) - слово форта - одновременно комментарий и может быть отладочным
: (сумма-помножается-чтобы-) DUP LIMIT > IF ..... THEN ;
можно заставить это слово печатать собственный заголовок и таким образом получить одинаковую фразу и в тексте и в процессе отладочного тестирования. Это делает код более читаемым
Можно даже задавать - компилировать слово собственно в тексте

Для этого запрограммировать нужно 3 разновидности комментария, кроме обычного нужен ещё такой, который компилировал бы отладочное слово-строку прямо в тексте

Напрмер, если комментарием является !! (в фортране ! :) ) то
a d pow b c + * (сумма-помножается-чтобы-) !! DUP LIMIT > IF ..... THEN
означало бы скомпилировать a d pow b c + * , затем из DUP LIMIT > IF ..... THEN
создать слово (сумма-помножается-чтобы-)
причем !! должно быть настолько хитрым, чтобы позволять отключить создание отладочного слова из кода, а в случае смены режима с отладочного на обычный
превратить слово (сумма-помножается-чтобы-) в
: ??? ; IMMEDIATE
в коде такое слово не будет отражено вообще
в этом случае перед нами два комментария - фактический - слово, которое ничего не компилирует : (сумма-помножается-чтобы-) ; IMMEDIATE и формальный
!! DUP LIMIT > IF ..... THEN , котор. ничем не отличается от ( DUP LIMIT > IF ..... THEN )


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Литературная отладка
СообщениеДобавлено: Сб июл 09, 2011 23:54 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
это позволяет по крайней мере экономить на удалении отладочной информации из текста
при перемене статуса отладочные слова превращаются в комментарий


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Литературная отладка
СообщениеДобавлено: Вс июл 10, 2011 08:18 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Кусок кода из моего плагина к ннкрону:
Код:
\ ### Вот этот небольшой кусочек кода необходим для работы в спф:
: SPF: 
  S" MOUSE-POS" SFIND
    IF
      DROP
      [COMPILE] \
    ELSE 2DROP THEN
;

SPF:  REQUIRE  {        lib/ext/locals.f
SPF:  WINAPI:   MultiByteToWideChar   KERNEL32.DLL
SPF:  WINAPI:   WideCharToMultiByte   KERNEL32.DLL
SPF:  WINAPI:   GetDesktopWindow    USER32.DLL
SPF:  WINAPI:   GetWindowRect       USER32.DLL
SPF:  WINAPI:   GetCursorPos        USER32.DLL

EXPORT

  SPF:  : MOUSE-POS ( -- x y ) 0 0 SP@ GetCursorPos DROP SWAP ;  \ ~nn\lib\mouse.f

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

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


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

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


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

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


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

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