ISSN 1812-3368. Вестник МГТУ им. Н.Э. Баумана. Сер. «Естественные науки». 2012
179
граммирования к описанному результату, как правило, оставляют на
усмотрение соответствующего компилятора или интерпретатора (о
чем свидетельствует иногда заметная разница представления одного
и того же документа HTML в различных браузерах).
Под парадигмой программирования, согласно определению Па-
мелы Зейв, понимают набор представлений о некотором классе про-
граммных систем, допускающих реализацию с помощью этой пара-
дигмы набора представлений о способе программирования [1].
Помимо упомянутых выше императивной и декларативной па-
радигм, существуют и другие весьма интересные парадигмы про-
граммирования, например функциональная, однако наша основная
цель — обсуждение путей решения вполне конкретной прикладной
задачи, а не изучение теории программирования.
Задача синтеза многокомпонентной системы.
Эта задача, по
крайней мере на первый взгляд, хорошо укладывается в императив-
ную парадигму программирования. В самом деле, отталкиваясь от
имеющихся знаний об отдельных компонентах сложной системы, мы
беремся построить синтез всей системы, основанный на воспроизве-
дении известного поведения каждой ее компоненты, и при этом со-
бираемся наблюдать и изучать поведение системы в целом, не из-
вестное нам заранее. В основе синтеза многокомпонентной системы
лежит идея, высказанная в работах Н.П. Бусленко, — дать каждой из
компонент, про которые нам все известно, максимально проявить се-
бя, учитывая при этом и все межкомпонентные связи [2].
Основным инструментом реализации проектов императивного
программирования являются объектноориентированные языки про-
граммирования. В свое время эти языки возникли в значительной мере
как ответ на запросы исследователей, занимавшихся имитационным
моделированием. Одним из самых первых объектноориентированных
языков можно считать язык Симула-67. Структура сложной системы,
состоящей из большого числа экземпляров различных типов компо-
нент, хорошо описывается иерархией классов объектноориентиро-
ванного программирования (ООП). У ООП множество известных всем
достоинств, которые и сделали этот подход бесспорным лидером в
программировании последних 25 лет. Однако применительно к по-
ставленной задаче ООП имеет существенные недостатки.
Главный из них (конечно, для класса задач, о которых идет речь в
настоящей работе) — отсутствие у объекта поведения. Объекту при-
сущи характеристики, его методы, а поведения — умения давать от-
веты на стандартные запросы внутренней и окружающей среды — у
него нет. Безусловно, ООП в соединении с соответствующим про-
граммным обеспечением (ПО) промежуточного уровня позволяет
объектам даже в распределенных системах взаимодействовать между