Cтраница 3
Исследования синтаксиса помогли понять природу трудностей, которые приходится преодолевать при разработке трансляторов. Причиной некоторых из этих трудностей является неудачное описание синтаксиса реальных языков программирования. Описание языка грамматикой определенного типа, для которой можно автоматически создать распознаватель, существенно облегчает разработку транслятора. [31]
Применение мнемокодов целесообразно, когда требуется разработать широко и часто используемые программы. Поэтому мнемокоды используются главным образом при разработке системных программ, программ обработки данных, программ для систем реального времени. В последнее время, однако, в этих областях начинают применять и языки высокого уровня, что объясняется успехами в разработке высокоэффективных трансляторов для таких языков. [32]
Вместе с тем в 1940 - х гг. в связи с созданием электронных вычислительных и управляющих машин возникла область теории алгоритмов, тесно взаимодействующая с информатикой. В настоящее время положения теории алгоритмов являются теоретической основой таких составных частей современной информатики, как теория программирования, построение алгоритмических языков и ЭВМ, анализ алгоритмов с целью выбора наиболее рационального для решения на ЭВМ, анализ алгоритмических языков и их синтаксический контроль при разработке трансляторов. [33]
Программа синхронного ПЛ / 1 и т п На пиг В1Ч. [34] |
Сравнивая системы интерпретирующего и компилирующего ти - З1ов, необходимо отметить следующее. В системах интерпретирующего типа входное описание модели хранится в оперативной памяти ЭВМ во время моделирования и вследствие этого внесение изменений в модель в интерпретирующих системах осуществляется достаточно просто. Преимуществом систем компилирующего типа является большая скорость работы. Однако разработка транслятора для перевода описания схемы на машинный язык представляет более сложную и трудоемкую задачу, чем разработка программного обеспечения интерпретирующей системы. Таким образом, системы интерпретирующего типа проще и менее трудоемки для создания, однако, если требуется большая скорость работы системы моделирования, предпочтение следует отдать системам компилирующего типа. [35]
Появление различных версий фортрана обусловлено несколькими причинами. Во-первых, язык фортран непрерывно развивается. При этом происходит обогащение его новыми элементами и одновременно отмирание тех его элементов, которые себя не оправдали. Во-вторых, при разработке транслятора с языка фортран приходится учитывать специфику конкретного типа ЭВМ. [36]
Вместе с тем объектно-ориентированным языкам присущи и некоторые недостатки. Одним из наиболее существенных недостатков является замедление выполнения программ, обусловленное механизмом динамической связи. Это вызвано активным обменом информацией между программными модулями. Другим недостатком таких языков является сложность разработки соответствующих трансляторов по сравнению с трансляторами традиционных языков программирования. Однако преимущества объектно-ориентированных языков, как отмечают специалисты, несомненно, перевешивают недостатки, что делает их перспективными средствами разработки сложных программных систем. [37]
Причина этого - трудности формального описания семантики. Однако исследования способов формализации семантики ведутся весьма интенсивно. Успехи в этом направлении обещают превратить искусство разработки трансляторов в точную науку. [38]
Сравнительно с рассмотренными ранее языками системного моделирования как SIMULA-67 обеспечивает наибольшую гибкость описания. Он имеет широкие общеалгоритмические возможности и может быть использован для описания систем различной природы. В то же время описания систем достаточно широкого класса, структурные элементы которых интерпретируются как устройства и память, на языке SIMULA-67 могут оказываться более сложными и условными, нежели на языках типа SOL. Препятствиями на пути широкого применения языка SIMULA-67 являются трудности разработки трансляторов на конкретные ЭВМ и сложность практического усвоения языка. [39]
Недавно появились более специальные языки с прикладной ориентацией, разработанные для решения специфических задач. Они ориентированы на использование инженерами-технологами. Языки с прикладной ориентацией, будучи нередко применимы к широкому кругу задач, обычно ориентированы на определенный процесс или режим управления, например на режим непосредственного цифрового управления или управления уставками. По мере накопления опыта в области управления с применением вычислительных машин, без сомнения, будут разработаны другие проблемно-ориентированные языки для областей применения, достаточно-общих, чтобы оправдать разработку транслятора. [40]
Транслятор - это специальная программа, которая производит преобразование записи алгоритма с алгоритмического языка, как правило, в последовательность машинных команд. Разработка транслятора требует больших затрат. Обычно для создания транслятора необходи: ма работа коллектива квалифицированных программистов в течение нескольких лет. Объем транслятора обычно составляет тысячи ( иногда десятки тысяч) машинных команд. Однако затраты на разработку транслятора затем окупаются, так как благодаря ему значительно увеличивается производительность труда программистов. [41]
Программа в управляющих ЦВМ, близких к универсальным, хранится на магнитных барабанах, дисках или лентах, по мере необходимости вводится в оперативное запоминающее устройство и может быть легко заменена. Интервал времени, необходимый для вызова определенной программы, составляет от десятков миллисекунд до нескольких секунд. Кроме того, возможно их применение в управляющих системах третьего и четвертого типов, однако значительное время выборки программ для исполнения является существенным препятствием, ограничивающим их использование в таких системах. Такие ЦВМ имеют значительные габариты и, как правило, предназначены для стационарного размещения. Массовое серийное изготовление этих ЦВМ и их использование в самых разнообразных управляющих системах и вычислительных центрах делают рентабельной разработку систем широкого математического обеспечения таких ЦВМ, включая разработку трансляторов с универсальных языков программирования высоких уровней. [42]
Тривиальное решение задачи состоит в-изображении каждого оператора языка ( машинной команды, строки или любого фрагмента, признаваемого единицей языка) отдельной вершиной. При этом две вершины смежны, если между соответствующими операторами есть передача управления. Точнее, оператор, после исполнения которого производится передача управления, представляется началом дуги; оператор, на который передается управление - концом дуги, а каждая передача управления - дугой. При таком подходе размер графа сильно растет за счет появления длинных цепочек вершин, соответствующих линейным участкам программ. Они могут быть представлены одной вершиной. Более сложные подходы к построению управляющих графов состоят в выделении различного рода квазилинейных участков, как это было сделано, например, при разработке транслятора с языка альфа. Это возможно, если нет необходимости тщательно учитывать внутреннюю структуру отдельных частей программы. [43]