POSIX-OSE включає підтримку однієї чи більше мов, зазначених у 4.1.4.

  1. Служби

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

  1. API-служби. Від програміста вимагається уміння писати і виконувати програму на конк­ретній мові програмування. Вибір конкретної мови програмування для розроблення застосування залежить від здатності мови забезпечувати окремі чи всі перелічені далі функції однаково добре, як і деякі унікальні для мови спеціальні можливості:

  • арифметичні операції;

  • структуризація коду;

  • керування паралелізмом;

  • визначення І подання даних;

  • оброблення помилок;

  • операції вводу-виводу;

  • низькорівневі засоби програмування;

  • математичні функції;

  • керування логікою програми.

Ряд таких служб, як керування паралелізмом чи керування логікою програми й оголошення да­них, — важливі елементи OSE. Вони специфікують нотації написання прикладної програми, їх викорис­товують в АРІ для активізації керування виконанням застосування, плануванням І розподілом пам’яті.

Мови програмування, розглянуті в цьому підрозділі: Ада, APL, Full Basic, Сі, C++, Кобол, Лісп (Common Lisp), Фортран, Модула-2, Паскаль, ПЛ/1, Пролог.

Якщо програмістові необхідні інші служби (наприклад, ядро графічної системи), додатково до посилань на відповідний стандарт мови, необхідно звернутися до відповідної мовної прив’язки. Прив'язки до мови Ідентифіковано в 4.П.5 кожного підрозділі розділу 4 Настанови.

Ада — процедурна мова, призначена для оброблення числових і текстових даних. Ключові аспекти мови:

  • потужна типізація даних;

  • абстракції даних;

  • структуровані конструкції;

  • багатозадачний режим;

  • паралельне оброблення;

  • об’єктно-орієнтоване програмування.

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

APL — мова й інтерактивне середовище програмування, орієнтована на оброблення багатомір- них масивів символів І чисел. Використовує надзвичайно компактний запис, заснований на потужних примітивних функціях і функціонально об’єднаних операторах. Готуються зміни мови з метою доз­волу одиничним елементам масиву містити масиви. В основному APL використовують для фінан­сового аналізу.

Full Basic процедурна мова, часто реалізується в інтерактивному режимі. Дещо схожа на Фортран. Легко вивчають люди, не знайомі з основами комп’ютерної грамотності. Зазвичай викорис­товують з освітньою метою, також прийнята у ряді ділових І комерційних застосувань, що їх виконують на системах для малого бізнесу. Full Basic пропонує:

  • діалогові інструкції;

  • вільний стиль уводу даних;

  • сегментацію складних інструкцій;

  • математичні функції.

СІ — процедурна мова загального призначення, спочатку розроблена для операційної системи Unix. Пропонує керування І структуризацію даних мовою високого рівня й ефективних примітивних операторів, що роблять її придатною для системного програмування.

C++ розвилася як розширення Сі, її розглядають як процедурну мову, хоча забезпечує засоби для об’єктно-орієнтованого програмування. Концепція об’єктно-орієнтованої мови полягає у визначенні даних як об’єктів, що включають набори операцій для керування даними і спрямовані на виконання включених у застосування необхідних операцій.

Кобол — процедурна мова, спочатку розроблена для потреб бізнесу. Допускає використання слів і фраз природної мови, її можуть використовувати технічно непід готовлен і користувачі, що ро­зуміють основи оброблення інформації. Мова надає можливість файлової організації, дані змінної довжини, процедури вводу-виводу, індексований доступ до файлів і генератор звітів.

Лісп (Common Lisp) — Інтерактивна функціональна мова. Основний об’єкт оброблення — сим­вольне подання, що є атомом чи списковою структурою. Список — набір елементів, доступних у пев­ному порядку. Списки бувають змінної довжини і динамічно встановлювані; елементи можуть мати різний тип. Мова ґрунтується на логічних конструкціях високого рівня, її використовують в застосуван­нях штучного інтелекту.

Фортран, хоча спочатку розроблений для вирішення наукових проблем, широко використовують у комерційних і освітніх застосуваннях. У цій процедурній мові граматика, символи, правила і синтак­сис задовольняють прості математичні й англомовні угоди. Орієнтований на числові обчислення, що використовують прості та короткі інструкції. Керує невеликою кількістю вхідних даних і тексту.

Модула-2 — універсальна Паскалеподібна процедурна мова, до якої додані:

  • принцип модульності та роздільної трансляції;

  • зручніший синтаксис і потужна типізація;

  • доступ до машинних засобів вирівнювання;

  • паралельне програмування.

Паскаль — процедурна мова, особливо ефективна у структурному програмуванні, розроблена для допомоги програмістам у швидкому виявленні помилок. Зручна для оброблення числових і тексто­вих даних. Ефективна для невеликих системних застосувань виду редакторського оброблення на­бору текстів, автоматизації проектування і виробничих процесів.

ПЛ/І — процедурна мова; уведена з метою об’єднання в одній мові Коболу і Фортрану; тобто для обслу­говування офісних і наукових сфер. Має силу Фортрану в простоті інструкцій і здатність Коболу керу­вати даними й організовувати файли. Блочно-структурована, що полегшує техніку програмування.

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

ЕЕІ-служби не застосовують.

  1. Стандарти, специфікації і недокументовані служби

Див. таблицю 4.

Таблиця 4 — Стандарти мов

Служби

Тип

Специфікація

Підрозділ

Ада

S

ISO/IEC 8652:1995, ISO/IEC 14519:1999

4.1.5.1

APL

S

ISO 8485:1989, ISO/IEC 13751:2001

4.1.5.1

Full Basic

S

ISO/IEC 10279:1991/Amd 1:1994

4.1.5.1

Сі

S

ISO/IEC 9899:1999

4.1.5.1

C++

S

ISO/IEC 14882:1998

4.1.5.2

Кобол

S

ДСТ 22558-89 (1001989:1985) /Amd 1:1992/Amd 2:1994

4.1.5.1

Лісп (Common Lisp)

S

ISO/IEC 13816:1997

4.1.5.2

Фортран

S

ISO/IEC 1539-1:1997, ISO/IEC 1539-2:2000, ISO/IEC 1539-3:1999, ISO/IEC TR 15580:2001, ISO/IEC TR 15581:1998

4.1.5.1

Модула-2

S

ISO/IEC 10514-1:1996, ISO/IEC 10514-2:1998, ISO/IEC 10514-3:1998

4.1.5.1

Паскаль

S

ISO 7185:1990, ISO/IEC 10206:1991

4.1.5.1

PL/1

S

ISO 6160:1979

4.1.5.1

PL/1 (підмножина GP)

S

ISO/IEC 6522:1992

4.1.5.1

Пролог

S

ISO/IEC 13211-1:1995, ISO/IEC 13211-2:2000

4.1.5.1



Примітка. Тут L1SS — доступна незалежна від мов специфікація; S — офіційний чинний стандарт; Є — вихідний стандарт або проект стандарту; Р — загальноприйнятна опублікована специфікація; G (дар) — прогалина (відсутність специфікацій).

  1. POSIX-OSE-стандарти. Стандарти, перелічені в цьому підпункті, складають частину POSIX-OSE.

ISO/IEC 8652:1995 — актуальна версія стандарту мови Ада; замінила ISO/IEC 8652:1987 і часто згадується як Ада-95. Проте усе ще використовують прикладні програми, розроблені навіть за допомо­гою Ада-83 (ISO/IEC 8652:1982). Як наслідок допустимості використання Ада-83 для переходу до OSE, прив’язка Ади до ISO/IEC 9945-1:1996 виконується, починаючи з Ада-83, і зараз регламентується ISO/IEC 14519:1999.

ISO/IEC 8485:1989 — актуальна версія стандарту для APL; ISO/IEC 13751:2001 — актуальна вер­сія стандарту для розширеного APL.

ISO/IEC 10279:1991 —актуальна версія стандарту для Full Basic. Розширення, що стосуються модулів і вводу одиничних символів, внесені поправкою Arnd 1:1994.

ISO/IEC 9899:1999 — актуальна версія стандарту для мови СІ, що замінила ISO/IEC 9899:1990 упорядкуванням засобів об’єктно-орієнтованого програмування, удосконалення концепції цілісності, вирішення задачі інтернаціоналізації і розширення складу стандартної бібліотеки.

ISO/IEC 14882:1998 — актуальна версія стандарту для мови C++. Забезпечуючи наступність для Сі-програм, C++ увібрав новітні механізми, передусім основу об’єктно-орієнтованої природи, апарат шаблонів і абстрактних класів і реалізоване за допомогою синтаксису оброблення винятків і простору імен. Орієнтуючись на створення стандартної бібліотеки за аналогією із Сі і використавши прототипи бібліотек FDT (Fundamental Data Types) і BIDS (Borland International Data Structures), розроб­ники ISO/IEC 14882:1998 сформували бібліотеку стандартних шаблонів класів STL (Standard Template Library), що, хоча і вийшла синтаксично некоректною щодо наявних трансляторів, є такою са­мою авангардною, як і весь ISO/IEC 14882. Однаково авангардною і універсальною є концепція муль- типотоковості, за якою об’єкти в C++ (капсулюють нитки потоку керування. З огляду на вимоги PREMO- стандарту на програмне середовище для multimedia-об’єктів, тим не менше ISO/IEC 14882 не регламен­тує спосіб реалізації мультипотоковості, яких розробники нарахували 18 та, не зупинивши свій вибір наякомусь, вирішили поки що не закріплювати у стандарті жодного способу. Разом із багатьма іншими нововведеннями, робочі варіанти розширення C++ для мульти потоковості вирішено помістити в спе­ціальне доповнення "Виконання C++" до ISO/IEC 14882, розроблення якого вже почалося.

ISO 1989:1985 — актуальна версія стандарту Коболу, з якою гармонізований ГОСТ 22558-89. Видано два додатки до стандарту — Arnd 1:1992 "Модуль вбудованих функцій" (аналог стандарт­ної бібліотеки) І Arnd 2:1994 "Виправлення для Коболу з коректурою і кларифікацією". Розроблено І затверджено JTC1 нову редакцію ISO/IEC-стандарту, яку названо Кобол-2000 І в якій подано нові засоби, що суттєво розширюють мову Кобол:

  • підтримування об’єктно-орієнтованого програмування. У Коболі класи поділяють на прості класи, класи і шаблонні класи. Усі класи поліморфні, тому що всі методи класів віртуальні. Простий клас не має базових класів і не містить секції зв’язку і ще ряду секцій. Жоден клас не може по­роджуватися іншим класом, який містить самого себе навіть опосередковано. Кожен клас має як мінімум два види інтерфейсу: Інтерфейс власне класу й інтерфейс фабрики. Отже, у Коболі явно окреслено, як створюють екземпляри класу, на відміну від C++, де для цього застосовують оператор new. На відміну від C++, у Коболі усі функції є загальнодоступними (метод об’єкта public); на відміну від трьох видів спадкування в C++, для Коболу існує тільки один вид спадкування. Для керування станами програмних об’єктів вони організуються в класи. Клас— група об’єктів, що має загальні структури даних і використовує ті самі методи. Так допускається визначати структури даних для класу. Всі об’єкти в межах класу мають унікальні значення даних, отримані зі структур класу. Це також дає змогу ме­тодам, визначеним один раз на рівні класу, використовувати в кожному об’єкті класу;

  • додаткові засоби для виявляння і повідомлення про виняткові ситуації;

  • булеві типи даних, операції над ними і власний двійковий тип даних;

  • вільну форму початкового тексту й умовну компіляцію;

  • автоматично розширювані таблиці І розширений генератор звітів;

  • розширений виклик процедур;

  • обумовлені користувачем функції і розширене оброблення екрану;

  • поділ файлів і блокування записів;

  • підтримування національних типів даних і засобу їхнього оброблення, підтримку ISO/IEC 10646-1:2000 для обміну даними І засоби для локальних культурних перетворень.

Отже, все більш необхідним стає новий робочий елемент, що визначає прив’язку мови Кобол до ISO/IEC 9945-1:1996.

ISO/IEC 1539:1997 — актуальна версія міжнародного стандарту для Фортрану, яка описує основні поняття І визначення, зветься Фортран-95, складається з трьох частин (ISO/IEC 1539-1:1997, ISO/IEC 1539-2:2000, ISO/IEC 1539-3:1999) і замінила чинний з 1991 року єдиний стандарт ISO/IEC 1539:1991 так званого Фортрану-90. Оскільки дотепер використовують застосування, розроблені в середовищі Фортран-77 (ISO/IEC 1539:1980), для полегшення переходу до OSE, у випадку неможливості викорис­тання актуальних версій стандарту, припустиме використання попередніх версій стандарту (прив’язка до ISO/IEC 9945-1:1996 починається з Фортран-90, див. IEEE Std 1003.9-1992). Закінчена розробка ISO/IEC-стандарту Фортрану-2000, що містить засоби об’єктно-орієнтованого програмування.

ISO/IEC 10514 — три частини міжнародного стандарту, що описують мову Модула-2 з використан­ням мови Віденського методу розроблення (Vienna Definition Method — VDM) згідно ISO/IEC 13817-1:1996, І специфікують модулі бібліотеки. У частині 1 ISO/IEC 10514 описані основи мови; частина 2 присвя­чена канонічній мові Модула-2, а в частині 3 специфіковані об'єктно-орієнтовані можливості. Обго­ворюють пропозиції щодо нового розділу робіт із прив'язки мови Модула-2 до ISO/IEC 9945-1:1996.

ISO 6160:1979 — актуальна версія міжнародного стандарту для ПЛ/1, для якої в ISO/IEC 6522:1992 введена універсальна підмножина мови ПЛ/1 для широкого використання.