8.2. інтерфейс ЯП 8.2.1. Інтерфейс і взаємозв'язок з ЯП
Основні ЯП, що використовуються для опису компонентів в сучасних середовищах, це С ++, Паскаль, JAVA і ін. [ 8.2 , 8.12 , 8.13 ].
Різномовних програм, записані в цих мовах, звертаються один до одного через віддалений виклик, який передбачає взаємно однозначна відповідність між фактичними параметрами викликає програми і формальними параметрами спричиненої програми. При неоднорідності одного з параметрів з безлічі формальних або фактичних параметрів різномовних програм необхідно провести відображення (mapping) нееквівалентного типу даних параметра в одному ЯП в відповідний тип даних в іншому ЯП.
Аналогічно вирішується завдання перетворення нееквівалентний типів даних в ЯП. Уявімо це перетворення такими етапами.
Етап 1. Побудова операцій перетворення типів даних для безлічі мов програмування .
Етап 2 .Построеніе відображення простих типів даних для кожної пари взаємодіючих компонентів в і , А також застосування операцій селектора і конструктора для відображення складних структур даних в цих мовах. Один із способів формалізованого перетворення типів даних - створення алгебраїчних систем для кожного типу даних :
де - тип даних, - безліч значень, які можуть приймати змінні цього типу даних, - безліч операцій над цими типами даних.
Як простих типів даних сучасних ЯП можуть бути . Складні типи даних - комбінація простих типів даних. Цим типам даних відповідають наступні класи алгебраїчних систем:
Кожен елемент класу простих і складних типів даних визначається на безлічі значень цих типів даних і операцій над ними:
, де .
Операціями перетворення кожного типу даних відповідає изоморфное відображення двох алгебраїчних систем з сумісними типами даних двох різних мов. У класі систем (8.1) перетворення типів даних для пари мов і володіє такими властивостями відображень:
- системи і для мов і - ізоморфні, якщо їх типи даних , визначені на одному тому ж безлічі простих або складних типів даних;
- між значеннями і типів даних і існує ізоморфізм, якщо безлічі операцій і , Що застосовуються для цих типів даних, різні. Якщо це безліч порожньо, то маємо ізоморфізм двох систем і . Якщо тип даних є рядок, а тип - речовий, то між множинами і не існує изоморфного відповідності;
- алгебри по потужності повинні бути рівні, так як вони представлені на безлічі типів даних мов і
Відображення 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 ] Ретельно досліджені найсучасніші засоби і інструменти уявлення різномовних програм і принципи їх взаємодії з широко використовуваними ЯП. Дано рекомендації по конкретному застосуванню кожного засобу з урахуванням умов середовища і правил прямий і зворотної передачі параметрів програмі в ЯП з класу розглянутих ЯП. Наведено численні приклади, які перевірені експериментально, ними можна користуватися на практиці або використовувати в якості зразка.