POSIX-OSE включає підтримку однієї чи більше мов, зазначених у 4.1.4.
Служби
Мовна підтримка забезпечує базовий синтаксис і визначення семантики для використання розробником програмного забезпечення у описі бажаної функції застосування. Велика кількість мовних послуг — унікальна функція мовної специфікації. Детальний опис мов міститься у відповідних настановах та стандартах, що забезпечують ці настанови.
API-служби. Від програміста вимагається уміння писати і виконувати програму на конкретній мові програмування. Вибір конкретної мови програмування для розроблення застосування залежить від здатності мови забезпечувати окремі чи всі перелічені далі функції однаково добре, як і деякі унікальні для мови спеціальні можливості:
арифметичні операції;
структуризація коду;
керування паралелізмом;
визначення І подання даних;
оброблення помилок;
операції вводу-виводу;
низькорівневі засоби програмування;
математичні функції;
керування логікою програми.
Ряд таких служб, як керування паралелізмом чи керування логікою програми й оголошення даних, — важливі елементи OSE. Вони специфікують нотації написання прикладної програми, їх використовують в АРІ для активізації керування виконанням застосування, плануванням І розподілом пам’яті.
Мови програмування, розглянуті в цьому підрозділі: Ада, APL, Full Basic, Сі, C++, Кобол, Лісп (Common Lisp), Фортран, Модула-2, Паскаль, ПЛ/1, Пролог.
Якщо програмістові необхідні інші служби (наприклад, ядро графічної системи), додатково до посилань на відповідний стандарт мови, необхідно звернутися до відповідної мовної прив’язки. Прив'язки до мови Ідентифіковано в 4.П.5 кожного підрозділі розділу 4 Настанови.
Ада — процедурна мова, призначена для оброблення числових і текстових даних. Ключові аспекти мови:
потужна типізація даних;
абстракції даних;
структуровані конструкції;
багатозадачний режим;
паралельне оброблення;
об’єктно-орієнтоване програмування.
Хоча мова Ада спочатку розроблялася для військових цілей, вона підходить ряду індустріальних і бізнес-застосувань, особливо для супервеликих застосувань.
APL — мова й інтерактивне середовище програмування, орієнтована на оброблення багатомір- них масивів символів І чисел. Використовує надзвичайно компактний запис, заснований на потужних примітивних функціях і функціонально об’єднаних операторах. Готуються зміни мови з метою дозволу одиничним елементам масиву містити масиви. В основному APL використовують для фінансового аналізу.
Full Basic — процедурна мова, часто реалізується в інтерактивному режимі. Дещо схожа на Фортран. Легко вивчають люди, не знайомі з основами комп’ютерної грамотності. Зазвичай використовують з освітньою метою, також прийнята у ряді ділових І комерційних застосувань, що їх виконують на системах для малого бізнесу. Full Basic пропонує:
діалогові інструкції;
вільний стиль уводу даних;
сегментацію складних інструкцій;
математичні функції.
СІ — процедурна мова загального призначення, спочатку розроблена для операційної системи Unix. Пропонує керування І структуризацію даних мовою високого рівня й ефективних примітивних операторів, що роблять її придатною для системного програмування.
C++ розвилася як розширення Сі, її розглядають як процедурну мову, хоча забезпечує засоби для об’єктно-орієнтованого програмування. Концепція об’єктно-орієнтованої мови полягає у визначенні даних як об’єктів, що включають набори операцій для керування даними і спрямовані на виконання включених у застосування необхідних операцій.
Кобол — процедурна мова, спочатку розроблена для потреб бізнесу. Допускає використання слів і фраз природної мови, її можуть використовувати технічно непід готовлен і користувачі, що розуміють основи оброблення інформації. Мова надає можливість файлової організації, дані змінної довжини, процедури вводу-виводу, індексований доступ до файлів і генератор звітів.
Лісп (Common Lisp) — Інтерактивна функціональна мова. Основний об’єкт оброблення — символьне подання, що є атомом чи списковою структурою. Список — набір елементів, доступних у певному порядку. Списки бувають змінної довжини і динамічно встановлювані; елементи можуть мати різний тип. Мова ґрунтується на логічних конструкціях високого рівня, її використовують в застосуваннях штучного інтелекту.
Фортран, хоча спочатку розроблений для вирішення наукових проблем, широко використовують у комерційних і освітніх застосуваннях. У цій процедурній мові граматика, символи, правила і синтаксис задовольняють прості математичні й англомовні угоди. Орієнтований на числові обчислення, що використовують прості та короткі інструкції. Керує невеликою кількістю вхідних даних і тексту.
Модула-2 — універсальна Паскалеподібна процедурна мова, до якої додані:
принцип модульності та роздільної трансляції;
зручніший синтаксис і потужна типізація;
доступ до машинних засобів вирівнювання;
паралельне програмування.
Паскаль — процедурна мова, особливо ефективна у структурному програмуванні, розроблена для допомоги програмістам у швидкому виявленні помилок. Зручна для оброблення числових і текстових даних. Ефективна для невеликих системних застосувань виду редакторського оброблення набору текстів, автоматизації проектування і виробничих процесів.
ПЛ/І — процедурна мова; уведена з метою об’єднання в одній мові Коболу і Фортрану; тобто для обслуговування офісних і наукових сфер. Має силу Фортрану в простоті інструкцій і здатність Коболу керувати даними й організовувати файли. Блочно-структурована, що полегшує техніку програмування.
Пролог — непроцедурна мова; орієнтована скоріше на описи, ніж на дії. Описує кероване за взірцем і засноване на системі правил програмне використання встановлених усередині програми визначень умов, що задовольняють певний запит. Відіграє важливу роль у застосуваннях штучного інтелекту, у побудові експертних чи заснованих на знаннях систем.
ЕЕІ-служби не застосовують.
Стандарти, специфікації і недокументовані служби
Див. таблицю 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 (дар) — прогалина (відсутність специфікацій).
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 для широкого використання.