Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги_docv / Паронджанов Как улучшить работу ума.doc
Скачиваний:
348
Добавлен:
21.03.2015
Размер:
15.07 Mб
Скачать

Пример для исследования эргономичности логических выражений

Итак, мы собираемся найти эргономичный способ записи сложных логических выражений. Чтобы разобраться в сути вопроса, желательно иметь под рукой какой-нибудь пример, на котором мы будем “проигрывать” различные методы улучшения эргономичности.

Предположим, нужно создать алгоритм, управляющий автомобилем-роботом, проезжающим через перекресток со светофором в условиях реального уличного движения. Примем соглашение, что автомобиль-робот движется только по прямой, и выберем самый простой алгоритм управления (рис. 75).

Логический признак, разрешающий (или запрещающий) роботу ехать вперед, имеет идентификатор “Можно.ехать.через.перекресток”. Будем считать, что данный признак принимает значение “да” в трех случаях:

  • горит зеленый сигнал светофора и нет помех движению;

  • желтый сигнал загорелся, когда робот уже выехал на перекресток, и нет помех движению;

  • светофор сломался (нет ни зеленого, ни желтого, ни красного сигнала) и нет помех движению.

В остальных случаях признак имеет значение “нет”, запрещающее роботу движение через перекресток.

Введем обозначения, показанные на рис. 76, которым соответствуют очевидные равенства:

Y= Можно.ехать.через.перекресток (1)

А= Зеленый.сигнал.светофора (2)

В= Желтый.сигнал.светофора (3)

С= Красный.сигнал.светофора (4)

D= Робот.выехал.на.перекресток (5)

Е= Помехи.для.движения (6)

Если принять указанные условия и обозначения, логическая функция Yзадается формулой

Y = (A & E)(B & D & E)(A & B & C & E) (7)

Пример, представленный на рис. 75 и 76, позволяет приступить к изучению проблемы. Ниже мы рассмотрим несколько вариантов записи логических выражений и сравним их между собой с эргономической точки зрения. При этом предполагается, что робот имеет пять датчиков, формирующих логические сигналы А,В,С,D,E, которые поступают в бортовой компьютер, управляющий движением робота.

Логическое выражение с абстрактными идентификаторами

Произведем эквивалентное преобразование алгоритма на рис. 75. Учитывая равенство (1) заменим идентификатор “Можно.ехать.через. перекресток” буквойY, после чего вместоYподставим логическое выражение из формулы (7). В результате получим алгоритм на рис. 77.

Некоторые математики скорее всего похвалят этот алгоритм. Они, возможно, скажут, что с математической точки зрения выражение в иконе “вопрос” является компактным, лаконичным, изящным и обозримым18.

К сожалению, подобная позиция не учитывает эргономических соображений и является устаревшей. Сразу оговоримся: речь, разумеется, идет не о том, чтобы заменить математику эргономикой, а всего лишь о том, чтобы, сохраняя математическую строгость в неприкосновенности, решительно отказаться от эргономической беспечности традиционных математических построений. Это означает, что однобокий математический подход должен уступить место системному подходу, в котором органически сочетаются математические и эргономические методы. Для обозначения нового подхода можно предложить термин “когнитивная формализация знаний”.

Сделаем еще одну оговорку. Формула (7) была бы вполне приемлемой, если бы речь шла об абстрактной задаче, цель которой — выявить математическую сущность проблемы. Однако в данном случае речь идет о прикладной задаче — создании программы управления автомобилем-роботом.

Недостаток формулы (7) и алгоритма на рис. 77 состоит в том, что иден­тификаторыА,В,С,D,Ене смысловые, а абстрактные. Они оставляют наши знания о предметной области за пределами программного текста.

Чем это плохо? Вспомним, что сегодня критической проблемой являются не машинные, а человеческие ресурсы, причем экономия последних теснейшим образом связана с проблемой понимания, которая превращается в центральную проблему информатики. Производительность труда при создании информационных систем и систем управления напрямую зависит от успешного решения проблемы понимания, обеспечивающего быструю и безошибочную разработку алгоритмов и программ. Это общее положение тесно связано с обсуждаемым вопросом. В самом деле, люди, которые прекрасно знают прикладную задачу и предметную область, но не знают или забыли обозначения (1)—(6), например заказчики, постановщики задач, комплексники и т. д., воспринимают идентификаторыА,В,С,D,Еи составленные из них формулы как бессмысленный набор символов. Следовательно, эти люди лишаются возможности принять участие в проверке правильности алгоритмов и программ и внести свой вклад в устранение ошибок.

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

Для большинства специалистов, знающих прикладную задачу, логическое выражение на рис. 77 не дает никакой подсказки о семантике логических переменных и фактически представляет собой загадочный ребус. Оно служит типичным примером эргономической неряшливости традиционных методов математического описания прикладных задач. Отсюда проистекает вывод: в прикладных задачах использование абстрактныхидентификаторов в логических выражениях эргономически недопустимо.