sotrud.ru 1

Г Л А В А 2

МОЖНО ЛИ СОЗДАТЬ ЯЗЫК,
УЛУЧШАЮЩИЙ
ПОНИМАНИЕ И ВЗАИМОПОНИМАНИЕ?


— ...Скажите, отчего разбрелись все ученые в разные стороны и каждый говорит языком, которого другой не понимает? Отчего мы все изучили, все описали и почти ничего не знаем?

— Извините, это не мой предмет, я только собираю факты — я статистик.

Владимир Одоевский

ПОЧЕМУ СПЕЦИАЛИСТЫ НЕ ПОНИМАЮТ
ДРУГ ДРУГА?


В 1880 г. баварский ксендз Иоган Шлейер, стремясь улучшить взаимопонимание между людьми, придумал язык “воляпюк” (искаж. от world speak, что значит “всемирный язык”). Чуть позже варшавский врач Земенгоф изобрел эсперанто. Хотя эти проекты всемирных языков
не оправдали надежд, однако они сыграли положительную роль, ибо приковали внимание к назревающей проблеме — созданию искусственных языков.

Сегодня, когда число искусственных языков программирования перевалило за три тысячи, проблема взаимопонимания между людьми почти так же далека от решения, как и во времена Шлейера и Земен­гофа. Да, действительно, языки Бейсик, Паскаль, Си, Си++, Ява и многие другие давно стали всемирными языками. Однако популярность языков вовсе не говорит о том, что написанные на них программы
понятны всем, кому это нужно. Многие программисты жалуются, что свою собственную программу они с трудом понимают через полгода,
а то и через месяц. А если речь идет о чужой программе? Тогда становится совсем тяжко. Нередко бывает легче написать свою программу, нежели разобраться в том, что делает чужая. Поэтому среди требований, предъявляемых к современным алгоритмическим языкам, на первое место все чаще выходит понимаемость программ (comprehensibility), которая определяется как свойство программы минимизировать интеллектуальные усилия, необходимые для ее понимания.

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


ЯЗЫК ДРАКОН КАК “ЭСПЕРАНТО”
ДЕЛОВОГО МИРА


А нельзя ли взмахнуть волшебной палочкой и, используя обширный опыт создания языков программирования, придумать всемирный язык принципиально нового типа — образно говоря, эсперанто делового мира, облегчающий взаимопонимание специалистов разных профессий? Трудность в том, что подавляющее большинство специалистов использует для общения не языки программирования, а совсем другие средства.

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

Задача формализации и унификации множества профессиональных языков с целью обеспечить эффективное взаимопонимание между специалистами любых профессий, включая программистов, является, хотя
и важной, но, увы, неразрешимой. Положение в корне меняется, если ограничиться императивными профессиональными знаниями. Именно эту задачу решает язык ДРАКОН. Он построен путем формализации, неклассической структуризации и эргономизации блок-схем алгоритмов и программ, описанных в стандартах ГОСТ 19.701–90 и ISO 5807–85.

ЧТО ТАКОЕ ИНТЕЛЛЕКТУАЛЬНОЕ
ВЗАИМОПОНИМАНИЕ?

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


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

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

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

В ЧЕМ ОСОБЕННОСТЬ ДРАКОНА?

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

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


ВЫВОДЫ

При создании языка ДРАКОН были выдвинуты следующие гуманитарные требования.

1. Улучшить работу человеческого ума.

2. Предложить эффективные средства для описания структуры деятельности.

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

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

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

6. За счет использования когнитивно-эргономического подхода к проектированию синтаксиса и семантики добиться кардинального улучшения качества программного обеспечения по критерию “понимаемость программ”.