Главная

Статьи

НОУ ІНТУЇТ | лекція | Інтерфейси, взаємодія і зміна програм і даних

  1. 8.2. інтерфейс ЯП 8.2.1. Інтерфейс і взаємозв'язок з ЯП
  2. 8.2.2. Взаємодія різномовних програм

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

8.2.1. Інтерфейс і взаємозв'язок з ЯП

Основні ЯП, що використовуються для опису компонентів в сучасних середовищах, це С ++, Паскаль, JAVA і ін. [ 8.2 , 8.12 , 8.13 ].

Різномовних програм, записані в цих мовах, звертаються один до одного через віддалений виклик, який передбачає взаємно однозначна відповідність між фактичними параметрами Різномовних програм, записані в цих мовах, звертаються один до одного через віддалений виклик, який передбачає взаємно однозначна відповідність між фактичними параметрами   викликає програми і формальними параметрами   спричиненої програми викликає програми і формальними параметрами спричиненої програми. При неоднорідності одного з параметрів з безлічі формальних або фактичних параметрів різномовних програм необхідно провести відображення (mapping) нееквівалентного типу даних параметра в одному ЯП в відповідний тип даних в іншому ЯП.

Аналогічно вирішується завдання перетворення нееквівалентний типів даних в ЯП. Уявімо це перетворення такими етапами.

Етап 1. Побудова операцій перетворення типів даних Етап 1 для безлічі мов програмування .

Етап 2 .Построеніе відображення простих типів даних для кожної пари взаємодіючих компонентів в Етап 2 і , А також застосування операцій селектора і конструктора для відображення складних структур даних в цих мовах. Один із способів формалізованого перетворення типів даних - створення алгебраїчних систем для кожного типу даних :

де де   - тип даних,   - безліч значень, які можуть приймати змінні цього типу даних,   - безліч операцій над цими типами даних - тип даних, - безліч значень, які можуть приймати змінні цього типу даних, - безліч операцій над цими типами даних.

Як простих типів даних сучасних ЯП можуть бути Як простих типів даних сучасних ЯП можуть бути . Складні типи даних - комбінація простих типів даних. Цим типам даних відповідають наступні класи алгебраїчних систем:

Кожен елемент класу простих і складних типів даних визначається на безлічі значень цих типів даних і операцій над ними:

, де , де .

Операціями перетворення кожного Операціями перетворення кожного   типу даних відповідає изоморфное відображення двох алгебраїчних систем з сумісними типами даних двох різних мов типу даних відповідає изоморфное відображення двох алгебраїчних систем з сумісними типами даних двох різних мов. У класі систем (8.1) перетворення типів даних для пари мов і володіє такими властивостями відображень:

  1. системи і для мов і - ізоморфні, якщо їх типи даних , визначені на одному тому ж безлічі простих або складних типів даних;
  2. між значеннями і типів даних і існує ізоморфізм, якщо безлічі операцій і , Що застосовуються для цих типів даних, різні. Якщо це безліч порожньо, то маємо ізоморфізм двох систем і . Якщо тип даних є рядок, а тип - речовий, то між множинами і не існує изоморфного відповідності;
  3. алгебри по потужності повинні бути рівні, так як вони представлені на безлічі типів даних мов і

Відображення 1, 2 зберігають лінійний порядок елементів, оскільки алгебраїчні системи є лінійно впорядкованими. Загальна схема зв'язку ЯП в розподіленої середовищі Характерно особливість ЯП, використовуваних в розподілених середовищах, - їх неоднорідність як у сенсі уявлення типів даних в них, так і платформ комп'ютерів, де реалізовані відповідні системи програмування. Причина неоднорідності - це різні способи передачі параметрів між об'єктами в різних середовищах, наявність різних типів об'єктних моделей і форматів даних для завдання параметрів, різні види операторів віддаленого виклику і отримання результатів виконання запитів і ін.

Системи програмування з ЯП мають такі особливості компілювання програм:

Зв'язок між різними мовами Зв'язок між різними мовами   здійснюється через інтерфейс пари мов   ,   , Взаємодіючих між собою в середовищі, що генерує відповідні конструкції   в операції опису інтерфейсу і навпаки здійснюється через інтерфейс пари мов , , Взаємодіючих між собою в середовищі, що генерує відповідні конструкції в операції опису інтерфейсу і навпаки.

Взаємодія ЯП в середовищі CORBA .Прінціп взаємодії об'єктів в середовищі CORBA полягає в тому, що будь-який об'єкт виконує метод (функцію, сервіс, операцію) за умови, якщо інший об'єкт, який виступає в ролі клієнта для нього, посилає йому запит для виконання цього методу. Об'єкт виконує метод через інтерфейс.

Взаємодія ЯП в системі CORBA полягає у відображенні типів об'єктів в типи клієнтських і серверних стаб шляхом

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


Мал.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

  • Модель додатки в 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

  • Переносних орієнтовані функції.
  • Бібліотеки функцій в С ++, С.
  • Функції в JNI.

Perl

  • Переносних орієнтовані функції.
  • Програмний інтерфейс.
  • Інтерфейсні функції в С ++.

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

Базові засоби 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 написаний в мові С і кожен інтерфейс з іншою мовою розглядається як розширення, що представляється процедурами динамічної бібліотеки.


Мал.8.6.

Схема взаємодії пріложеніяі програм Java, C, C ++

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

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