OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 18 Июнь, 2019 03:41

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Подсказки при ошибках компиляции
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 18:35 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Вот, пришла мне одна идея насчёт ошибок при компиляции.
Допустим, компилируем модуль, а компилятор сообщает о некотором количестве ошибок. В текущих версиях БлэкБокса у места ошибки ставится маркер с пояснением ошибки.
Всё хорошо, НО:
  1. почему бы не подсказать программисту как можно исправить ошибку (насколько это возможно)
  2. почему бы не показать программисту ссылки на источники для дополнительного прочтения (например, к соответствующему параграфу определения языка или внешним источникам)
Тем более, в такой среде, которая имеет все средства для работы с составными документами ...

Пример:
фразу "неверное значение константы" заменить на "неверное значение константы (подробнее)"
Нажатие на ссылку подробнее откроет документ с предлагаемыми решениями проблемы и также ссылки на эл. документы и литературу.

Подаю эту идею авторам следующей сборки BlackBox.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 19:17 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 859
Откуда: Киев
Хорошая идея


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 19:34 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Роман М. писал(а):
Подаю эту идею авторам следующей сборки BlackBox.
Это пожелание в "космос" :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 19:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Иван Кузьмицкий писал(а):
Роман М. писал(а):
Подаю эту идею авторам следующей сборки BlackBox.
Это пожелание в "космос" :)

А в качестве курсовой работы не пойдёт?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 20:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8131
Откуда: Троицк, Москва
Роман М. писал(а):
Подаю эту идею авторам следующей сборки BlackBox.
Хорошая идея.
Что-то в таком духе в школьную версию просится, но до сознания Вы первый довели.

В школьной версии нет ограничения полной совместимости с промышленными инструментами :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 21:46 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3055
Откуда: Астрахань
Роман М. писал(а):
Вот, пришла мне одна идея насчёт ошибок при компиляции.
Допустим, компилируем модуль, а компилятор сообщает о некотором количестве ошибок. В текущих версиях БлэкБокса у места ошибки ставится маркер с пояснением ошибки.
Всё хорошо, НО:
  1. почему бы не подсказать программисту как можно исправить ошибку (насколько это возможно)
  2. почему бы не показать программисту ссылки на источники для дополнительного прочтения (например, к соответствующему параграфу определения языка или внешним источникам)
Тем более, в такой среде, которая имеет все средства для работы с составными документами ...

Пример:
фразу "неверное значение константы" заменить на "неверное значение константы (подробнее)"
Нажатие на ссылку подробнее откроет документ с предлагаемыми решениями проблемы и также ссылки на эл. документы и литературу.

Подаю эту идею авторам следующей сборки BlackBox.

Году эдак в 1998 один мой студент по моему заданию слепил небольшую программуулину, которую назвали мы "Помощник программиста". Тогда мы работали на английской версии ТурбоПаскаля 7 и начинающим программистам было сложно переводить английские сообщения об ошибках, и тем более разбираться в кодах Runtime error.
Первое: пацан проанализировал все синтаксические ошибки и все ошибки выполнения.
На каждую ошибку (а они все имели код) было написано довольно развернутое русское сообщение с пояснениями. Поэтому начинающий программер просто вводил в программе код и получал пояснения на русском.
Но этого мало. Были проанализированы причины возникновения ошибок и состряпано что-то вроде простой экспертной системы. Например, в программе авария при чтении из файла (а турбопаскаль не сообщал об ошибках открытия). Тогда начинали задаваться вопросы: файл имеется в наличии? имя файла совпадает с именем в функции assign()? а нет ли в имени русских букв, совпадающих с англискими? И т.п.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 22:17 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Валерий Лаптев писал(а):
Это я к чему? можно написать модулечек (или два-три-четыре), который вот так же будет давать пояснения на вопросы пользователя. Или пользователю будет задавать вопросы, чтобы его натолкнуть на обнаружение ошибки.
Для этого достаточно просто соотв. образом спланированного документа. Ссылки или складки. Пример со складками.

Роман М. писал(а):
Пример:
фразу "неверное значение константы" заменить на "неверное значение константы (подробнее)". Нажатие на ссылку подробнее откроет документ с предлагаемыми решениями проблемы и также ссылки на эл. документы и литературу.
Роман М. писал(а):
А в качестве курсовой работы не пойдёт?
Не нужна тут курсовая работа.
1) Документы с пояснениями складывать в отдельные документы по номерам ошибок. Или в один документ с оглавлением StdLinks.Target <номер ошибки>....<>
2) К раскрытому варианту маркера приставить вторую область --- или слово подробнее, или, я бы приделал более короткий вариант --- кнопочку, например, в виде треугольника.
3) При тычке по этой кнопке выполняется Dialog.Call("StdCmds.OpenDoc('Dev/Rsrc/..../no.odc')"... или Dialog.Call("StdCmds.OpenDoc('Dev/Rsrc/..../errors.odc');StdLinks.ShowTarget('no')"...
Делов на пару часов. А то и меньше...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 23:10 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
20 минут поковырялся, ещё проще решение.

Для развёрнутого маркера сворачивание по щелчку с модификатором (ctrl) заменено на показ пояснений по ошибке. Осталось только пояснения написать :)
Код:
   PROCEDURE ShowMsg (v: StdView);
   BEGIN
      IF v.msg = NIL THEN Load(v) END;
      Dialog.ShowStatus(v.msg^);
   END ShowMsg;

--->   PROCEDURE ShowDesc (v: StdView);
      VAR   no: ARRAY 16 OF CHAR; res: INTEGER;
   BEGIN
      Strings.IntToString(v.err, no);
      Dialog.Call("StdCmds.OpenDoc('Dev/Rsrc/ErrorsExt'); StdLinks.ShowTarget('" + no + "')", "", res)
   END ShowDesc;

   PROCEDURE Track (v: StdView; f: Views.Frame; x, y: INTEGER; buttons: SET);
      VAR c: Models.Context; t: TextModels.Model; u, w, h: INTEGER; isDown, in, in0: BOOLEAN; m: SET;
   BEGIN
      v.context.GetSize(w, h); u := f.dot; in0 := FALSE;
      in := (0 <= x) & (x < w) & (0 <= y) & (y < h);
      REPEAT
         IF in # in0 THEN
            f.MarkRect(u, 0, w - u, h, Ports.fill, Ports.invert, Ports.show); in0 := in
         END;
         f.Input(x, y, m, isDown);
         in := (0 <= x) & (x < w) & (0 <= y) & (y < h)
      UNTIL ~isDown;
      IF in0 THEN
         f.MarkRect(u, 0, w - u, h, Ports.fill, Ports.invert, Ports.hide);
         IF Dialog.showsStatus & ~(Controllers.modify IN buttons) & ~(Controllers.doubleClick IN buttons) THEN
            ShowMsg(v)
--->         ELSIF (Controllers.modify IN buttons) & (v.mode = message) THEN
--->            ShowDesc(v)
         ELSE
            ToggleMode(v)
         END;
         c := v.context;
         WITH c: TextModels.Context DO
            t := c.ThisModel();
            TextControllers.SetCaret(t, c.Pos() + 1)
         ELSE
         END
      END
   END Track;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 10:15 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8131
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
20 минут поковырялся, ещё проще решение.

Для развёрнутого маркера сворачивание по щелчку с модификатором (ctrl) заменено на показ пояснений по ошибке. Осталось только пояснения написать :)
Спасибо, ценно. Кандидат на немедленное включение в готовящееся обновление школьной сборки.


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

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB