Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сольницев Р. И. Автоматизация проектирования систем автоматического управления.doc
Скачиваний:
252
Добавлен:
02.05.2014
Размер:
10.46 Mб
Скачать

§ 3.4. Лингвистическое обеспечение

Лингвистическое обеспечение включает в себя совокупность естественных языков проектировщиков с их проблемной ориентацией, алгоритмических языков программирования и машинно-зависимых языков кодирования управления работой (систему ко­манд) технических средств САПР. Выполняя один из основных принципов создания инструментов САПР — многоязычность, опре­деляющий доступность этих инструментов проектировщикам всех разрядов, специалистам только в своей предметной области,— разработчик САПР строит входной язык инструментов САПР как проблемно-ориентированный язык (ПОЯ). Этот ПОЯ основан на естественном языке проектировщиков. С другой стороны, все про­цессы в ЭВМ протекают как взаимодействие кодов, построенных из множеств «1» и «О», соответствующих состоянию элементов ЭВМ, которые находятся в одном из двух физических состояний (1 или 0). Дело, таким образом, состоит в том, чтобы по коман­дам, сформулированным на естественном языке проектировщика, эти «О» и «1» «двигались» так, чтобы в результате их движения достигалось решение поставленной проектировщиком задачи.

В табл. 3.8 приведена языковая иерархия, которая позволяет последовательно переходить от естественных языков проектиров­щиков (0-й уровень) до машинных языков, на которых функцио­нируют устройства ЭВМ (3-й и 4-й уровни). Такой подход воз­можен только при наличии трансляторов (от лат. translator — пе­реносчик) — программ, реализованных на ЭВМ и предназначенных для перевода описаний с одного формального языка на другой. Первый из этих языков называется входным, второй — выходным. Характерными функциями трансляторов являются лексический разбор текста на входном языке, синтаксический анализ предло­жений и преобразование их в форму, удобную для хранения и дальнейшего использования в вычислительном процессе. В част­ности, синтаксически управляемый транслятор (СУТ) позволяет на основе формального описания синтаксиса входного языка осу­ществлять анализ предложений этого языка, а также других вход­ных языков, принадлежащих одному классу по грамматике.В соответствии с табл. 3.8 требуется по крайней мере четыре транслятора для всей иерархии языков.

Естественные языки проектировщиков отличаются от общераз­говорных, литературных и гуманитарных языков большей лако­ничностью, однозначностью, четкостью построения предложений. Сам процесс проектирования «формирует» такой язык, являющий­ся некоторым подмножеством языка деловой прозы. Последний служит средством общения людей между собой, людей и машин во всей цепочке от идей до производства готового изделия (см. рис. 2).

Особенностями языка проектирования в целом является нали­чие формализованных диалектов естественных языков разработчика, конструктора, технолога, испытателя (ЕЯР, ЕЯк, ЕЯт, ЕЯн) с ограниченным (как правило, не более нескольких сотен) набо­ром базовых понятий — достаточно определенных структур по­строения предложений, с наличием хорошо формализованных выражений действий проектировщиков и «действий» проектируе­мых систем и устройств. Например, при выборе чувствительных элементов в контуре регулирования САУ ТГ в текст соответству­ющего отчета включается предложение: «Для контроля и регу­лирования температуры поверхности рабочих лопаток турбины необходимо выбрать одно из следующих устройств: манометриче­ские термометры, терморегулирующие устройства, биметалличе­ские термометры, термопары, оптические пирометры». На этом 0-м уровне допускаются эвристические выражения, неполнота и избыточность информации, применение нестандартных символов. Стандартизация и унификация описаний на этом уровне является, по существу, начальным этапом формализации языка проектиров­щиков. Проблемно-ориентированные языки (ПОЯ) включают в себя описание объекта проектирования, описание задания на про­ектные процедуры и выходных результатов. В этом смысле ПОЯ являются языками описания конкретных проектных процедур. Остановимся подробнее на ПОЯ, так как остальные уровни язы­ков рассматриваются в базовых вузовских курсах по основам программирования и должны быть знакомы читателю. Требова­ния к ПОЯ включают в себя следующее:

1) возможность детального описания объектов, к которым при­меняется подсистема, инструмент САПР;

2) максимальное приближение к естественному языку проек­тирования данной категории;

3) максимальная лаконичность записи;

4) однозначность интерпретации элементов записи.

По сравнению с 0-м уровнем в этом случае уточняются эври­стические выражения, устраняется неоднозначность описаний, вводятся правила и форма записи, с которой предусматривается наиболее просто и эффективно трансляция на следующий уровень.

Несмотря на отмеченные черты естественных языков проекти­ровщиков от них до ПОЯ довольно длинный путь формализации. На этом пути необходимо выделить дескрипторный словарь, под которым понимается набор ключевых слов — лексических единиц языка с семантическим наполнением. При этом каждая единица должна представлять определенное понятие, действие.

Далее необходимо сформировать формальную «грамматику» ПОЯ — набор правил и директивных конструкций для формиро­вания выражений. Следуя Н. Хомскому (известному специалисту по искусственным языкам) и другим специалистам в области ма­шинной лингвистики, можно определить такую «грамматику» как конечное множество правил, устанавливающих, какие цепочки слов образуют «правильные» предложения. В ПОЯ такие предложения всегда имеют ясную цель — произвести требуемое измене­ние во внутреннем состоянии ЭВМ или заставить ее «прочитать», «написать», «начертить» содержание части информации, находя­щейся в устройствах ЭВМ.

Грамматики классифицируются по сложности построения пра­вил для построения допустимых для ЭВМ предложений на сле­дующие виды: 1) грамматики с конечным числом состояний, соот­ветствующие конечным автоматам и отражающие внутреннюю структуру ЭВМ, их систему команд, адресов и т. д.; 2) контек­стно-свободные грамматики, соответствующие автоматам с беско­нечной «магазинной» памятью и позволяющие строить предложе­ния, не зависящие от смысла и содержания предыдущих и после­дующих предложений; 3) контекстно-связанные грамматики, ко­торые приближаются к грамматикам естественных языков, но ста­новятся сложными при их машинной ориентации.

Применение контекстно-свободной грамматики будет показано при построении ряда ПОЯ в инструментах, «математические мо­дели», «моделирование», «анализ» и др. (см. главы четвертую — восьмую).

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

Синтаксис ПОЯ задается в виде хорошо известных и получив­ших общее признание правил Бэкуса в их классической форме. Нормальные формы впервые введены американским математиком Бэкусом для описания синтаксиса АЛГОЛ-60 и включают извест­ные правила, обычно излагаемые в курсах по основам програм­мирования.

Алгоритмические языки программирования (ФОРТРАН, СИ, ПЛ/1) предназначены для решения широкого класса задач. Обла­дая большими удобствами для автоматизации программирования, эти языки, с другой стороны, значительно увеличивают расход средств на трансляцию. Так, трансляция с ФОРТРАНа в 2,5 раза длительнее, чем с Ассемблера. Тем не менее алгоритмические языки — это основные языки, на которых пишутся программы в программном обеспечении (ПО) САПР. В основу всех этих язы­ков положен формульно-словесный способ записи' алгоритмов со своим алфавитом, синтаксисом и семантикой.

Машинные языки полностью определяются системой ко­манд, адресами ячеек, особенностями конфигурации ЭВМ. Машин­ные языки — это адресные языки, на них производятся распреде­ление памяти, условная адресация и другие внутренние операции в ЭВМ. Часто возникает необходимость в языках, которые, с одной стороны, учитывают особенности конкретной ЭВМ, а с дру­гой— упрощают процесс составления программ за счет символи­ческих обозначений команд. Такие языки получили название авто­кодов и ассемблеров (от англ, assembler — собирать, монтиро­вать). Ассемблеры позволяют более эффективно использовать аппаратные возможности ЭВМ и широко применяются при соз­дании системных частей программного обеспечения — транслято­ров, загрузчиков и т. д. (см. § 3.5). На Ассемблере вместо циф­ровых обозначений машинных кодов операций и операндов используется буквенное, автоматизируется распределение памяти, используются микроопределения, микрокоманды — заранее под­готовленные на том же Ассемблере программные средства, на­страиваемые в процессе разработки исходной программы.

Например, команда на Ассемблере пересылки 80-байтового поля с именем «СТРОКА 1» на поле «СТРОКА 2»— move char-cter имеет вид MVC: :<CTP 1, СТР 2>. По сравнению с записью той же команды в шестнадцатеричном машинном коде ДКОИ-8, т. е. в двоичном коде обмена информацией, запись MVC гораздо экономичнее.

Машинные — внутренние — языки ЦВМ определяются табли­цами кодировки, например ДКОИ-8. В таких таблицах элементы кода строятся в соответствии с правилом: номер столбца и стро­ки, на пересечении которых находится интересующий нас сим­вол, определяют соответственно старшую и младшую цифры кода символа. Например, знак + имеет шестнадцатеричный код 4Е,что соответствует двоичному представлению 01001110. Такие таблицы обычно придаются к техническому описанию ЭВМ и используются системными программистами при разработке соответствующих компонентов инструмента САПР.