159
строить программу по
спецификации задачи, были сформулированы И. Б.
Задыхайло в работе в 1963 году.
Разработчик прикладных программ абстрагируется от особенностей
конкретных компьютеров и мыслит в привычных терминах своей
предметной области. Отталкиваясь от конкретных потребностей Института
прикладной математики им. М. В.
Келдыша РАН, авторы языка старались
максимально упростить решение класса задач математической физики.
Специфика предметной области ‒ это ориентация на сеточные методы.
Именно этот факт наложил значительный отпечаток как на концепцию языка,
так и на все его основные конструкции.
Конструкции языка носят декларативный характер и описывают
правила вычисления значений. Язык предназначен для автоматизированной
разработки программ. Транслятор выполняет
синтез выходной программы
помимо традиционных задач, в частности, синтаксического и семантического
анализа. Порядок предложений языка может быть произвольным.
Организация вычислений не принимается в расчет при формировании
запросов на вычисления. Рассматриваемый язык позволяет формулировать
запрос на вычисления, не уточняя, каким
именно образом вычисления
следует организовать. Все информационные связи выявляются и
учитываются транслятором-синтезатором на этапах анализа исходной
программы и синтеза выходного текста. На трансляторе лежит и выбор
конкретного способа организации вычислений. В частности, на этапе синтеза
результирующей программы он может сгенерировать как последовательный,
так и параллельный код.
НОРМА – язык, использующий однократное присваивание.
Каждая переменная может принимать значение только один раз. Такие
понятия,
как память, побочный эффект, оператор присваивания и
управляющие операторы в языке НОРМА отсутствуют просто "по
определению". Запись на языке НОРМА, по
существу, является записью
численного метода решения конкретной задачи.
160
НОРМА
позволяет
опустить
этап
последовательного
программирования, а для генерации параллельной программы предлагает
сразу отталкиваться от записи в терминах математических формул.
Выходные программы могут быть записаны на языках Fortran MPI,
Fortran PVM, Fortran 77 и других диалектах Fortran.
Преимущества: соотношения как язык
описания заданий наиболее
близки разработчикам численных методов и прикладным программистам.
Сохраняется весь внутренний параллелизм реализуемого алгоритма.
Математические соотношения не используют понятие памяти, в них
отсутствует
пересчет
значений переменных.
Для
таких языков
существующая технология определения
параллелизма в программах
реализуется значительно проще.
Описание языка на сайте
http://www.keldysh.ru/nonna
.