|
|
|
|
|
|
|
|
страницы:
1
2
3
4
Текущая страница: 1
|
|
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ) Кафедра 22
Пояснительная записка к
КУРСОВОЙ РАБОТЕ
на тему: "Синтаксический анализ языка НОРМА. Разбор описаний "
студента группы К8-02а
Жучкова Александра Викторовича
Научный руководитель:
Комиссия:
Оценка:
Москва 1995г.
1. ВВЕДЕНИЕ
Задание, полученное мной на УИР и КП в данном семестре являлось продолжением работы, начатой в прошлом семестре, и состояло в следующем: тщательно изучить раздел описаний языком программирования Норма; разработать структуру данных и алгоритмы для разбора описаний языка программирования Норма; написать функции разбора раздела описаний.
2. Общее описание языка Норма
Язык программирования Норма является декларативным (непроцедурным) языком и предназначен для спецификации численных методов решения задач математической физики. Изначально он был ориентирован на решение задач математической физики разностными методами, однако может быть использован для решения более широкого класса вычислительных задач. Главная идея, положенная в основу языка Норма, заключается в том, что полученные специалистом в процессе решения прикладной задачи расчетные формулы почти непосредственно используются для ввода в вычислительную систему и проведения счета.Таким образом, язык Норма дает прикладному математику возможность сформулировать свою задачу в привычных для него терминах. Запись на языке Норма - это, по существу, строгая запись численных методов решения математической задачи, запись еще не алгоритмов, а просто расчетных формул и остальной необходимой информации. Отметим, что в записи на Норме не требуется никакой информации о порядке счета, способах организации вычислительных (циклических) процессов. Порядок предложений языка может быть произвольным - информационные взаимосвязи будут выявлены и учтены при организации процесса счета транслятором. Эта возможность, конечно, увеличивает трудоемкость и сложность при компиляции текста программы, но разработчики языка сознательно пошли на это, чтобы сделать данный язык удобным для использования широким кругом специалистов-матемотиков, имеущих небольшой опыт работы на компьютере. Выбор уровня языка Норма определяет характерную его черту - в этом языке нет необходимости вводить такие понятия, как оператор присваивания и возможность переприсваивания значений (типа х:=х+1) и операторы перехода. Наличие таких понятий в традиционных языках программирования объясняется необходимостью формулировки конкретного алгоритма с учетом вопросов экономии и распределения памяти, порядка выполнения операторов и т. п. Побочный эффект в языке Норма отсутствует по определению. Понятно, что многие из этих вопросов появляются снова на этапе синтеза рабочей программы. Однако, здесь они решаются автоматически по строгим правилам, гарантирующим правильность синтезируемой программы. Непроцедурность языка Норма позволяет преодолеть еще одну трудность, связанную с распараллеливанием алгоритма при счете на ЭВМ, допускающих совмещение операций. Известные методы распараллеливания последовательных алгоритмов основаны на выявлении, при некоторых ограничениях, частей алгоритма, которые можно выполнять независимо, в соответствии с заданным критерием параллелизма - асинхронные вычисления, синхронные и т. п. Однако, выявление взаимосвязей в уже сформированном последовательном алгоритме является неестественной и трудной задачей, так как анализируемая формулировка, как правило, насыщена избыточными взаимосвязями (типа введения рабочих переменных для экономии памяти, конкретных способах организации циклов и т. п.). Вообще говоря, ни откуда не следует, что последовательный алгоритм надо транслировать в параллельный, а не определять параллельный сразу по непроцедурной записи. Эти свойства, и некоторые другие ограничения, позволяют строго обосновать разрешимость синтеза выходной программы, так как в достаточно общей постановке решение этой задачи приводит к значительным математическим трудностям - она может оказаться NP-полной либо вообще неразрешимой. С другой стороны, исследования, связанные с разработкой и применением языка Норма показывают, что имеющиеся ограничения приемлимы с практической точки зрения.
3 Структура транслятора с языка Норма.
Транслятор с языка программирования Норма уже написан на языке Рефал. И хотя язык программиорвания Рефал весма удобен для обработки символьной информации, транслятор написанный на этом языке очень не экономно использует ресурсы вычислительной машины, а именно оперативную память, что зачастую правильно написанную программы невозможно оттранслировать из за нехватки оперативной памяти. Поэтому было решено перевести транслятор с языка Норма, используя на язык программирования Си, который был выбран по следующим причинам: язык Си позволяет гораздо более эффективно использовать ресурсы вычислительной машины; язык Си универсален и удобен для решения задач системного программирования разработке трансляторов, операционных систем, экранных интерфейсов, инструментальных средств;
Текущая страница: 1
|
|
|
|
|
|
|
|
|
|