Хелпикс

Главная

Контакты

Случайная статья





ББК 32.973 12 страница



С эргономической точки зрения, эти и многие другие ключевые слова, присутствующие в текстовых языках, есть не что иное как визуальные помехи, притягивающие к себе внимание читателя и отвлекающие его внимание от содержательной стороны дела. Эргономическое преимущество ДРАКОНА состоит в том, что вместо ключевых слов используется визуальный образ, который воспринимается читателем бессознательно, на интуитивном уровне, в то время как канал сознательного внимания действует более продуктивно — для восприятия наиболее важных, содержательных аспектов задачи.

ПРИМЕР ЭРГОНОМИЧЕСКОЙ ОПТИМИЗАЦИИ
ПРОГРАММЫ

 

На рис. 91 (внизу, в средней графе) написана программа на языке ПАСКАЛЬ. Действуя по аналогии с предыдущими примерами, ее можно легко преобразовать в программу на языке ДРАКОН-ПАСКАЛЬ. Для этого нарисуем визуальный оператор “развилка” и в иконе “вопрос” поместим запись

Нижний выход иконы “вопрос” пометим словом “да” и присоединим к нему переключатель с двумя иконами “вариант”, а правый выход (ответ “нет”) подключим к иконе “вывод”, в которой сверху напишем WRITELN, снизу — ОШИБКА. В итоге получим дракон-схему, которая несомненно является совершенно правильным решением поставленной задачи. (Для наглядности советуем читателю выполнить описанные построения на бумаге.)

А теперь изменим условие задачи. Попытаемся создать программу, которая была бы не только эквивалентной паскаль-программе на рис. 91, но и эргономически оптимальной для русскоязычного читателя. Искомая программа, написанная на языке ДРАКОН-2, представлена на том же рисунке внизу справа.

Бросается в глаза структурное различие между программами. Паскаль-программа содержит две конструкции: if-then-else и case-of. Эргономическая оптимизация состоит в том, что в дракон-программе используется всего один визуальный оператор (переключатель с тремя вариантами), который тем не менее “в одиночку” выполняет те же самые функции, что и два текстовых оператора языка ПАСКАЛЬ. В итоге сложное условие K = 1 OR K = 2 и другие излишества паскаль-про­граммы устраняются, а дракон-схема заметно упрощается и становится лаконичной, прозрачной, элегантной.

ДИАЛОГОВЫЕ ПРОГРАММЫ

Продолжим изложение одного из возможных подходов к построению языка программирования ДРАКОН-2. Еще раз напомним: читатель не найдет здесь описания языка. Наша цель гораздо скромнее: показать, что формализация текстового синтаксиса для языка ДРАКОН вполне осуществима, и привести несколько примеров, подтверждающих эту мысль.

Рассмотрим диалоговые программы на рис. 92 и 93, имеющие улучшенные дидактические (педагогические) характеристики. Для этого применяется обширный набор эргономических средств. В частности, при заполнении иконы “комментарий” используется зонирование текста. Текст комментария для облегчения восприятия пространственно делится на две зоны, которые, во-первых, имеют четко очерченные и легко различимые границы, во-вторых, отличаются по цвету фона (белый и серый). В серой зоне помещается текст, появляющийся на экране компьютера, в белой — пояснения к нему. Отграничение экранного текста от пояснений облегчает чтение комментариев и улучшает их понимаемость.

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

Оператор “Сообщение”

Оператор “Сообщение” служит для вывода информации на экран компьютера. Он содержит икону “вывод”, на верхнем этаже которой помещают ключевое слово “Сообщение”, на нижнем — выводимую ин­формацию. При описании последней применяется зонирование текста:
в серой зоне пишут имена переменных или выражения (значения которых следует вывести на экран), в белой зоне — постоянную информацию (которая выводится на экран без изменений). Признаком новой

Рис. 92. Программа, вычисляющая сумму двух чисел
Рис. 93. Программа, вычисляющая квадраты натуральных чисел
92, 93

строки служит черный кружок. Например, на рис. 92 с помощью оператора “Сообщение” на экран выводится фраза “Сумма чисел равна” и значение выражения m + n.

Оператор “Запрос”

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

Предположим, нужно ввести значения m = 23 и n = 45 (рис. 92). Делается это, например, так: подводят курсор в зону m, набирают на клавиатуре число 23 и нажимают клавишу “возврат каретки”. При этом зона m на экране гаснет и вместо нее загорается число 23. Значение n вводится аналогично. Таким образом, оператор “Запрос” запрашивает у пользователя значения переменных, записывает их в память и одновре­менно отображает на экране вместе с постоянной информацией (если последняя указана на нижнем этаже оператора “Запрос” в белой зоне).

Описание данных

Для описания данных служит икона “полка”. На верхнем этаже пишут ключевое слово “Данные”, на нижнем — описание данных. Например, на рис. 92 в иконе “полка” указано, что переменные m и n имеют тип “целый”.

Можно предложить и другой способ: описание данных выносят за рамки дракон-схемы и помещают в отдельную таблицу.

ИДЕНТИФИКАТОРЫ

Приведем правила записи идентификаторов.

! Длина идентификатора 1...32 символа.

! Разрешается использовать любые русские и латинские буквы, цифры, точку и, возможно, специальные символы.

! Первый символ должен быть буквой (не цифрой и не точкой).

! Внутри идентификатора запрещается использовать пробелы.

! Слова следует разделять точками, чтобы облегчить чтение.

! Запрещается использовать сокращение слов, если длина идентификатора меньше 32 символов.

! Если длина идентификатора больше 32 символов, надо заменить некоторые слова сокращениями или уменьшить число слов.

! Нужно стремиться придумывать доходчивые идентификаторы, позволяющие легко уяснить смысл понятия, чтобы читатель быстро понял суть дела.

Примеры правильных идентификаторов

Номер.вагона.скорого.поезда

Номер.вагона.пассажир.поезда

Цена.билета.поездом.до.Магадана

Цена.билета.самолет.до.Магадана

Примеры неправильных идентификаторов

Номер.вагона.пассажирского.поезда             (здесь 33 символа,
                                                                                   а можно не более 32)

Число.вагонов товарного поезда                     (используются пробелы)

3-й.запуск.аварийного.насоса                          (здесь две ошибки:
                                                                                   первый символ — цифра;
                                                                                   кроме того, есть дефис)

Пример сокращения длины сложного понятия

Предположим, нужно создать идентификатор для следующего понятия: “Радиус-вектор центра Земли в центре взлетно-посадочной полосы в посадочной системе координат”. Словесное описание понятия содержит 92 символа. Задача состоит в том, чтобы сократить 92-символьное описание до 32-символьного, сохранив по возможности ясный смысл понятия.

Сокращение проведем по следующему плану:

! “Радиус-вектор центра Земли” заменим на “Радиус.земли”.

! Вместо “В центре взлетно-посадочной полосы” напишем “на.полосе”.

! “В посадочной системе координат” заменим на ПСК, поскольку такое сокращение является общеупотребительным в коллективе разработчиков данной системы.

В итоге получим 26-символьный идентификатор


который сохраняет почти все опорные слова исходного понятия и обеспечивает довольно высокую понимаемость.

Правила записи арифметических выражений
в операторах присваивания

Следует различать два случая. Если выражение простое, рекомендуется использовать 32-символьные идентификаторы и “вертикальную” запись математических формул, как показано на рис. 94 и 95.

Однако если речь идет о сложных математических вычислениях, описанный способ не годится, поскольку “вертикальные” формулы с
32-символьными идентификаторами не позволяют читателю увидеть математическую структуру вычислений, отвлекая его внимание на чтение длинных идентификаторов, которые парадоксальным образом превращаются из полезной подсказки в свою противоположность и начинают играть негативную роль визуальной помехи. Таким образом, возникает эргономический тупик: короткие идентификаторы не позволяют быстро уяснить смысл понятий, а длинные — затемняют структуру сложных формул.

В качестве одного из возможных подходов к развязыванию этого гордиева узла можно предложить план из трех пунктов.

! Для каждого математического понятия предусматриваются два идентификатора: длинный (32-символьный) и короткий (алиас).

! В арифметических выражениях используются только алиасы, что делает структуру формул прозрачной.

! В начале программы предусматривается икона “комментарий”, в которой размещается таблица соответствий между алиасами и длинными идентификаторами. Эта таблица играет роль шпаргалки, которая находится в одном поле зрения с операторами присваивания и позволяет быстро вспомнить, что означает тот или иной алиас.

ОБРАБОТКА МАССИВОВ

На рис. 94 и 95 даны примеры программ, в которых имеются операции с массивами.

Описание данных размещается на нижнем этаже иконы “полка”.

Запись МАССИВ ВЕЩ Вес.кролика [100]

означает, что задан одномерный массив с именем “Вес.кролика”, содержащий 100 элементов, каждый из которых является вещественным числом.

Основным элементом обеих программ служит цикл ДЛЯ. Рассмотрим правила оформления цикла. В иконе “начало цикла ДЛЯ” в верхней строке пишут слово “Цикл” и после пробела односимвольный алиас, обозначающий переменную цикла (буква k на рис. 94, 95). В нижней строке указывают диапазон ее изменения, например,


Но что обозначает буква k? Каков физический смысл переменной цикла в данной прикладной программе? Авторы многих программ
забывают (или не считают нужным) ответить на этот вопрос, в результате чего программа нередко превращается в ребус.                                                                             Чтобы этого не

Рис. 94. Программа, вычисляющая общий вес всех кроликов в крольчатнике
Рис. 95. Программа, определяющая максимальный вес одного кролика в крольчатнике
94, 95

случилось, в средней строке следует написать формализованный комментарий, например


Знак тождественного равенства ≡ показывает, что после него следует имя-комментарий, т. е. комментарий, который пишется по правилам записи идентификаторов.

Эргономический “навар” формализованного комментария включает два преимущества. Во-первых, он позволяет устранить традиционную “забывчивость” программистов и по-человечески объяснить читателю смысл абстрактного идентификатора: дескать, k — это номер кроличьей клетки. Во-вторых, что немаловажно, объяснение размещается на поле чертежа именно там, где нужно (в иконе “начало цикла ДЛЯ”), по принципу “дорого яичко ко Христову дню”. Это значит, что читатель получает ответ моментально — в ту самую секунду, когда он впервые увидел алиас k и в его голове забрезжил вопрос: а что такое k?

В иконе “конец цикла ДЛЯ” делают запись

 

Смысл операторов, организующих обработку массивов, ясен из рис. 94 и 95 и не требует пояснений.

АБСТРАКТНЫЕ ДРАКОН-СХЕМЫ

В этом параграфе мы рассмотрим преобразование визуальной программы на языке ДРАКОН-2 в текстовую программу на БЕЙСИКе. Это преобразование полезно в двух отношениях: оно позволит глубже уяснить суть визуализации и познакомиться с важным понятием абстрактной дракон-схемы.

В качестве примера возьмем школьную программу под названием “Игра.угадайка” и напишем ее на языке ДРАКОН-2 (рис. 96). Затем полностью устраним из нее текст и получим чертеж-слепыш, который называется “абстрактная дракон-схема” (рис. 97). Эта схема представляет собой инвариант программы, который можно за два шага преобразовать в программу на любом языке программирования.

Выберем в качестве цели язык БЕЙСИК и приступим к делу. На первом шаге заполним пустые иконы абстрактной схемы текстом на языке БЕЙСИК. В результате получится эквивалентная программа на языке ДРАКОН-БЕЙСИК (рис. 98). На втором шаге переходим к обычной бейсик-программе (мы сознательно выбрали старомодную версию БЕЙСИКа, чтобы для разнообразия продемонстрировать использование операторов goto при описании эквивалента дракон-программы) —
см. рис. 99.

96

97

98

Рис. 100. Классификация знаний, содержащихся в исходной программе, с точки зрения ДРАКОН-концепции
Рис. 99. Программа игры “Угадайка” на языке БЕЙСИК с минимальными комментариями
99, 100

ФИЛОСОФИЯ ЯЗЫКА ДРАКОН

Любой императивный язык (СИ, ПАСКАЛЬ, АДА, МОДУЛА, БЕЙСИК
и т. д.) можно разбить на три части, три относительно самостоятельных языка: маршрутный, командный и декларативный.

Маршрутный язык — совокупность управляющих операторов. Командный язык содержит все неуправляющие операторы, например оператор присваивания, правила записи арифметических и логических выражений, идентификаторов, ключевые слова и т. д. Декларативный язык служит для описания данных, классов и др.

Поясним сказанное на примере. Абстрактная дракон-схема, приведенная на рис. 97, есть некоторая “фраза” маршрутного языка. Чтобы сделать ее содержательной, внутри икон следует поместить текст. Этот текст пишется на командном языке. Однако описания данных и классов иногда целесообразно вынести за рамки дракон-схемы и поместить их где-нибудь в другом месте, например, в виде отдельной записи или таблицы.

Отсюда вытекает принцип разграничения трех подъязыков. Маршрутный язык — это язык “картинок” (абстрактных дракон-схем, в которых полностью отсутствует текст). Командный язык служит для записи текста внутри дракон-схемы, декларативный — для тех записей, которые можно вынести за ее пределы.

Конструируя очередной язык дракон-семейства, можно выбирать командный и декларативный подъязыки любым способом (заимствуя из других языков или выдумывая заново). Благодаря этому обеспечивается богатство возможностей ДРАКОНА и гибкая настройка на различные приложения. Таким образом, дракон-семейство имеет только одно жесткое звено — маршрутный язык, который есть не что иное, как визуальные компоненты ДРАКОНА (визуальный синтаксис и семантика).

Маршрутный язык — это визуальный стандарт дракон-семейства, поддерживаемый визуальным дракон-редактором (см. гл. 14), который имеет небольшие размеры и легко запоминается. Он является неизменной визитной карточкой ДРАКОНА, его стандартизованным зрительным образом (рис. 97).

КЛАССИФИКАЦИЯ ЗНАНИЙ

Любая программа есть некоторая сумма знаний, которую можно расчленить на императивную и декларативную часть. Изложенные выше соображения позволяют уточнить этот тезис. Новый взгляд на проблему представлен на рис. 100 и сводится к следующему:

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

! Базовая классификация состоит в том, что все знания, содержащиеся в исходной программе, разбиваются на императивные и декларативные.

! В свою очередь императивные знания делятся на управляющие и командные.

! В качестве критерия для альтернативной классификации предлагается вопрос: какие средства лучше использовать для представления знаний — графику или текст?

! Ответ состоит в следующем. Для представления управляющих знаний лучше применять графику (маршрутный язык), для командных и декларативных знаний — текст.

! Таким образом, при альтернативной классификации знания делятся на визуальные (управляющие) и текстовые (командные и декла­ративные).

Напоследок добавим: использование текста для представления слож­ных управляющих знаний выглядит столь же нелепо, как попытка опи­сать географическую карту словами. Тот факт, что текст все еще при­меняется для этой цели, можно объяснить только одним: программиро­вание намного моложе географии!

ВЫВОДЫ

1. Если в нашем распоряжении имеется формальный визуальный синтаксис, то для построения визуального языка программирования достаточно построить формальный текстовый синтаксис. Мы убедились, что эта задача вполне разрешима, причем несколькими способами. В итоге образуется семейство языков программирования как оригинальных (ДРАКОН-2), так и гибридных (ДРАКОН-СИ, ДРАКОН-МОДУЛА, ДРАКОН-ПАСКАЛЬ, ДРАКОН-БЕЙСИК и т. д.).

2. Можно утверждать, что понимаемость визуальных языков существенно выше, чем понимаемость их текстовых собратьев. Поэтому во всех случаях, когда понимаемость рассматривается как главный критерий качества программ (а таких случаев немало), визуальные языки оказываются вне конкуренции. Здесь уместна оговорка: сам по себе термин “визуальный” ничего не гарантирует. Успех дела достигается за счет тщательного и скрупулезного применения методов науки о человеческих факторах (эргономики). Если говорить точнее, речь идет о синтезе методов информатики и эргономики, формировании нового междисциплинарного направления — инфоэргономики, перестройке всего здания современного программирования на эргономической основе.

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

Г Л А В А 13

Человеческая деятельность
и формализация знаний:
живописные примеры

Процесс формализации профессиональных знаний... — исторически новая форма интеллектуальной деятельности.

Григорий Громов

ЧТО ТАКОЕ
ПРОФЕССИОНАЛЬНЫЕ ЗНАНИЯ?

Профессиональные знания охватывают всю совокупность сведений, которые человек использует в своей профессиональной деятельности. Мы ограничим это понятие с двух сторон. Во-первых, исключим из рассмотрения профессиональную деятельность в области религии, искусства, спорта и некоторых других сфер, сосредоточив внимание на научной, технической, производственной, управленческой, экономической, медицинской, учебной и сходными с ними деловыми видами деятельности. Во-вторых, нас будут интересовать лишь те профессиональные знания, которые целесообразно в той или иной степени формализовать и представить в письменном виде на бумаге или экране дисплея.

Профессиональные знания должны в конечном итоге вести к желаемому (теоретическому или практическому) результату, а также удовле­творять многим другим требованиям. Например, технология закалки кинжала (рис. 101), хотя и позволяет получить искомый результат, однако с современной точки зрения выглядит дикой, нелепой и бесчеловечной. Причин тому две: на заре человечества моральные нормы были неразвиты, а главное — указанная технология опирается не на научные знания, а на мифологические объяснительные схемы. Древние “технологи” были искренне убеждены, что сила раба “переходит” в кинжал и улучшает его боевые качества.

В данной главе под формализацией знаний будем понимать представление человеческих знаний на формальном или частично формальном языке. Учитывая сказанное ранее (гл. 3), исключим из анализа декларативные профессиональные знания и ограничимся проблемой формализации технологических (императивных) знаний.

План дальнейшего изложения таков. Мы рассмотрим ряд примеров из самых различных, очень непохожих друг на друга областей про­фессиональной деятельности и покажем, что язык ДРАКОН “повсюду

Рис. 101. Чудовищный древний алгоритм с двумя циклами
101

молодец” — он позволяет эффективно формализовать императивные знания во многих, хотя и не во всех ситуациях. Что это дает? Поскольку процесс формализации знаний оказывается чрезвычайно легким, он ста­новится доступным практически для любого человека, который хорошо знает свое дело. Это означает, что с появлением языка ДРАКОН каждый специалист приобретает новые возможности:

! он может формализовать свои знания сам, без помощи инженеров по знаниям или программистов, т. е. воспользоваться всеми благами формализации знаний;

! он может выражать свои мысли на своем родном профессиональном языке, но в строгом формализованном виде.

В результате специалист получает мощное средство делового общения, ибо благодаря ДРАКОНУ его родной профессиональный язык каким-то чудесным образом стал очень похож на профессиональные языки других специальностей.

УЧЕБНЫЕ ЭКСПЕРТНЫЕ СИСТЕМЫ

Рассмотрим школьную задачу по химии за 10-й класс. Учитель берет одно из шести химических удобрений и помещает его в колбу. Что в колбе — неизвестно. Это может быть аммиачная селитра, натриевая соль, сульфат аммония, суперфосфат, сильвинит или калийная соль. Нужно выполнить эксперимент, позволяющий узнать, какое именно вещество находится в колбе.

Опыт делают в два этапа. Сначала идут подготовительные действия:

1. Положить удобрение в три сосуда.

2. В первый сосуд добавить серную кислоту Н2SO4.

3. Во второй сосуд добавить раствор хлорида бария ВаСl.

4. В третий сосуд добавить щелочь.

После этого анализируются результаты и определяется неизвестное вещество на основании табл. 3.

В методических указаниях по курсу “информатика” для средних школ рекомендуется использовать этот пример для ознакомления учащихся с принципом работы профессиональных экспертных систем. Для этой цели школьникам предлагается изучить упрощенную учебную экспертную систему в виде программы на языке БЕЙСИК. Функционирование учебной экспертной системы реализуется в диалоге ученика  и системы. Экспертная система задает ученику серию вопросов, анализирует ответы и сравнивает с хранящимися в ней фактами. Система производит логический вывод и формирует ответ на интересующий пользователя вопрос — в данном случае сообщает ученику название удобрения.


Таблица 3

Название
вещества

Внешний
вид

Результат взаимодействия с

Н2SO4 BaCl щелочью
Аммиачная селитра Белые кристаллы Бурый газ Запах аммиака
Натриевая селитра Бесцветные кристаллы Бурый газ Помутнение
Сульфат аммония Светло-серые кристаллы Белый осадок Запах аммиака
Суперфосфат Светло-серый порошок Белый осадок
Сильвинит Розовые кристаллы
Калийная соль Бесцветные кристаллы

Учебная экспертная система (программа на языке БЕЙСИК)

10 REM Распознавание удобрений

20 PRINT «При взаимодействии с серной кислотой выделяется бурый газ?»

30 INPUT A$

40 IF A$="да" THEN GOSUB 100 ELSE GOSUB 200

50 PRINT «Данное удобрение — »;Х$

60 END

100 REM взаимодействие со щелочью

110 INPUT «При взаимодействии с раствором щелочи ощущается запах аммиака?»;В$

120 IF B$="да" THEN X$="аммиачная селитра" ELSE X$="натриевая селитра"

130 RETURN

200 REM взаимодействие с раствором хлорида бария

210 INPUT «При взаимодействии с раствором хлорида бария и уксусной кислотой выпадает белый осадок?»;С$

220 IF C$="да" THEN GOSUB 300 ELSE GOSUB 400

230 RETURN

300 REM взаимодействие с раствором щелочи

310 INPUT «При взаимодействии с раствором щелочи ощущается запах ам­миака?»;D$

320 IF D$="да" THEN X$="сульфат аммония" ELSE X$="суперфосфат"

330 RETURN

400 REM розовые кристаллы

410 NPUT «Розовые кристаллы?»;Е$

420 IF E$="да" THEN X$="сильвинит" ELSE X$="калийная соль"

430 RETURN

ВИЗУАЛИЗАЦИЯ ЭКСПЕРТНЫХ СИСТЕМ

Более удачный вариант решения той же задачи показан на рис. 102. Учебная экспертная дракон-система работает следующим образом. После запуска системы рабочая точка процесса начинает двигаться от иконы “заголовок” к иконе “конец”. По ходу ее движения иконы и соединительные линии вспыхивают и горят на экране более ярким светом, выделяя пройденную часть пути. Когда процесс дошел до иконы-вопрос “При взаимодействии с Н2SO4 выделяется бурый газ?”, данная икона начинает мерцать, привлекая к себе внимание и требуя ответа. Реагируя на это событие, ученик подводит курсор к нужному ответу (да или нет) и щелкает клавишей мыши. Икона перестает мерцать и (при ответе “да”) загорается путь, ведущий к иконе-вопрос “При взаимодействии со щелочью ощущается запах аммиака?”, которая начинает мерцать. Далее события повторяются, пока на экране не загорится искомое название удобрения.

Таким образом, дракон-система выполняет те же самые функции, что и система на БЕЙСИКЕ. Вместе с тем она обладает рядом преимуществ.

! Программа на БЕЙСИКЕ содержит 790 символов (не считая пробелов), из которых только 488 символов (60%) описывают задачу на естественном языке, а остальные 302 (40%) представляют собой набор иероглифов — загадочный текст на птичьем языке программирования, который все нормальные люди (не программисты) воспринимают с неудовольствием. В дракон-схеме на рис. 102 повод для недовольства исчезает, “птичья абракадабра” полностью отсутствует, а все необходимые функции тем не менее выполняются. Становится очевидным, что “программные иероглифы” являются паразитными, избыточными и даже вредными, поскольку они работают не на пользователя (которому они не нужны), а сами на себя. В данном случае сущность эргономизации состоит в полном отказе от использования “птичьей абракадабры”.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.