OberonCore
https://forum.oberoncore.ru/

Подсказки при ошибках компиляции
https://forum.oberoncore.ru/viewtopic.php?f=7&t=3713
Страница 1 из 1

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

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

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

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

Автор:  Comdiv [ Суббота, 10 Декабрь, 2011 19:17 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

Хорошая идея

Автор:  Иван Кузьмицкий [ Суббота, 10 Декабрь, 2011 19:34 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

Роман М. писал(а):
Подаю эту идею авторам следующей сборки BlackBox.
Это пожелание в "космос" :)

Автор:  Роман М. [ Суббота, 10 Декабрь, 2011 19:51 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

Иван Кузьмицкий писал(а):
Роман М. писал(а):
Подаю эту идею авторам следующей сборки BlackBox.
Это пожелание в "космос" :)

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

Автор:  Info21 [ Суббота, 10 Декабрь, 2011 20:24 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

Роман М. писал(а):
Подаю эту идею авторам следующей сборки BlackBox.
Хорошая идея.
Что-то в таком духе в школьную версию просится, но до сознания Вы первый довели.

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

Автор:  Валерий Лаптев [ Суббота, 10 Декабрь, 2011 21:46 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

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

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

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

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

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

Автор:  Евгений Темиргалеев [ Суббота, 10 Декабрь, 2011 22:17 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

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

Роман М. писал(а):
Пример:
фразу "неверное значение константы" заменить на "неверное значение константы (подробнее)". Нажатие на ссылку подробнее откроет документ с предлагаемыми решениями проблемы и также ссылки на эл. документы и литературу.
Роман М. писал(а):
А в качестве курсовой работы не пойдёт?
Не нужна тут курсовая работа.
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 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

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;

Автор:  Info21 [ Воскресенье, 11 Декабрь, 2011 10:15 ]
Заголовок сообщения:  Re: Подсказки при ошибках компиляции

Евгений Темиргалеев писал(а):
20 минут поковырялся, ещё проще решение.

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/