Скачать 354.13 Kb.
|
. Постановка задачиКак было показано выше, прикладные языки не дают нужного уровня производительности, а системные, идут путём экстенсивного расширения или опираются на нестандартные подходы, эффективность которых на практике не подтверждена. Недостаток удачных разработок компенсируется только временными решениями, адаптирующими C/C++ к текущим задачам. В связи с этим становится актуальной проблема создания новых более гибких языков системного программирования, комбинирующих сильные стороны технологий, связанных с виртуальными машинами, и императивной статической компиляции. Целью данной работы является разработка и реализация компилятора системного языка, генерирующего промежуточный код, напоминающий ассемблерный для процессора x86 в SSA-записи с бесконечным числом универсальных регистров, согласно требованиям:
3. описание языка.1. КонцепцияСовременные языки очень сложны и часто неоднородны. Причем, абстракции в них реализованные, какими бы высокоуровневыми ни были, в итоге не могут быть сложнее инструкций процессора (МБ: тут вот не очень точно написано. Наверное, имеется в виду то, что они не могут быть сложнее цепочек инструкций процессора. Лучше так написать, иначе можно различно интерпретировать). Оптимизированный машинный код выглядит одинаково, компилируется ли он из процедурного, объектно-ориентированного или функционального представления. Каждый конкретный язык –это баланс между тем, что реализовано в его ядре, а что вынесено на уровень библиотек. Возникает идея создания «минимального» ядра с единственной конструкцией программирования сразу в инструкциях и механизмом вывода из неё любой языковой структуры. Такой индуктивный принцип в теории позволит развиваться языку самому по себе в библиотеках, не только семантически как это было раньше, но и синтаксически. В теории все неоднородности и конфликты, возникающие по ходу внедрения новых примитивов, окажутся замеченными при компиляции, так как будут соответствовать невыразимости в терминах языка. На практике разработчики Nemerle [14] реализуют операторы if и все циклы в своей стандартной библиотеке за счёт макросов и сопоставления с образцом, а Katahdin [15] вообще предлагает программировать грамматики. Оба проекта подтверждают жизнеспособность идеи, но, во-первых, делают это неэффективно, используя .Net, следовательно, проигрывая даже C#, во-вторых, не пытаются таким образом реализовать более сложные абстракции, такие как обработка ошибок, конструкторы типов или объекты. Ситуацию можно исправить и развить идею расширяемых языков применительно к системному программированию. С этой целью была разработана концепция CSeL [16], использующая в рамках языка арифметических выражений со статической типизацией перегрузку операторов и метатипы для программирования конструкций if-else, for-break-continue и switch-case-default-break. При первой же реализации выявилась несостоятельность операторного подхода: значительный объём вспомогательного кода с одной стороны и отчасти, как следствие, очень медленная компиляция с другой. Например, определение if’а требует 3 типа, 5 операторов и специальный механизм накопления результата, что в итоге даёт программу в 90 строк, а аналогичное объявление в Nemerle занимает всего 10 строк одним макросом. Возникла проблема. После неудачного опыта концепция была переработана, от операторов отказались в пользу перегрузки целых синтаксических поддеревьев. Подход претерпел ещё ряд изменений, связанных с переходом от теории к практике. Далее в основной части данной работы мы предоставим полное формальное4 описание лексики, синтаксиса, и далее разберём алгоритмы генерации промежуточного кода. В заключении мы разберем несколько примеров программ на CSeL. |
Реферат: Коваленко А. Е. Разработка системы научной визуализации.... Коваленко А. Е. Разработка системы научной визуализации. Квалификационная работа на степень магистра наук по направлению «Математика.... | Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических... Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению... | ||
Реферат Флягина Т. А. Проблемы разработки многооконных интерфейсов,... Флягина Т. А. Проблемы разработки многооконных интерфейсов, квалификационная работа на степень бакалавра наук | Рабочая программа составлена в соответствии с требованиями фгос впо... Математика и компьютерные науки по профилю подготовки: «Вычислительные, программные, информационные системы и компьютерные технологии»... | ||
Рабочая программа для студентов очной формы обучения, направление... Иванов Д. И. Криптография и криптоанализ. Учебно-методический комплекс. Рабочая программа для студентов очной формы обучения, направления... | Рабочая программа для студентов очной формы обучения, направление... Иванов Д. И. Дополнительные главы дискретной математики. Учебно-методический комплекс. Рабочая программа для студентов очной формы... | ||
Литература Погрешности вычислений Программа предназначена для подготовки к вступительным испытаниям в аспирантуру по направлению 02. 06. 01 «Компьютерные и информационные... | Учебно-методический комплекс Программа для студентов направления... Рассмотрено на заседании умк института математики и компьютерных наук, протокол №2013 г | ||
Рабочая программа дисциплины (модуля) опубликована на сайте ТюмГУ «Математика и компьютерные науки» по профилю подготовки «Вычислительные, программные, информационные системы и компьютерные технологии... | Г. Л. Воронин Н. В ларшина социология учебно-методическое пособие Программа предназначена для бакалавров очной формы обучения механико-математического факультета математика 010100, математика и компьютерные... | ||
Учебно-методический комплекс учебной дисциплины «Философские образы... Аспирантура – самостоятельный уровень высшего образования, нацеленный на подготовку специалистов высшей квалификации. К поступлению... | Рабочая программа для студентов направления 010200. 62 Математика... Девятков А. П. Банаховы алгебры и гармонический анализ. Учебно-методический комплекс. Рабочая программа для студентов направления... | ||
Учебно-методический комплекс для студентов не психологических специальностей... Гидрология 010100. 62 Математика 010101. 65 Математика 010101. 65 Математика 010101. 65 Математика 010300. 62 Математика. Компьютерные... | Рабочая программа и методические указания для студентов очной формы... Рабочая программа и методические указания для студентов очной формы обучения направлений 010300. 62 «Математика. Компьютерные науки»... | ||
Диссертация На соискание степени Магистра по направлению 030100 Философия... Едеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Рабочая программа составлена в соответствии с требованиями фгос впо... Дёгтев А. Н. Теория алгоритмов. Учебно-методический комплекс. Рабочая программа для студентов направления 010200. 62 – математика... |