Дагаев Д.В. —
Инструментальный подход к программированию в системе МультиОберон
// Программные системы и вычислительные методы. – 2024. – № 1.
– 和。 31 - 47.
DOI: 10.7256/2454-0714.2024.1.69437
URL: https://e-notabene.ru/itmag/article_69437.html
阅读文章
注释,注释: Объектно-ориентированные подходы к программированию, имеют свою область применимости. Для ряда задач традиционно отдают предпочтение классическим методам структурного программирования. Эти предпочтения нередки для детерминированного мира и в системах, ориентированных на машинное представление. Исторически классические методы развивались от архитектуры фон Неймана представления машины.
При решении проблем детерминированного мира выявляются преимущества подходов, противоположных объектно-ориентированному мышлению. Например, язык и системы на базе модульного языка программирования Оберон в классической реализации демонстрируют минималистский путь для достижения надежности, существенно отличающийся от большинства программных систем, стремящихся к максимизации числа поддерживаемых функций. Технология программирования, управляемого данными также отходит от традиционной объектной модели, требуя сепарации кода от данных. Предлагаемый автором статьи инструментальный подход объединяет Оберон-технологии с программированием, управляемым данными, при этом оставляя присущие для ООП механизмы взаимодействия по интерфейсам. Вместо объекта предложен ассоциированный с объектом инструмент, не сохраняющий в себе данные. Предложенный в данной статье инструментальный подход отличается как от объектного представления, так и от классического структурного. Он позволяет сохранять преимущества обоих подходов.
При этом инструментальный подход работает в инфраструктуре программирования управляемого данными. От объектно-ориентированного подхода берется полиморфизм и возможность работы по интерфейсам. От классического структурного программирования берется определение структур данных и взаимодействие с ними. От программирования, управляемого данными используется сепарация кода от данных и жизненный цикл последних в персистентном виде.
Новизной является то, что инструментальный подход предлагает отличную от ООП ветвь развития для классического языка программирования Оберон и классического подхода. Реализованные в системе МультиОберон, инструментальный подход позволяет решать ряд важных задач, в частности, задачи автоматизации в критически важных системах.
Abstract: Object-oriented approaches to programming have their own scope of applicability. For a number of tasks, preference is traditionally given to classical methods of structured programming. These preferences are not uncommon in a deterministic world and in machine-representation-oriented systems. Historically, classical methods developed from von Neumann's architecture of machine representation.
While solving the problems of deterministic world the advantage of approaches, opposite to OOP is shown. For example, the Oberon modular language and system in classic distribution demonstrate minimalistic way of reliability, which differs from vast majority of program systems maximizing amount of features supported. Data-oriented programming technology also steps aside traditional object-oriented paradigm because data from code separation is needed. The instrumental approach proposed by author is linking Oberon technologies with data-oriented programming, keeping interface interaction mechanisms from OOP. The instrument with no data, but associated with data is introduced instead of an object. MultiOberon restrictive semantics makes an opportunity to turn off OOP restriction and switch on instruments usage. Instrument is instantiated automatically on program module loading. Instrument is queried either by its type or by the type of record associated. All the functionality is implemented in MultiOberon compiler. Instrumental approach was used for SCADA-platform software development, which targets complex automation and diagnostics. It is used in dynamically loaded plugins for data types matched shared memory data types.
The instrumental approach offers a different branch of development from OOP for the classic Oberon programming language and the classical approach