Структурирование данных исторического источника. Компьютерное моделирование исторических процессов и явлений (1998)

Историческая информатика: Учебное пособие / Под ред. В.Н. Сидорцова, Л. И. Бородкина. Минск, 1998. С. 73 – 94, 161 – 188

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

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

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

Вместе с тем каждое дело имело некоторые отличия, главным образом — в степени полноты сведений (наличие или отсутствие фотографии, дополнительные сведения о предыдущей деятельности осужденного, его участии в гражданской войне и других боевых действиях). Эти сведения не имели непосредственного отношения к цели, с которой создавалась база данных. Встал вопрос: или проигнорировать их совсем, или все же каким-то образом зафиксировать? Учитывая, что база в дальнейшем могла быть использована не только в узкопрактических целях, но и как именной указатель для всего комплекса документов, на основании которого она создавалась, было решено сохранить упоминания о наличии дополнительной информации, не раскрывая детально ее смысл.

Непосредственную разработку структуры БД осуществлял кандидат исторических наук В.И.Адамушко [1]. Детальный анализ исходных документов позволил определить тот набор смысловых единиц, который давал возможность однозначно идентифицировать личность и с необходимой полнотой отражать содержание документов. На основании такого анализа была создана карточка учета необоснованно репрессированного, которая затем рассылалась для заполнения во все архивные учреждения, где имелась информация о таких лицах. Карточка содержала 34 основных и 2 дополнительных графы, которые точно соответствовали полям реляционной базы данных. В архивах карточки заполнялись от руки или на пишущей машинке, а затем операторы ЭВМ вводили их в машину через клавиатуру.

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

Остальные данные о человеке вносились в следующие 9 полей (с 8-го по 16-е включительно): национальность, социальное происхождение, партийность, образование, должность, место работы, адрес проживания накануне ареста, состав семьи, факт участия в революции и боевых действиях после 1917 г. Набор этих полей определялся характером источников, поскольку именно эти сведения подлежали обя- зательному фиксированию при заведении уголовного дела.

Следующая группа из 7 полей (с 17-го по 23-е) касалась обвинения и приговора: дата ареста, дата осуждения, каким органом осужден, характер обвинения, статьи уголовного кодекса, мера наказания. Поскольку одинаковые меры наказания могли сопровождаться или не сопровождаться конфискацией имущества (а это имело определенные социальные последствия), 23-е поле было создано для отражения того, имело ли место наказание конфискацией.

В 24-м поле обозначалось место, где осужденный отбывал наказание, если был приговорен к лишению свободы или высылке. Дальнейшая его судьба могла сложиться двояко: он мог выйти на волю или умереть в месте заключения, В поле 25 заносилась дата освобождения, а в поля 26 – 29 – соответственно дата смерти, ее причина, место погребения. Эти же поля заполнялись в случае, если мерой наказания был расстрел.

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

В поле 31 заносился факт наличия или отсутствия в личном деле фотографии репрессированного. Два следующих поля предназначались для ссылок на архив, где хранились документы, и на архивный шифр соответствующего дела. Наконец, в два дополнительных поля заносились фамилия составителя карточки и дата заполнения.

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

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

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

В качестве примера рассмотрим базу данных о населенных пунктах Беларуси, упомянутых в документах Великого княжества Литовского XV – XVI вв. Эта работа осуществлялась в 1993–1995 гг. на основании гранта Фонда фундаментальных исследований Республики Беларусь временным творческим коллективом во главе с М.Ф.Спиридоновым (Институт истории НАН Беларуси). База создавалась с помощью СУБД FoxPro.

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

Это позволило использовать стандартную реляционную структуру. Ее 8 ключевых полей были наполнены современной информацией о каждом селении: нормативное название на русском и белорусском языках, тип (город, деревня), административная функция (центр района, сельсовета), административная принадлежность к сельсовету, району, области, а также координаты населенного пункта на карте масштаба 1:200000.

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

Далее шла группа полей, призванных отразить дополнительную информацию о селении, если она имелась в источнике. Естественно, при таком подходе удавалось фиксировать только определенный набор сведений, игнорируя остальные. В этот набор входили:
- Событие, в связи с которой упомянуто селение. Оно определялось очень схематично: основание селения, его пожалование, дар, раздел, конфликт владельца с другим индивидом и т.п.
- Наличие сведений о размерах селения и в какой форме они приведены (количество дворов, служб, жителей и т.п.).
- Наличие иных сведений о селении (упоминание замка, церкви, рынка и т.п.).
- Наличие упоминаний о связанных с поселением географических объектах (реках, озерах, пущах и т.п.).
- Упоминание в источнике этнонимов (литвы, русских, татар и т.п.).

Все вышеуказанные поля были призваны не отражать сущность имеющейся информации, а только сигнализировать о ее наличии в источнике. Предполагалось, что за более детальными сведениями исследователь все равно должен будет обратиться непосредственно к документу. Таким образом, БД выполняла в первую очередь функцию информационно-поисковой системы. Чтобы все же дать пользователю минимальное представление о событии, было предусмотрено отдельное символьное поле для записи сжатого резюме. Однако пересказ смысла события был предельно лаконичным, поскольку СУБД FoxPro налагала ограничения на длину символьного поля – оно не должно было превышать 256 знаков.

Для ссылки на документ были зарезервированы два поля. В одном из них указывалась архивная ссылка (архив, фонд, опись, дело, лист), в другом – библиографическая ссылка на издание, если документ был опубликован. Еще два поля предназначались для служебных пометок: фамилия исследователя, обработавшего документ для внесения в БД, и дата создания записи.

На этом примере можно видеть некоторые недостатки одно-файловой реляционной БД. 8 первых полей-идентификаторов оказываются избыточными во всех случаях, когда об одном населенном пункте имеется несколько упоминаний. В то же время просто отказаться от них нельзя, так как существуют одноименные селения, которые легко спутать. Избыточность заключается и в наличии полей, которые заведомо будут пустовать в большинстве записей (например, географические объекты или этнонимы, которые сравнительно редко упоминаются в исторических документах).

Еще более сложный случай связан с обработкой таких массовых исторических источников, как церковные метрические книги и подушные переписи населения (так называемые «ревизские сказки»). Со- хранилось большое число таких документов, которые на территории Беларуси относятся преимущественно к XVIII – XIX вв. и содержат сведения об именах, месте жительства, датах основных жизненных событий (рождения, браки, смерти) миллионов людей всех сословий. Для большинства простых людей (крестьян, мещан) это, как правило, единственные письменные свидетельства их существования.

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

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

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

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

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

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

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

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

Добиться этого можно путем создания сложной многофайловой конструкции, в частности, средствами СУБД Paradox. Но не менее эффективным, а в определенных моментах гораздо более простым оказывается использование иерархической СУБД КОНСТРУКТОР, как это и было сделано в Национальном историческом архиве Беларуси при создании поисковой системы "Родовод".

Система предусматривает четыре иерархических корня. Из них три основных, именуемых "Метрические книги", "Ревизские сказки" и "Инвентари", имеют сходную структуру согласно системе описания архивных документов. Ветви корней соответствуют фондам, состоящим из отдельных описей и дел. Объект "дело" имеет несколько характеристик, в сумме образующих заголовок архивного документа: дату, язык, а также сведения о том, какую территорию охватывает содержащаяся в нем информация (губерния, уезд, церковный деканат).

Четвертый корень – "Беларусь" – делится на 6 ветвей, соответствующих областям, каждая из которых в свою очередь – на районы и сельсоветы, и содержит названия всех населенных пунктов современной Беларуси, сгруппированных согласно их административно-территориальной принадлежности. Каждый населенный пункт представляет собой объект, "привязанный" к определенной ветви. Этот корень понадобился для того, чтобы можно было для каждого населенного пункта, упоминаемого в исторических документах, дать ссылку на его современное название и административную принадлежность.

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

Ниже объектов на уровне дел структура разветвляется в каждом корне по-разному. Для метрических книг одному объекту "дело" может подчиняться несколько объектов "приход", а для ревизских сказок и инвентарей — объекты "имение", каждый из которых в свою очередь включает несколько объектов "селение".

Объекты "селение" или "приход" соответствуют структурным единицам, логически выделяемым внутри реального документа. Физически им соответствует какое-то число листов архивного дела, на которых записана информация о данном объекте. Эта информация заносится в характеристики объектов. Такими характеристиками являются историческое название селения (центра прихода) в том виде, как оно записано в документе, и ссылка на объект в корне "Беларусь", отражающий современное название и административную привязку.

Еще одной характеристикой является реляционная таблица, каждая строка которой соответствует одной записи документа, а столбцы – смысловым полям записи. Например, каждая таблица записей о крещениях содержит такие поля, как номер листа документа, дата записи о крещении, дата рождения, место рождения, фамилия новорожденного и т.п.

Таким образом, основная информация базы данных содержится в большом числе таблиц, аналогичных файлам реляционной БД. Но каждая из таких таблиц является лишь одной из характеристик объекта "приход" или "селение". Наряду с ней существуют другие характеристики, содержащие дополнительную информацию об объекте, ссылки на другие объекты и т.д. К тому же значительная информация содержится уже в самом способе иерархической увязки объектов одного с другим. В данном случае нет необходимости указывать в характеристиках архивный шифр каждого документа (фонд, опись, дело) и его тип (метрическая книга, инвентарь), так как эти сведения определяются по принадлежности объекта к ветвям и корню. Наконец, одной из характеристик объекта может быть адрес графического файла, содержащего сканированное изображение страницы с записями.

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

Заполнение и использование баз данных. Создание структуры базы – лишь первый шаг, поскольку эту структуру необходимо заполнить информацией. Этот процесс может быть механическим, сравнимым с работой машинистки, лишь в том случае, когда в базу просто перекачиваются сведения из однотипных анкет, хотя и здесь возможны "подводные камни". В большинстве случаев перенесение информации из документа в базу одновременно является и интерпретацией источника, т.е. творческим процессом.

Непосредственное заполнение базы "с листа" документа применяется редко. Обычно этот процесс разбивается на два этапа: историк-исследователь обрабатывает документ и заполняет входные кар- точки, структура которых совпадает со структурой базы данных. Затем оператор ЭВМ, имеющий опыт работы с СУБД, переносит данные с карточек в компьютер. Такое разделение труда позволяет историку це- ликом сконцентрироваться на интерпретации текста, что обычно требует специфических навыков.

В вышеприведенном примере с БД по историческим населенным пунктам Беларуси сложности могут возникнуть при заполнении практически каждого поля. Например, тип населенного пункта выражен в источнике не явно, а косвенно – его жители названы мещанами. Исследователь, обрабатывающий документ, должен понимать, что мещанами могли быть названы только жители местечка, следовательно, данный населенный пункт принадлежит именно к этому типу поселений. Отдельную проблему составляет то, что в документах Великого княжества Литовского понятия "место" (город) и "местечко" не всегда четко различались.

При отождествлении населенных пунктов нужно учитывать разновариантность их написания (относятся ли, например, встреченные в документах названия "Чаусы" и "Чаусовичи" или "Фастовичи" и "Хвастовичи" к одному населенному пункту?). То же происходит и с именами: один и тот же человек может в одном случае фигурировать как Иосиф, в другом — как Осип, Язеп или Юзеф. С другой стороны, проблема тезок и однофамильцев постоянно должна оставаться в поле зрения исследователя. При идентификации может иметь значение возраст, имя жены и т.п. Каждый случай требует индивидуального подхода.

Принцип обработки документа и его перевода в БД можно видеть на конкретном примере, относящемся к базе по историческим населенным пунктам. Ниже приводится с некоторыми сокращениями текст достаточно типичного документа из архива канцелярии Великого княжества (так называемой "Литовской метрики").

"Пришчей князю Василю Лвовичу Глинскому на имене Лосо-синую в Слонимском повете. Сам Александр, Божю милостю король полский, великий князь литовский. Во имя Божее. Аминь. Чыним знаменито сим нашим листом, хто на него посмотришь, обо, чтучи его, вслышитъ, нинешним и напотом будучим, кому будешь потреба того ведати, иле, вбачивши верную (...) службу (...) подстолего нашого, наместника василишского, князя Василя Лвовича Глинского, (...) за его верную спужбу пожаловали есмо его, дали ему двор наш в Слонимском повете, на имя Лососиную, со всими того двора слугами путными и людьми тяглыми, и слободчичи, што на воли седять, и данники, и куничники, (...) и со всим правом и панством, ничого не оставляючи на нас и на наши наследки, бо дали есмо ему тот двор наш Лососиную со всим по тому, как держал князь Михаила Борисович Тверский. А што есмо придали были князю Михаилу Тверскому села Белавичи а Гощово, то есмо тыми разы привернули зася к Слониму, князю Василю в то ся ненадобе всупати (...). А на твердость того и печать нашу казали есмо привестити к сему нашому листу. Писан в Кракове, в лето 7013, месяца декабря 13 день, индик 8..."

В документе упомянуты 5 населенных пунктов: Лососиная, Белавичи, Гощово, Слоним и Краков. Поскольку база посвящена белорусским населенным пунктам, польский город Краков можно не считать. На 4 оставшихся необходимо заполнить карточки-анкеты, чтобы затем создать на их основе 4 записи в БД.

Первая наша задача — идентифицировать упомянутые селения. С помощью карт и справочников населенных пунктов нетрудно установить, что Слоним ныне является райцентром Гродненской области. Недалеко от него, в соседнем Ивацевичском районе Брестской области ныне существуют деревни Белавичи и Гощево, а в Пружанском районе – Лососин. Зная историческую географию XVI в. и более позднего времени, опытный исследователь в состоянии установить, что это именно те селения, которые упомянуты в документе.

Затем необходимо заполнить поля – идентификаторы современного состояния для каждого селения. Например, для Лососина мы в графе "Современное название" обозначим его русский и белорусский варианты: Лососин, Ласосін. В графе "тип" обозначим: деревня.

Впрочем, для этого поля уместно применить кодировку, поскольку число типов современных населенных пунктов невелико. Скажем, город можно обозначить цифрой 1, городской поселок – 2, деревню – 3. Затем укажем принадлежность селения к Ворониловскому сельсовету Пружанского района Брестской области и ее координаты на соответствующем листе карты Беларуси масштаба 1:200000. В данном случае это будет лист N-35 XXV согласно унифицированной геодезической нумерации, квадрат 58–48 4- километровой координатной сетки (хотя можно указывать координаты и в градусах широты и долготы).

После этого можно переходить к обработке исторического документа. Сразу же мы сталкиваемся с тем, что дата в нем приведена от сотворения мира, а не от Рождества Христова. Ее необходимо перевести в современное летоисчисление, что для историка не должно составлять труда. 7013 году от сотворения мира будет в данном случае соответствовать 1504. В соответствующее поле типа "дата" мы внесем запись: 13.12.1504. Далее зафиксируем название селения в той форме, которая приведена в источнике: Лососиная. Тип селения в документе назван однозначно: двор. К тому же оно явно выступает как центр имения, что мы и отметим в соответствующем поле. Оставив незаполненным поле "Административное значение" (поскольку Лососиная явно не была ни центром повета, ни воеводства), мы отметим ее принадлежность к Слонимскому повету.

Интересная проблема возникает при заполнении поля "Тип собственности". Источник фиксирует момент, когда этот тип изменяется: великий князь передает имение, бывшее после смерти князя Тверского государственной собственностью, в частное владение князю Глинскому. Поэтому, строго говоря, мы будем правы, если отнесем его и к государственной, и к частной собственности. Все же будем считать, что момент пожалования с появлением документа уже совершился, и обозначим эту собственность как шляхетскую.

В этом случае нам следует указать имя, титул и должности владельца: Глинский Василий Львович, князь, подстолий, наместник Василишский. Поскольку мы в данном случае исходим из проблемно-ориентированного подхода (нас интересует прежде всего идентификация селений, а не особенности орфографии XVI в.), историческую форму имени и отчества князя ("Василь Лвович") мы преобразуем в унифицированную ("Василий Львович"). Тем самым мы невольно отступаем от буквы документа (в этом и заключается одно из "скользких мест" данного подхода). Зато это позволяет избежать затруднения при поиске, когда компьютер может счесть Василя и Василия разными лицами.

Событие, в связи с которым появился данный документ, мы определим как пожалование (определившись с неким набором возможных событий, в этом поле также можно использовать кодировку: 1 – пожалование, 2 – завещание и т.п.). Следующие поля останутся пустыми, поскольку в документе нет информации ни о реках или пущах, ни о замках и церквях, ни об этнонимах.

Далее надлежит составить резюме, которое давало бы минимальное представление о сути события. Его можно сформулировать так: Пожалование Л. кн. Глинскому, как ранее держал кн. Тверской Михаил Борисович, с изъятием сел Белавичи и Готово к Слониму.

Наконец, нам осталось зафиксировать ссылки на первоисточник. В данном случае им является 5-я книга Литовской метрики, хранящаяся ныне в Российском государственном архиве древних актов (РГАДА). фонд 389, опись I, единица хранения 5, листы 317–317-оборот. Документ дважды публиковался, первый раз – в 1-м томе "Актов Западной России", Спб., 1846. с. 365–366. В данном случае мы пользовались повторной публикацией: Lietuvos metrica (1427–1506), kn.5, Vilnius, 1993, с.270. В соответствующих полях мы сделаем ссылки на архивный шифр документа и на то издание, которым мы пользовались при заполнении карточки (или укажем обе известные нам публикации).

Естественно, что при двухэтапном заполнении БД карточки необходимо заполнять очень разборчиво, чтобы избежать по возможности ошибок при вводе. В особо важных случаях, при наличии достаточных ресурсов, может применяться эффективное (хотя и дорогое) средство борьбы с описками и опечатками: каждый документ обрабатывают и переносят на карточки два исследователя независимо друг от друга, а затем два оператора также параллельно вводят в базу данных. Затем обе записи автоматически сверяются на предмет расхождений, которые затем легко можно устранить. Такой прием, в частности, при- меняется в Генеалогическом центре Юты (США), где заполнением баз данных занимается большое число добровольцев.

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

Что касается использования уже заполненной БД. то оно определяется возможностями конкретной СУБД. Правила поиска информации и оформления ее в удобном для пользователя виде практически одинаковы как для исторических, так и для обычных баз.

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

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

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

Понимание того, что "целое больше суммы своих частей", было высказано еще Аристотелем. Однако оформление системного подхода как конкретной методологии началось в процессе преодоления кризиса, охватившего научное познание на рубеже XIX – XX вв. В то время представители разных наук начали независимо друг от друга формулировать принципы, на которых базируется системный подход.

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

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

К середине XX в. оформился ряд дисциплин, рассматривающих общие особенности систем безотносительно к тому, из каких конкретных объектов они состоят. Наиболее известные из них — общая теория систем, разработанная биологом Л. фон Берталанфи, и кибернетика (наука о системах, обменивающихся информацией), созданная Н. Винером.

В социальных науках это направление определяли структурно-функциональный анализ, разработанный этнографами Б.Малиновским, А.Редклифф-Брауном, Т.Парсоном, и структурализм, основные положения которого были сформулированы К.Леви-Стросом.

Результатом этой коллективной деятельности стала кристаллизация общих методологических принципов и понятий, составляющих суть системного подхода [2]. Эти принципы универсальны и не зависят от того, какие виды систем (механические, биологические, социальные и др.) мы рассматриваем. Знание их необходимо каждому историку, тем более применяющему компьютер, который сам является сложной системой для обработки информации. Главное же в том, что и любое историческое явление, и комплекс научных представлений об этом явлении представляют собой системы, а в более широком смысле – составные части единой системы.

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

Существенными понятиями системного подхода являются понятия элемент, структура и функция. Элемент — это наиболее простой объект, определенное количество которых образует систему. В вышеприведенном случае элементом является отдельное бревно. Структура – это способ организации элементов в системе, их связи между собой (нужно отметить, что некоторые научные дисциплины и школы пользуются другой терминологией, называя структуру "организацией", а систему – "структурой"). В отличие от элемента структура нематериальна, ее нельзя потрогать. Но именно она определяет характер системы и ее устойчивость. Все бревна в срубе можно по одному удалить и заменить новыми, структура же сруба останется прежней и сам сруб как система сохранится. Наконец, понятие функции определяет роль, которую отыгрывает в системе каждый элемент. Система в целом тоже может иметь какие-то функции, если рассматривать ее как часть более сложной системы.

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

В системе могут существовать разные виды связей между элементами. Можно выделить такие связи, при которых предыдущий элемент обусловливает состояние или поведение следующего, а сам от него не зависит. Такие однонаправленные связи называются прямыми. Если же следующий элемент не только зависит от предыдущего, но и сам воздействует на него, говорят об обратной связи. Большинство систем, представляющих интерес для историка, являются системами с обратной связью.

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

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

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

Суть различия между замкнутыми и открытыми системами заключается в том, что для первых действует так называемый второй закон термодинамики: эти системы стремятся к равновесному состоянию, при котором уровень упорядоченности внутри них минимален (иначе говоря, к состоянию наибольшего хаоса). Любое внешнее воздействие в такой системе постепенно затухает. Для второго вида систем это правило не является непреложным. При постоянном притоке энергии извне часть этой энергии может не рассеиваться, а идти на самопроизвольное усложнение структуры – самоорганизацию. Как правило, биологические и социальные системы являются самоорганизующимися, так как наблюдается постепенное, но устойчивое усложнение их структуры.

В последние десятилетия бурно развивается научное направление, которое в самом широком смысле можно назвать теорией самоорганизации. У его истоков стояла брюссельская школа физико-химиков во главе с лауреатом Нобелевской премии И.Пригожиным [3].

Эта школа научилась математически описывать поведение систем в процессе непрерывного поглощения и рассеяния (диссипации) энергии, а также закономерности возникающих при этом самоорганизующихся (диссипативных) структур. Очень близкое направление было названо его основателем Г.Хакеном синергетикой (от слова "синергия" — согласованное взаимодействие) [4].

Нетрудно заметить, что теория самоорганизации с ее бурно развивающимся математическим аппаратом представляет несомненный интерес для историков, которые имеют дело с наиболее ярко вы- раженными самоорганизующимися системами. По сути дела, весь процесс человеческой истории является процессом самоорганизации общественных структур в процессе обмена энергией и информацией с внешней средой. Поэтому такой подход представляется более перспективным, чем весьма популярная в последнее время концепция российского историка Л. Гумилева, рассматривающая этносы и государства в понятиях закрытых систем, а историю сводящая к серии затухающих "пассионарных толчков" необъяснимого происхождения [5].

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

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

Модель и моделирование. Под моделью в самом широком смысле понимается любое описание или отображение реальной системы. Таким образом, понятие модели тесно связано с другими понятиями системного подхода, прежде всего – с центральным для него понятием системы. Там, где мы имеем дело с системой, наше представление о ней является ее моделью.

Системы сильно различаются по уровню их сложности. Их модели также могут быть более или менее сложными. Кроме того, последние можно охарактеризовать по характеру отображения: словесные описания, графические изображения, математические формулы и уравнения, реальные физические объекты (уменьшенные или упрощенные аналоги тех объектов, моделями которых они являются). Модели могут быть статичными, когда они отражают неподвижную систему или подвижную в конкретный момент ее существования, и динамичными, действующими, которые позволяют проследить функционирование системы на протяжении определенного времени.

Модель – это инструмент, без которого человек не может обойтись при познании действительности. Она призвана показать, из каких составных частей (элементов) состоит системный объект и каким образом эти части связаны между собой в пространстве и времени. При этом существенными являются те качества вещей, которые обеспечивают их взаимодействие и организацию, другие же качества могут быть проигнорированы. Этим модель отличается от образа объекта. В простейшем примере модель стола, в какой бы форме она ни выражалась, должна отражать тот факт, что стол представляет собой горизонтальную поверхность, приподнятую над полом с помощью специальных элементов (ножек). При этом несущественно, есть ли на этих ножках царапины и покрашены ли они. А вот для модели пожарной машины ее красная окраска является существенным моментом, так как несет функциональную нагрузку – информирует о специальном назначении этой машины.

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

Деятельность, при которой создается модель системы, называется моделированием. Виды моделирования можно определить на основании принципов построения модели. Это может быть словесное или концептуальное моделирование, математическое, графическое или физическое (реальное). Все они используются людьми издавна. Но в последние десятилетия, благодаря появлению и бурному прогрессу вычислительной техники, появилась еще одна, весьма специфическая форма – компьютерное моделирование. Суть его в том, что элементам реальной системы соответствуют переменные и массивы в памяти ЭВМ, а связи между ними моделируются в виде компьютерной программы, которая как бы проигрывает поведение системы. Иногда такая программа призвана построить на экране компьютера изображение системы или каких-то ее элементов, но это не обязательно: результатом моделирования может быть, например, получение численных характеристик поведения системы.

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

В таких системах словесная модель обычно непригодна из-за своей громоздкости. Она выглядит примерно таким образом: "если событие А произойдет, то элементы 1, 2 и 3 активизируются, а элемент 4 увеличится в размерах. Если это событие не произойдет, то первые три элемента останутся в покое, а четвертый уменьшится. Если же вместо события А произойдет событие Б, то активизируется только элемент 1..." и так далее. Через несколько шагов и сам автор такого описания будет не в состоянии ответить, как будет выглядеть система при том или ином варианте развития событий.

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

Более эффективной бывает нередко математическая модель, когда поведение объекта выражается посредством формул и систем уравнений. Так, математический аппарат теории вероятностей позволяет описывать системы, переход которых из одного состояния в другое происходит случайным образом. Но язык математических формул эффективно работает только там, где имеется хотя и большое количество, но одинаковых или сходных между собой элементов. Там же, где существует много разных типов объектов, поведение которых нужно описывать по-разному, математические модели становятся громоздкими и требуют долгих и кропотливых расчетов. Не случайно до появления компьютеров ученые эффективно использовали аппарат теории вероятностей и математической статистики при исследовании сравнительно однородных физических и химических объектов. Там же, где речь заходила о гораздо более сложных социальных системах, математика не находила массового применения. Компьютерная программа позволяет сочетать преимущества словесных, графических и математических моделей, в значительной степени компенсируя их недостатки. Словесное описание, пример которого приводился выше, поддается весьма простому и однозначному переводу на компьютерные языки программирования. Оно превращается в инструкцию (последовательность алгоритмов) для ЭВМ, которая со своим огромным быстродействием может последовательно изменять характеристики множества переменных, соответствующие состояниям объектов реальной системы. При этом для однотипных элементов может быть использована единая программа перехода из одного состояния в другое, а для разнородных – разные программы, причем компьютер безошибочно "найдет" в каждом случае соответствующий сценарий и "послушно" выполнит его.

Конечно, описание процесса на языке программирования типа Бейсик или Паскаль получается довольно громоздким. Но выигрыш достигается в другом. Громоздкое словесное описание практически бесполезно, так как каждый, кто попробует его читать и фиксировать результаты в памяти, неизбежно запутается уже после нескольких "если ... то". Компьютер же, работая по такой программе, сможет дать точный ответ, как будет выглядеть каждый элемент системы или все вместе взятые через определенное число шагов при любой последовательности случайных событий. Другими словами, если в словесной или графической модели мы можем или воспроизвести отдельные, случайные варианты поведения системы, или изобразить сразу весь лабиринт возможных сценариев и переходов, то при прогоне компьютерной программы можем каждый раз получать конкретную траекторию движения по этому лабиринту. Более того, современные компью- терные средства позволяют отображать результаты и в графической форме, причем не только на двухмерную плоскость бумаги, но и в трехмерной проекции и в динамике, представляя процесс в виде своеобразного мультфильма. Таким образом, компьютерная модель может действительно сочетать черты словесного описания (которому' соответствует текст моделирующей программы) и графического. Сохраняются и присущие математической модели формулы, описывающие переход модели из одного состояния в другое.

Наконец, компьютер позволяет моделировать сам случайный характер перехода системы из одного состояния в другое. Для этого существует так называемый метод Монте-Карло (он получил название от столицы княжества Монако, известной своими игорными домами). В компьютер закладывается специальная программа – генератор случайных чисел. Она работает таким образом, что, получив на входе какое-то число (например, 100 или 0,25), путем последовательных операций преобразует его в другое число (скажем, 0,135542) или в последовательность никак не связанных между собой чисел.

Обычно генераторы случайных чисел налажены так, что последовательно выдают числа, равномерно распределенные в интервале от 0 до 1. Это значит, что при тысяче срабатываний программы будет получено примерно по 100 чисел в диапазонах от 0 до 0,1 или от 0,1 до 0,2 и т.д. Предугадать каждое конкретное число при этом невозможно. С помощью такого генератора действуют все компьютерные игры, в которых случайными бывают чаще всего координаты появления какого-то объекта на экране или направление его движения.

Строго говоря, генератор выдает не совсем случайные, а псевдослучайные числа, так как их последовательность зависит от того числа, которое было взято первым. Если мы заново запустим программу, задав на входе то же число, что и в первый раз, мы получим точно такую же последовательность. Но эта особенность является скорее достоинством, чем недостатком. Повторения последовательности, при желании, легко избежать, как это и происходит в играх. Достаточно, например, чтобы исходное число компьютер считывал со встроенных в него электронных часов как сумму или произведение текущих даты и времени. Зато при необходимости мы можем воспроизвести любой из вариантов процесса, если известно стартовое случайное число.

Генератор случайных чисел позволяет моделировать процессы, в которых разные исходы имеют разную вероятность. Например, из двух событий одно может случиться с вероятностью 25 %, а другое – 75 %. Тогда в случае, если сгенерированное компьютером случайное число попало в интервал от 0 до 0,25, мы можем считать, что произошло первое событие, а если это число превысило 0,25 — то второе.

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

Модели, в которых используются случайные числа, называются вероятностными, или стохастическими моделями. В отличие от них те модели, в которых переход объектов из одного состояния в другое задан однозначно, называются детерминистскими. Если при моделировании какой-то исторической популяции мы для простоты принимаем, что все ее члены (или индивиды определенного пола и возраста) потребляют одинаковое количество пищи или умирают по достижении некоторого возраста, такой подход будет детерминистским. Если же потребность в пище или продолжительность жизни индивида определяется случайным образом согласно выбранному закону распределения, мы получим стохастическую модель. Очевидно, что такая модель будет более гибкой и приближенной к действительности.

Компьютерное моделирование (иногда его называют еще имитационным моделированием, в англоязычной терминологии – computer simulation) нашло применение в самых различных отраслях человеческой деятельности. Большие перспективы для него быстро выявились в сфере бизнеса и маркетинга. Многие процессы, происходящие в этих сферах, имеют непредсказуемый характер, и потому стохастические модели очень удобны в таких случаях.

Например, обращение клиента в банк или предприятие бытового обслуживания зависит от множества причин, которые ни кассир или приемщик, ни менеджер этого учреждения не в состоянии предви- деть. С их точки зрения – это единичное случайное событие. Совокупность таких событий приводит к тому, что иногда в салоне вырастает очередь, а в другой момент приемщик скучает без дела. Для хозяина или для менеджера такого заведения важно знать, какой наплыв клиентов можно ожидать в то или в иное время, в разные дни недели, в каком диапазоне может колебаться число клиентов.

Коммерческий спрос на решение таких задач содействовал тому, что в США и Западной Европе были созданы не только отдельные прикладные программы, но даже специальные языки и системы программирования, ориентированные на создание моделирующих программ. Некоторые из них были доработками общераспространенных языков программирования (таких, как Алгол, Фортран) с целью наилучшим образом ориентировать их на узкий круг специфических задач. В 1970-е гг. приобрели популярность такие языки, как SIMSCRIPT и GASP (на базе Фортрана), Симула-67 (на базе Алгола) и языки семейства GPSS, представляющего по сути самостоятельную систему программирования.

В ходе микрокомпьютерной революции 1980-х гг., знаменовавшейся появлением настольных персональных компьютеров и невиданным ранее расцветом коммерческого программного обеспечения, эти языки практически вышли из употребления. Значительные силы программистов оказались отвлеченными на написание компьютерных игр, пользовавшихся и пользующихся доныне стабильным коммерческим успехом. В то же время игра — это только отражение (модель!) реальной жизни. Наиболее интересные и оригинальные компьютерные игры можно рассматривать как прообразы моделей исторических процессов.

Опыт моделирования исторических процессов. Поскольку моделирование является неотъемлемым атрибутом системного подхода, то и распространение его в исторических исследованиях шло и идет параллельно с укоренением взгляда на исторические явления как на системы. Нельзя сказать, что такой подход уже стал господствующим среди историков. Основная часть их и сегодня продолжает считать своей главной задачей тщательное выявление и фиксацию фактов, связанных с прошлым. Поскольку специфика исторических источников позволяет обычно устанавливать только факты, связанные с отдельными сторонами человеческой деятельности (так, археологические находки освещают преимущественно материальную культуру, сведения летописей касаются прежде всего военно-политических событий), все попытки построить на базе таких односторонних сведений целостную картину прошлого многим кажутся некорректными.

Еще одним препятствием для распространения имитационных моделей в исторической науке является то, что такие модели обычно являются стохастическими, основанными на методе Монте-Карло, и включают понятие вероятности события. Историки же привыкли иметь дело с фактами, произошедшими раз и навсегда, согласно крылатой фразе: "история не терпит сослагательного наклонения". Считается, что нереализованные варианты событий просто не существуют в объективной действительности, а утверждения о степени их вероятности мало что дают для понимания единственно реального варианта.

Тем не менее и среда историков живет неодолимая тяга к реконструкции цельной картины прошлого, включая и понимание того, мимо каких развилок "промчался" исторический процесс. В частности, археологи довольно рано начали применять физическое моделирование для воссоздания реалий прошлого. В 1922 г. в Швейцарии впервые были целиком реконструированы поселения каменного и бронзового веков. И в дальнейшем археологи неоднократно строили реальные модели древних поселений, даже жили в них, изготавливали орудия труда, занимались хозяйственной деятельностью. Описанию таких экспериментов посвящена книга чешских исследователей Ренаты и Ярослава Малинов [6].

Словесные модели разного уровня детализации неизбежно присутствуют в сознании каждого историка, когда он выходит за рамки чистого источниковедения. Время от времени некоторые исследователи делают попытки изложить такие модели на бумаге: детально описать, например, устройство и деятельность государственных учреждений или годовой хозяйственный цикл крестьянского двора, феодального имения. В качестве довольно удачной попытки такого рода можно привести изданную в 1892 г. книгу М. К. Любавского "Областное деление и местное управление Литовско-Русского государства ко времени издания первого Литовского статута".

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

Можно добавить, что любая модель, существующая в нашем сознании, только кажется цельной и законченной. На самом деле в ней присутствуют пробелы, неявные допущения и ошибки, которые мы обычно не осознаем. Когда же мы попробуем изложить свое понимание исторического объекта на жестко формализованном компьютерном языке, все приблизительные суждения и допущения сразу станут очевидными. Чтобы моделирующая программа заработала, исследователь должен значительно уточнить и упорядочить свои представления, что само по себе имеет большое положительное значение.

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

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

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

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

В исторической географии рано начали применяться методики статистической обработки, заимствованные из современной экономической географии. В частности, была разработана так называемая мо- дель "ранг – размер" (rank – size), математически описывающая соотношения размеров населенных пунктов и их социального (административного, торгово-экономического) значения. Суть ее в том, что маленьких второразрядных городов всегда больше, чем крупных, и чем значительнее городской центр, тем реже он встречается.

По этой методике были обработаны данные о количестве и размерах древних поселений в районах, подвергшихся сплошному археологическому обследованию. Была определена пространственная и иерархическая структура поселений. Затем исследователи задались вопросом, какие историко-экономические процессы могли обусловить сложение именно такой структуры. У них имелись на этот счет свои предположения, проверить которые они попробовали с помощью компьютерной модели. Один этап существования поселений рассматривался как исходный, другой – как итоговый. Оставалось подобрать моделирующую программу с такими характеристиками, чтобы результаты ее деятельности преобразовывали одно состояние в другое. Понятно, что от модели требовалось не создание карты поселений, полностью совпадающей с реальной. Их размещение в пространстве могло быть любым, лишь бы математические характеристики всей системы поселений совпадали с реальными. Достижение такого результата позволяло утверждать, что авторы понимают суть процессов, которые влияли на размеры и размещение поселений.

В свое время западноевропейские и американские археологи провели несколько подобных исследований с применением компьютерных моделей. Одно из исследований было посвящено вопросу, какой из нескольких возможных стратегий руководствовался древний человек при выборе места для новых поселений. Моделировалось несколько вариантов образования поселений, а затем определялось, какой из них порождал статистические характеристики, наиболее близкие к установленным эмпирическим путем [7].

В другом случае проверялось, могла ли выявленная динамика численности поселений (сначала — быстрый рост, потом – столь же быстрое сокращение) быть результатом неограниченного роста населения, который привел к исчерпанию ресурсов. Такие исследования объединяет общность подхода, компьютерная программа производит какие-то количественные характеристики, сопоставимые с характеристиками реальных объектов. Если они совпадают, можно говорить и о совпадении порождающих их процессов [8]. Модели такого типа можно назвать моделями-реконструкциями.

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

Поведение построенной модели было достаточно близким к реальности, но выявились и некоторые расхождения. Они свидетельствовали о том, что какие-то факторы были не учтены или оценены неверно. Исследователи попробовали менять параметры и обнаружили, что сближение модели с реальностью достигается тогда, когда количество жен у мужчины (у яномама существует обычай полигамии) не является равновероятным для всех, а зависит от социального статуса. При первых наблюдениях эта особенность прошла мимо внимания. В результате моделирования она была обнаружена и затем документально подтверждена при новых полевых исследованиях [9].

В исторической демографии моделирование применялось и для того, чтобы выявить численные характеристики процессов, недоступных непосредственному наблюдению. Американскими археологами была построена стохастическая модель первобытной популяции, в которой индивиды рождались, достигали брачного возраста и вступали в брак с представителями соседних общин. Было решено определить, какой размер брачного круга обеспечивает каждом}' индивиду возможность обрести пару. Оказалось, что это достигалось в случае, когда в брачный круг входило не менее 7–19 (в зависимости от жесткости запрета на браки между близкими родственниками) экзогамных общин средней численностью в 25 человек каждая [10].

С помощью этой модели была измерена вероятность того, что маленькая популяция из-за наложения случайностей в пропорции мужчин и женщин резко понизится в численности или исчезнет вообще. Установлена зависимость "численности гарантированного выживания" от жесткости ограничений на браки между близкими родственниками. Таким образом были получены количественные характеристики процессов, которые могли иметь место в далеком прошлом – в эпоху палеолита [11].

Конечно, степень достоверности результатов зависит от того, насколько точно определены исходные характеристики модели. Но даже если они и имеют диапазон погрешности, результат может быть использован для общих концептуальных суждений, например, о том. мог ли в принципе протекать тот или иной процесс при определенных исходных допущениях. Подобным же образом измерялась скорость возможного расселения неолитических земледельцев с Ближнего Востока, где впервые возникло производящее хозяйство, по территории Западной Европы. Моделировалась самовоспроизводящаяся и непрерывно растущая популяция, представители которой по достижении определенной плотности населения начинали мигрировать на свободные пространства. При тех значениях параметров, которые были приняты исследователями, волна неолитических мигрантов распространялась по Европе со средней скоростью около 1 км в год, что соответствует датировкам появления земледелия в разных частях Европы2. Модели такого типа можно назвать моделями- измерениями.

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

В частности, среди археологов достаточно распространена мысль, что первоначальное расселение людей по Земле из той области, где они впервые сформировались, было очень длительным процессом. На первый взгляд действительно кажется, что наши предки должны были затратить не одну сотню тысяч лет на освоение тысячекилометровых пространств континентов. Но когда в модель расселения, аналогичную вышеописанной, были заложены даже самые низкие из возможных значений репродуктивного потенциала древних людей, то при расселении из ареала гипотетической восточно-африканской прародины вся территория Африки и Евразии оказывалась заселенной за несколько десятков тысяч лет, т.е. в несколько раз быстрее, чем было принято считать. Это означает, что процесс свободного расселения, однажды начавшись, просто не мог протекать медленно при тех параметрах, которые нам кажутся достоверными [12]. Модель побуждает нас менять наши представления или о механизмах расселения, или о его сроках. В любом случае она стимулирует дальнейший поиск.

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

Предпринимались даже попытки глобального моделирования современного общества с целью предсказать его дальнейшее развитие. В свое время большую известность приобрели имитационные модели развития мировой экономики, разработанные Римским клубом [13]. Все они исходили из предположения, что в будущем будут действовать уже известные и учтенные сегодня факторы. Прогнозы, построенные с помощью таких моделей, оказывались, как правило, катастрофическими. Это во многом способствовало сдвигам в общественном сознании, его повороту в сторону проблем экологии, разоружения и возобновляемых источников энергии. В целом же попытки заглянуть в будущее следует расценивать как преждевременные до того, как историки сумеют построить надежные модели, воспроизводящие события прошлого.

Пока нельзя утверждать, что метод имитационного моделирования стал среди историков общепризнанным. Попытки использовать компьютерные модели нередко встречают скептическую реакцию. Показательна в этом смысле судьба первой попытки моделирования, предпринятая историками в бывшем СССР. Группа исследователей во главе с В.А.Устиновым в 1976 г. опубликовала модель-реконструкцию экономики древнегреческих полисов – участников Пелопонесской войны. Авторы рассматривали хозяйство полиса как систему, включающую ряд взаимосвязанных параметров: численность населения, площадь сельскохозяйственных угодий, ежегодный урожай, производство и импорт продовольствия, нормы потребления продуктов и т. п.

Состояние источников не позволяло определить точные значения многих параметров. Поэтому исследователи широко применяли оценочные значения, стремясь к тому, чтобы весь набор ха- рактеристик образовывал непротиворечивое и правдоподобное сочетание. Но количестве параметров системы было все же очень велико, и то, что многие из них были гипотетичными, не могло не вызвать сомнения в достоверности всей реконструкции. Субъективность ее усугублялась тем, что исследователи непосредственно вмешивались в процесс испытания модели, как бы от имени руководства воюющих государств принимали решения о дальнейших действиях, хотя и руководствовались при этом рассчитанными машиной результатами годового хозяйственного цикла [14].

В целом эта первая попытка была далеко не безупречной. Она допускала разные оценки. Но реакция рецензента, который был крупнейшим на тот момент авторитетом в области применения ко- личественных методов в истории, была однозначно негативной. Рецензент утверждал, что исследователи имели дело не с объективной реальностью, а только с собственными субъективными представлениями об изучаемом процессе, а все полученные ими выводы не имеют никакого значения [15]. Авторы работы, кажется, молчаливо согласились с такой оценкой. В результате это перспективное направление слабо развивалось в советской исторической науке. Эпизодически появлялись единичные работы, как, например, модель расслоения феодально-зависимых крестьян в Византии, опубликованная К.В.Хвостовой в 1980 г. [16].

В конце 1980-ых — начале 1990-ых гг. началось некоторое оживление в сфере моделирования исторических процессов. В этот период создавались не столько чисто имитационные, сколько математические модели, в которых процессы описывались системами уравнений. Российский исследователь Ю.П.Бокарев предложил несколько интересных аналитических моделей, описывающих параметры экономики в период нэпа системой дифференциальных уравнений [17].

В.П.Акимов и В.М.Сергеев описали русско-германские отношения в 1870-ых гг. методами математической теории игр [18].

В то же время американские исследователи Х.Хантер и Дж.Ширмер использовали метод регрессионных уравнений, чтобы оценить роль разных факторов в динамике производства зерна в сельском хозяйстве СССР 30-х гг.[19]. За схожие работы, посвященные главным образом американской истории [20], основоположник этого метода Р.Фогель в 1993 г. получил Нобелевскую премию, что, несомненно способствовало росту авторитета исторических моделей. В России в начале 1996 г. под редакцией Л.И.Бородкина вышел сборник "Математическое моделирование исторических процессов", содержащий примеры как имитационных, так и математических моделей [21]. Все же многие авторы этого сборника были скорее математиками, чем историками.

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

В процессе создания компьютерной модели можно выделить следующие стадии:
1. Определение проблемы и постановка задачи исследования.
2. Разработка модели в виде словесного, логико-математического описания, графической блок- схемы.
3. Трансформация модели в компьютерную программу, написанную на одном из языков программирования.
4. Верификация программы (отладка, исправление ошибок).
5. Валидация (проверка соответствия модели реальной системе, которую она отображает).
6. Подготовка исходных данных.
7. Планирование машинного эксперимента.
8. Испытание модели (прогон программы на компьютере и получение результатов).
9. Анализ результатов.
10. Документирование результатов и подготовка их к публикации.

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

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

На этом же этапе исследователь должен решить, какая информация, производимая моделью, ему понадобится. Это может быть только окончательный результат или те же промежуточные данные. Необходимо предусмотреть процедуры для накопления и вывода этой информации. Естественно, должен быть продуман и принцип ввода исходных данных.

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

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

Наконец, если программа функционирует без сбоев и у исследователя есть уверенность, что модель соответствует реальной системе, можно переходить к подготовке данных для большого эксперимента. Здесь нужно окончательно определиться с теми значениями, которые точно неизвестны. Иногда полезен бывает метод подбора, когда модель запускается при разных значениях какого-то параметра и исследователь решает, в каком случае она ведет себя более правдоподобно.

При испытании модели, основанной на использовании метода Монте-Карло, нельзя ограничиваться испытанием с одной последовательностью случайных чисел – результат может быть нетипичным. Необходима серия экспериментов с разными последовательностями. Только те результаты, которые наблюдаются устойчиво, могут отражать существенные закономерности моделируемого объекта. Единичные случаи, какими бы эффектными они ни казались, никому ничего не докажут. Следует руководствоваться принципом: "могло быть – еще не значит, что было".

Определенную проблему представляет оценка репрезентативности результатов. Например, при первых испытаниях модели было установлено, что определенный эффект наблюдается в трех случаях из пяти. Чтобы проверить, насколько устойчив такой результат, было проведено уже не пять, а сто испытаний, и эффект наблюдался в восьмидесяти случаях. Затем число испытаний было доведено до тысячи, причем интересующий нас результат наблюдался 812 раз. Очевидно, что, ограничившись пятью первыми испытаниями, мы определили бы частоту (вероятность) такого результата очень грубо, с большой погрешностью. Зато десятикратное увеличение статистики с сотни до тысячи испытаний почти ничего нового нам не дало: точность оценки возросла чуть более, чем на 1%. Возникает вопрос, когда же нужно остановиться.

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

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

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

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

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

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

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

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

Третьим главным компонентом системы является земля, занятая под огород, пашню, сенокос и пастбище. Ее основные характеристики – площадь (будем считать ее постоянной) и уровень плодородия, который может со временем меняться.

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

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

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

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

Для моделирования мы будем пользоваться четырьмя основными понятиями: объект, характеристика, класс объектов и процедура. В объектно-ориентированном языке программирования С++ эти понятия заложены в самой его структуре. В других языках (например, в Паскале, Бейсике) они программно не реализованы, но легко могут быть отображены обычными средствами этих языков (с помощью констант, переменных, массивов и подпрограмм).

Под объектом мы будем понимать любой отдельно взятый компонент нашей системы, состояние которого может меняться с течением времени: индивид, запас зерна определенного сорта, отдельное домашнее животное, земельный участок и т.п. Объектами являются и крестьянские дворы в целом, если мы рассматриваем их на более высоком уровне селения, имения и т.п. Таким образом, объекты могут быть увязаны в иерархическую структуру: объекту "двор" подчинены объекты "глава семьи", "пшеница", "лошадь" и т.д.

Численные значения, описывающие состояние объекта в данный момент, мы будем называть характеристиками. Например, у объекта "пшеница" могут быть такие характеристики, как норма высева (примерно 1,5 ц на гектар) и средняя урожайность (скажем, 6 ц/га). Характеристикой может быть не только отдельное число, но и целая таблица. Например, для человека такой характеристикой является ве- роятность смерти в зависимости от возраста. Демографами разработаны такие таблицы для разных типов воспроизводства населения, в которых показана вероятность умереть в каждой возрастной группе. В своей модели мы можем использовать одну из таких таблиц или даже несколько, но поочередно, сделав каждую из них характеристикой члена моделируемой семьи.

Нетрудно заметить, что у некоторых объектов, например, у главы семьи, его жены и каждого из детей, могут присутствовать одинаковые наборы характеристик (скажем, возраст, пол, потребность в пище), в то время как конкретные значения этих характеристик у них будут отличаться. Зато у пшеницы, ячменя и овса будет совсем другой, но тоже общий для них набор характеристик (урожайность и норма высева). В таком случае удобно оперировать понятием класс объектов, под которым понимается множество объектов, обладающих одинаковым набором характеристик. В нашем случае конкретные объекты "глава семьи", "жена", "старший сын", "младший сын", "дочь" будут принадлежать к классу "человек", а объекты "пшеница" и "ячмень" – к классу "зерно".

Такой подход позволяет один раз описать набор характеристик, присущий определенному классу объектов, а затем в любой момент создавать нужное количество объектов такого класса, различаемых по своим именам. Классы объектов тоже могут быть организованы иерархически: объекты класса "человек" с такими характеристиками, как пол, возраст, брачный статус, могут подчиняться более высокому классу объектов "люди" с другим набором характеристик (одной из них может быть вероятность смерти в зависимости от возраста, если она одинакова для всех индивидов). Характеристики, принадлежащие более высокому классу объектов, действительны для всех объектов подчиненных классов. В объектно-ориентированном подходе это называется наследованием.

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

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

Аналогично мы создадим по одному объекту классов "пшеница", "рожь" и т.п. с характеристиками "урожайность" и "норма высева". Каждому из них могут подчиняться по одному объекту класса "зерно", имеющих имена "зерно для посева", "зерно для продажи", "фуражное зерно", "зерно для личного потребления" и обладающих характеристиками "количество" и, может быть, "стоимость". Обратим внимание, каким образом связаны один с другим объекты в данном случае: по несколько объектов одного класса подчиняются единичным объектам нескольких вышестоящих классов. Это экономнее, чем создавать много параллельных классов "пшеница для посева", "пшеница на продажу", "рожь для посева", "рожь на продажу" и т.д.

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

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

Но и класс объектов "двор" можно снабдить характеристикой "количество" и подчинить объект этого класса вышестоящему объекту класса "деревня". Из нескольких деревень можно собрать объект класса "помещичье имение" или "волость".

Чтобы построенная таким образом конструкция приобрела динамику, нам нужно вернуться к понятию процедура. Оно обозначает набор правил, по которым происходит образование и исчезновение объектов определенного класса или изменение их характеристик. Процедуры (им соответствуют подпрограммы) тоже могут иметь свои имена. В качестве примера опишем процедуру "взросление и смерть индивида", являющуюся частью модели демографического воспроизводства жителей двора.

Данная процедура имеет дело с объектами класса "человек". При каждом шаге программы она последовательно перебирает все объекты этого класса, для каждого из них увеличивает на единицу значение характеристики "возраст", а затем обращается к вышестоящему объекту "люди", точнее – к его табличной характеристике "вероятность смерти в зависимости от возраста". Напомним, что в этой характеристике содержится таблица, в которой по строкам отложены возрасты в годах, а по столбцам – вероятность умереть в данном возрасте (в виде десятичной дроби). Процедура считывает с таблицы ту вероятность смерти, которая соответствует новому возрасту данного индивида. После этого она обращается к генератору случайных чисел и с его помощью получает число в диапазоне от 0 до 1. Если это число попадает в интервал от 0 до значения вероятности смерти, процедура уничтожает данный объект, а в вышестоящем объекте класса "люди" уменьшает на единицу характеристику "количество". Если же случайное число не попало в роковой интервал, процедура оставляет индивида "в живых" и переходит к следующему объекту.

Сходным образом будет действовать следующая процедура – "вступление в брак". Для нее в классе "люди" должна быть заготовлена характеристика "вероятность вступления в брак в данном возрасте". Процедура запускается после того, как предыдущая процедура "взросление и смерть" закончила свою работу. На этот раз вновь последовательно перебираются все объекты класса "человек", но проверяется их характеристика "брачный статус". Если эта характеристика заполнена (т.е. индивид имеет жену или мужа), процедура переходит к следующему объекту. Если же индивид холост, процедура сверяется с характеристикой "вероятность вступления в брак" и генерирует случайное число. Факт вступления или невступления в брак определяется аналогично вышеописанному случаю со смертью. Разница в том, что сейчас нужно не уничтожить объект, а создать (или подыскать в одном из соседних дворов и переместить оттуда) новый объект противоположного пола.

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

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

Данный пример интересен тем, что для соответствия реальности нужно учесть ряд взаимосвязанных факторов, из которых одни являются детерминированными, а другие – случайными. Наша зерновая культура (скажем, рожь) имеет детерминированные характеристики – норму высева и среднюю урожайность. Земельный участок, на котором она посеяна, имеет такую характеристику, как плодородие. Она может иметь несколько дискретных значений, например – три (неплодородная. средняя и плодородная земля). В таком случае, если рожь посеяна на участке среднего качества, ожидаемый урожай будет равен среднему (тому, который задан в соответствующей характеристике ржи). Если участок неплодородный, эту цифру следует уменьшить в соответствии с неким заранее выбранным коэффициентом, а если очень плодородный, таким же образом увеличить.

Но необходимо учесть еще и климатический фактор. Год может быть как урожайным, так и неурожайным. Это можно также смоделировать с помощью нескольких дискретных чисел (плохой, средний, хороший год), а выбор между ними осуществить с помощью равномерно распределенного случайного числа. Но более адекватной будет модель, в которой благоприятность года определяется с помощью случайного числа, распределенного по нормальному (гауссову) закону. Напомним, что в этом случае изначально задается среднее значение (мода) и среднее квадратическое отклонение (СКО), определяющее размах колебаний. Получаемые случайные числа в 68,3 % случаев будут отличаться от моды не более чем на величину одного СКО, в 95,4 % – на величину двух, а в 99,7 % – трех СКО. График распределения случайной величины будет иметь форму колокола с самой высокой точкой в районе среднего значения.

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

После разработки всех необходимых процедур пишется основная управляющая программа (главный программный модуль), которая определяет последовательность процедур и обеспечивает запоминание тех значений характеристик, которые нас интересуют. Эта программа вместе с совокупностью объектов и процедур и будет представлять собой компьютерную модель крестьянского дворохозяйства.

  1. См.: Адамушка У. Палітычныя рэпрэсіі 20—50-х гадоў на Беларусі. – Мн.: Беларусь, 1994.
  2. Блауберг И.В., Юдин Э.Г. Становление и сущность системного подхода. – М.: Наука, 1973.
  3. Пригожин И. От существующего к возникающему. – М.: Мир, 1985; Пригожин И., Стингерс И. Порядок из хаоса. – М.: Мир, 1986; Пригожин И., Николис Г. Познание сложного. – М.: Мир, 1990.
  4. Хакен Г. Синергетика: Иерархия неустойчивостей в самоорганизующихся системах и устройствах / Пер. с англ. – М.: Мир, 1985.
  5. Гумилев Л.Н. География этноса в исторический период. – Л.: Наука, 1990.
  6. См.: Малина Я., Малинова Р. Прыжок в прошлое: эксперимент раскрывает тайны древних эпох. – М.: Мысль, 1988.
  7. См.: Zimmermann L. J. Simulation prehistoric locational bahavior. In: Simulation studies in archaeology. – Cambridge, 1978.
  8. См.: Zubrow E. B. W. Prehistoric carrying capacity: a model. – Menlo Park, 1975.
  9. Maccluer J., Neel J., Chagnon H. Demographic structure of a primitive population: a simulation. In: American Journ. of Physical Anthropology, 1971. No. 2.
  10. Wobst H. M. Boundary conditions for palaeolithic social systems: a simulation approach. In: American Antiquity, 1974. Vol. 39. No. 2.
  11. Wobst H. M. The demography of finite population and the origin of the incest taboo. In: American Antiquity, 1975. Vol. 40, No. 2. Pt. 2.
  12. Носевич В.Л. Зарница или заря? Компьютерное моделирование исторических процессов // Круг идей: Развитие исторической информатики. – М.: МГОА, 1995. С.73–87.
  13. Маркарян Э.С. Глобальное моделирование, интеграция наук и системный подход // Системные исследования. Методологические проблемы. Ежегодник. 1980. – М., Наука, 1981.
  14. См.: Устинов В.А., Кузищин В.И., Павловский Ю.Н. Гусейнова А.Г. Опыт имитационного моделирования историко- социального процесса // Вопросы истории, 1976, № 11; Гусейнова А.Г., Павловский Ю.Н., Устинов В.А. Опыт имитационного моделирования исторического процесса. – М.: Наука, 1984.
  15. Ковальченко И.Д. О моделировании исторических явлений и процессов // Вопросы истории, 1978, №8.
  16. Хвостова К.В. Количественный подход в средневековой социально-экономической истории. – М. Наука, 1980.
  17. Бокарев К).П. Крестьянское хозяйство и развитие промышленности советской России в середине 20-х годов XX в. // Математические методы в историко-экономических и историко-культурных исследованиях. — М.: Наука, 1977; Бокарев Ю.П. Социалистическая промышленность и мелкое крестьянское хозяйство в СССР в 20-е годы. — М.: Наука, 1989.
  18. Акимов В.П., Сергеев В.М. Изучение структуры конфликта на основе анализа событий: русско-германские отношения в 70-х годах XIX в. / Математические методы и ЭВМ в историко-типологических исследованиях. – М.: Наука, 1988.
  19. Hunter H., Shirmer J. M. Faulty foundation. Soviet economic politics, 1928–1940. – Princeton, 1992.
  20. Fogel R. W. Railroads and American economic growth: Essays in economic history. – Baltomore, 1964; Fogel R. W. and Engerman S. I. Time of the cross: The economics of American Negro slavery, 2 vols. – Boston, 1974.
  21. Математическое моделирование исторических процессов / Ред. Л.И.Бородкин. — М.: АИК, 1996.