Здравствуйте,при покупке печатной формы сертификата,будут ли выданы обе печатные сторны? |
Интерфейсы, взаимодействие и изменение программ и данных
8.2. Интерфейс ЯП
8.2.1. Интерфейс и взаимосвязь с ЯП
Основные ЯП, используемые для описания компонентов в современных средах, это С++, Паскаль, JAVA и др. [8.2, 8.12, 8.13].
Разноязыковые программы, записанные в этих языках, обращаются друг к другу через удаленный вызов, который предполагает взаимно однозначное соответствие между фактическими параметрами вызывающей программы и формальными параметрами вызываемой программы. При неоднородности одного из параметров из множества формальных или фактических параметров разноязыковых программ необходимо провести отображение (mapping) неэквивалентного типа данных параметра в одном ЯП в соответствующий тип данных в другом ЯП.
Аналогично решается задача преобразования неэквивалентных типов данных в ЯП. Представим это преобразование такими этапами.
Этап 1. Построение операций преобразования типов данных для множества языков программирования .
Этап 2.Построение отображения простых типов данных для каждой пары взаимодействующих компонентов в и , а также применение операций селектора и конструктора для отображения сложных структур данных в этих языках. Один из способов формализованного преобразования типов данных - создание алгебраических систем для каждого типа данных :
где - тип данных, - множество значений, которые могут принимать переменные этого типа данных, - множество операций над этими типами данных.
В качестве простых типов данных современных ЯП могут быть . Сложные типы данных - комбинация простых типов данных. Этим типам данных соответствуют следующие классы алгебраических систем:
( 8.1) |
Каждый элемент класса простых и сложных типов данных определяется на множестве значений этих типов данных и операций над ними:
, где .
Операциям преобразования каждого типа данных соответствует изоморфное отображение двух алгебраических систем с совместимыми типами данных двух разных языков. В классе систем (8.1) преобразование типов данных для пары языков и обладает такими свойствами отображений:
- системы и для языков и - изоморфны, если их типы данных , определены на одном том же множестве простых или сложных типов данных;
- между значениями и типов данных и существует изоморфизм, если множества операций и , применяемых для этих типов данных, различны. Если это множество пусто, то имеем изоморфизм двух систем и . Если тип данных есть строка, а тип - вещественное, то между множествами и не существует изоморфного соответствия;
- алгебраические системы по мощности должны быть равны, так как они представлены на множестве типов данных языков и
Отображения 1, 2 сохраняют линейный порядок элементов, поскольку алгебраические системы являются линейно упорядоченными. Общая схема связи ЯП в распределенной среде.Характерная особенность ЯП, используемых в распределенных средах, - их неоднородность как в смысле представления типов данных в них, так и платформ компьютеров, где реализованы соответствующие системы программирования. Причина неоднородности - это различные способы передачи параметров между объектами в разных средах, наличие разных типов объектных моделей и форматов данных для задания параметров, разные виды операторов удаленного вызова и получения результатов выполнения запросов и др.
Системы программирования с ЯП имеют следующие особенности компилирования программ:
- разные двоичные представления результатов компиляторов для одного и того же ЯП, реализованных на разных компьютерах;
- двунаправленность связей между ЯП и их зависимость от среды и платформы;
- параметры вызовов объектов отображаются в операции методов;
- связь с разными ЯП реализуется ссылками на указатели в компиляторах;
- связь ЯП осуществляется через интерфейсы каждой пары из множества языков промежуточной среды.
Связь между различными языками осуществляется через интерфейс пары языков , , взаимодействующих между собой в среде, генерирующей соответствующие конструкции в операции описания интерфейса и наоборот.
Взаимодействие ЯП в среде CORBA.Принцип взаимодействия объектов в среде CORBA состоит в том, что любой объект выполняет метод (функцию, сервис, операцию) при условии, если другой объект, выступающий в роли клиента для него, посылает ему запрос для выполнения этого метода. Объект выполняет метод через интерфейс.
Взаимодействие ЯП в системе CORBA состоит в отображении типов объектов в типы клиентских и серверных стабов путем
- отображения описания запроса клиента в ЯП в операции IDL;
- преобразования операций IDL в конструкции ЯП и передачу их серверу средствами брокера ORB, реализующего в типы данных клиента.
Так как ЯП системы CORBA могут быть реализованы на разных платформах и в разных средах, то их двоичное представление зависит от конкретной аппаратной платформы [8.2, 8.7, 8.8]. Для всех ЯПсистемы CORBA (С++, JAVA, Smalltalk, Visual C++, COBOL, Ada-95) предусмотрен общий механизм связи и расположения параметров методов объектов в промежуточном слое. Связь между объектными моделями каждого ЯП системы СОМ и JAVA выполняет брокер ORB (рис. 8.4).
Если в общую объектную модель CORBA входит объектная модель СОМ, то в ней типы данных определяются статически, а конструирование сложных типов данных осуществляется только для массивов и записей. Методы объектов используются в двоичном коде и допускается двоичная совместимость машинного кода объекта, созданного в одной среде разработки, коду другой среды, а также совместимость разных ЯП за счет свойства отделения интерфейсов объектов от реализаций.
В случае вхождения в состав модели CORBA объектной модели JAVA/RMI, вызов удаленного метода объекта осуществляется ссылками на объекты, задаваемые указателями на адреса памяти.
Интерфейс как объектный тип реализуется классами и предоставляет удаленный доступ к нему сервера. Компилятор JAVA создает байткод, который интерпретируется виртуальной машиной, обеспечивающей переносимость байткодов и однородность представления данных на всех платформах среды СORBA.
8.2.2. Взаимодействие разноязыковых программ
Проблеме взаимодействия разноязыковых программ на множестве современных языков (C/C++, Visual C++, Visual Basic, Matlab,Smalltalk, Lava, LabView, Perl) посвящена работа [8.14]. В ней представлены различные варианты и конкретные примеры связей каждой пары ЯП из этого множества с помощью практически реализованных и приведенных функций преобразования, методов обращения к ним из программ на одном языке к программе на другом языке. В таблице 8.1. приведены варианты взаимосвязи разных ЯП.
В ней отражены особенности их взаимодействия через разные виды интерфейсов, приведены более 25 видов пар современных ЯП и соответственно прямого и обратного взаимодействия разноязыковых программ.
Для этих пар ЯП изложены принципы запуска разных программ и все технические вопросы передачи данных и преобразования параметров.
Материал учебного пособия содержит многочисленные примеры интерфейсных программ, которые разработаны для преобразования разнотипных параметров с учетом особенностей их реализации системами программирования.
В отличие от рассмотренной общей схемы взаимодействия программ с двумя модулями (рис. 8.1), здесь рассмотрены высокотехничные средства обеспечения процесса преобразования: панели, сценарии, иконки и образцы интерфейсных программ для каждого конкретного случая взаимодействия программ. Далее дается краткое описание шести схем средств описания разноязыковых программ, взаимодействующих с языками, приведенными во второй колонке данной таблицы.
Интерфейс между Visual Basic и другими ЯП осуществляется с помощью оператора обращения, параметрами которого могут быть строки, значения, массивы и другие типы данных. Их обработка проводится функциями Windows API, API DLL и операциями преобразования типов данных. В качестве примера приведена схема обработки Интернет-приложений, задаваемых HTML-страницами Basic Visual, размещаемых в Web-браузере и базах данных.
Matlab содержит средства для решения задач линейной и нелинейной алгебры, действий над матрицами и др. и обеспечивает математические вычисления с помощью MatlabCompiler, Matlab C++, MatlabLibriary, Matlab Graphic Library. Приведена схема независимого приложения в среде Matlab, которая включает интерфейс между VC и Matlab, создаваемый MatlabCompiler путем преобразования программы в формате Matlab (М-файлы или М-функции) в формат С.
Средства описания программ | Языки взаимодействия | Виды интерфейсов |
---|---|---|
Visual Basic |
|
|
Smalltalk |
|
|
Lab View |
|
|
JAVA |
|
|
Perl |
|
|
Сформированный файл вызывается из программы в С++ и преобразовывается к виду архитектуры компьютера, куда отсылается результат.
Базовые средства Smalltalk обеспечивают создание приложений в среде VisualWorks и включают модель приложений, методы объектов, сообщения для передачи значений внешним объектам и пользовательский интерфейс (рис. 8.5). Модель приложения содержит функции DLL из класса внешнего интерфейса, взаимодействующие с функциями библиотеки С++.
Система LabView предназначена для автоматизации производственных процессов, сбора данных, проведения измерений и управление созданием программ, взаимодействующих с аппаратурой. В ее состав входят прикладные средства, тестирования программ и драйверы взаимодействия с аппаратурой, запускаемых с пульта.
Система взаимодействует с ANS C, Visual Basic, Visual C++ Lab Windows/CV. Эти средства расширяют возможности создания систем реального времени, которые позволяют производить с помощью функций связи измерение аппаратуры типа: регуляторы, термометры, переключатели и др. Результаты измерений могут передаваться в сеть.
Среда Java содержит инструменты взаимодействия со всеми языками, приведенными во второй колонке таблицы. Общая схема связи языков JAVA, C и C++ программ приведена на рис. 8.6. Язык Perl появился в 80-х годах прошлого столетия как язык задания сценариев для взаимодействия с Интернет, управления задачами и создания CGI-сценариев на сервере в системе Unix. Данный язык имеет интрфейс с С, С++, Visual Basic и Java. Интерпретатор с языка Perl написан в языке С и каждый интерфейс с другим языком рассматривается как расширение, представляемое процедурами динамической библиотеки.
Оператор вызова программы в С или С++ обеспечивает преобразование ее в специальный код, который размещается в библиотеке интерпретатора Perl. Сам интерпретатор может быть включен в Win32 или в программу на C/C++.
Таким образом, в работе [8.14] тщательно исследованы самые современные средства и инструменты представления разноязыковых программ и принципы их взаимодействия с широко используемыми ЯП. Даны рекомендации по конкретному применению каждого средства с учетом условий среды и правил прямой и обратной передачи параметров программе в ЯП из класса рассмотренных ЯП. Приведены многочисленные примеры, которые проверены экспериментально, ими можно пользоваться на практике либо использовать в качестве образца.