12.1.1. Организация пакетов программ.
Можно выделить следующие уровни в организации пакетов программ.
Первым уровнем организации пакета является пакет простой структуры, представляющий собой библиотеку модулей, под которыми здесь понимается процедура, подпрограмма или программа на языке программирования высокого уровня (ФОРТРАН, ПЛ/1), удовлетворяющие некоторым дополнительным ограничениям, наличие которых обеспечивает концептуальное единство пакета. Наиболее важными ограничениями такого рода являются ограничения на структуру размещения в памяти основных информационных единиц, необходимые для согласования входных и выходных данных различных модулей. Например, требуется, чтобы матрица данных на входе всех модулей, ее использующих, представлялась в виде двумерного массива с расположением объектов по строкам (или по столбцам). Другие ограничения связаны со способами передачи информации (например, допустимость или запрет переменных внешнего типа), с использованием операторов ввода-вывода, со способом аварийного завершения работы модуля. Подпрограммы в этих пакетах имеют также согласованную документацию. Пакет простой структуры может использоваться как в виде библиотеки исходных модулей (на программном языке высокого уровня), так и в виде библиотеки загрузочных модулей, полученных в результате компиляции и редактирования соответствующих исходных модулей. Примером пакета простой структуры является Пакет научных подпрограмм (ПНП) на Фортране для ЕС ЭВМ [55], поставляемый обычно именно в виде загрузочных модулей. Описания интересующих нас разделов ПНП содержатся в [вып. 2], [вып. 10]. Разработан и аналог ПНП на ПЛ/1 (см. [вып. 14]). Прообразом для версии ПНП на Фортране явился пакет SSP фирмы IBM, а для версии ПНП на ПЛ/1 — версия SSP на ПЛ/1. В настоящее время состав процедур по ПС в ПНП существенно расширен по сравнению с исходными пакетами SSP, особенно в области обработки многомерных данных.
Помимо чисто статистичеcких программ, эти пакеты содержат еще подпрограммы из многих других разделов вычислительной математики — линейной алгебры, интерполяции и экстраполяции табличных функций и т. д.
Использование пакета простой структуры требует от пользователя достаточно хорошей программистской подготовки и состоит в отборе подходящих модулей и в ручном (т. е. осуществляемом самим пользователем) составлении головной программы на языке программирования высокого уровня, организующей вызов отобранных модулей в определенном порядке, размещение и ввод-вывод данных. Язык пользователя на этом уровне образует язык программирования высокого уровня (Фортран, ПЛ/1), язык обращения к операционной системе и языковые средства, введенные самим пользователем для управления созданной программой.
Существенно более высокий уровень организации представляют собой пакеты, состоящие из набора программ, готовых к выполнению, управляемых единым для всех программ входным проблемно-ориентированным языком и имеющих унифицированный ввод-вывод данных. На этом уровне организации появляется возможность создания сравнительно просто управляемых средств манипуляции с данными, их ведения и документирования.
Программы пакета составлены из модулей, которые, как правило, берутся из библиотеки модулей, организованной, как описано выше (пакет простой структуры). Для уменьшения требуемых ресурсов основной памяти программы обычно имеют оверлейную структуру.
Внесение изменений для пользователя в такие программы практически невозможно, за исключением предусмотренных заранее случаев изменения допустимого объема памяти, отводимой под данные, и включения по определенным правилам некоторых процедур пользователя на языке Фортран или ПЛ/1, например для преобразований признаков. Тем не менее благодаря наличию гибкого входного языка и возможности просто составлять многоэтапные процедуры обработки из последовательности программ пакета такие пакеты позволяют удовлетворить подавляющую часть потребностей пользователя по обработке данных.
В то же время сами эти пакеты влияют на ход статистического исследования, определяя составом допустимых процедур и требованиями на входные данные форму подготовки и, в значительной степени, сбора и накопления данных. Работа с таким пакетом доступна пользователю, не обладающему подготовкой в области программирования, хотя обычно необходимо знание некоторого минимального объема языковых средств для общения с операционной системой.
Одним из известных пакетов такого типа является BMDP, разработанный в США. Мы будем рассматривать далее две версии этого пакета — версию 1975 г. [99], адаптированную в СССР для ЕС ЭВМ, и версию 1979 г. [100], существенно расширенную по сравнению с версией 1975 г. Далее для обозначения соответствующих версий будем писать BMDP 75 и BMDP 79.
Другим пакетом такого рода является пакет Программ по прикладному статистическому анализу (ППСА) [67], разработанный в ЦЭМИ АН СССР. Пакет ППСА отличается от BMDP составом реализованных методов обработки, входным языком, организацией и документированием данных, а также организацией программ. Если в BMDP каждая программа реализует только один метод обработки, то ППСА использует тематически-ориентированные (ТО) программы [9]. Каждая из ТО-программ, по существу, является пакетом программ для решения некоторого подмножества задач ПС (оценивания, регрессионного, дискриминантного анализов и т. д.). Подмножества модулей, используемые различными ТО-программами, частично пересекаются. Так, все программы эксплуатируют одни и те же модули ввода и трансляции предложений входного языка, ввода данных, вывода данных в виде таблиц и графиков и т. д. Организация связей между модулями в ТО-программе позволяет создавать простую оверлейную структуру. Во многих случаях использование ТО-программ уменьшает затраты усилий пользователя по созданию многоэтапных процедур обработки,
Дальнейшим развитием концепции ТО-программ (в отношении способа организации пакета программ, но не исторически) являются пакеты программ, у которых последовательность необходимых процедур обработки создается на основе анализа предложений входного языка пакета, описывающего задание пользователя. Способы реализации этого подхода могут быть самыми различными.
Из зарубежных пакетов к этому типу относятся, например, пакеты P-STAT [132], SPSS [135], а из пакетов, разработанных в нашей стране, — СОД-ГС [68], ОТЭКС [66].
Внешне, для пользователя, работа с пакетами такого типа организации мало отличается от работы с пакетами типа BMDP или ППСА. Поэтому в дальнейшем эти способы организации пакетов мы различать не будем, именуя условно пакеты из обеих групп просто пакеты программ и отличая их от пакетов (библиотек) подпрограмм типа ПНП. Все упомянутые выше пакеты предназначены для ЕС ЭВМ или IBM-380/370. Исключение представляет версия ПНП на Фортране, которая может быть использована (в виде исходных модулей) на ЭВМ БЭСМ-6 и «Минск-32». Из пакетов программ, предназначенных для БЭСМ-6, отметим пакет СОРРА-1, направленный для решения задач многомерной классификации и регрессии, и пакет DIAS [82].