2.2 Неослабевающая сила GPSS (Джеймс Хенриксен)
 
Позвольте в начале мне сказать, что это привилегия быть участником празднования 40-летия GPSS. В такой сложной области, как программное обеспечение только небольшое количество языков программирования достигло такого почтительного возраста - 40 лет. Почему GPSS просуществовал так долго? В параграфах, что последуют далее, я дам свой взгляд на эти факторы.

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

В начале 60-х альтернативные способы были возможны. Очевидный выбор был за несколькими формами процессов взаимодействия. К сожалению, процессы взаимодействия были понятны только небольшой элитной группе людей и были вне досягаемости обычных программистов. Например, известны "Мульти - сплетенные применения" в которых говорилось о применении классов в компьютерной науке, но редко применялись широких кругах. В этой ситуации изначально сложно было найти выход, но Гордон его нашел.

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

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

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

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

Другим важным вкладом явилось наличие доступных книг описывающих GPSS. Хотя и Гордон (Gordon 1968, 1975) и Рейтман (Reitman 1971) написали книги по GPSS, но "красная книга" Томаса Шрайбера изданная в 1974 году (так она называлась из-за красивой красной обложки) и ее преемница вышедшая в 1991 году (Schriber 1991) стали наиболее продаваемыми книгами по имитационному моделированию за все время. 

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

Хотя GPSS внес большой вклад в "имитационное сообщество" в некотором отношении он начал показывать свой возраст. Последовательно обсуждая эти аспекты, мы должны четко разделить те концептуальные свойства, которые изначально свойственны GPSS и те свойства, которые он приобрел в своих реализациях. Концептуально GPSS был очень прост. Фундаментальные блоки GPSS (generate, terminate, advance, seize, release, enter, leave, queue, и depart) объединяли вариации многих средств имитации. Невозможно представить изложение любых новых концепций в теории очередей, которые неизбежно возникнут в ближайшем будущем без использования старых 40-летних понятий GPSS. Одним из недостатков GPSS вытекает из мировоззрения (это мое скромное мнение), что он чрезмерно преувеличивает значение при моделировании таких методов, как "активный объект, пассивный обслуживающий аппарат". Во многих системах должен использоваться метод активного обслуживающего устройства. Почему это не применялось в GPSS, потому что это не нужно начинающим пользователям. Не смотря на мои усилия, Тома Шрайбера и многих других людей, пристрастие к неправильному использованию еще существует и является неотъемлемым архитектурным свойством мировоззрения транзактов.

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

Разработанный Wolverine язык SLX (Wolverine 1996) заимствовал от GPSS основной каркас, однако SLX отличается от GPSS по трем аспектам. Во-первых, SLX реализует конструкции GPSS в С подобном виде, современном структурированном языке. Так он может иметь массив обслуживающих аппаратов, динамически распределенные обслуживающие аппараты, семейства обслуживающих аппаратов и т.д. Во-вторых, в отличие от GPSS, SLX очень гибок. В SLX можно строить свои собственные блоки, сделав на некотором уровне соответствующий выбор или встраивать жестко привязанные блоки. В-третьих, SLX подвергает сомнению незыблемость принципа динамики транзактов и предлагает более низкий уровень описания параллелизма в отличие от GPSS. Часто меня спрашивают "Так как вы продаете SLX и он основан на GPSS/H (Wolverine 1978), почему вы еще продаете GPSS/H?" В общей форме ответ в том, что люди еще хотят работать на нем. Если более детально, то не каждый пользователь нуждается в мощи SLX. Будущим пользователям, кто будет разрабатывать простые модели с очередями и кто изучал GPSS в высшей школе, понравится удобный GPSS/H и они сопротивляются, чтобы их переводили на новую территорию. 

Из 40 лет жизни GPSS я участвовал в развитии GPSS 33 года. Это был очень хороший период. С днем рождения GPSS.

 
назад

вперед