norma-r (1158383)

Файл №1158383 norma-r (Раздаточные материалы)norma-r (1158383)2019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

54


НОРМА

Описание языка

Версия 2.0

Институт прикладной математики им. М.В.Келдыша

Российской Акадумии Наук

Содержание

Введение

1. Предпосылки разработки

2. Цели разработки

3. Что дает использование языка Норма?

Спецификация языка Норма

1. Область применения и основные свойства

2. Нотация синтаксиса

3. Основные элементы языка

3.1. Лексические правила

3.1.1.Основные символы

3.1.2. Комментарии

3.1.3. Лексемы

3.1.4. Идентификаторы

3.1.5. Ключевые слова

3.1.6. Константы

3.1.7. Знаки операций

3.1.8. Разделители

3.2. Имена

3.3. Базовые типы данных

3.4. Выражения

3.4.1. Арифметические выражения

3.4.2. Условные выражения

4. Структура программы

5. Конструкции языка Норма

5.1. Описания

5.1.1. Описание областей

5.1.1.1. Описание безусловной области

5.1.1.2. Описание условной области

5.1.2. Описание индексов областей

5.1.3. Описание величин

5.1.4. Описание параметров области

5.1.5. Описание входных и выходных величин

5.1.6. Описание внешних имен

5.1.7. Описание индексов распределения

5.2. Операторы в языке Норма

5.2.1. Скалярный оператор

5.2.2. Оператор ASSUME

5.2.3. Обращение к функциям в языке Норма

5.2.3.1. Cтандартные арифметические функции

5.2.3.2. Функции редукции

5.2.3.3. Внешние функции пользователя

5.2.4. Вызов раздела

5.2.5. Интерфейс с программами, написанными на Фортране

5.2.6. Задание режима последовательного вычисления

5.3. Итерация

Приложение 1. Представление исходной программы

Приложение 2. Синтаксические правила

Литература

Введение

Язык Норма является декларативным (непроцедурным) языком и предназначен для спецификации задач вычислительного характера. В процессе трансляции, помимо традиционных задач, например, синтаксического, семантического анализа, решается задача синтеза выходной программы, то есть определения порядка вычислений и способа вычислений с учетом возможностей выходного языка и архитектуры компьютера.

Идеи, позволяющие автоматически строить программу по спецификации задачи, были сформулированы И.Б.Задыхайло в работе [1] еще в 1963 году. Дальнейшее их развитие и привело к появлению языка Норма и нескольких версий транслятора для него [2-4]. Некоторые результаты практического использования языка Норма описаны в [5].

Авторы считают, что общий подход, использованный при разработке и реализации языка Норма, может быть применен для создания языков нового поколения, а значение этого подхода возрастает в связи с быстрым развитием параллельной вычислительной техники.

1. Предпосылки разработки

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

Еще в 1960 году в нашем институте появились первые работы на эту тему, в которых способ написания заданий получил название “параметрической записи”. В дальнейшем такие способы называли “непроцедурными описаниями”, а в последнее время обычно - “декларативными описаниями”. Соответствующие языки описаний носят характер спецификаций, в которых можно описывать правила вычисления значений, а порядок вычисления может быть любой (в частности, в последовательном или параллельном режиме), лишь бы удовлетворялись указанные правила.

Многочисленные исследования по теории программирования и практика программирования позволяют утверждать, что намеченный подход был правильным. Ниже мы кратко рассмотрим некоторые аспекты, подтверждающие это утверждение.

2. Цели разработки

Практическая ценность методов разработки прикладного программного обеспечения определяется в первую очередь тем, в какой степени они:

1) автоматизируют процесс разработки прикладных программ,

2) поддерживают создание надежныхи мобильных прикладных программ,

3) удобны для специалиста в {\it предметной области}, в которой ведется разработка.

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

Новые технологические достижения и разработки в области архитектуры ЭВМ дают очень большие потенциальные вычислительные возможности, однако их полное использование на практике связано с трудностями, если учитывать необходимость выполнения требований (1)-(3). Так, с появлением высокопроизводительных многопроцессорных ЭВМ, возник вопрос о том, каким образом для них разрабатывать прикладные программы?

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

Язык Норма и подход к разработке прикладных программ, основанный на его применении, является попыткой учесть требования (1)-(3). Конечно, авторы этого подхода отдают себе отчет в том, какие трудности возникают при решении этой фундаментальной задачи, и что, скорее всего, достаточно полного и универсального способа ее решения сразу получить не удастся. Однако некоторые достоинства предлагаемого подхода можно отметить уже сейчас.

3. Что дает использование языка Норма?

Высокая автоматизация процесса разработки прикладных программ.

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

Надежность программирования и мобильность.

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

Еще раз подчеркнем важность строгого описания процесса решения задачи на уровне предметной области. Этот уровень является наиболее устойчивым, так как отражает только схему возможных вычислений и не зависит от оптимизаций, которые возможно будут воплощены в программной реализации. Очевидно, что если мы предложим язык для строгого описания процесса решения задачи в терминах предметной области, то вариант программы, который будет построен по такому описанию автоматически, будет иметь уровень надежности, который соответствует надежности транслятора, а также уровень оптимизации, который заложен в транслятор, порождающий целевую программу.

Усилия авторов языка Норма были направлены на разработку языка, который фактически использует лишь термины из предметной области, связанной с решением задач математической физики сеточными методами. Простота и надежность “программ” обеспечивается фактически отсутствием программирования, а требует лишь знания терминов предметной области и правильного их применения.

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

Метод создания параллельных программ.

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

Описание решения задачи сохраняет свой естественный параллелизм. В этом описании не содержится никаких ограничений, связанных с желанием приспособить решение к той или иной архитектуре ЭВМ, особенностям языка программирования или другим требованиям. Это ``чистое" описание решения задачи, которое накладывает ограничения только на порядок вычислений, которые вытекают из существа счетной схемы (информационных зависимостей между величинами). Отсутствие понятия ``памяти" для хранения разных значений в разные моменты времени значительно упрощает построение алгоритмов выявления естественного параллелизма и построения параллельной целевой программы.

В ситуациях, когда порядок вычислений оказывается существенным с точки зрения прикладного математика (например, он влияет на точность вычислений, скорость сходимости и т.п.), могут быть использованы дополнительные понятия, введенные в язык Норма и интерпретируемые специальным образом.

Спецификация языка Норма

1. Область применения и основные свойства

Язык Норма является специализированным языком и предназначен для спецификации численных методов решения задач математической физики. Изначально он был ориентирован на решение задач математической физики разностными методами, однако, как показала практика, может быть использован для решения более широкого класса вычислительных задач.

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

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

Выбор уровня языка Норма определяет характерную его черту - это язык с однократным присваиванием, то есть каждая переменная может принимать значение только один раз. Такие понятия, как память, побочный эффект, оператор присваивания, управляющие операторы в языке Норма отсутствуют по определению.

Эти свойства, и некоторые другие ограничения (в первую очередь, на вид индексных выражений и способы описания индексных пространств), позволяют строго обосновать разрешимость задачи синтеза выходной программы [2,3], так как в достаточно общей постановке решение этой задачи приводит к значительным математическим трудностям -- она может оказаться NP-полной либо вообще неразрешимой. С другой стороны, исследования, связанные с разработкой и применением языка Норма показывают, что имеющиеся ограничения приемлемы с практической точки зрения [5].

2. Нотация синтаксиса

В нотации синтаксиса, используемой в данном описании, применяется расширенная форма Бэкуса--Наура.

Обозначения {A}*, {A}+, {A1, . . . , A n }, [A] означают

{A}*
{A}+
{A1, . . . , A n }

[A]

:: =

:: =

:: =

:: =

 A A A ...

AA A ...

A1... A n

  A

где A - некоторый объект языка,

 - пусто,

 - выбор одной из альтернатив,

... и так далее.

В дальнейшем, при определении правил языка синтаксические понятия набираются курсивом, а слова и литеры, воспринимаемые буквально, прямым шрифтом. Альтернативные конструкции перечисляются, как правило, в столбик, каждая альтернатива на отдельной строке. Иногда используются частично подчеркнутые обозначения синтаксических конструкций, например, name-set. Синтаксически это обозначение идентично обозначению name, а подчеркнутая часть конструкции несет дополнительную семантическую информацию.

Обозначение list-element заменяет непустой список элементов, перечисленных через запятую:

list-element :

element { , element }*

В каждом конкретном случае определение элемента приводится.

Обычно сначала приводятся синтаксические правила, а затем комментарии к ним, семантические разъяснения, примеры и т.п.

3. Основные элементы языка

3.1. Лексические правила

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

3.1.1.Основные символы

principal-symbol :

letter

Характеристики

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

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

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее