Московский физико-технический институт
Опубликован: 24.09.2008 | Доступ: свободный | Студентов: 4596 / 2260 | Оценка: 4.52 / 4.48 | Длительность: 25:15:00
Специальности: Системный архитектор
Лекция 9:

Интерфейсы, взаимодействие и изменение программ и данных

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

8.2. Интерфейс ЯП

8.2.1. Интерфейс и взаимосвязь с ЯП

Основные ЯП, используемые для описания компонентов в современных средах, это С++, Паскаль, JAVA и др. [8.2, 8.12, 8.13].

Разноязыковые программы, записанные в этих языках, обращаются друг к другу через удаленный вызов, который предполагает взаимно однозначное соответствие между фактическими параметрами V = \{v^{1}, v^{2}, \dots, v^{к}\} вызывающей программы и формальными параметрами F = \{f^{1}, f^{2}, \dots, f^{к1}\} вызываемой программы. При неоднородности одного из параметров из множества формальных или фактических параметров разноязыковых программ необходимо провести отображение (mapping) неэквивалентного типа данных параметра в одном ЯП в соответствующий тип данных в другом ЯП.

Аналогично решается задача преобразования неэквивалентных типов данных в ЯП. Представим это преобразование такими этапами.

Этап 1. Построение операций преобразования типов данных T_{\alpha} = \{T_{\alpha}^{t}\} для множества языков программирования L = \{ l_{\alpha} \}_{\alpha=1, n}.

Этап 2.Построение отображения простых типов данных для каждой пары взаимодействующих компонентов в l_{\alpha1} и l_{\alpha2}, а также применение операций селектора S и конструктора С для отображения сложных структур данных в этих языках. Один из способов формализованного преобразования типов данных - создание алгебраических систем для каждого типа данных T_{\alpha}^{t}:

G_{\alpha}^{t} = < X_{\alpha}^{t},\Omega_{\alpha}^{t} >,

где t - тип данных, X_{\alpha}^{t} - множество значений, которые могут принимать переменные этого типа данных, \Omega_{\alpha}^{t} - множество операций над этими типами данных.

В качестве простых типов данных современных ЯП могут быть t = b (bool), c (char), i (int), r (real). Сложные типы данных t = a (array), z (record), u (union), e (enum) - комбинация простых типов данных. Этим типам данных соответствуют следующие классы алгебраических систем:

\begin{array}{l}
    \sum_{1} = \{G_{\alpha}^{b} , G_{\alpha}^{c} , G_{\alpha}^{i} , G_{\alpha}^{r}\} \\
    \sum_{2} = \{G_{\alpha}^{a} , G_{\alpha}^{z}, G_{\alpha}^{u}, G_{\alpha}^{e}\}
    \end{array} ( 8.1)

Каждый элемент класса простых и сложных типов данных определяется на множестве значений этих типов данных и операций над ними:

G_{\alpha}^{t} = < X_{\alpha}^{t},\Omega_{\alpha}^{t} > , где t = b, c, i, r, a, z, u, e.

Операциям преобразования каждого t типа данных соответствует изоморфное отображение двух алгебраических систем с совместимыми типами данных двух разных языков. В классе систем (8.1) преобразование типов данных t \to q для пары языков l_{t} и l_{q} обладает такими свойствами отображений:

  1. системы G_{\alpha}^{t} и G_{\beta}^{q} для языков l_{t} и l_{q} - изоморфны, если их типы данных q, t определены на одном том же множестве простых или сложных типов данных;
  2. между значениями X_{\alpha}^{t} и X_{\beta}^{q} типов данных t и q существует изоморфизм, если множества операций \Omega_{\alpha}^{t} и \Omega_{\beta}^{q}, применяемых для этих типов данных, различны. Если это множество пусто, то имеем изоморфизм двух систем G_{\alpha}^{t^\prime} = < X_{\alpha}^{t},\Omega > и G_{\beta}^{q^\prime} = <X_{\beta}^{q},\Omega>. Если тип данных t есть строка, а тип q - вещественное, то между множествами X_{\alpha}^{t} и X_{\beta}^{q} не существует изоморфного соответствия;
  3. алгебраические системы |G_{\alpha}^{t}| = |G_{\beta}^{q}| по мощности должны быть равны, так как они представлены на множестве типов данных языков l_{t} и l_{q}.

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

Системы программирования с ЯП имеют следующие особенности компилирования программ:

  • разные двоичные представления результатов компиляторов для одного и того же ЯП, реализованных на разных компьютерах;
  • двунаправленность связей между ЯП и их зависимость от среды и платформы;
  • параметры вызовов объектов отображаются в операции методов;
  • связь с разными ЯП реализуется ссылками на указатели в компиляторах;
  • связь ЯП осуществляется через интерфейсы каждой пары из множества языков (L_{1}, \dots, L_{n}) промежуточной среды.

Связь между различными языками L_{1}, \dots, L_{n} осуществляется через интерфейс пары языков L_{i}, L_{n}, взаимодействующих между собой в среде, генерирующей соответствующие конструкции L_{i} в операции описания интерфейса и наоборот.

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

Взаимодействие ЯП в системе CORBA состоит в отображении типов объектов в типы клиентских и серверных стабов путем

  • отображения описания запроса клиента в ЯП в операции IDL;
  • преобразования операций IDL в конструкции ЯП и передачу их серверу средствами брокера ORB, реализующего stub в типы данных клиента.

Так как ЯП системы CORBA могут быть реализованы на разных платформах и в разных средах, то их двоичное представление зависит от конкретной аппаратной платформы [8.2, 8.7, 8.8]. Для всех ЯПсистемы CORBA (С++, JAVA, Smalltalk, Visual C++, COBOL, Ada-95) предусмотрен общий механизм связи и расположения параметров методов объектов в промежуточном слое. Связь между объектными моделями каждого ЯП системы СОМ и JAVA выполняет брокер ORB (рис. 8.4).

Интегрированная среда системы CORBA

Рис. 8.4. Интегрированная среда системы CORBA

Если в общую объектную модель 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 (М-файлы или М-функции) в формат С.

Таблица 8.2. Интерфейс современных языков и средств программирования
Средства описания программ Языки взаимодействия Виды интерфейсов
Visual Basic
  • ANCI C
  • C, C++
  • Windows API
  • DLL
  • Visual Basic 6.0
  • Win 32
  • API Viewer
  • Платформенно-ориентированные функции.
  • Программный интерфейс.
  • Динамическая библиотека функций.
  • Интерфейс между Visual Basic.
  • Функции обработки событий. Интерфейс в API.
  • C, C++
  • Matlab Engine
  • Mat lab в JNI
  • Visual Basic 6.0
  • Java
  • Вызов приложения из среды.
  • Встраивание функций в VC++.
  • Использование интерфейса JNI.
  • Функции из Matlab.
  • Функции в Java.
Smalltalk
  • C++
  • Matlab
  • Start VI
  • Модель приложения в Visual Works.
  • Функции графической библиотеки.
  • Библиотеки С, С++ и процедуры Visual Works.
Lab View
  • ANCI C
  • Visual C++
  • Visual Basic 6.0
  • C, C++
  • Интерфейс VI и API.
  • Связь Visual C, DLL, Obj Lib С, C++.
  • Интерфейсные функции драйвера.
JAVA
  • C, C++
  • Visual C++
  • Matlab
  • Платформенно-ориентированные функции.
  • Библиотеки функций в С++, С.
  • Функции в JNI.
Perl
  • C, C++
  • API
  • Visual C++
  • Платформенно-ориентированные функции.
  • Программный интерфейс.
  • Интерфейсные функции в С++.

Сформированный файл вызывается из программы в С++ и преобразовывается к виду архитектуры компьютера, куда отсылается результат.

Базовые средства Smalltalk обеспечивают создание приложений в среде VisualWorks и включают модель приложений, методы объектов, сообщения для передачи значений внешним объектам и пользовательский интерфейс (рис. 8.5). Модель приложения содержит функции DLL из класса внешнего интерфейса, взаимодействующие с функциями библиотеки С++.

Схема взаимодействия модели приложения с библиотекой

Рис. 8.5. Схема взаимодействия модели приложения с библиотекой

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

Система взаимодействует с ANS C, Visual Basic, Visual C++ Lab Windows/CV. Эти средства расширяют возможности создания систем реального времени, которые позволяют производить с помощью функций связи измерение аппаратуры типа: регуляторы, термометры, переключатели и др. Результаты измерений могут передаваться в сеть.

Среда Java содержит инструменты взаимодействия со всеми языками, приведенными во второй колонке таблицы. Общая схема связи языков JAVA, C и C++ программ приведена на рис. 8.6. Язык Perl появился в 80-х годах прошлого столетия как язык задания сценариев для взаимодействия с Интернет, управления задачами и создания CGI-сценариев на сервере в системе Unix. Данный язык имеет интрфейс с С, С++, Visual Basic и Java. Интерпретатор с языка Perl написан в языке С и каждый интерфейс с другим языком рассматривается как расширение, представляемое процедурами динамической библиотеки.

Схема взаимодействия приложенияи программ Java, C, C++

Рис. 8.6. Схема взаимодействия приложенияи программ Java, C, C++

Оператор вызова программы в С или С++ обеспечивает преобразование ее в специальный код, который размещается в библиотеке интерпретатора Perl. Сам интерпретатор может быть включен в Win32 или в программу на C/C++.

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

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Александр Медов
Александр Медов

Здравствуйте,при покупке печатной формы сертификата,будут ли выданы обе печатные сторны?

Александр Медов
Александр Медов

Здравствуйте, прошел курс МБА Управление ИТ-проектами и направил документы на получение диплома почтой. Подскажите, сроки получения оного в бумажной форме?

: