DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 02:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 16 Январь, 2023 17:37 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Алгоритмический язык
https://encyclopediaofmath.org/wiki/Alg ... c_language

Цитата:
Алгоритмический язык
формальный язык программирования

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

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

Термин «алгоритмический язык» обычно относится к проблемно-ориентированному языку, в отличие от машинного кода, который представляет собой нотацию, непосредственно интерпретируемую машиной.

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

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

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

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

Ровно одно появление такой лексемы считается определяющим; остальные вхождения лексемы в ее объем называются прикладными.

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

Транзитивное замыкание конститутивного отношения однозначно ставит в соответствие каждому понятию некоторое подслово текста программы, которое называется (конечным) произведением этого понятия.

Есть одно исходное понятие, продукцией которого является весь текст программы.

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

Понятия и лексемы имеют атрибуты, т.е. определенные множества, фиксированные описанием алгоритмического языка.

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

Атрибутивная информация передается всем применяемым вхождениям лексемы в пределах соответствующей области действия (идентификации).

Атрибуты определенного понятия находятся индукцией по дереву продукции как функция атрибутов его составляющих.

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

Правила синтаксического анализа задаются порождающей грамматикой алгоритмического языка (ср . Грамматика, порождающая ) или анализирующим автоматом (точнее, различными его обобщениями) для преобразования текста программы в продукционное дерево.

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

Алгоритм выполнения программ алгоритмического языка обычно задается в виде соответствия между вершинами продукционного дерева и различными исполнительными процедурами (также называемыми преобразователями или семантическими процедурами).

Каждая процедура выполняет определенные операции в зависимости от атрибутов и некоторого контекста данного понятия (или лексемы), а затем определяет следующую процедуру.

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

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

Основными классами лексем являются числительные для представления чисел, литералы для представления текстов и идентификаторы для обозначения различных объектов программы, определенных в самой программе.

Основными такими объектами являются переменные, метки (обозначающие различные части программы) и процедуры (обозначающие функции).

Значения и имена некоторых идентификаторов определяются описанием алгоритмического языка (зарезервированные слова).

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

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

Для составных значений типа массивов (векторов, матриц) и структурированных значений (записей) также указывается режим доступа к их элементарным компонентам.

Выражения являются источником значений; операторы — единицы конечных операций в программе; базовыми операторами являются операторы присваивания значения выражения переменной, оператор передачи управления (безусловный или условный переход, или переход), оператор вызова процедуры,

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

Оператор цикла предписывает многократное выполнение некоторой части программы (тела цикла), причем количество повторений определяется некоторым заданным условием.

Определение процедуры вводит сокращенное параметризованное обозначение функции некоторой части программы (тела процедуры).

Выполнение тела процедуры может впоследствии рассматриваться как элементарная операция, инициируемая вызовом процедуры, при этом фактические значения присваиваются параметрам, включенным в процедуру.

Важным свойством алгоритмического языка является его способность структурировать текст программы, что облегчает его написание, изучение и проверку.

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

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

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

В процессорах трансляционного типа (трансляторы, компиляторы, генераторы программ) выполнение программы происходит после завершения построения машинной программы.

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

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

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

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

Число алгоритмических языков, которые могут быть использованы в компьютерах, очень велико (более тысячи), но широко используются лишь немногие из них. К ним относятся Алгол ; Алгол-68 ; Кобол ; лисп ; ПЛ/Я ; Симуля ; Фортран ; а в СССР еще и Алгамс ; Альфа и Рефал .

использованная литература

[1] П. Ингерман, "Синтаксически-ориентированный переводчик", акад. Пресса (1966)
[2] , Языки программирования , Москва (1972) (на русском языке; перевод с английского)
[3] Ф. Р. Хопгуд, «Техники компиляции», American Elsevier, Нью-Йорк (1969).
[4] Б. Хигман, «Сравнительное исследование языков программирования», журнал American Elsevier (1968).

Комментарии

В англоязычном сообществе информатики обычно не делается конкретного различия между понятиями «язык программирования» и «алгоритмический язык», хотя последний термин исторически относится в основном к языкам семейства Алгол .

Терминология и понятия теории языков программирования не стандартизированы; приведенная выше статья в значительной степени опирается на несколько идиоматический подход, используемый в определении Algol-68 .

Язык, получивший широкое распространение с 1970-х годов, — это Паскаль, который является близким родственником Алгола-60 и предлагает некоторые дополнительные возможности.

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

Большинство существующих алгоритмических языков являются процедурными. Примером функционального языка является Лисп, а Пролог — дедуктивный язык.

использованная литература

[а1] Т. В. Пратт, "Языки программирования: дизайн и реализация", Прентис-Холл (1975).

Как цитировать эту запись:
Алгоритмический язык. А. П. Ершов (составитель), Математическая энциклопедия. URL-адрес: http://encyclopediaofmath.org/index.php ... ldid=11836.

Этот текст первоначально появился в Энциклопедии математики - ISBN 1402006098.
Эта страница последний раз редактировалась 7 февраля 2011 г., в 16:56.
Политика конфиденциальности

Об энциклопедии математики


https://encyclopediaofmath.org/wiki/Main_Page
Цитата:
Главная страница

(Перенаправлено из Математической энциклопедии: О )

Важное уведомление
Перенос Математической энциклопедии из Springer Verlag в EMS Press

Энциклопедия математики (EoM) перешла из Springer Verlag в EMS Press , берлинское математическое издательство, принадлежащее Европейскому математическому обществу .
Поэтому программное обеспечение этого сервера было обновлено - подробности смотрите в Special:Version .

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

Вскоре здесь будет размещена дополнительная информация, в частности, касающаяся лицензионного соглашения.
Пожалуйста, оставайтесь с EoM!

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

Оригинальные статьи взяты из онлайновой энциклопедии математики, опубликованной Kluwer Academic Publishers в 2002 г. С более чем 8000 статей, освещающих почти 50 000 математических понятий, энциклопедия математики была самым современным справочником для выпускников в области математики.

Springer в сотрудничестве с Европейским математическим обществом сделал содержание этой энциклопедии свободно доступным для общественности.

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

Исходные статьи из Encyclopaedia of Mathematics остаются защищенными авторским правом Springer, но любые добавленные новые статьи и любые изменения, внесенные в существующие статьи на encyclopediaofmath.org, будут подпадать под действие лицензии Creative Commons Attribution Share-Alike .

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

Эта вики представляет собой MediaWiki , использующую расширение MathJax , позволяющее вставлять математические уравнения в и . Инструкции о том, как это можно сделать, см. на странице справки . ТЕИкслАТЕИкс



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB