Ответы на комментарии
А.П.:
Цитата:
Строго говоря, понятие блока в КП отсутствует. Константы, переменные и процедуры описываются либо в модулях, либо в процедурах, либо в новых типах. Соотв.пункты ТЗ надо переформулировать.
Понятие блока есть в русском переводе Сообщения о языке (там, где описываются области видимости идентификаторов) и охватывает то, что Вы перечислили. В других местах я его тоже не встречал. Мне кажется, что в ТЗ понятие блока полезно, так как используется по сути для указания на область видимости, как и в Сообщении о языке.
Цитата:
Предопределенные процедуры (папки по назначению процедур)
Здесь просто дать гиперссылку на соответствующий раздел Сообщения о языке. Аналогично нужна гиперссылка на список основных типов КП и их диапазонов
Не надо "просто давать гиперссылку". Для быстрой вставки процедуры должны быть сгруппированы по функциональному назначению (массивы, преобразование типа, база данных, дата/время, обработка ошибок, финансовые, математические, статистические, текстовые, работа с цветом, работа с гиперссылками, проверка свойств и значений, последние использованные и т.п.), а, кроме того, иметь подсказки в списке параметров. Кстати, полезно было бы добавить поиск нужной процедуры по ключевым словам в описании.
Цитата:
Библиотечные процедуры (папки по назначению процедур, процедуры должны быть предварительно классифицированы)
Большой вопрос. В ББ довольно много подсистем, находящихся в соответствующих папках. Процедуры разложены по модулям, коих может быть не один в подсистеме. Кроме того, всегда легко добавить новую подсистему(папку с модулями). Хотя есть "главная" подсистема System, модули/процедуры которой должный быть подключены к Построителю в первую очередь.
Однако есть готовый встроенный способ, во многих случаях достаточно удобный. Выделяете имя модуля или полное имя процедуры (т.е. вместе с именем модуля) и нажимаете правую кнопку мыши. В выпадающем меню выбираете пункт Исходный текст или Интерфейс или Документация. В новом окне открывается соответствующий текст (разумеется, документация открывается, если в папке Docu данной подсистемы есть файл-описание с соответствующим именем). Причем возможны переходы по иерархии вызываемых (импортируемых) модулей.
Есть ли шанс еще улучшить этот подход?
Т.е. надо заранее знать (модуль), где найти. Это, прямо скажем, не очень быстро и явно не для новичков.
Повторюсь: "Для быстрой вставки процедуры должны быть сгруппированы по функциональному назначению (массивы, преобразование типа, база данных, дата/время, обработка ошибок, финансовые, математические, статистические, текстовые, работа с цветом, работа с гиперссылками, проверка свойств и значений, последние использованные и т.п.), а, кроме того, иметь подсказки в списке параметров. Кстати, полезно было бы добавить поиск нужной процедуры по ключевым словам в описании."
Цитата:
Управляющие кнопки
Имеется по крайней мере следующая управляющая кнопка:
Знак вопроса (при нажатии курсор меняет форму на знак вопроса, а при нажатии затем на другую кнопку или на идентификатор в древовидном списке всплывает окно со справкой по этой кнопке/идентификатору)
Не понял.
Если Вы хотите увидеть описание процедуры или оператора, то достаточно просто щелкнуть сначала по кнопке со знаком вопроса, а затем по интересующему идентификатору или кнопке.
Цитата:
Имеется по крайней мере следующие кнопки быстрого доступа:
Скобки, операции и отношения, сгруппированные по приоритету ( ) ~ * / DIV MOD & + - OR = # < <= > >= IN IS )
Не понимаю, зачем это выносить на какие-то кнопки. Разве доступ будет быстрее, чем нажать "из головы" 1-3 клавиши? Если "программист" не может запомнить такой простой список, то что он будет делать с базовыми классическими алгоритмами вроде сортировки пузырьком или линейного поиска?
Это эргономика, эффективность которой доказана многолетним применением в построителе выражений MS Access. Речь идет прежде всего о скорости построения кода. Когда у Вас в руке мышь, Вы не сможете ткнуть этой рукой в клавишу, а работать в построителе кода Вы будете преимущественно с мышью. Тем более, что Ваше внимание сосредоточено на окне построителя кода, и Вам ни к чему отвлекаться на ввод с клавиатуры. Группировка кнопок как раз и предназначена для того, чтобы было проще запомнить приоритеты операций (кстати, в разных языках программирования приоритеты разные, и поэтому возможны ошибки и у квалифицированных программистов).
Цитата:
MODULE (соответствующий шаблон кода подробен настолько, насколько это возможно, и содержит, в том числе, части MODULE, IMPORT, CONST, TYPE, VAR, PROCEDURE, BEGIN, CLOSE, END)
Шаблон модуля в нескольких вариантах реализован в модуле Edit. Набираем 1-2 буквы (у нас сделано: m, ь, ч, чч), нажимаем F5 и получаем заготовку кода на месте этих букв. Слишком подробный шаблон модуля не всегда удобен, т.к. его приходится много чистить. Нужны несколько шаблонов разной степени подробности и назначения.
Шаблоны "конструкций" вызываются по 1-3 буквам тоже клавишей F5:
i -> INTEGER;
if -> IF THEN END;
iff -> IF THEN ELSE END;
w -> WHILE DO END;
f -> FOR := TO BY DO END;
v -> VAR
ко -> (* *) - курсивом зеленым цветом комментария!
и т.п. для всех наиболее ходовых конструкций языка.
Причем конструкции подставляются вместе с точкой с запятой, сразу выровненные по стандарту, курсор ставится в позицию наиболее вероятного продолжения работы, например, в цикле FOR - на место параметра цикла, в цикле WHILE - на место условия, и т.д.
Детки очень быстро такой подход осваивают и возмущаются, когда какой-то нужной им конструкции не находят в списке подстановок. Набор текста программы идет с удовольствием, исключаются очень многие ошибки, характерные для начинающих.
Разумеется, надо добиваться полного понимания смысла основных конструкций языка, а не только давать удобный инструмент их вставки в программу. Если человек не в состоянии придумать АЛГОРИТМ той или иной перестановки элементов одномерного массива с помощью цикла, то никакой красивый и удобный инструмент не сделает его программистом.
Согласен, что это удобный инструмент, но у него есть недостатки:
клавиатурный ввод, что заставляет переключаться между мышью и клавиатурой;
необходимость запоминать коды соответствующих синтаксических конструкций (поэтому реализована только их часть);
отсутствие подсказок;
отсутствие возможности выбора вариантов,
отсутствие возможности дублирования шаблонов;
отсутствие контекстной справки.
Слишком подробный шаблон модуля В ВАШЕМ СЛУЧАЕ действительно неудобен, потому что чистить его придется вручную, а не с помощью встроенных в текст кнопок управления шаблоном кода. Насчет шаблонов
разной степени подробности - не возражаю, лишь бы не загромоздить интерфейс.
Что касается сортировок, то это прямо мания какая-то! Разве этим исчерпывается список задач программиста? Да надо просто пользоваться готовыми функциями сортировки, не отвлекаясь на давно решенные проблемы. А если у человека нет тяги к сортировкам, и он НЕ ПРОГРАММИСТ (а физик, медик, экономист, химик и т.п.), и даже не хочет им быть, а хочет просто программировать задачи в своей профессиональной области? Что, лишать его удобного инструмента?
Цитата:
При щелчке по пункту древовидного списка, кроме папок, соответствующий шаблон кода вставляется в текст программы в положении курсора.
Не совсем понимаю, какие шаблоны тут могут быть предусмотрены.
Например, что-нибудь типа:
"Перевод_строки"
Sort ("Идентификатор_массива", [кнопка_выбора_значения_из_списка]"Направление_сортировки"); (*Ваш любимый пример сортировки*)
"Перевод_строки"
Цитата:
При первом щелчке по подсказке она выделяется целиком, даже если подсказка состоит из нескольких слов.
Шаблоны идентификаторов должны иметь вид и формат идентификаторов, которые должны быть вставлены вместо шаблона, в соответствии с соглашениями по языку (имеется в виду использование строчных и прописных букв, составные имена, глаголы и существительные в качестве идентификаторов).
Не понял, прошу пример, из которого вытекала бы потребность в инструменте.
Подсказка выделяется целиком, поэтому ее можно быстро заменить идентификатором методом копирования и вставки либо с помошью панели построителя кода.
Я не большой знаток соглашений по языку. Но можно сказать, что если идентификатор должен начинаться с прописной буквы, то и заменяемая им подсказка - тоже, если идентификатор должен быть со строчной, то и подсказка тоже.
Цитата:
Выделение фрагментов текста и удаление/копирование/перетаскивание мышкой выполняются настолько легко и быстро, что не вижу смысла в дополнительных инструментах.
Это легко, когда Вы тасуете в тексте то, что уже написано, а не тогда, когда Вы мучительно ищете процедуру с необходимыми свойствами.
Что касается кнопок управления вставленным шаблоном кода, то они исключительно удобны.Все ненужные части шаблона можно удалить ОДНИМ щелчком мыши без обращения к контекстному меню или клавише Delete.
Всё, что нужно в нескольких экземплярах, можно продублировать тоже ОДНИМ щелчком мыши (а дальше перетаскивайте, куда хотите).
Невозможно ошибиться в задании границ выделяемого в тексте шаблона, если сделать ОДИН щелчок мыши по соответствующей интегрированной в текст кнопке.
Если возникнет вопрос по какому-нибудь идентификатору, параметру, типу и т.п., ОДИН щелчок мыши - и Вы получите справку.
Если Вы окончательно отредактировали вставленный шаблон кода, то ОДИН щелчок мыши - и Вы удалили подсказки, кнопки управления шаблоном кода и цветовое выделение шаблона.
Цитата:
Похоже, ТЗ написано с оглядкой на инструменты гораздо более тяжеловесных систем, в которых без многочисленных "костылей" действительно трудно работать. Попробуйте меня разубедить
Это Acces-то тяжеловесный или Excel? Да ими пользуются в России десятки миллионов "чайников", которые овладели всеми премудростями в течение нескольких недель. Зачем отказываться от инструмента, который так прекрасно себя проявил в этих продуктах?