Тема 1. Мови програмування (процедурні, візуальні, специфікацій). Концепція інструментального середовища розробки програм. Синтаксис і семантика, набори мовних конструктивів: описи, оператори, лексеми, поняття, атрибути, ділянки дії, блоки. Принцип модульностіАлгоритмічна мова (АМ) – формальна мова, призначена для записування алгоритмів шляхом формального задавання правил конструювання. Хоч для кожної АМ такі правила досить різноманітні і якісно відмінні, будь-який алгоритм можна скласти з невеликого числа елементарних приписів, що задають послідовність кроків алгоритму. АМ зветься універсальною, якщо в ній для довільного алгоритму можна описати алгоритмічно повний набір приписів. За узагальненістю способу записування алгоритмів універсальна АМ рівносильна алгоритмічній системі, наприклад, класичним алгоритмічним системам: нормальним алгоритмам Маркова, рекурсивним функціям, машинам Т’юрінга чи Поста. АМ визначається алфавітом вхідних символів, точним описом синтаксису (граматики) і семантики. Оператори АМ переробляють інформацію і можуть складатися з послідовності елементарних операцій, а оператори управління (переходу) визначають порядок виконання операторів у алгоритмі. Незважаючи на універсальність АМ, вони виявилися непридатними щодо розв’язання практичних задач на комп’ютерах, оскільки не враховували умов операційних середовищ, а орієнтувалися на дослідження фундаментальних питань теорії алгоритмів. Наприклад, у мові АЛГОЛ-60 (1960 р.) для записування алгоритмів були відсутні навіть оператори вводу-виводу. Тому на основі АМ виникли мови програмування (МП) як формальні мови спілкування людини з комп’ютером, призначені для опису сукупності інструкцій, виконання яких забезпечує правильне розв’язання потрібної задачі; інструкції описують обробку даних (інформації) і алгоритмів (програм) комп’ютерної обробки даних.Першими МП були мови машинні, що адекватні системам команд комп’ютера, безпосередньо ним реалізуються (наприклад, як асемблер), однак вимагають суттєвої деталізації розв’язування задачі. Тому з’явилися МП з вищим рівнем абстракції, орієнтовані на певні предметні області і здатні лаконічно виразити алгоритм розв’язання задачі: у 1958 р. Фортран для вирішення інженерних і наукових задач; у 1959 р. Кобол для задач оброблення економічної інформації. Зазначимо багатоцільову Адресну мову, яку розробили у 1956 р. київські математики В.С. Королюк і К.Л. Ющенко і яка, завдяки апарату непрямої адресації, випередила появу не тільки МП вищого рівня, але й асемблерів. Цей апарат закріпився у МП для системного програмування тільки починаючи з МП ПЛ/1 (1966 р.). Підручник з Адресної мови перевиданий у п’яти країнах світу, а Адресна мова реалізована на усіх вітчизняних комп’ютерах першого покоління. Залежно від підходу до описування задачі МП поділяють на процедурні, за допомогою яких детально визначається, як повинен діяти комп’ютер, та проблемно-орієнтовані або функціональні, які визначають у термінах функцій, що необхідно зробити. Процедурні мови містять засоби вираження таких характерних дій, як обчислення виразів, перевірка умов, оброблення текстових рядків, організація циклів обчислень, виклик процедур тощо. Проблемно-орієнтовані мови надають засоби визначення наборів функцій, що повинні виконуватися. За сорокаріччя розвитку відомо понад 1000 МП, серед яких поширилися і продовжують розвиватися всього півтора десятки, зафіксовані у міжнародних і національних стандартах. Необхідність стандартизації МП з’ясувалася ще наприкінці першого десятиріччя їхньої появи. З процедурних сьогодні стандартизовані і мають по декілька поколінь МП для інженерних застосувань Фортран, Бейсік і ФОРТ; для оброблення даних Кобол; для структурованих запитів до реляційних баз даних SQL; для розмітки документів SGML; для управління реальними об’єктами Ада і Модула-2; для оброблення матриць APL; для оброблення медичних даних M[UMPS], для оброблення списків КоммонЛисп; Пролог з вбудованим механізмом логічного виведення за методом резолюцій; для розробки застосувань ПЛ/1, Паскаль, Сі та С++. Вражає шлях розвитку МП Фортран, життєвий цикл якої нараховує вже шість поколінь, починаючи з Фортран-II у 1958 р. і першого стандарту на Фортран-IV у 1966 р.. Потім діяли стандарти на Фортран-77 та Фортран-90, поки стандарт на Фортран-95 не розділився на три частини через складність і громіздкість мовних конструктів для розпаралелювання процесів, спадкування, плаваючої арифметики, оброблення рядків змінної довжини і розширення вводу-виводу та загалом експорту/ імпорту даних. В результаті розпочатого перегляду чинного стандарту, шосте покоління Фортран-2000 не буде поступатися за потужністю МП Сі та збагатиться засобами об’єктно-орієнтованого програмування, інтернаціоналізації, поліморфізму, задавання посилань, асинхронного вводу-виводу, інтервальної арифметики, зв’язку з мовами програмування тощо.Зазначимо, що розвиток МП в Україні супроводжувався розробкою декількох оригінальних мов, серед яких доцільно назвати МП НЕДИС для описування задач моделювання подій, АНАЛІТИК для чисельно-аналітичних викладок на першому в світі персональному комп’ютері серії МИР, що розроблений в Києві.Перспективи організації розподіленого оброблення на основі обчислювальних мереж, що відкрилися у 90-і роки, призвели до нового витка у розвитку сучасних МП, які прийнято відносити до четвертого покоління (4GL). Причому зазначена родина стандартизованих МП розвивається переважно усередині себе, не розширюючи меж та об’єктивно відбиваючи наслідки принципу спадковості поколінь МП Приклади – створення на основі SGML мови HTML для описування web-сторінок і на основі С++ мови Java для розроблення програм-аплетів у складі Web-сторінок. Опис задачі або програма на МП перетворюється у машинну мову спеціальним процесором (транслятором чи інтерпретатором). Довільна МП машинно-незалежна, тому колись написану програму можна використовувати на різних комп’ютерних платформах і у різних операційних середовищах. Сьогодні мовний процесор – це інтегроване середовище розробки прикладних програм і великих застосувань, в якому уніфіковано підтримується зв’язок з іншими МП та базами даних, надаються графічні засоби і забезпечується поліекранна схема діалогу з користувачем. У МП реалізовано принцип приховування інформації, коли абстракції даних (блоки і шаблони зовнішніх даних) чи дій (процедури та їхні параметри) можна використовувати як чорний ящик, не знаючи подробиць їхнього облаштування та створення, і накопичувати продукти своєї та чужої праці. У сучасних МП вищий прояв цього принципу становлять абстракції типів даних, що визначають категорії даних з інкапсуляцією операцій над ними, та абстракції об’єктів, які домінують в об’єктно-орієнтованому програмуванні. За цим принципом визначаються інтерфейси – правила взаємодії програм. Щоб продукт праці програмістів міг використовуватися іншими, його функції і правила настроювання необхідно ясно визначати, тоді можливі колективна розробка програм і компонування їх з готових модулів, а також забезпечення розподіленого оброблення у середовищі відкритих систем.Проблемно-орієнтовані мови стали підґрунтям для розвитку мов специфікацій як засобів задавання специфікацій задачі, яку повинна розв’язувати програма. Зазвичай такий опис складається за певною моделлю розв’язання задачі; специфікуються характеристики і параметри моделі, тому у м.с.п. цінується насамперед висока виразність. Наведемо два приклади м.с.п., відомих кожному програмісту, – IDL (Interface Definition Language) для описування інтерфейсів програм розподіленого застосування і синтаксична метамова розширених БНФ (бекусо-наурівських форм). Другий приклад м.с.п – мови подання знань, які почали поповнюватися специфікаціями компонентів багаторазового використання, насамперед алгоритмів добування знань з дослідних даних. Алгоритми навчання стали настільки узагальненими, що вони включені до складу стандартних бібліотек і, як наслідок, почалася стандартизація цих алгоритмів, яка має на меті їхню фіксацію як мовних конструктів. Здолавши сорокарічний шлях розвитку, МП збагатилися власним формально-алгоритмічним апаратом, що складає інтелект інструментів розробки програм, і трансформувалися у алгоритмічні системи із збалансованими наборами конструктів, які спрацьовують у операційному середовищі з достатньо формалізованою та уніфікованою поведінкою, правила якої разом з МП інтенсивно стандартизуються. Таким чином, сьогодні МП повернули собі назву алгоритмічних мов. ^ Стандартизация языков программирования и операционных сред. Согласно ISO/IEC TR 14252:1996 "Руководство по POSIX-средам открытых систем (Open Systems Envirоnment)" в системе, составленной из около 50 действующих и еще большего числа разрабатываемых ISO/IEC-стандартов, стандарты POSIX-OSE разбиты на две группы. Одна из них касается API-интерфейса прикладных программ (Application Program Interface), определяет, как прикладное программное обеспечение взаимодействует с операционной средой, и влияет на мобильность программ. Стандарты другой группы относятся к EEI-интерфейсу внешней среды (External Environment Interface), устанавливают нормы взаимодействия приложения с внешней средой и влияют на взаимодействие приложений одного с другим, удобство пользовательского интерфейса (ПИ) и мобильность данных. Этой системой стандартов преследуются такие цели поддержки POSIX-совместимых сред открытых систем: мобильность приложений (переносимость или возможность работать на/в большом количестве компьютерных платформ и различных операционных сред), ввиду чего прикладная программа определяется как объект, состоящий из исходного текста, необходимых программе данных, программной и эксплуатационной документации; интероперабельность приложений или взаимодействие, заключающееся в совместном функционировании программ, запущенных на различных компьютерных платформах; мобильность данных, понимаемая как использование данных одного и того же формата на разных компьютерных платформах и в различных операционных средах; пользовательская мобильность. Стандартный пользовательский интерфейс позволяет переходить от одной операционной среды к другой и от одной прикладной программы к другой в пределах одного приложения так, чтобы необходимое для этого дополнительное обучение было минимальным. Согласно ISO/IEC TR 14252:1996 ПИ поддерживается четырьмя категориями унифицированных служб: командного интерфейса; символьно-ориентированного ПИ, графического ПИ и оконной системы управления полиэкранным отображением.Далее приведена таблица действующих стандартов и разрабатываемых проектов, составляющих часть системы стандартов POSIX-OSE и непосредственно относящихся к языкам программирования и операционным средам. Таблица составлена по июльскому 2003 года пресс-релизу 22-го подкомитета “Языки программирования, их среды и системный интерфейс” объединенного комитета ISO/IEC. Для обозначения этапов процедуры стандартизации использованы следующие английские аббревиатуры: IS – действующий ISO/IEC-стандарт; DIS и FDIS – соответственно проект, проходящий согласование на уровне всего объединенного комитета, и финальный DIS; CD и FCD – соответственно проект, проходящий согласование на уровне членов 22-го подкомитета, и финальный CD; WD – проект соответствующей рабочей группы 22-го подкомитета.В POSIX-OSE от языков программирования неотделимы средства обработки БД, графических объектов и распределенной сетевой обработки (см. таблицу). Таким образом, на прикладном уровне OSE язык программирования рассматривается как знаковая система общения в интеллектуальной операционной среде, основу которой составляет языковый процессор с многочисленным оборудованием (мониторинг вычислений и межпрограммная/межобъектная связь, удаленный доступ и обработка распределенных БД, контроль и тестирование, разнообразный сервис). Механизм спецификации средств языкового процессора унифицируется через определение мобильной общей инструментальной среды (PСTE) и двухуровневую архитектуру служб, поддерживающих взаимодействие через интерфейсы API и EEI. ^ Еталонна модель POSIX-OSE – це набір принципів, інтерфейсу, об'єктів та діаграм, що утворюють основу для специфікації стандартів, настанова та множина вказівок для майбутньої стандартизації та робіт з інтеграції. У напрямку розвитку та готовності Еталонної моделі POSIX-OSE необхідно забезпечити розуміння тих служб і можливостей, для яких зараз стандарти не діють та не можуть сформуватися конструктивні дії зі стандартизації. Рисунок 1 – Еталонна модель POSIX-OSEОпис Еталонної моделі POSIX-OSE випливає з перспективи застосування; тобто Еталонна модель описує сприйняття (уявна модель) прикладної платформи, що загалом забезпечує розподілену систему, яка використовується для підтримки ПрО користувача. Така позиція гарантує, що: користувачі ІТ мають відповідні служби, що задовольняють їхнім вимогам;реалізації ІТ, що постачаються, не є вимушено надлишковими. На рисунку 1 зображена Еталонна модель POSIX-OSE. Модель ідентифікує три об'єкти-сутності (прикладне програмне забезпечення, прикладна платформа і зовнішнє середовище) і два інтерфейси, ототожнені з API і EEI. Прикладна платформа надає сервіс API і EEI через пов'язані інтерфейси.Модель узагальнена до такої міри, що відбиває широке розмаїття загальних та спеціальних системних цілей. Специфікації служб визначено досить гнучко, щоб за потреби для кожної категорії встановити підмножину чи розширення. Зрештою Еталонна модель POSIX-OSE здатна вмістити ряд архітектур та стандартних підходів, що показує відповідність кожного з релевантних стандартів Еталонної моделі.Стандарти спрямовані тільки на інтерфейс між об'єктами, включаючи служби та запропоновані інтерфейсом опорні формати. Специфікація інтерфейсу визначає угоду, що задає функції, забезпечувані двонаправленим інтерфейсом. Зазначимо, що жодний набір стандартів не може окремо гарантувати мобільність спеціального застосування. Мобільність повинна попередньо закладатися при проектуванні застосування.Еталонна модель не є багаторівневою, хоча за графічним поданням може скластися таке враження1 . Визначення частин моделі і зв'язків між ними важливіше їхнього графічного подання. Кожна з частин взаємодіє з іншими тільки через інтерфейс, при цьому не призначаються і не маються на увазі жодні інші зв'язки (наприклад, залежність, важливість, перевага чи першість). Прикладна платформа надає служби користувачам за допомогою обох видів інтерфейсу. Фактично EEI складений із трьох типів інтерфейсу, кожний з який спільно використовує зовнішні (видимі) загальні характеристики. Користувач активізує служби платформ через EEI. Програміст звертається до служб прикладної платформи через API, складаючи початковий текст програми, що зв'язується зі службами на етапі компіляції та виконання.Усі ці властивості доступні локально чи за посередництва віддаленого доступу, якщо система зв'язана з великою розподіленою системою. Інші ресурси можуть визначатися як складові частини прикладної платформи. Зазначимо, що фактична реалізація довільного елемента системи може значно відрізнятися від Еталонної моделі. Ідея полягає у визначенні концептуальної Еталонної моделі для використання колективами розробників та інтеграторів. ^ Проблеми стандартизації мов. В процессе разработки и развития программных средств приложений для поддержки их мобильности на уровне источника кода цель системы стандартов POSIX-OSE – формализация и унификация интерфейсов операционной среды, основанных на документации ОС Unix как наиболее полно реализующей механизмы многопроцессорной и сетевой (распределенной) обработки, в том числе в реальном времени. В фокусе этих стандартов находится обеспечение эталонного, общего для любого языка программирования сервиса, как правило, иллюстрируемого через интерфейс языка Си, до завершения С++-стандарта считавшегося наиболее продвинутым среди языков. Причем каждый стандарт POSIX-OSE дробится на части, одни из которых, определяя суть функциональных требований эталонного сервиса, не зависят от языка, а другие – составлены из привязок языков программирования и содержат стандартизованный интерфейс для языково-специфического сервиса. Для любой реализации POSIX-OSE-основанной прикладной системы, претендующей на соответствие (согласованность) стандартам POSIX-OSE с произвольной языковой привязкой, обязательно подчинение всем частям стандартов.О продуктивности такой концепции встраивания языка в прикладную платформу говорит, например, факт отсутствия многих проблем системной организации, присущих приложениям. Так, для языков программирования проблемы 2000 года (Y2K) не существовало, поскольку в них еще с начала 90-х годов утвердился соответствующий временной тип данных. Скажем, в Коболе в вызове функции CURRENT-DATE для указания года предусмотрены четыре цифры; в Аде дата ограничена 2099 годом; в Фортране-90 и 95 встроенная функция DATA_AND_TIME возвращает четыре цифры года; при инсталляции процессора Модулы-2 разрешается явно задавать формат даты в вызове встроенной функции обращения к системным часам.Для уяснения места языков в системе интерфейсов POSIX-OSE перечислим некоторые языковые конструкты, в наибольшей мере повлиявшие на становление современных языков программирования, поколение которых принято относить к четвертому (4GL). В процедурных языках в направление развития модульного принципа программирования утвердились следующие тенденции и механизмы: с возникновением объекта как инкапсулированного модуля и кристаллизацией концепции независимого сосуществования объектов операционной среды выявлены иерархии классов объектов от “фабрики классов”, восходящей к модели интерфейсов “клиент-сервер” (примеры – Кобол-2000, SQL-3), до СОМ-объектов компонентной модели межобъектного взаимодействия (С++);расчленение триады описание-объявление-означивание (specification-declaration-definition) объектов обработки привело к увеличению численности этапов отложенных вычислений и повышению их доли в функционировании языкового процессора, тем самым усложнилась вся система смешанных вычислений. Если в языке первого поколения Фортран-IV, когда триада еще не сформировалась, была задействована пара specification-definition, а элементы макровычислений допускались только в одном языковом конструкте format, то в С++ поддерживаются четыре этапа отложенных вычислений. Впервые полное расчленение триады было зафиксировано в середине 70-х годов в Алголе-68, однако невостребованность этого языка, опередившего время, объясняется отсутствием разработанной концепции объекта;с переходом от командного управления программированием к схемно-видеоформному сформировалась современная визуальная оболочка языковых процессоров;увеличение номенклатуры и объемов наборов повторно используемых компонентов привело к фиксации их как языковых конструктов, поддержанных мощными стандартными библиотеками классов объектов и шаблонов классов общего назначения вида FDT (Fundamental Data Types).Стандартизация языков программирования, их сред и системного интерфейса, направляемая столкновением коммерческих интересов фирм-разработчиков программных средств общесистемного назначения, во многом стала методом исследования природы языков и инструментальных сред как основы информационных технологий. Достаточно проследить хронологию процесса стандартизации языков программирования в POSIX-OSE (см. таблицу).Так, проведенная в 1991-98 годах стандартизация С++ – это не канонизация удачных решений разработчиков С++-процессоров, а настоящая разработка нового языка, не обремененная необходимостью параллельно реализовать транслятор, но заимствовавшая и переосмыслившая передовые идеи. Наравне с ведущими производителями C++-инструментария, оказывающими наибольшее влияние на информационную индустрию (Watcom, Unisys, Motorola, Sun Microsystems, Borland, Microsoft и др.), разработчики стандарта не только повлияли на форму С++, но и выработали эталонный его вариант, который на момент окончания работ полностью не реализован ни одним транслятором. Обеспечивающий преемственность для Си-программ и восходящий от своего предшественника Си, для которого существовал стандарт ISO 9899:1990, С++ вобрал новейшие механизмы, в первую очередь основу объектно-ориентированной природы, аппарат шаблонов и абстрактных классов и реализуемую посредством синтаксиса обработку исключений и пространства имен. Нацелившись на создание стандартной библиотеки по аналогии с Си и использовав прототипы библиотек FDT и BIDS (Borland International Data Structures), разработчики стандарта сформировали библиотеку стандартных шаблонов классов STL (Standard Template Library), которая, хотя и получилась синтаксически некорректной относительно существующих трансляторов, является такой же авангардной, как и весь С++-стандарт. Не менее авангардна, как и универсальна, концепция многопоточности, согласно которой объекты в C++ инкапсулируют нити потока управления. Учитывая требования PREMO-стандарта на программную среду для multimedia-объектов, С++-стандарт тем не менее не регламентирует способ реализации многопоточности, среди которых разработчики насчитали 18 и, не остановив свой выбор на чем-либо, решили пока не закреплять в стандарте ни одного способа. Наряду со многими другими нововведениями, рабочие варианты расширения C++ для многопоточности решено поместить в специальное дополнение к проекту стандарта “Исполнение С++”. Кроме того, результатом столкновения коммерческих интересов компаний Microsoft и Sun Microsystems, разрешенных судом США, стала разработка и ударная стандартизация скриптового языка спецификаций С#. С++-стандартизация – красноречивый пример столкновения коммерческих интересов; она задержалась на два года из-за согласования спецификаций стандартной библиотеки STL, составляющей две трети объема С++-стандарта. Причем ISO/IEC столкнулся со значительными организационными трудностями, пока ему совместно с ANSI не удалось захватить инициативу в разработке языка и осуществить разделение труда с производителями C++-процессоров, которые теперь специализируются на выпуске трансляторов по новейшим спецификациям и участвуют в развитии языка только в цивилизованном порядке, взаимодействуя с разработчиками стандарта через национальные органы стандартизации как официальные члены ISO/IEC. С фиксацией объектно-ориентированной основы С++ и его стандартной библиотеки открылись ближайшие перспективы стандартизации распространенных языков программирования. Так, с целью упорядочения средств объектно-ориентированного программирования, совершенствования концепции целостности, решения задачи интернационализации и расширения состава стандартной библиотеки пересмотрен ISO/IEC 9899:1990 для языка Си. В результате пересмотра ISO 1989:1985 Кобол-2000 получил средства объектно-ориентированного программирования и интернационализации, мощный набор встроенных функций (аналог стандартной библиотеки), развитый аппарат описания удаленного доступа и связи с БД в Разделе оборудования и манипулирования видеоформами документов в Разделе данных, а также новую арифметику дат, задаваемых с точностью до сотой доли секунды и уточнением дня в году через указание не только числа в месяце, но и порядкового номера в интервале от 1 до 366. Анализируя путь развития процедурных языков программирования, приходится констатировать, что уже исчерпаны возможности поддержки преемственности программного обеспечения, понимаемой как поддержка внутренних слоев накопленного с середины 70-х годов программного продукта, ввиду назревшего революционного перехода к новому поколению языков и операционных сред. Кроме объектно-ориентированного подхода к программированию, перекроившего основу языков, одной из революционных черт их трансформации является интернационализация, способная оказать воздействие посредством стандартизации формы самих языковых конструктов аналогично их надъязыковой стандартизации, регламентированной ДСТУ 4072-2001 (ISO/IEC 13886:1996), ДСТУ 3901-99 (ISO/IEC 11404:1996), ISO/IEC 10967-1:1995, ISO/IEC 10967-2:2001, СD 10967-3, PDTR 14369 по независимым от языков вызову процедур, типам данных, арифметике и сервису. Эффект воздействия другой черты, нацеленной на стандартизацию нынешней визуальной оболочки языковых процессоров, угадывается по образу реализованных визуальных языков программирования. Тенденции революционного развития языков программирования и совершенствования методики их стандартизации прослеживаются и для других видов языкового общения. B языках спецификаций существенно усложнились алгоритмы интерпретации взаимосвязей между фрагментами алгоритмизируемых объектов, а не просто поддерживается концепция объекта “часть-целое”, иногда задаваемого по аналогии. Пример – путь языка SGML для оформления документов к языку HTML для описания (программирования) Web-сайтов в форме гипертекстовых строк. Для справки, ISO/IEC уже провел стандартизацию HTML.Языки представления знаний стали пополняться спецификациями повторноиспользуемых компонентов, в первую очередь алгоритмов вычленения знаний из опытных данных. В противовес экспертным системам, которые достигают наибольшей эффективности, если учитывают специфику предметной области, алгоритмы обучения стали настолько общими, что многие из них включены в состав стандартных библиотек и, как следствие, началась стандартизация этих алгоритмов, нацеленная на их фиксацию как языковых конструктов. С появлением интеллектуальных агентов началась трансформация основы языков представления знаний. В рамках DARPA Knowledge Sharing Effort подготовлен проект стандарта языка коммуникации агентов KQML (Knowledge Query and Manipulation Language) в среде следующей архитектуры. Каждый агент выступает владельцем собственной базы знаний, а коммуникация агентов сводится к обмену информацией о содержании этой БЗ, чтению, записи и модификации утверждений БЗ, запросов на использование знаний из БЗ для передачи сообщений другим агентам. Сообщения, которыми обмениваются агенты, составляют требования, принуждающие агента к выполнению соответствующего действия (по крайней мере к выдаче ответа) и относящиеся к предвидениям и/или целям агента. В проект стандарта вошли 11 групп принуждения с параметрами, описывающими необходимые средства коммуникации агентов.Аналогичные работы ведутся рабочими группами по онтологии и форматам обмена знаниями. Ожидается, что вскоре будет завершена синтаксическая система универсального языка, который будут понимать все рациональные агенты. Это имеет существенное значение в контексте взаимодействия человека с компьютером (Human-Computer Interaction), поскольку в архитектуре кооперирующихся агентов пользователь выступает не как внешняя к системе величина, а как равноправная составляющая – рациональный агент со своей БЗ. Эта новая роль пользователя в системе требует радикального пересмотра понятий и функций ПИ.Таблица ISO/IEC-cтандартов и их проектов по языкам программирования, их средам и системному интерфейсу Скорочена назва документа Вид документа Стан розробки Мова програмування КОБОЛ. IS 1989:2002 Результат перегляду ISO 1989:1985. Гармонізований з ГОСТ 22558-89 Мова програмування Фортран-95. Частина 1: Базова мова IS 1539-1:1997 Результат перегляду IS 1539:1991. Почато перегляд Фортрану-2000 Фортран-95. Частина 2: Символьні рядки змінної довжини IS 1539-2:2000 Результат перегляду IS 1539-2:1994 Фортран-95. Частина 3: Компіляція умовних операторів IS 1539-3:1999 Фортран-95. Обробка помилок рухомої крапки TR 15580:2001 Фортран-95. Можливості обмінного типу даних TR 15581:2001 Фортран-95. Частина 2: Модуль символьних рядків змінної довжини IS 1539-2:2000 Результат перегляду IS 1539-2:1994 Фортран-95. Частина 3: Компіляція умов IS 1539-3:1999 Взаємодія Фортрану і Сі TR 15815 Індустріальний Фортран реального часу ISО 7846:1985 Відмінений у 1999 р. Мова програмування ПЛ/I ISO 6160:1987 Основна підмножина ПЛ/1 ISO 6522:1992 Мова програмування Паскаль IS 7185:1990 Мова програмування APL Репертуар символів APL IS 8485:1989 AM 8485:1989 Розпочато перегляд Розширений APL IS 13751:2000 Мова програмування Ада IS 8652:1995 Результат перегляду ISO 8652: 1987, з яким гармонізований ГОСТ 27831-88 Ада. Числові пакети IS 11430:1994 Включений у список перегляду Ада. Основні функції IS 11729:1994 Включений у список перегляду Ада. Комплексні функції IS 13813:1998 Ада. Параметризовані пакети для дійсних і комплексних типів і базові операції (векторні і матричні типи) IS 13814:1998 Ада. Специфікації семантичного інтерфейсу IS 15291:1999 Ада. Керівництво користувача по системах підвищеної цілісності TR 15942:2000 Інтерфейс Ада/SQL (SAMeDL) IS 12227:1995 Ада. Розширення реального часу TR 11735:1996 Ада. Узгоджена оцінка мовних процесорів IS 18009:1999 Мова програмування Повний Бейсік Модулі повного Бейсіка і ввід одиночного символу IS 10279:1991 AM1/10279:1991 Настанова з підготовки стандартів на мови програмування TR 10176:2002 Результат перегляду TR 10176:1991 і 10176:1998 Техніка прив'язки для мов програмування TR 10182:1993 Настанова з підготовки статей для відповідності стандартам мов програмування TR 10034:1990 Методи тестування процесорів мов програмування TR 9547:1988 Незалежні від мов типи даних (LIDT) IS 11404:1996 ДСТУ 3901-99; ДСТ 30664-99 Незалежний від мов виклик процедур (LIРС) IS 13886:1996 ДСТУ 4072-2001 Незалежна від мов арифметика. Частина 1: Цілочислова і дійсна арифметика IS 10967-1:1995 Включений у список перегляду Незалежна від мов арифметика. Частина 2: Елементарні числові функції IS 10967-2:2001 Незалежна від мов арифметика. Частина 3: Арифметика комплексних із рухомою крапкою і комплексні елементарні числові функції СD 10967-3 DIS – 09/00 Настанова з підготовки специфікацій незалежного від мов сервісу (LISS) TR 14369:1999 Проект ДСТУ Moдула-2. Частина1: Базова мова IS 10514-1:1997 Moдула-2. Частина 2: Основи IS 10514-2:1998 Moдула-2. Частина 3: Об’єктно-орієнтовані розширення IS 10514-3:1998 Узгодження Moдули-2 і Cі WD 15436 Розширений Паскаль IS 10206:1991 Мова програмування Сі IS 9899:1999 Результат перегляду 9899:1990 POSIX. Частина 1: Основний опис IS 9945-1:2002 Результат перегляду IS 9945-1:1990 і 9945-1:1996 POSIX. Частина 2: Системні інтерфейси IS 9945-2:2002 POSIX. Частина 3: Оболонка й утиліти IS 9945-3:2002 Результат перегляду 9945-2:1993 POSIX. Частина 4: Раціональний IS 9945-4:2002 POSIX-Ада інтерфейс. Прив'язка до системного API. IS 14519:1999 Результат перегляду 14519:1994 Пролог. Частина1: Основне ядро IS 13211-1:1995 Пролог. Частина 2: Модулі IS 13211-2:2000 Мова програмування Лісп (ISLisp) IS 13816:1997 Система керування інтерфейсом відеоформ (FIMS) IS 11730:1994 Включений у список перегляду Віденський метод розробки. Мова специфікацій. Частина 1: Базова мова IS 13817-1:1996 Віденський метод розробки. Мова специфікацій. Частина 2: Модулі Робота над WD Z Notation IS 13568:2002 Синтаксична метамова. Розширені БНФ IS 14977:1996 DXL - мова деревоподібних діаграм IS 14568:1997 Функціональне наповнення для інтернаціоналізації. API для інтернаціоналізації WD 15435 Робота над WD Мова програмування C++ IS 14882:1998 Виконання С++ TR 18015 Робота над DIS Розширення С++-бібліотеки TR 19768 Робота над DIS Мова специфікацій С# IS 23270:2003 CLI. Загальна мовна інфраструктура IS 23271:2003 CLI. Профілі і бібліотеки TR 23272:2003 С Рисунок 7 – Еталонна модель мовної підтримки POSIX OSE Еталонна модель мовної підтримки Далі розглянуті об'єкти й інтерфейс, що забезпечують мовну підтримку. Еталонна модель для мовної підтримки, наведена на рисунку 2, заснована на Еталонній моделі POSIX-OSE (рисунок 1). Мовна підтримка потрібна для забезпечення прив'язки застосувань у API. Зовнішнє середовище показане на рисунку 2 для завершеності, оскільки мовна підтримка не видима на рівні EEI.У спрощеному варіанті програміст, що розробляє застосування, яке вимагає доступу до служб тільки базової операційної системи, використовує транслятор, що задовольняє обом фундаментальним стандартам мов (наприклад, ISO 1989:1985 для Коболу, ISO/IEC 1539-3:1999 для Фортрану), і будь-які прив'язки, встановлені для відповідного API згідно ISO/IEC 9945.Прикладна програма може вимагати такі служби інших ІТ, як підтримка баз даних і графіки, мережні служби. У таких випадках постачальники служб повинні пропонувати API, що задовольняють вимоги популярних мов програмування.POSIX-OSE включає підтримку однієї чи більше мов, зазначених далі. Мовна підтримка забезпечує базовий синтаксис і визначення семантики для використання розробником програмного забезпечення у описі бажаної функції застосування. Велика кількість мовних послуг – унікальна функція мовної специфікації. Детальний опис мов міститься у відповідних настановах та стандартах, що забезпечують ці настанови.API-служби. Від програміста вимагається уміння писати і виконувати програму на конкретній мові програмування. Вибір конкретної мови програмування для розробки застосування залежить від здатності мови забезпечувати окремі чи всі перераховані далі функції однаково добре, як і деякі унікальні для мови спеціальні можливості:арифметичні операції;структуризація коду;керування паралелізмом;визначення і подання даних;оброблення помилок;операції вводу-виводу;низькорівневі засоби програмування;математичні функції;керування логікою програми. Ряд таких служб, як керування паралелізмом чи керування логікою програми й оголошення даних, – важливі елементи OSE. Вони специфікують нотації написання прикладної програми і використовуються в API для активізації керування виконанням застосування, плануванням і розподілом пам'яті.Мови програмування, розглянуті в цьому підрозділі: Ада, APL, Full Basic, Cі, C++, Кобол, Лісп (IsLisp), Фортран, Модула-2, Паскаль, ПЛ/1, Пролог.Ада – процедурна мова, призначена для оброблення числових і текстових даних. Ключові аспекти мови:потужна типізація даних;абстракції даних;структуровані конструкції;багатозадачний режим;паралельне оброблення;підтримка об’єктно-орієнтованого програмування.Хоча мова Ада спочатку розроблялося для військових цілей, вона підходить ряду індустріальних і бізнес-застосувань, особливо для супервеликих застосувань. APL – мова й інтерактивне середовище програмування, орієнтована на оброблення багатомірних масивів символів і чисел. Використовує надзвичайно компактний запис, заснований на потужних примітивних функціях і функціонально об'єднаних операторах. Готуються зміни мови з метою дозволу одиночним елементам масиву містити масиви. В основному APL використовується для фінансового аналізу.^ Full Basic – процедурна мова, часто реалізується в інтера