Реферат: 1. Мови програмування (процедурні, візуальні, специфікацій). Концепція інструмен­тального середовища розробки програм. Синтаксис І семантика, набори мовних конструктивів: описи, оператори, лексеми, поняття, атрибути, ділянки дії, блоки. Принцип модул


Тема 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-интерфейсу внешней среды (Exter­nal 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-declara­ti­on-definition) объектов обработки привело к увеличе­нию численности этапов отложен­ных вычислений и повышению их доли в функциони­ровании языкового процессора, тем самым усложнилась вся система смешанных вычисле­ний. Если в языке первого поколе­ния Фортран-IV, когда триада еще не сформировалась, была задействована пара specifi­ca­tion-definition, а элементы макровычислений допускались только в одном языковом конструкте format, то в С++ поддерживаются четыре этапа отложенных вычислений. Впервые полное расчленение триады было зафиксировано в середине 70-х годов в Алголе-68, однако невостребованность этого языка, опередившего время, объясняется отсутствием разработанной концепции объекта;

с переходом от командного управления программированием к схемно-видео­формному сформировалась современная визуальная оболочка языковых процессоров;

увеличение номенклатуры и объемов наборов повторно используемых компонен­тов при­вело к фиксации их как языковых конструктов, поддержанных мощными стандартными биб­лиотеками классов объектов и шаблонов классов общего назначения вида FDT (Fundamental Data Types).

Стандартизация языков программирования, их сред и системного интерфейса, направ­ляемая столкновением коммерческих интересов фирм-разработчиков програм­мных средств обще­системного назначения, во многом стала методом исследования природы языков и инструмен­тальных сред как основы информационных технологий. Достаточно проследить хронологию процесса стандартизации языков программирования в POSIX-OSE (см. таблицу).

Так, проведенная в 1991-98 годах стандартизация С++ – это не канонизация удачных решений разработчиков С++-процессоров, а настоящая разработка нового языка, не обремененная необходимостью параллельно реализовать транслятор, но заимствовавшая и переосмыслившая передовые идеи. Наравне с ведущими производителями C++-инструментария, оказывающими наибольшее влияние на информационную индустрию (Watcom, Unisys, Motorola, Sun Microsys­tems, 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 Manipu­lation 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 – процедурна мова, часто реалізується в інтера
еще рефераты
Еще работы по разное