Командный язык для текстовых редакторов
Для управления работой текстового редактора, как и любой программы, требуется использование некоторого командного языка Такой командный язык должен по возможности наиболее полно соответствовать выполняемым в процессе редактирования процедурам. В качестве командного языка можно, например, использовать естественный язык или язык указаний и отсылок, однако независимо от типа он должен быть в состоянии описывать любые требуемые операции. Хорошие результаты показало исследование языков самого различного типа, и мы не можем «назвать ни один из них, преимущества которого перед другими были бы бесспорны, так как даже специальные исследования не выявили существенных различий в качестве функционирования систем, отличающихся только типом командного языка [23].
Имеются основания считать, что использование более простых по синтаксису командных языков не только позволяет сократить среднее время их освоения начинающими пользователями, но и способствует некоторому выравниванию уровня подготовки начинающих специалистов [20]. Командные языки, используемые при работе с экранными редакторами, обычно оказываются проще других, так как в них применяется адресация, выполняемая указанием позиции на экране с помощью курсора, что намного проще вербального описания.
Большинство задаваемых машине команд, подобно командам естественного языка, состоит из глагола, указывающего определенное действие, и существительного, определяющего объект этого действия. (В некоторых случаях может потребоваться включение в команду более одного существительного или наречия для уточнения порядка выполнения действия.) Вследствие очевидной параллели с естественным языком некоторые исследователи рекомендуют для простоты обучения использовать такой синтаксис командного языка, который был бы как можно ближе к естественному. В частности, на основе того, что повелительные предложения в английском языке строятся по схеме, предполагающей постановку глагола перед существительным, была выдвинута гипотеза, что порядок «глагол — существительное» является более предпочтительным для командных языков, используемых англоязычными специалистами. Однако в диссертации Черри [13] эта гипотеза опровергается, так как по результатам исследований не удалось обнаружить существенного различия в эффективности работы с редактором между группами пользователей, применяющими команды с порядком слов «глагол — существительное», и пользователями, задающими системе команды по схеме «существительное — глагол». Причем такой результат был получен для группы как начинающих, так и опытных пользователей, выполняющих задачи текстового редактирования.
При создании командного языка основными жесткими критериями должны быть простота и непротиворечивость. Порядок элементов в команде следует точно определить, в противном случае функция каждого из ее элементов должна быть очевидной во избежание непредсказуемых результатов, вызванных заданием команды с неправильным порядком операндов. Каждая команда должна заканчиваться определенным указанием системе на то, что ввод команды завершен и система должна приступать к ее выполнению. Если команда завершается всякий раз конкретным, легко определяемым действием (например, нажатием какой-либо функциональной клавиши), то, как правило, нет необходимости в использовании оператора DO («Выполнить»), что может несколько ускорить процесс редактирования.
Командный язык редактора должен содержать также команды STOP («Остановить выполнение») и UNDO («Отменить действие предыдущей команды») с тем, чтобы пользователь мог легко исправлять ошибки и изучать новые возможности редактора, не боясь непоправимых действий.
Определение действия команды
Существует несколько способов, с помощью которых пользователь может задать действие, предусматриваемое командой. Наиболее общие из них перечислены в табл. 4.1 с указанием достоинств и недостатков. Для построения командного языка для определенного текстового редактора можно выбрать либо один из возможных способов выражения действия, либо использовать несколько способов, что предоставило бы пользователю различные возможности задания одних и тех же команд (например, «канонический» способ и способ более быстрый, но требующий от пользователя определенных навыков работы с ЭВМ). Или же в редакторе может использоваться один тип языка для построения наиболее характерных команд и другой для задания менее распространенных команд, например, ограниченный набор функциональных клавиш может быть расширен за счет специальных управляющих клавиш или благодаря использованию меню, высвечиваемого во временном окне. Однако применение более двух различных способов вызова команд одновременно, вероятно, вызовет у пользователя определенные затруднения.
При создании командных языков разработчики, как правило, сталкиваются с проблемой, состоящей в том, каким образом сократить большое количество необходимых для редактирования команд с тем, чтобы по возможности не перегружать память пользователя и в то же время чтобы процесс вызова команд при этом не становился бы затруднительным. Изучение употреблений наименований команд показало, что в качестве имен команд целесообразно использовать нечасто встречающиеся и хорошо распознаваемые слова [6], обладающие конкретной семантикой [4, 21] и принадлежащие к соответствующим частям речи [12]. При работе с редактором, допускающим выполнение длинной цепочки команд, для их вызова уже недостаточно ввода однобуквенных аббревиатур имен команд. Наиболее простое решение проблемы использования при вводе командных аббревиатур состоит в том, чтобы потребовать от пользователя ввода в ЭВМ по крайней мере стольких знаков командного имени, сколько необходимо для однозначной расшифровки его ма-
Способ |
Недостатки |
Преимущества
Ввод с клавиатуры аббревиатур команд
Ввод с клавиатуры отдельных символов
Использование управляющих клавиш (ввод букв при нажатой клавише CTRL)
Использование маркированных функциональных клавиш
Использование немаркированных функциональных клавиш
Использование экранного меню и вызова команды нажатием клавиши ввода после указания нужной позиции курсором
Меню во временном окне
Мнемонический характер. Не требуются специальные аппаратные средства. Руки пользователя в пределах привычной части клавиатуры
Значительно повышает темп работы. Не требуются специальные аппаратные средства - Руки пользователя в пределах привычной части клавиатуры
Обычные аппаратные
Средства.
Руки пользователя в пределах привычной части клавиатуры.
Не требуется специальный сигнал «Выполнить» Способ очень прост в освоении.
Позволяет освободить вторую руку для управления указательным устройством.
Не требуется специального сигнала «Выполнить» Используются, как правило, обычные аппаратные средства. Позволяет освободить вторую руку для управления указательным устройством.
Не требуется специальный сигнал «Выполнить» Постоянное напоминание перечня команд. Дает полное имя команды
Может содержать больше команд, чем простое (статическое) меню. Дает полное имя команды
Требуется ввод большого количества символов. Невозможна «безрежимная» вставка
Не все команды имеют удобную мнемонику. Число используемые команд ограничен»
(—(26).
Невозможна «безрежимная» вставка Довольно затруднительно при больших объемах ввода
Требуются специальные аппаратные средства. Использование клавиш необходимо во всех случаях.
Обеспечивается работа лишь с ограниченным набором команд Мнемоника отсутствует, если смысловое назначение клавиш не демонстрируется каким-либо иным способом. Обеспечивается работа лишь с ограниченным набором команд
Занимается существенная часть экрана. Обеспечивается работа лишь с ограниченным набором команд. Может потребоваться обязательное перемещение курсора
Невозможно одновременно видеть полный набор команд.
Каждый вызов команды требует нескольких перемещений курсора по меню.
Может потребоваться уход курсора с нужного объекта
Шиной [24]; это даже позволит дальнейшее расширение списка употребляемых команд в тех случаях, когда система не предусматривает ввода команд в виде аббревиатур их имен определенной длины. Для систем, основанных на использовании меню, большие группы команд обычно разбиваются на отдельные меню, которые пользователь должен хорошо изучить для эффективной работы с ними. Процесс освоения их пользователем протекает более успешно, когда системой предусмотрена возможность прямого вызова соответствующего меню или команды. В этом случае опытный пользователь может объединить несколько связанных между собой действий в одно, и система не будет терять времени, всякий раз выводя заново на экран описание меню. Более подробно вопрос об использовании меню рассматривается в работах [8] и [43].
Определение объекта действия команды (главным образом с использованием адресации)
Наиболее характерным объектом действия команды при редактировании является некоторая позиция в тексте документа, я наиболее естественный метод ее адресации — непосредственное указание на экране. Как показала многолетняя практика, оптимальным способом указания позиции является использование устройства типа «мышь» (хорошо освоив «мышь», можно добиться такой высокой скорости указания, как если бы оно проводилось пальцем) [9]; другим широко распространенным способом адресации является использование «шаговых» («стрелочных») клавиш. В редакторах, работающих с «бумажными» терминалами, невозможно использование непосредственного указания, и в общем случае для адресации используют ввод номера строки. Номер строки может быть как абсолютным, т. е. постоянным для каждой строки и меняющимся лишь когда пользователь сам перенумеровывает строки, так и относительным, в случае, когда номер любой строки отсчитывается от начала документа и меняется в зависимости от вставки или уничтожения строк, располагающихся в тексте выше ее. В первом случае пользователи обычно задают в своих командах точные номера требуемых строк, а во втором — системе приходится запоминать текущую позицию в файле, и пользователь вводит команду по сдвигу данного системного указателя с этой позиции соответственно вперед или назад; обычно операции, с помощью которых пользователь передвигает указатель, выполняются отдельно от команд, производящих изменения в тексте.
Во всех только что отмеченных операциях указывается, как правило, лишь одна позиция в документе. Для тех случаев, когда пользователь хочет отметить целый фрагмент текста, некоторые системы предусматривают прямое расширение размеров части текста, подлежащей изменению (так, например, можно указать начальный и конечный номера строк или же перемещать манипулятор «мышь» и дважды нажимать клавишу управления, находящуюся на корпусе "мыШи"). Однако существуют и другие системы, определяющие отметку начальной позиции необходимого текста и передвижение для отметки его конца как две отдельные операции. Такой процесс адресации приводит к неоправданному увеличению числа шагов, необходимых для выполнения команды.
Иногда параметры команд не служат указателями каких-либо частей документа. Такие параметры обозначают, например, число необходимых повторений выполнения операций или указание системе на то, что строчные и прописные буквы должны при поиске рассматриваться как эквивалентные. Насколько эффективно могут быть выражены подобные параметры, в большой степени зависит от способа спецификации командных глаголов. Для систем, предполагающих текстуальное задание команд, нестандартные модификаторы чаще всего выражаются дополнительными текстуальными аргументами, вводимыми перед сигналом к выполнению команды. Другие системы для ввода команд обеспечивают проведение диалога с пользователем, в процессе которого у него запрашивается вся необходимая информация. Однако такой диалог может быть крайне утомительным для специалиста и, как правило, не допускает легкого исправления ошибочных параметров, даже если ошибка обнаружена пользователем раньше, чем отдана команда. В системах, основанных на использовании меню, все возможные варианты команд могут быть перечислены в соответствующих иерархических структурах. Экранно-ориентированные системы способны выдавать на экран небольшие форматированные бланки (иногда называемые «формами уточнения команды»), в которых пользователь может определять те параметры, значения которых должны отличаться от принимаемых по умолчанию. Это представляет собой усовершенствование ранее описанного диалога, проводимого системой, так как в данном случае управляет им пользователь, а не система; правда, и в таком варианте определение значений параметров с помощью диалога все еще недостаточно эффективно для постоянного использования.