1. Мови програмування (процедурні, візуальні, специфікацій). Концепція інструментального середовища розробки програм. Синтаксис І семантика, набори мовних конструктивів: описи, оператори, лексеми, поняття, атрибути, ділянки дії, блоки. Принцип модульності Алгоритмічна мова
Вид материала | Документы |
- Українська мова: походження, поняття І форми, сучасна мова, 91.87kb.
- Тема: Програмування. Основні етапи розробки прикладних програм, 2022.7kb.
- Назва модуля: Алгоритмічні мови та програмування Код модуля: кса 6022 С01, 22.16kb.
- Текст програми це набір інструкцій (команд), які можуть бути виконані комп'ютером., 221.57kb.
- Назва модуля: «Інформатика І програмування, частина 1». Код модуля, 34.1kb.
- Тема урока, 157.49kb.
- Опис середовища Visual C+ Введення- виведення даних, 447.69kb.
- 14 поняття про мову розмітки гіпертексту, 1688.05kb.
- Розділ лінійні програми вступ поняття програми. Мова програмування середовище програмування., 1210.78kb.
- Програма комплексного вступного іспиту з фахових дисциплін на окр, 169.21kb.
Тема 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 | |
Сі-розширення для підтримки убудованих процесорів | WD 18037 | |
PCTE. Частина1: Абстрактні специфікації. | IS 13719-1:1998 | Результат перегляду IS 13719-1:1995, з яким гармонізований ДСТУ 3947/1-2000 |
PCTE. Частина 2: Прив'язка до мови Сі. | IS 13719-2:1998 | Перегляд IS 13719-2:1995 |
PCTE. Частина 3: Прив'язка до мови Ада. | IS 13719-3:1998 | Перегляд IS 13719-3:1995 |
PCTE .Частина 4: Прив'язка до мови IDL | IS 13719-4:1998 | |
Мова програмування CHILL | IS 9496:1998 | Перегляд IS 9496:1996 |
Мова програмування FORTH | IS 15145:1997 | |
Мова програмування MUMPS чи M[UMPS] | IS 11756:1999 | Перегляд IS 11756:1992 |
M[UMPS]. Комунікаційний протокол. Відкритий MUMPS-взаємозв'язок | IS 15851:1999 | |
M[UMPS]. Віконний (Windowing) API | IS 15852:1999 | |
Прив'язка до графічної базової системи (GKS-2D). Частина 1: Фортран | ISO 8651-1:1988 | |
Прив'язка до GKS-2D. Частина 2: Паскаль | ISO 8651-2:1988 | |
Прив'язка до GKS-2D. Частина 3: Ада | ISO 8651-3:1988 | |
Прив'язка до GKS-2D. Частина 4: GKS | IS 8651-4:1995 | |
Прив'язка до GKS-2D. Частина 5: Си | DIS 8651-5:1995 | |
Прив'язка до GKS-2D. Частина 6: Лісп | CD 8651-5 | |
Прив'язка до GKS-3D. Частина 1: Фортран | DIS 8806-1 | |
Прив'язка до GKS-3D. Частина 4: Си | IS 8806-4:1991 | |
Прив'язка до графічної ієрархічної інтерактивної системи (PHIGS). Частина 1: Фортран | IS 9593-1:1990 | |
Прив'язка до PHIGS. Частина 3: Ада | IS 9593-3:1990 | |
Прив'язка до PHIGS. Частина 4: Си | IS 9593-4:1991 | |
Прив'язка до техніки діалогу з графічними пристроями (CGI). Частина 3: Ада | IS 9638-3:1994 | |
Прив'язка до прикладних програм обробки зображень (IPI). Частина 4: Си | IS 12088-4:1995 | |
Мова специфікації ECMAScript: | IS 16262:1998 | |
SQL/Фреймворк Функції OLAP | IS 9075-1:1999/ Amd 1:2000 | Четверте покоління стандарту |
SQL/Основи Функції OLAP | IS 9075-2:1999/ Amd 1:2000 | |
SQL/CLI. Інтерфейс рівня виклику Функції OLAP | IS 9075-3:1999/ Amd 1:2000 | |
SQL/PSM. Постійно збережувані модулі. Функції OLAP | IS 9075-4:1999/ Amd 1:2000 | |
SQL/Bindings. Прив'язки до основних мов Функції OLAP | IS 9075-5:1999/ Amd 1:2000 | |
SQL/XA-специфікація | DIS 9075-6 | |
SQL/Часовий | DIS 9075-7 | |
SQL/Об'єкти | DIS 9075-8 | |
SQL/MED. Керування зовнішніми даними | IS 9075-9:2001 | |
SQL/OLB. Прив'язки до об'єктних мов | IS 9075-10:2000 | |
SQL/JRT. Routines and Types Using the Java TM Programming Language | IS 9075-13:2002 | |
SQL/Multimedia і прикладні пакети. Частина1: Основи. | IS 13249-1:2002 | |
SQL/Multimedia. Частина2: Повний текст. | IS 13249-2:2000 | |
SQL/Multimedia. Частина 3: Просторовий. | IS 13249-3:1999 | |
SQL/Multimedia. Частина 4: | DIS 13249-4 | |
SQL/Multimedia. Частина 5: Стоп-кадр. | IS 13249-5:2001 | |
SQL/Multimedia. Частина 6: Data mining | IS 13249-6:2002 | |
Служби мовної підтримки POSIX-OSE. Якщо несуперечливий інтерфейс до операційної системи необхідний для підтримки мобільності застосувань, то в розробці застосувань використовуються мови і системний інструментарій, що у свою чергу вимагає стандартизації для досягнення мобільності початкового тексту.
Програміст, який бажає написати пристойний початковий текст програми, використовує одну чи більше стандартних мов програмування. Посилаючись на відповідні настанови з мов програмування і специфікації прив'язок до мови, програміст одержує доступ до будь-яких необхідних служб прикладної платформи. Отже, цього досить для ідентифікації мов програмування як елементів OSE. На вибір мови впливають кілька факторів, включаючи функціональність, відповідність прикладній програмі, особисте уміння і управлінські методи, застосовування в організації.
Впевненість у мобільності програмного компонента зміцнюється знанням, що він написаний мовою, підтримуваною міжнародними стандартами, а код отриманий транслятором, що має сертифікат відповідності, виданий акредитованим тест-центром. Для підтримки мобільності застосувань варто уникати неузгоджених доповнень.
Розглянуті стандарти сьогодні широко розповсюджені та застосовуються в індустрії інформаційних технологій для широкого діапазону процесорів. Далі описані служби, що покривають найбільш розповсюджені неструктурні мови (Кобол, Фортран) і блочно-структурні мови (Cі, Паскаль), які використовуються сьогодні у розробці застосувань; тобто мови для написання прикладних програм. Вони згадуються зазвичай як мови третього покоління. У Настанові не обговорюються мови четвертого покоління, які розвилися з мов типу Кобол і Фортран2 . За порядком адресації програм до API-служб відповідна прив'язка до мови потрібна для цього інтерфейсу.