При любом рассмотрении вопросов управления центральное место занимает информация, появляющаяся в результате межсистемного и внутрисистемного взаимодействия. В информационных системах информация является продуктом, свойства которого изменяются в соответствии с заданной технологией с помощью комплекса технических средств и операторов. Важную роль в процессе преобразования информации играет программное обеспечение (ПО) вычислительных систем. Создание ПО сегодня немыслимо без применения трансляторов и компиляторов. Транслятор, по-существу, представляет собой устройство, выполняющее перевод предложений, написанных на одном языке, в предложения, написанные на другом языке. Компилятор, в данном аспекте, является специализированным транслятором, и его основная задача заключается в том, чтобы перевести наборы битов (цепочку символов), представляющие программу, написанную на некотором исходном языке программирования, в последовательность машинных команд, которые выполняют то, что задумал программист.
Основной причиной распространения компиляторов является то, что языки высокого уровня стали основными средствами разработки программ. Бурное развитие архитектур ЭВМ диктует постоянную необходимость появления все новых и новых компиляторов, вместе происходит совершенствование средств разработки компиляторов.
Процесс компиляции можно разбить на три последовательные этапа: лексический анализ, синтаксический анализ и генерация кода. Па каждом этапе происходит преобразование программы из одной формы представления в другую, но важным здесь является то, что полученный текст на машинном языке должен быть семантически эквивалентным тексту программы на исходном языке программирования.
Проблеме построения математической модели компилятора посвящен ряд работ. В частности, в [1] рассматриваются задачи линеаризации компилятора, связанной с управлением способом просмотра обрабатываемой программы, и декомпозиции компилятора на последовательные фазы. Здесь модели строятся с использованием частичных и смешанных вычислений на основе проецирования и проекций Футамуры.
Еще один подход для описания и исследования семантики таких сложных программ, какими являются компиляторы, предложен в [2]. Данная работа является развитием исследований [3,4] и основана на идеях композиционного программирования, предложенного В.Н.Редько. С помощью этих моделей можно точно выразить семантику программ и средствами математической логики доказывать семантические свойства программ.
Кроме того, широко известна декомпозиция компилятора на фазы: лексического анализа, синтаксического анализа и генерации кода, а также описание их с использованием регулярных выражений, конечных автоматов, контекстно-свободных и атрибутных грамматик и т.д. [5-9].
Однако, большинство предлагаемых моделей и методов носят весьма сложный характер, что обусловлено сложностью задач, выполняемых компилятором. А это, в свою очередь, приводит к усложнению программ, практически реализующих процесс компиляции. Такое положение дел открывает широкие возможности для внесения в компиляторы закладок (активных дефектов), которые затем могут быть перенесены или внедрены во вновь создаваемые (транслируемые) программы.
Поэтому все больше и больше растет необходимость разработки моделей компиляторов и методов компиляции, которые смогли бы обеспечить "прозрачность" и "ясность" процесса компиляции.
Исходя из всего выше изложенного, целесообразно выделить основное направление исследований:
- построение модели компилятора, используя которую можно было бы просто и ясно описать процесс компиляции, и разработка на ее основе методов практической, реализации компиляторов, свободных от активных дефектов. Это, по сути, развитие технологии "прозрачного" программирования, когда процесс программирования организуется таким образом, что внесение умышленных дефектов в программные средства практически невозможно, а в случае их появления, они легко могут быть обнаружены.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.