
- •Владимир Паронджанов
- •Оглавление
- •Глава 1: На подступах к новому языку 25
- •Глава 2: Можно ли создать язык, улучшающий понимание и взаимопонимание? 29
- •Глава 3: Соображения, повлиявшие на создание языка Дракон 32
- •Глава 4: Понимание и взаимопонимание – ключевые проблемы информатики 43
- •Глава 5: Проблема улучшения работы ума: новый когнитивный подход 47
- •Глава 6: Изюминки языка Дракон 56
- •Глава 7: Эргономичные алгоритмы 77
- •Глава 8: Визуализация циклов 96
- •Глава 9: Визуализация логических формул 111
- •Глава 10: Что такое эргономичный текст? 122
- •Глава 12: Дружелюбное Программирование 142
- •Глава 17: Исчисление икон и попытка предсказать будущее 214
- •Глава 18: Место языка Дракон в системе человеческой культуры 223
- •Глава 19: Возможна ли эргономизация математики? 236
- •Глава 20: Можно ли стать интеллектуальным суперменом? 252
- •Глава 1 271
- •Легкомысленный словарик
- •Третий глаз для бизнесменови руководителей
- •Интеллектуальный терроризм: фантазия или реальность?(Вместо предисловия)
- •Почему умные люди страдают и гибнут?
- •Разве такая проблема существует?
- •Информационный стресс – зловещий спутник информационного общества
- •Камикадзе умственного труда
- •Что такое интеллектуальный терроризм?
- •Гуманитарная постановка задачи
- •Компьютерная мифология: облегчают ли компьютеры умственный труд?
- •Что такое интенсификация интеллекта?
- •Критерий Декарта и эргономизация науки
- •О чем эта книга?
- •Секреты мудрого дракона: объяснение на пальцах
- •Притча о том, как Господь Бог языки создавал
- •Смена терминов или изменение концепции?
- •Самая сложная вещь на свете
- •Зачем Дракону две головы?
- •Вы правы. Язык программирования — ваш враг. Но дракон— не язык программирования.Дракон— ваш друг
- •Справка о состоянии дел
- •Глава1: На подступах к новому языку
- •Зачем нужен язык Дракон?
- •В чем секрет Дракона? — в когнитивном подходе
- •Почему люди не интересуются собственным мозгом?
- •Станет ли Дракон чемпионом мира по критерию «понимаемость алгоритмов»?
- •На кого рассчитан язык Дракон?
- •Перечень задач, решаемых с помощью языка Дракон
- •Глава 2: Можно ли создать язык, улучшающий понимание и взаимопонимание?
- •Почему специалисты не понимают друг друга?
- •Язык Дракон как «эксперанто» делового мира
- •Что такое интеллектуальное взаимопонимание?
- •В чем особенность Дракона?
- •Глава3: Соображения, повлиявшие на создание языка Дракон
- •Что важнее: компьютеры или человеческий мозг?
- •Что такое производительность умственного труда?
- •Зависит ли производительность персонала от производительности компьютеров?
- •Можно ли увеличить скорость работы человеческого мозга?
- •Проблема формализации профессиональных знаний
- •Можно ли обойтись без когнитологов?
- •Чем отличается алгоритм от технологического процесса?
- •Что такое технологический язык?
- •Технологические и декларативные знания
- •Почему нельзя жить по-старому?
- •Социальные технологии и электронные методологии
- •Методология быстрой разработки системRad
- •Схемы действий и язык Дракон
- •Необходимость культурных изменений
- •Техноязык как элемент струкутуры
- •Глава 4: Понимание и взаимопонимание – ключевые проблемы информатики
- •Отсутствие понимания ведет к миллионным убыткам
- •Издевательство над здравым смыслом под названием «Абсолютная правильная программа»
- •Спецификации программ – вот главный «Гадючник»!
- •Спецификации программ и методология rad
- •Концепция когнитивного программирования
- •Глава 5: Проблема улучшения работы ума: новый когнитивный подход
- •Текст как зрительная сцена
- •Симультанное и сукцессивное восприятие
- •Когнитивный недостаток текстового представления знаний
- •Каким должен быть формат диосцены?
- •Когнитивные рекомендации
- •Зачем нужны психологические эксперименты?
- •Ошибка Джеймса Мартина
- •«Это чудакам-инженерам нужны большие чертежи, а мы, хитрецы-программисты, обойдемся маленькими»
- •Возможна ли стретегическая реформа мировой практики программирования
- •Глава6: Изюминки языка Дракон
- •Критика блок-схем
- •Преимущества Дракон-схем
- •Иконы и макроиконы
- •Зачем нужна ветка?
- •Как работает ветка?
- •Как следует располагать ветки в поле чертежа?
- •Что такое шапка?
- •Что лучшее: примитив или силуэт?
- •Как описать силуэт с помощью текстового языка?
- •Есть ли в алгоритме «Царская дорога»?
- •Главный маршрут силуэта
- •Пересечения линий? — боже упаси!
- •Визуальный и текстовый синтаксис Дракона
- •Семейство Дракон-языков
- •Глава 7: Эргономичные алгоритмы
- •Визуальная проверка алгоритмов
- •Что такое эргономичный алгоритм?
- •Чем отличается икона “Вопрос” от развилки?
- •Маршруты и формулы маршрутов
- •Что такое рокировка?
- •Использование рокировки для улучшения эргономичности
- •Вертикальное и горизонтальное объединение
- •Эргономичность литеральных алгоритмов
- •Что делать, если эргономические требования противоречат друг другу?
- •Икона-вставка как эргономический прием
- •Что такое подстановка?
- •Улучшение эргономичности алгоритмов с помощью цепочки эквивалентных преобразований
- •Глава8: Визуализация циклов
- •Обычный цикл
- •Переключатель и переключающий цикл
- •Цикл Для
- •Веточный цикл
- •Главный маршрут силуэта
- •Глава 9: Визуализация логических формул
- •Визуализация функции и
- •Визуализация функции или
- •Визуализация функции не
- •Визуализация сложных логических функций
- •Глава 10: Что такое эргономичный текст?
- •Можно ли сделать логические выражения эргономичными?
- •Пример для исследования эргономичности логических выражений
- •Логическое выражение с абстрактными идентификаторами
- •Логическое выражение с короткими смысловыми идентификаторами
- •Логическое выражение с длинными смысловыми идентификаторами
- •Важный момент, о котором часто забывают
- •Как присвоить значение логической переменной?
- •Правила записи рамочных логических выражений
- •Как построить эргономичный логический текст?
- •Г лава 11: Визуальные операторы реального времени
- •Список операторов реального времени
- •Операторы ввода-вывода
- •Оператор “Пауза”
- •Операторы “Пуск таймера” и “Синхронизатор”
- •Цикл Ждать
- •Оператор “Период”
- •Оператор “Параллельный процесс”
- •Особенности операторов реального времени
- •Глава 12: Дружелюбное Программирование
- •Гибридный язык программирования Дракон-Си
- •Гибридный язык программирования Дракон-Модула
- •Пример эргономической оптимизации программы
- •Диалоговые программы
- •Оператор “Сообщение”
- •Оператор “Запрос”
- •Описание данных
- •Идентификаторы
- •Примеры правильных идентификаторов
- •Примеры неправильных идентификаторов
- •Пример сокращения длины сложного понятия
- •Правила записи арифметических выражений в операторах присваивания
- •Обработка массивов
- •Абстрактные Дракон-схемы
- •Философия языка Дракон
- •Классификация знаний
- •Глава 13: Человеческая деятельность и формализация знаний: живописные примеры
- •Что такое профессиональные знания?
- •Учебные экспертные системы
- •Учебная экспертная система (программа на языке бейсик)
- •Визуализация экспертных систем
- •Визуализация описания технологических процессов
- •Что такое методология?
- •Визуализация методологий
- •Система “Человек—машина”
- •Визуализация биологических алгоритмов
- •Визуализация медицинских алгоритмов
- •Другие примеры визуализации
- •Описание структуры деятельности
- •Нужен ли стандарт для описания деятельности?
- •Глава 14: Визуальный дракон-редактор
- •Зачем нужен Дракон-редактор?
- •Заготовка-примитив и заготовка-силуэт
- •Что такое атом?
- •Пример построения Дракон-схемы «Примитив»
- •Операция «Пересадка лианы»
- •Операция “Заземление лианы”
- •Пример построения Дракон-программы «Силуэт»
- •Формирование надписей «Да» и «Нет»
- •Глава 15: Описание визуального синтаксиса языка Дракон
- •Общие понятия
- •Шампур-блок
- •Операция «Ввод атома»
- •Дополнительные сведения об атомах
- •Критические и нейтральные точки
- •Правила использования операции “ввод атома” при построении дракон-схемы
- •Операция с лианой
- •Пересадка лианы
- •Заземление лианы
- •Прочие операции
- •Основные результаты
- •Глава 16: Визуальное структурное программированиее
- •Постановка проблемы
- •Историческая справка
- •Отживающий метод?
- •Прав ли Игорь Вельбицкий?
- •Четыре принципа структуризации блок-схем, предложенные э.Дейкстрой
- •Почему научное сообщество не приняло видеоструктурную концепцию э.Дейкстры?
- •Парадокс структурного программирования
- •Плохие блокс-схемы или плохие стандарты?
- •Блок-схемы и теоретическое программирование
- •Новые цели стандартизации блок-схем
- •Чем отличаются блок-схемы от Дракон-схем?
- •В чем сходство визуального и текстового структурного программирования?
- •В чем различие визуального и текстовго структурного программирования? Структурные, лианные и адресные блоки
- •Операции с лианой и оператор goto
- •Является ли текстовое структурное программирование формальным методом?
- •Почему самолет не машет крыльями?
- •Глава 17: Исчисление икон и попытка предсказать будущее
- •Визуальное логическое исчисление
- •Общеизвестные сведения о математической логике
- •Об одном распространенном заблуждении
- •Принцип абсолютизации текста
- •Визуализация понятий математической логики
- •Исчисление икон
- •Еще раз о шампур-методе
- •Шампур-схема как абстрактная модель программы
- •Преобразование шампур-схемы в шампур-программу
- •Шампур-метод и докуазательство правильности программ
- •Возможна ли теория визуального программирования?
- •Гипотеза о будущем императивных языков программирования
- •Визуализация логики и интенсификация интеллектуальной деятельности
- •Глава 18: Место языка Дракон в системе человеческой культуры
- •Между сциллой и харибдой
- •Принцип структуризации деятельности
- •Генеральная концептуальная схема
- •Проблема деятельности в эргономике
- •Искусственный интеллект: алгоритмизация – это ночной кошмар!
- •Специалисты по ии: долой алгоритмизацию!
- •Инженерные психологи: алгоритмизация деятельности — наше спасение!
- •Работники образования: алгоритмизация — это хорошо!
- •Кто же прав: декларативисты или императивисты?
- •Эргономический анализ проектно-конструкторской деятельности
- •Подводные камни проектно-конструкторской деятельности
- •Почему взорвался Чернобыльский реактор? Традиционный подход к анализу причин чернобыльской аварии
- •Возможна ли гарантоспособная деятельность?
- •Принцип проектирования гарантоспособной деятельности
- •Гарантоспособный совокупный работник
- •Главное зло — плохо спроектированная деятельность творческого персонала
- •Сон разума рождает чудовищ
- •Интенсификация интеллекта и языки программирования
- •Улучшение работы ума — проблема номер один
- •Глава 19: Возможна ли эргономизация математики?
- •Почему Джойн фон Нейман провалился на экзамене?
- •Существует ли пропасть между математикой и эргономикой?
- •Алгебра Диофанта
- •Эргономический анализ алгебры Диофанта
- •Эргономизация алгебры после Диофанта
- •Осознание полезности эргономического поворота в математике
- •Эргономическая победа Лейбница
- •Методологическая ошибка историков математики
- •Аналогия между математической Диосценой и панелью отображения информации
- •Математическая и эргономическая эффективность
- •Как повысить производительность математического труда?
- •Два метода визуализации математики
- •Проект «Когнитивный стиль»(cognistyle)
- •Пример математической визуализации с помощью методаCognistyle
- •Глава 20: Можно ли стать интеллектуальным суперменом?
- •На пороге создания теории улучшения работы ума
- •Человеческий мозг нужно грамотно проектировать
- •Разгадка тайны человеческого интеллекта
- •Развитие и интенсификация интеллекта
- •Знаковая и предметная информация
- •Знаковое и предметное обеспечение информатики
- •Знаковая и предметная программа
- •Переломная веха в истории информатики
- •Одноглазые миссионеры, или заброшенное дитя информатики
- •Когнитивная письменность — новый способ представления знаний
- •“Кастрированный” интеллект
- •Что такое проектоника?
- •Проектоника и искусственный интеллект
- •Особенности проектоники
- •Микроинформация и микроителлект
- •Стратегическая интеллектуальная инициатива
- •Дорога в будущее(Вместо заключения) Интеллектуальные трудности как глобальная проблема
- •Вызов интеллектуального терроризма
- •Бессилия интеллекта
- •Цель — значительное улучшение интеллекта
- •Список литературы Интеллектуальный терроризм: фантазия или реальность?
- •Глава 1
- •Глава 3
- •Глава 5
- •Глава 6
- •Глава 13
- •Глава 16
- •Глава 17
- •Глава 18
- •Глава 19
- •Глава 20
- •Internet: http://www.Delo.Ane.Ru
Спецификации программ – вот главный «Гадючник»!
Со временем стало ясно, что одетые в “шапки-невидимки” ошибки в спецификациях наиболее коварны и представляют собой основную опасность. Они практически неуязвимы для лобовой танковой атаки массированного тестирования. Однако наиболее сенсационным стал вывод о том, что подготовка спецификаций — один из основных источников ошибок. Выяснилось, что на устранение ошибок в требованиях на программы уходит в среднем 82% всех усилий, затраченных коллективом разработчиков на устранение ошибок проекта, тогда как на устранение ошибок кодирования — 1%.
Ошибки в спецификациях обнаруживаются обычно лишь после окончания приемосдаточных испытаний разработанной системы. Они “всплывают как мины на фарватере, уже на стадии внедрения и сопровождения готового программного продукта в организации-заказчике” (Г. Громов, 1993).
Проблема спецификаций — одна из центральных в программировании. Джеймс Мартин пишет: “То и дело встречается одна и та же печальная история: после нескольких лет напряженной разработки системы обработки данных конечные пользователи заявляют, что это вовсе не то, что они хотели... Обычная реакция разработчиков на такую скверную ситуацию — заявление, что требования к системе не были определены пользователем достаточно полно. И это несмотря на то, что требования к системе иногда представляются в виде многих томов документации”.
Что же является причиной ошибок в спецификациях? Рассмотрим вопрос на примере разработки АСУ технологическими процессами атомной электростанции (АСУ ТП АЭС). Заказчики (разработчикиАЭС) прекрасно знают “физику процесса”, т. е. технологию работы реакторного и турбинного отделений и других систем АЭС, но, к сожалению, не являются профессорами по части АСУ и программирования. Исполнители (разработчики АСУ ТП АЭС), наоборот, детально знакомы с компьютерами, программированием, особенностями построения систем управления, но, увы, мало что смыслят в реакторах, спецводоочистке и прочих секретах АЭС. Таким образом, проблема состоит в том, что те и другие должны научиться понимать друг друга. Для этого нужно произвести взаимное обучение, взаимный обмен знаниями, которые обычно представлены в виде той или иной документации. Успех взаимного обучения во многом зависит от когнитивныхсвойств используемого профессионального языка (языка представления знаний). Очевидно, что речь идет о чрезвычайно тонких, деликатных и сложных когнитивных проблемах, в первую очередь, о проблеме понимания.
Проведенный анализ позволяет сделать два замечания:
ошибки в спецификациях представляют собой одну из наиболее сложных проблем теории и практики программирования;
нерешенность этой проблемы связана с целой гаммой причин, среди которых не последнее место занимает недооценка когнитивных проблем и отсутствие эффективных языковых средств для облегчения и улучшения работы ума и решения проблемы понимания.
Спецификации программ и методология rad
В методологии RADиспользуется весьма оригинальный подход к проблеме спецификаций — что-то вроде “умный в гору не пойдет, умный гору обойдет”. В самом деле, зачем создавать трудоемкие бумажные спецификации, если при наличииCASE-инструментов гораздо проще получить работоспособный прототип системы!
Новый подход тесно связан с понятием “качество программного продукта”. По мнению Джеймса Мартина, раньше большинство организаций пользовались неудачным определением этого понятия. Они понимали его как “максимально возможное соответствие письменным спецификациям”. При традиционном подходе спецификации, подписанные пользователем, замораживались на весь период, пока выполнялись проектирование, кодирование и тестирование. Зачастую это приводило к тому, что внесение изменений в спецификации запрещалось на срок до восемнадцати месяцев и разрешалось лишь после запускасистемы в работу. Естественно, за это время бизнес-требования к проектируемой системе успевали существенно измениться, а созданная система полностью игнорировала этот факт! Так что заказчик был вынужден начинать работу с заведомо непригодной системой, ибо она учитывала не все, а лишь часть его требований, не говоря уже об ошибках в спецификациях, вызванных просчетами пользователя, в связи счем часть исходных требований была неточна, а многое вообще упущено из виду.
Так было. Однако методология RADдает новое определение качества программ, понимая его как “максимально возможное удовлетворение истинных бизнес-требований (требований пользователя) на момент предъявления работающей системы заказчику”. Чтобы этого добиться, пришлось многое изменить: резко увеличить скорость разработки с помощьюI-CASE-инструментов и, сверх того, радикально улучшить взаимоотношения разработчика и пользователя. Если раньше пользователю “выкручивали руки”, заставляя подписывать бумажные спецификации, которые он плохо понимал, то теперь ситуация изменилась. После короткой серии четко организованных начальных ознакомительных переговоров, результаты которых немедленно вводятся в компьютер, разработчик быстро создает компьютерный прототип системы и немедленно передает его пользователю. Последний, сидя за компьютером, пробует проект “на зуб”, осознает свои заблуждения и направляет разработчику ответную порцию уточнений. Разработчик быстро изменяет прототип и тут же выдает пользователю усовершенствованную версию. Подобная игра в пинг-понг между разработчиком и пользователем повторяется несколько раз и приводит к тому, что прототип постепенно превращается в работающую систему.
Главная хитрость в том, что пользователи больше не должны покупать кота в мешке и подписывать кишащие ошибками бумажные спецификации (разобраться в которых — выше их сил). Они ставят подпись на проекте, полученном с помощью инструментария I-CASE, который вполне доступен их пониманию и который они могут профессионально оценить. Таким образом, действия пользователя, связанные с контролем проекта, имеют компьютерную точность. Участвуя в отработке проекта за экраном компьютера, пользователь гораздо глубже вникает в детали, чем при умозрительном анализе бумажных спецификаций. Изложенный метод иногда называют “раннее прототипирование при спиральном цикле разработки”, потому что прототип тестируется заказчиком на каждом витке спирали, чтобы снизить вероятность ошибки в законченной системе.
Нет сомнения, что перечисленные новшества весьма полезны. Однако нельзя забывать два обстоятельства. Во-первых,RAD— это не общая, а частная методология, так как она применима не к любым системам, а лишь к системам определенного класса (бизнес-приложениям). Во-вторых, наряду с достоинствами, методологияRADимеет и существенные изъяны. К ним относятся недооценка важности проблемы улучшения работы ума, проблемы понимания и когнитивно-эргономического подхода к проектированию языковых средств. Вследствие этого графические и иные средстваRADимеют слабые места и нуждаются в улучшении.
По мнению автора, неумение осознать и поставить во главу угла приоритетную роль проблемы улучшения работы ума и проблемы понимания является общим недостатком многих современных подходов к созданию языковых средств проектирования и программирования.