В семи томах том Информатика смысла Машинная лингвистика




НазваниеВ семи томах том Информатика смысла Машинная лингвистика
страница3/33
Дата29.11.2012
Размер4.61 Mb.
ТипДокументы
1   2   3   4   5   6   7   8   9   ...   33

1.2. Классификация языков общения в системе человек-ВМ. Языки ФРАК


Классификация языков. Существуют самые разнообразные классификации языков общения в системе человек-ВМ. Каждая из них удовлетворяет какому-либо критерию или признаку. Как было отмечено, в информатике рассматриваются два основных класса языков: рассудительные и командные. Рассудительные языки охватываются средствами ЯПП. Для командных языков будем придерживаться простейшей классификации: языки кодов, языки ассемблера (автокоды), языки ФРАК, ЯВУ, ЯПП и ЕЯ. Если рассматривать с конца данного перечисления, то ЕЯ считается известным языком, ЯПП изучается в данном томе, ЯВУ - известны программистам, а прямому пользователю знание их не обязательно, ФРАК представлен в самых общих чертах в данном разделе, коды и автокоды отчасти будут рассмотрены в томе 6. В этой классификации отражена история развития информатики программирования. С каждым уровнем классификации связано появление нового способа написания программ ВМ. Языки кодов выражают язык ВМ, в них используются цифры в некоторой системе счисления - коды адресов ячеек и коды команд ВМ. Автокоды используют символьное обозначение для адресов и кодов команд, что является нововведением в программировании символического кодирования. В автокодах используются слова и знаки (идентификаторы) в качестве символьного обозначения. ФРАК исключает покомандное написание программы и использует формулы для программирования вычислений, что является нововведением в программировании формульного кодирования (как в математике). ЯВУ использует типы данных и операторы - обобщение команд ВМ, что является нововведением в программировании понятия оператора А.А. Ляпунова. ЯПП использует часть ЕЯ, в которой выделены термины предметов и действий, что является нововведением в программировании понятия термина и его смысла. Грамматика ЕЯ включает правила СиГ, что является нововведением в информатике является грамотность в написании мыслей для передачи их в Интеллсист.


Иногда используют другие классификации. Вот несколько примеров признаков:

  • признак уровня языка: (низкий, высокий, сверхвысокий, промежуточный, эволюционный, диалект, с типизацией);

  • признак популярности языка: (коммерческий успех, хороший, плохой, модный, гибридный, объем литературы с пропагандой языка, эффективность компиляторов, средства проектирования, стандартизация, минимальное число порождаемых ошибок);

  • признак важности (поддержка, библиотека, преемственность, точность, надежность).


В статье [Любарский90] предложена такая классификация:

  • язык информационной потребности (у нас - это часть ЕЯ),

  • язык семантических групп (у нас - это ЯЛ) и язык семантических сетей (описание записей с полями),

  • язык синтаксических структур (у нас - это язык Марков),

  • язык доступа к данным,

  • язык проблемных сфер,

  • язык диспетчерских решений (у нас - это некоторый ЯПП),

  • язык представления ответов и язык форм отображения.

Иерархия этих языков отражается в конкретных реализациях подсистем Интеллсист в форме последовательного преобразования запроса пользователя по БЗ в ответ. Имеются и другие подходы к классификации. Все они отражают конкретные разработки так же, как и принятая здесь классификация для новых Интеллсист. Хоронить перечисленные признаки классификации языков нельзя, они сами отомрут, когда мода (практическая потребность) на них пройдет и не появится язык, покрывающий возможности имеющегося и находящегося в деле языка. Командные языки использовали и будут использовать как накопленный арсенал методов программирования, которые ориентированы на структурное, модульное, объектно-ориентированное, параллельное, графическое, картинное, предметное, синтезирующее представление команд при передаче ВМ алгоритмического знания. Устойчиво выживут только ЕЯ и близкие к нему языки.


Существующие подходы к разработке языков программирования управляющих ВМ исторически складывались следующим образом. Конечно, первое использование ВМ было связано с ручным кодированием команд для ВМ (программ) и данных. В это же время стали развиваться языки программирования высокого уровня. Вместе с ними развивались языки ассемблерного уровня для системного программирования управляющих ВМ. Однако ассемблерный уровень отличается от использования кодового программирования применением слов из букв и цифр. Почему же нельзя использовать языки высокого уровня для управляющих ВМ? Программирование для встраиваемых ВМ ранее использовалось и используется сейчас для реализации начальных алгоритмов новой ВМ - операционных систем. Необходимо понять причины запаздывания во внедрении средств языков высокого уровня. Они возникали из-за ограниченных возможностей ВМ по памяти и быстродействию. Эти же причины действуют и для начального программирования любой новой по архитектуре ВМ. Вообще же имеются две главные причины:


Причина 1. Как уже упоминалось, существовали ограничения по памяти и быстродействию. ВМ, встраиваемая в техническую систему, должна обладать рядом ограничительных свойств. Ограничения вызваны жесткими условиями применения ВМ в составе технической системы: малый отводимый для ВМ объем пространства, следовательно, малая память и малое быстродействие, а число выполняемых функций непрерывно росло. Поэтому каждая ячейка памяти становится ценной, каждая секунда работы процессора или набора процессоров должна использоваться полностью для выполнения многочисленных функций.


Причина 2. Доступ ко всем ресурсам ВМ - это переход на машинные команды. Программирование встроенных ВМ связано с использованием всех характеристик процессора, памяти и каналов обмена ВМ с внешним миром, с управляемым устройством. Это вызвано тем обстоятельством, что ВМ проектировалась именно для такого использования, часть функций ВМ в системе заложены в архитектуру процессора, памяти или канала. Программы таких ВМ должны эффективно использоваться для реализации функций управления и переработки сообщений, поступающих извне или передаваемых во внешнюю среду для управления. Доступ ко всем ресурсам ВМ необходим для реализации функций технической системы, быстродействия алгоритмов переработки сообщений и экономии кодирования данных. Крайний случай в программировании состоит в использовании машинных кодов для построения программ управления.


Технология разработки управляющих программ описана в литературе достаточно широко [Анализ84, Берг76, Изерман84, Крамм89, Красилов79б, 81а, 81в, 81г, 83в, Тамм85]. Рассмотрим только один прием организации программирования встроенных ВМ. Он базируется на следующей идее. Поскольку встроенная ВМ ограничена по своим возможностям, для разработки программ используется универсальная ВМ в качестве инструментальной. На универсальной ВМ разрабатывается косвенная операционная система встроенной ВМ (КОС), которая включает:

  • транслятор языка ФРАК (в коды встроенной ВМ),

  • загрузчик подпрограмм (создание макета выполняемой программы),

  • документатор объектных кодов,

  • интерпретатор кодов для отладочного исполнения,

  • имитатор внешних воздействий на встроенную ВМ,

  • средства отладки (обнаружение, локализация, индикация и информация об ошибке в программе),

  • генератор загружаемых кодов (для прошивки ППЗУ),

  • сервисные программы.

Именно поэтому такие операционные системы называются косвенными.


Языки ассемблера. Существенной проблемой разработки начального и во многих случаях функционального программного обеспечения проектируемой ВМ, в особенности входящей в состав систем реального времени, является проблема формирования эффективного языка программирования и отличного от языка машин. (Недостатки программирования в кодах ВМ известны.) Общепринятое решение проблемы - описание и реализация языка символьного кодирования (автокода 1:1 или ассемблерного языка), который обеспечивает использование словесных имен вместо кодовых адресов и чисел для обработки. Главный недостаток автокодов состоит в отсутствии рекурсивных определений для объектов и операций. Частично этот недостаток устраняется введением в автокод макроописаний и макрокоманд. Имеется и другой подход к увеличению изобразительных средств программы и к сохранению всех положительных свойств автокодов. Он связан с языками ФРАК.


Рассмотрим метод устранения большинства недостатков автокодов. Основой подхода к построению метода ФРАК является процедура сопоставления языков программирования высокого уровня и архитектуры конкретной ВМ. Результатом такого сопоставления являлись, к примеру, язык программирования PL 360, разработанного Н. Виртом для ЭВМ IBM серии 360. Далее будут рассмотрены и другие примеры. Основная цель подобных рассмотрений - подойти к таким средствам общения в системе человек-ВМ, которые обеспечивают максимальное приближение к ЕЯ. Исторически к этому многих привела, в частности, технология создания языков ФРАК. Именно эту веху желательно раскрыть. Заметим, что ФРАК можно использовать не только для разработки программ управляющих ВМ, но и для разработки программ, ориентированных на любой класс проблем.


В результате сопоставления языков программирования высокого уровня с архитектурой ВМ обычно разрабатывались машинно-ориентированные языки высокого уровня, сочетающие высокую эффективность реализации программ с изобразительными средствами ЯВУ. Такие языки именуются формульными автокодами, или сокращенно - ФРАК. Первая реализация языка ФРАК появилась в результате сопоставления языка Фортран и архитектуры ЭВМ БЭСМ-6. Язык был разработан В.Г. Суховым и получил название PL-БЭСМ-6. ФРАК является средством составления программ начального программного обеспечения, он используется системными программистами. Всего было разработано 5 языков ФРАК [Красилов74а, 74б, 78б, 81б]. Схематическое определение языков типа ФРАК можно пояснить следующим образом. ФРАК активно использует свойства и возможности кода и автокода:

  • явно или неявно (по умолчанию) предоставлять доступ ко всем операциям и ресурсам ВМ,

  • определять все типы простых и некоторых составных данных, с которыми может оперировать ВМ на базе реализованных в ней команд,

  • транслировать записи программ за 1 или 2 прохода,

  • получать кодовые программы с эффективностью 1:1 или с незначительной потерей в эффективности (на 5-10%).


ФРАК может включать в себя макросредства и возможности использования корреляции между командами ВМ. ФРАК активно использует свойства и изобразительные возможности языков высокого уровня и систематически применяет рекурсивные определения для конструирования объектов, операций и логики программ, он максимально использует опыт, приемы и обозначения ЯВУ. ФЯ ФРАК определяются как проекции языков типа Фортран, алгол-60 [Красилов67], алгол-68 [Красилов78в], PL\1 [Универс68] и др. на архитектуру ВМ. И это определение будет в дальнейшем уточняться через приемы конструирования и сравнения языка ФРАК с языками ассемблера и ЯВУ. Кроме этого ФРАК в конкретных условиях его применения использует ориентацию на область применения ВМ, на пользователя этой ВМ, обеспечивая сервисные средства для эффективного решения проблем системного программирования.


ФЯ ФРАК определяется своим синтаксисом, семантикой и прагматикой. Синтаксис определяет два уровня: ядро, соответствующее архитектуре ВМ, и оболочку - расширение, учитывающее возможности операционной системы или специальных системных программ, встроенных в ВМ (управляющие или обменные программы). В особом положении находятся технические системы со встроенными ВМ, которые могут и не иметь операционной системы. В связи с этим одним из главных требований к языкам ФРАК встроенных ВМ является требование хорошей эффективности функциональных программ по памяти и времени их работы.


Ядро языка ФРАК определяет:

  • форматы только тех данных, над которыми в архитектуре ВМ и операционной системе (если таковая имеется) определены операции, а изображаются они средствами ЯВУ;

  • операции и операторы, эквивалентные командам или наборам команд в отношении 1:1, одна операция : одна команда;

  • четыре группы операций: формульные, управляющие, специальные и вспомогательные;

  • форматы величин (переменных), имеющих адресуемые единицы памяти;

  • ключевые форматы операторов в соотношении 1:1, один ключ: одна машинная команда (ключ - это зарезервированное слово, или синтаксический символ языка ФРАК);

  • форматы явного или подразумеваемого задания преобразований одних типов данных в другие;

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

  • средства явной подкачки кодовых подпрограмм для обеспечения возможности понижения уровня программирования в специальных случаях или использования накопленной библиотеки подпрограмм.


Оболочка языка ФРАК определяет:

  • классы только тех структур данных, над которыми в архитектуре ВМ и ОС определены операции и которые определяют предметную область прикладного или системного программирования;

  • операции и операторы (составные операторы), сокращающие наборы операций или операторов ядра языка ФРАК;

  • операторы обмена или управления, процедуры которых описаны средствами ядра языка ФРАК;

  • операторы мультиобработки, обработки прерываний и связи с управляющими подпрограммами, написанными на языке ядра;

  • аппарат макросредств (макроопределения и макрокоманды), не требующий перетрансляции; подстановка макроопределений вместо макрокоманд должна осуществляться одновременно с трансляцией исходного текста программы.


Семантика языка ФРАК содержит таблицу сопоставления символов и кодов операций, арифметику типов данных для всех операций, методы раскрутки рекурсивных определений и условия идентификации лексем всех сортов. Прагматика языка ФРАК включает (кроме количественных ограничений на языковые конструкции) описание программ и данных, точных эквивалентов внешнего и внутреннего представлений данных, характеристик быстродействия операций и способов оптимального использования всех конструкций языка.


Именно так порождается структура языка ФРАК в результате сопоставления архитектуры ВМ и средств ЯВУ. Эти же сопоставления порождают алгоритмы транслирующей системы. Сами сопоставления сведены в приводимую ниже таблицу.


Использование языка ФРАК. Практически была разработана технология создания и реализации семейства языков, с одной стороны, высокого уровня, а с другой стороны, ориентированного на архитектуру ВМ [Красилов78б]. Проекция архитектуры ВМ на ЯВУ означает, что в ФРАК используются только те базовые операции ЯВУ, которые реализуются в кодовой программе по схеме 1:1. Структура языков семейства ФРАК (это также способствует пониманию языков ФРАК) выявляется при сопоставлении объектов языка, машины и действий в транслирующей системе. Сравним ЯВУ и языки семейства ФРАК:

  • семантика не зависит от ВМ - машинно-зависимая семантика,

  • неадекватность примитивов языка и архитектуры ВМ - полное соответствие примитивов языка примитивам архитектуры ВМ,

  • оптимизация программы достигается вариацией применяемых операторов - оптимизация заложена в определении языка,

  • ограничитель требует емкой командной интерпретации - ограничитель соответствует одной команде,

  • употребление идентификатора может предшествовать его описанию - описание идентификатора должно предшествовать его употреблению.

По другим параметрам имеется полное или частичное соответствие языков, как в определении языка, так и по его примитивам. Конкретное сопоставление приведено ниже в таблице.


Таблица. Сопоставление элементов языка ФРАК и архитектуры ВМ


п/п

Конструкция языка

Конструкция ВМ

Операции транслятора

1

Идентификатор

Адрес

Распределение памяти, идентификация, формирование таблиц лексем

2

Константа

Данное

Формирование команд с непосредственными данными

3

Индекс

Регистр

Распределение памяти на регистрах

4

Формульный тип

Форматы данных

Идентификация операций и операций

5

Формула

Форматы команд

Распределение командной памяти

6

Ссылки

Косвенный адрес

Программирование приведений и балансировка типов

7

Операция

Коды операций

Программирование формул

8

Описание величины

Операции процедуры возврата

Распределение памяти

9

Оператор процедуры

Операции перехода с управления и возвратом передачи параметров

Программирование

10

Математические операции

Экстракоды

Программирование функции обращений к экстракодам

11

Стандартные идентификаторы

Определение форматов команд

Программирование операций с регистрами

12

Ядро Алгол-68

Форматы данных и команды преобразования данных

Подстановка команд преобразования типов данных

13

Присваивание

Команды записи и чтения данных

Арифметика типов с балансировкой

14

Циклы

Операции перехода

Раскрутка рекурсивных определений операторов

15

Условный оператор

Команды условного перехода

Порождение схемы программы, раскрутка рекурсивных определений операторов

16

Оператор выбора

Команды условного перехода

Порождение схемы программы

17

Оператор останова

Команды управления процессорами

Организация мультиобработки и режимов прерывания

18

Оператор выхода

Команда перехода

Организация выхода из модуля

19

Оператор перехода

Команда передачи управления

Порождение схемы программы

20

Метка

Адрес команды

Формирование таблицы переходов

21

Синонимы

Отождествление адресов

Совмещение памяти

22

Параллельные процессы

Команды управления

Организация мультиобработки процессорами

23

Операторы

Команды параллельного запуска

Организация мультиобработки

24

Модуль

Команды управления и восстановления состояний

Формирование данных для загрузчика и архивной системы

25

Общие величины

Базовые регистры

Формирование таблиц базирования данных

В таблице перечислены только некоторые важные элементы языка и программ. Важно отметить, что табличное сопоставление указывает на хорошую технологию формирования как самого языка ФРАК для данной ВМ, так и подход к проектированию системы трансляции языка в объектный код машины. Важное требование: структура языка ФРАК целиком должна зависеть от архитектуры ВМ, отступление хотя бы от одного элемента архитектуры означает отход от сущности языка ФРАК. Также важно, что языки ФРАК внешне существенно отличаются от языков ассемблера и напоминают своими многими средствами ЯВУ.


Из такого беглого сопоставления видны преимущества языков семейства языков ФРАК перед ассемблерными языками по изобразительным средствам, а по сравнению с ЯВУ - по эффективности реализации. В этом подведении итогов сравнения видны глобальные преимущества ФРАК. Следует упомянуть и о недостатках языков ФРАК: машинная зависимость ограничивает (и притом существенно) переносимость программ и данных, осуществляется локальная организация разработок программного обеспечения встроенных ВМ, обычно имеющих ограниченное распространение, некоторая жесткость конструкций языка приводит к ограничениям представлений проблемной области, частично остается необходимость в кодовом представлении некоторых команд и данных.


Принципиальная возможность формирования семейства языков ФРАК заложена во взаимно однозначном соответствии примитивов языков программирования элементам архитектуры ВМ. Можно сказать, что языки ФРАК являются алгебраическим выражением архитектуры ВМ. Соответствие можно подтвердить сопоставлениями, представленными в таблице:



Пункт

Язык ФРАК

Архитектура ВМ

1

метаязык

Техническое описание

2

данные

память

3

константы

командная память

4

синтаксический анализатор

дешифратор

5

выражение

арифметическое устройство

6

арифметика типов

аппаратура контроля

7

условия

логический процессор

8

операторы управления

устройство управления

9

операторы ввода-вывода

устройство ввода-вывода

10

описание

конфигурация оборудования

11

комментарий

пультовая индикация

12

операторы отладки

пульт ВМ

13

арифметика типов

аппаратура контроля

Дадим общее замечание: представляет интерес такое сопоставление Интеллсист и архитектур новых ВМ. Сопоставление будет рассмотрено в томе 7.


Создание языков ФРАК базируется на следующих принципах:

  • обязательное полное соответствие примитивов языка ФРАК и данных всем элементам архитектуры ВМ;

  • систематическое использование рекурсивных определений, не требующих при раскрутке дополнительных машинных команд кроме тех, которые используются при программировании в кодах;

  • использование стандартных имен из числа имен всех базовых элементов архитектуры ВМ;

  • разделение совокупности операций на 4 группы, охватывающих все функции архитектуры ВМ;

  • использование общеупотребительных в программировании обозначений для переменных, ключевых слов, констант и операций;

  • формирование ядра языка ФРАК и возможностей его расширения операциями, не ухудшающих производительность программ;

  • использование возможности подключения кодовых данных и структур для прямого кодового программирования (если это крайне необходимо) специальных подпрограмм обмена или управления;

  • описание языка должно обеспечивать трансляцию записей в 1 - 2 прохода (определение объекта программы должно предшествовать его использованию в программе);

  • учет всех возможностей и конструкций, имеющихся и планируемых языков программирования высокого уровня, без потери эффективности программ;

  • максимальный учет пользовательских запросов на обозначения и применения объектов языка, определяемых областью использования ВМ.


Критериями отбора конструкций языка ФРАК следует считать: полный охват возможностей архитектуры примитивами языка и данных, использование гибких форматов для учета частностей языка; максимальная оптимальность кода после трансляции; максимальное отражение в мнемонике языка его потребительских свойств. К этому необходимо добавить оценку средств ФРАК «самой» архитектурой ВМ с позиций системного программиста, программиста и пользователя. Соотношение средств или методов программирования и архитектуры способствует эффективному логическому проектированию ВМ, поскольку разработка языка ФРАК и соответствующей системы программирования может предшествовать разработке ВМ. Обычно со встроенными ВМ это и происходит. Для языка ФРАК обычно создается кросс-система или косвенная операционная система программирования еще до реализации разработок встроенной ВМ [Красилов74а, 74б].

1   2   3   4   5   6   7   8   9   ...   33

Похожие:

В семи томах том Информатика смысла Машинная лингвистика iconСобрание сочинений в семи томах 3 «Собрание сочинений в семи томах»: Время; 2008
Собрание сочинений М. М. Зощенко — самое полное издание прозы одного из крупнейших писателей-новаторов XX века. В него входят практически...
В семи томах том Информатика смысла Машинная лингвистика iconИнформатика в семи томах
Излагаемые методы частично модифицированы по сравнению с их оригинальным изложением для их ориентирования и усиления при использовании...
В семи томах том Информатика смысла Машинная лингвистика iconИнформатика в семи томах
Определяются логические лексемы, фундаментальные операции, правила преобразования логических уравнений, а также металогика для обоснования...
В семи томах том Информатика смысла Машинная лингвистика iconИнформатика в семи томах
Словарь поможет пользователям Интеллсист и разработчикам машинных систем разнообразного назначения в написании отчетов, руководств...
В семи томах том Информатика смысла Машинная лингвистика iconВ семи томах том Основы информатики (Введение в информатику)
Вм на основе своих общих и профессиональных знаний без привлечения программистов для решения задач, для разрешения вопросов или проблем...
В семи томах том Информатика смысла Машинная лингвистика iconВ семи томах том Представление знаний (Структуры данных)
Приводимые примеры служат фрагментами прототипов записей знаний и запросов, предназначенных для создателей заданий и запросов к базе...
В семи томах том Информатика смысла Машинная лингвистика iconРавительство республики башкортостан академия наук республики башкортостан история башкирского народа в семи томах том V уфа гилем 2010
Российская академия наук Уфимский научный центр ■ Институт истории, языка и литературы
В семи томах том Информатика смысла Машинная лингвистика iconЬство республики башкортостан академия наук республики башкортостан история башкирского народа в семи томах том VI москва восточная литература 2011
Российская академия наук Уфимский научный центр Институт истории, языка и литературы
В семи томах том Информатика смысла Машинная лингвистика iconВ семи томах том Интеллектуальные системы (Системы решения проблем)
Интеллсист, их структуры и технологии работы с инструментарием составляют центральную часть тома. Оценка возможностей Интеллсист...
В семи томах том Информатика смысла Машинная лингвистика iconИнформатика и вычислительная техника” и специальностей 220100 “Вычислительные машины, комплексы, системы и сети” и 021800 “Теоретическая и прикладная лингвистика” Ульяновск 2003
Методические указания к выполнению лабораторных работ по программированию для студентов направления 552800 “Информатика и вычислительная...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница