Около двух лет назад институт IDA (Institute for Defense Analyses) МО США получил правительственный заказ на проведение исследовательских работ. Целью их было выяснить, какие языки программирования реально используются американским МО и какие из них наиболее приемлемы для военных структур. Частично результаты этого исследования были опубликованы в Сети.
IDA провел титаническую работу, проанализировав практически все компьютерные системы, используемые МО США как непосредственно в военных целях, так и для создания автоматизированных систем поддержки документооборота, сбора статистики и подготовки отчетов военных ведомств (В-АСУ). Было просмотрено более 200 млн. строк исходных текстов, написанных на 37 языках программирования. Ниже приведена обобщенная статистика этих исследований.
Более 80% всех систем, используемых МО США, написано на универсальных языках
3-го поколения. Но для военных приложений (бортовые системы, моделирование военных действий и т. д.) и В-АСУ списки применяемых языков сильно разнятся. Лидером как по числу написанных строк кода, так и по частоте использования в военных приложениях оказалась Ада 83. С приличным отставанием от нее идет язык Си 89. За ним также с отставанием следуют сразу три языка - Фортран, CMS и Jovial. И совсем сильно отстали Си++, Паскаль, Бейсик, Кобол и ПЛ/1. В то же время во многих военных приложениях используются языки низкого уровня - ассемблеры и машинные коды. Это объясняется тем, что необходимо программировать нестандартные микропроцессоры, устанавливаемые на боевой технике. Для них из соображений секретности нередко не существует даже кросс-платформных компиляторов.
В В-АСУ первым среди языков, на которых было написано наибольшее число строк кода, стал любимец американских программистов Кобол (версия Cobol 85). Однако наиболее активно используемый язык - Ада 83. Остальные языки сильно отстали от этой парочки.
Многие приложения класса В-АСУ созданы с использованием ПО 4-го поколения - CASE-системы, языки быстрой разработки (RAD) и т. д. Это объясняется большими объемами создаваемых программных комплексов - от 100 тыс. до 5 млн. строк кода. Военные приложения значительно меньше - они, как правило, не превышают 500 тыс. строк, что связано с довольно сложной логикой программы и отсутствием больших объемов обрабатываемых данных.
На основе проведенных исследований IDA разработал рекомендации для МО США. Конкретные результаты анализа являются конфиденциальными, но даже общие выводы основываются на значительно более глубокой информации, чем может показаться на первый взгляд, и к ним неплохо присмотреться повнимательнее. Ключевая мысль всех рекомендаций IDA - стремление к достижению максимальной совместимости разрабатываемых программных систем.
При создании ПО, требующего высокой надежности, рекомендовано использовать старые версии наиболее распространенных языков 3-го поколения. Все нюансы работы компиляторов 5 - 10-летней давности хорошо известны, и для них имеется большое количество инструментальных библиотек. Необходимо напомнить, что данные рекомендации обращены в первую очередь к военным разработчикам. Может показаться немного странным призыв использовать старые компиляторы, но речь идет преимущественно не о коммерческих реализациях для персоналок, а о промышленных кросс-платформных трансляторах, позволяющих получать код для других операционных систем. В специфических военных приложениях ОС вообще перестает играть какую-либо роль, а для создания приложений уровня В-АСУ удобнее всего использовать платформно-независимые CASE-системы.
Особое внимание рекомендуется уделить возможности конвертации программных продуктов из одних языков в другие на уровне исходных текстов. При этом планируется достичь полной переносимости разрабатываемого ПО. Необходимость использования языков, соответствующих принятым много лет назад стандартам, гарантирует максимальную эффективность работы программ преобразования исходных текстов. При этом, что немаловажно, появляется дополнительная возможность создания стандартных библиотек с тысячами компонентов и их использования любым подразделением МО США без дополнительных модификаций.
70% приложений, применяемых американским военным ведомством, созданы с использованием более чем одного языка программирования. Это положительный фактор на пути к полной интеграции всех военных систем. С его учетом решено более пристальное внимание обратить на организацию единообразия используемых компиляторов. В различных подразделениях МО нередко используется несколько версий одного языка. Например, было обнаружено более 10 несовместимых версий Jovial. Это приводит к потере переносимости приложений и к необходимости закупок дополнительных трансляторов.
Для конкретного боевого применения наиболее оптимальными признаны, помимо старых версий универсальных языков 3-го поколения, малоизвестные и по-своему уникальные языки, часто обладающие мощными возможностями, позволяющими решить конкретную задачу очень эффективно, а также военно-ориентированные языки. При выборе подходящих систем программирования одним из важных критериев отбора является наличие программ преобразования исходных текстов на другие языки.
Стремление к единообразию в программировании всегда способствовало успеху. Похоже, в государственных структурах первыми это поняли американские военные.
Сергей Бобровский
К Сергею Бобровскому можно обратиться по адресу: softart@extranet.ru.