8463-1 (О возможности универсального кода внутреннего представления программы), страница 2

2016-07-31СтудИзба

Описание файла

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

Онлайн просмотр документа "8463-1"

Текст 2 страницы из документа "8463-1"

Алгоритмические формулы (АФ; табл.1, рис.1) представляют собой формальную систему, являющуюся развитием ЯЛС посредством включения в него конструкций, адекватных упомянутому языковому ядру. Главным фактом, лежащим в основе этого формализма, является возможность рассматривать основные элиминаторы оператора перехода – условные операторы, операторы выбора и операторы организации цикла, – как особые (операторные) скобки, в принципе аналогичные обычным по своим свойствам и функциям. В соответствии с этим «программа» рассматривается как скобочное выражение (строка), структура которого оформляется тремя видами скобок: алгебраическими (круглыми), условными (прямыми) и цикловыми (фигурными).

Рис. 1. Алгоритм Евклида нахождения наибольшего общего делителя в представлении различными языками программирования: I – на языке логических схем (Ляпунов, Янов, 1958), II – на одном из наиболее распространенных языков программирования (BASIC) в «старой» (A) и «новой» (B) нотации, III – в виде алгоритмической формулы, адекватной коду формульного процессора

Элементом алгоритмической формулы является оператор, состоящий из имени оператора и списка аргументов, заключенного в алгебраические скобки. Алгоритмическая формула (см. рис.1) является последовательностью операторов, отделяемых друг от друга знаком-разделителем (точка с запятой). Основу формализма составляют оператор сохранения значения (присваивание) и операторы-скобки, именами которых служат символы фигурных (цикловых) либо квадратных (операторы условий и выбора) скобок. Условные и цикловые скобки аналогичны соответствующим операторам большинства распространенных языков (табл.1 и рис.1). Например, открывающая прямая скобка в качестве имени оператора, с логическим условием в качестве единственного аргумента, и парный ей оператор закрывающей скобки, не имеющий аргументов, ограничивают подпоследовательность операторов, выполняющуюся, если выполнено данное логическое условие. Подобные парные операторы, именами которых являются символы скобок, ограничивают подстроку, выполняющуюся кратное число раз, заданное значением параметра цикла, либо в зависимости от выполнения соответствующего логического условия. Оператор присваивания является безымянным, традиционная запись x:=F(y1,..., yn) отвечает оператору (x, F(y1,..., yn)). Множество всех остальных («именованных») операторов, наборы функций и отношений, как и допустимые классы переменных или иные ограничительные символы, могут быть в той или иной степени специфичными.

Таким образом, алгоритмическая формула отличается от ЯЛС главным образом в том отношении, что, с одной стороны, наиболее последовательно проводится принцип линеаризации записи алгоритма с полностью унифицированным операторным представлением его элементов, с другой – в соответствии со сложившейся практикой в формализм введены наиболее распространённые средства элиминации операторов перехода (операторы-скобки).

В алгоритмических формулах легко усматривается естественное развитие обычной функционально-алгебраической символики. Уже при вычислении простейших выражений возникает необходимость сохранять промежуточные результаты. В обычных (алгебраических или арифметических) формулах этот процесс однозначен. Более общая ситуация требует явного введения ячеек-переменных. Подобным образом, операторы-скобки являются лишь обобщением алгебраических, определяющих последовательность действий с входящими в выражение объектами. В связи с этим мы считаем возможным рассматривать АФ как расширение общематематической семиотики, а не как язык программирования или его математическую модель. Поэтому мы полагаем также допустимыми любые возможные расширения (клоны) этого языка, сколь угодно своеобразные в зависимости от контекста различных сфер его применения. В частности, в соответствующих ситуациях, легко представить применение в составе АФ любой известной общематематической символики – кванторов, производных, интегралов, – и т.п., лишь бы при этом формула оставалась «понятной» в той же, например, степени, в какой понятно доказательство какого-либо математического утверждения, как правило не доводимое до уровня совершенной формально-логической строгости. В этом ракурсе и сам ЯЛС можно трактовать как частный случай или клон АФ.

Можно было бы отдельно рассмотреть вопрос о минимальности набора собственных символов АФ: в сущности достаточна лишь одна разновидность операторных скобок – цикловые, с блокировкой тела цикла при нулевом значении числа повторений. Даже логико-алгебраические формулы для АФ-термов в каком-то смысле являются расширением языка, можно было бы обойтись и чисто функциональной записью выражений. Однако очевидно, что в соответствие с общими тенденциями развития минимальность набора непосредственно выполняемых процессором операций ни в каком отношении не является целью, фактически в качестве таковой выступают достаточно трудно и медленно вырабатываемые иные критерии оптимальности этого набора. Представляемый подход состоит в том, что сущностью АФ объявляется общематематический смысл некоторых специфически программистских по происхождению символов – присваиваний и операторных скобок. Их использование может быть уподоблено практике применения формально-логических по происхождению знаков кванторов или функциональных символов интегрирования и дифференцирования. Конкретизация («локализация») соответствующего формализма в строго определенное исчисление или алгоритмический код так или иначе должна быть привязана к контексту ситуации и в общем виде не производится, как она не производится и для приведенных аналогичных объектов.

В алгебраической интерпретации [6, 10] нормальная (без полускобок Янова) алгоритмическая формула – это свободная конструкция над алгеброй функций внутренних состояний (ВС) некоего автоматического устройства (АУ) и тем или иным множеством именованных операторов, выделенное подмножество которых характеризуется как «действия» АУ, а остальные выступают в роли вызовов подпрограмм (т.е., в конечном счете, как сокращения). При этом, при «выполнении» АФ, из нее удаляются все внутренние переменные и операторы преобразования внутреннего состояния (элиминация ВС), а аргументы остающихся в результирующей строке именованных операторов-действий получают определяемое значение. Таким образом, АФ как формальный объект играет роль шаблона, по которому, при заданном векторе условий, по определенным правилам, вычисляется выходная строка действий АУ.

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

Операторно-формульная запись алгоритма, в отличие от языкового или командного, наиболее удобна как для исследования, так и машинного анализа, генерации и оптимизации программного кода. Она также наиболее естественно («исчислительно») представляет объекты алгоритмической природы, подобные программам, что существенно, коль скоро речь идет о возможности формирования нового стандарта внутреннего представления программ. Более того, мы полагаем, что формульная запись, наряду с общепринятыми рекурсивными функциями, автоматом Тьюринга или алгорифмами Маркова, наиболее пригодна выступать в роли «программной» версии определения алгоритма вообще. Язык программирования как технический объект в АФ редуцируется практически полностью, сводясь лишь к нескольким символам и правилам общематематического характера, причем это не сопровождается введением каких-либо специфических объектов или знаков, таких, как метки передачи управления.

Формульный процессор

Главной характеристикой АФ, как мы считаем, является возможность построения для них исполняющего устройства – процессора с формульной архитектурой ([11], рис.2), – по уровню сложности и быстродействию сопоставимого с существующими командными процессорами. Это существенно отличает данный процессор от любой известной системы схемной реализации, для которых характерно многоуровневое усложнение логики исполняющей системы с включением в нее множества дополнительных регистров (иногда столь специфичных, как, например, счетчики скобок), связей, логических схем, прошитых в ПЗУ программных модулей, фактически интерпретирующих в конечном счете операторы входного языка и т.д. и т.п. В отличие от этого, базовая идея формульной архитектуры может быть отражена в одной фразе: для организации прямого выполнения операторно-формульного кода программы в код исполняемой команды включаются флаги декларируемого состояния загрузки ряда регистров местной (внутрипроцессорной) памяти. Такой упрощающий подход к исполнительной системе соответствует более адекватному распределению функций между ней и системами транслирующими либо интерпретирующими. Более сильная подгонка схемы под тот или иной язык или инструментальное средство на сегодняшний день выглядит нецелесообразной. В случае формульного процессора все программные средства остаются в равном положении по отношению к исполняющей системе, а транслирующая фаза хотя и заметно упрощается, всё же сохраняется как таковая, сохраняя вместе с собой и естественную возможность использования самых причудливых приёмов программирования и управляющих протоколов.

Рис. 2. Возможная функциональная схема формульного процессора

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

Рис. 3. Структура псевдокоманд формульного процессора

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

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

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

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

Таблица 2

Структурные ограничители

Приоритет
(I-й полубайт)

Модификатор (II-й полубайт)

0

1

2

3

4

5

6

7

0

^

1

*

/

2

+

3

<

>

=

4

Not

5

And

6

Or

7

(

)

,

8

[

]

][

C[

{

}

<

>

9

;

:=

goto

Сущность формульного процессора составляет зависимость выполнения команд от состояния загрузки регистров местной памяти. Для этого в качестве дополнительного звена в обычное подсоединение регистра чтения команды к устройству управления включается особый (главный) регистр автомата управления (РАУ; рис.2, 4), который также можно охарактеризовать как регистр формирователь-дешифратор кода команды управления. В роли этой команды выступает код, формируемый в РАУ в соответствии с состоянием загрузки регистров местной памяти и кодом очередной псевдокоманды (рис.4). Соответствие содержимого РАУ состоянию загрузки регистров местной памяти позволяет отслеживать текущее состояние вычислительного процесса и организовывать отработку очередного символа программы (т.е. очередной псевдокоманды) не только в зависимости от нее самой, но и от предшествующей части программы, выполнение которой создало данное состояние. Возможность соответствующего (однопросмотрового) алгоритма можно усмотреть, в частности, из общего «скобочного» принципа организации формульного вычисления: первой закрывается скобка (любого типа), которая была открыта последней. Иными словами, достаточно единственного (и даже общего) стека для адекватной организации сохранения промежуточных результатов. Подобным образом, оказывается достаточным малого числа информационных признаков (которыми выступают флаги загрузки регистров) для приведения зависимости вычисляющего алгоритма от общей структуры формулы к зависимости его фаз от этих признаков.

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