Диссертация на степень магистра наук по направлению «Математика, компьютерные науки»





Скачать 354.13 Kb.
НазваниеДиссертация на степень магистра наук по направлению «Математика, компьютерные науки»
страница7/7
Дата публикации12.12.2014
Размер354.13 Kb.
ТипДиссертация
100-bal.ru > Информатика > Диссертация
1   2   3   4   5   6   7

.5. Пример


Обработка ошибок –пожалуй, самая распространённая подзадача для системного программирования. В подавляющем большинстве современных языков реализован специальный механизм обработки на основе исключений с раскручиванием стека вызовов. Подход довольно трудоёмкий с точки зрения реализации, снижает скорость работы программ по сравнению с анализом кодов ошибок, но код получается на вид простым и компактным. Насколько велики накладные расходы, в точности сложно определить, но обычно речь идёт о процентах. Этого достаточно, чтобы разработчики на C++ отказывались от исключений везде, где важна производительность.

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

Начнём с описания удобной регистрации синтаксических подстановок:

//syntax

{

ir(def pattern ids types replace,

{ir(pattern, replace, ids, types, '_syntax #0 #1 #2 #3')},

(pattern,ids,types,replace),

(0,0,0,0),

'_syntax #0 #1 #2 #3')

}





Теперь опишем идею на примере:

try

{

do init;

check(status == 'ready');

do work;

check(status == 'done')

}

catch

{



}





Блок try регистрирует именованную метку, указывающую на код-обработчик catch. Если условие внутри check не выполнено, происходит переход к обработчику. При вложении блоков try-catch проблем не будет, так как внутренняя регистрация метки скроет внешнюю.

Рассмотрим реализацию:

def (try x catch y)(x,y)(0,0)

{

ir(catch, '_link &0 0');

x;

ir

'

jmp 1

*0 nop

';

y;

ir'*1 nop'

};
def (check x) x 0

{

ir(x; catch;

'

*0 load %0

*1 _label &1

test 0

je 1

')

}





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

Другие примеры кода на CSeL приведены в Приложении 2.

Заключение


В ходе работы на C# .Net Framework 4.0 был разработан компилятор языка, генерирующий промежуточный код, c учётом требований:

  • Императивность;

  • Расширяемость синтаксиса за счёт синтаксических подстановок;

  • Примитив низкоуровневого программирования IR-вставка;

  • Компактность компилятора: 100Кб исходного кода в 16 файлах;

  • Эффективность компилятора предполагается, исходя из описания реализаций всех конструкций языка на низкоуровневом IR-языке, на практике не проверена.

Так же была написана CSeL-библиотека, реализующая примитивы для:

  • регистрации типов, переменных и синтаксических подстановок в Си-подобном стиле;

  • конструкций if, if-else и for-break.

В будущем в ядро языка будут добавлены функции и замыкания. Кроме того планируется использование LLVM для генерации машинного кода.

Литература


  1. D. Stewart, S. Jansse. Design and Implementation of XMonad. A Tiling Window Manager // Haskell Workshop 2007.

  2. J. Paakki. Prolog in practical compiler writing // The Computer Journal, Volume 34 Issue 1, Feb. 1991.

  3. F. Henderso, T. Conway, Z. Somogyi, D. Jeffery, P. Schacht, S. Taylor, C. Speirs, T. Dowd, R. Becket, M. Brown, P. Wang. The Mercury Language Reference Manual // Version 11.01.

  4. P.V. Roy, S. Haridi. Concepts, Techniques, and Models of Computer Programming // The MIT Press, February 20, 2004.

  5. The Computer Languages Benchmarks. http://shootout.alioth.debian.org

  6. LuaJIT roadmap. http://lua-users.org/lists/lua-l/2008-02/msg00051.html

  7. M. Poletto. Language and compiler support for dynamic code generation. Ph.D. thesis, MIT, June 1999.

  8. D. Grossman, M. Hicks, T. Jim, G. Morrisett. Cyclone: A Type-Safe Dialect of C // C/C++ User’s Journal, January 2005.

  9. C. Lattner. LLVM 2.0 and Beyond! // Google Tech Talk, Mountain View, CA, July 2007.

  10. B. Stroustrup. Trends and future of C++: Evolving a systems language by performance // Leganes, Madrid, March 18th and 28th, 2011.

  11. A. Alexandrescu. The D Programming Language // Addison-Wesley Professional, June 12, 2010.

  12. http://golang.org/doc/go_spec.html

  13. Hongwei Xi. The ATS Programming Language. ATS/Anairiats User’s Guide // Working Draft of October 22, 2010.

  14. K. Skalski. Syntax-extending and type-reflecting macros in an object-oriented language // Master Thesis, University of Wroclaw, 2005.

  15. http://www.chrisseaton.com/katahdin/katahdin-slides.pdf

  16. Косенко В.В. Императивный язык программирования с конструируемой семантикой на основе операторного полиморфизма и свободной системы типов для высокопроизводительных вычислений // квалификационная работа на степень бакалавра наук по направлению «Математика. Компьютерные науки» / Екатеринбург, УрГУ, 2009.



ПРИЛОЖЕНИЕ 1

Конфигурация

/proc/cpuinfo


vendor_id

GenuineIntel

cpu family

6

model

23

model name

Intel(R) Xeon(R) CPU E5430 @ 2.66GHz

stepping

10

cpu MHz

.994

cache size

KB

siblings

1

cpu cores

1

fpu

yes

fpu_exception

yes

cpuid level

13

wp

yes

flags

fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc up pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm

bogomips

5509.42

clflush size

64

cache_alignment

64

address sizes

bits physical, 48 bits virtual




/proc/meminfo


MemTotal




637480 kB


компилятор


GCC 4.3.2

“g++ X.cpp -O3 -o Y.out” или “gcc -x objective-c X.m -lobjc -O3 -o Y.out”

Тестовые задачи


Cpp

ObjC

#include
class Foo {

public:

int bar(float x){

if (x > 0.5)

return 1;

else

return 0;

}

};

int main() {

Foo* obj = new Foo();
int i = 100000000;

while (i-- > 0)

obj->bar(rand());
return 0;

}

#import
@interface Foo : Object {}

-(int) bar: (float) x;

@end
@implementation Foo

-(int) bar: (float) x {

if (x > 0.5)

return 1;

else

return 0;

}

@end
int main(void) {

Foo *obj = [Foo new];
int i = 100000000;

while( i-- > 0)

[obj bar: rand()];
return 0;

}


Результаты


Метод: 50 запусков каждой из программ, время среднее арифметическое.

Задача

Время real утилиты time, сек

X/C++

Cpp

1.129

1

Objc

1.811

1.6



Приложение 2

Переменные


def (x y)(x,y)(type,0)

{

x; ir(x, y, '*0 _var %0 &1'), x

}

Типы


def (newtype(x,s))(x,s)(0,number)

{

ir(type, x, s,

'

*0 _type %2 &1

*1 _var %0 &1

_store 0 1

')

}

Целые числа


newtype(int,4);
def (x-y)(x,y)(int,int)

{

int z; x; y;

ir(x, y, z,

'

*0 load %0

*1 load %1

*2 sub 0 1

store 2 %2

'),

z

}

Конструкции, управляющие потоком исполнения

if


def (if x y)(x,y)(0,0)

{

x;

ir(x,

'

*0 load %0

test 0

je 1

');

y;

ir'*1 nop'

}

if-else


def (if x y else z)(x,y,z)(0,0,0)

{

x;

ir(x,

'

*0 load %0

test 0

je 1

');

y;

ir'jmp 2 *1 nop'; z; ir'*2 nop'

}

for-break


def (`break)(x)(0)

{

ir(break, '*0 _label &0 jmp 0')

};
def (for(a;b;c)d)(a,b,c,d)(0,0,0,0)

{

a; ir'*0 nop';

b;

ir(b, break,

'

*1 load %0

test 1

je 2
_link &1 2

');

d;

c;

ir(for,

'

jmp 0

*2 nop

')

}

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

2 Static Single Assignment form – форма записи, при которой значения переменных после первого присвоения не меняются

3 Foreign Function Interface – возможность вызывать код, написанный на другом языке.

4 Используем форму записи из предыдущей работы [16].

5 Шестнадцатеричные коды символов соответствуют US-ASCII.

6 Вопрос о подключении модулей с бинарным или промежуточным представлением пока открыт.

7 IR – Intermediate Representation – промежуточное представление, промежуточный код.

1   2   3   4   5   6   7

Похожие:

Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРеферат: Коваленко А. Е. Разработка системы научной визуализации....
Коваленко А. Е. Разработка системы научной визуализации. Квалификационная работа на степень магистра наук по направлению «Математика....
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРеферат: Шайдуров А. Г. Исследование и разработка некоторых графических...
Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРеферат Флягина Т. А. Проблемы разработки многооконных интерфейсов,...
Флягина Т. А. Проблемы разработки многооконных интерфейсов, квалификационная работа на степень бакалавра наук
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа составлена в соответствии с требованиями фгос впо...
Математика и компьютерные науки по профилю подготовки: «Вычислительные, программные, информационные системы и компьютерные технологии»...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа для студентов очной формы обучения, направление...
Иванов Д. И. Криптография и криптоанализ. Учебно-методический комплекс. Рабочая программа для студентов очной формы обучения, направления...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа для студентов очной формы обучения, направление...
Иванов Д. И. Дополнительные главы дискретной математики. Учебно-методический комплекс. Рабочая программа для студентов очной формы...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconЛитература Погрешности вычислений
Программа предназначена для подготовки к вступительным испытаниям в аспирантуру по направлению 02. 06. 01 «Компьютерные и информационные...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconУчебно-методический комплекс Программа для студентов направления...
Рассмотрено на заседании умк института математики и компьютерных наук, протокол №2013 г
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа дисциплины (модуля) опубликована на сайте ТюмГУ
«Математика и компьютерные науки» по профилю подготовки «Вычислительные, программные, информационные системы и компьютерные технологии...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconГ. Л. Воронин Н. В ларшина социология учебно-методическое пособие
Программа предназначена для бакалавров очной формы обучения механико-математического факультета математика 010100, математика и компьютерные...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconУчебно-методический комплекс учебной дисциплины «Философские образы...
Аспирантура – самостоятельный уровень высшего образования, нацеленный на подготовку специалистов высшей квалификации. К поступлению...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа для студентов направления 010200. 62 Математика...
Девятков А. П. Банаховы алгебры и гармонический анализ. Учебно-методический комплекс. Рабочая программа для студентов направления...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconУчебно-методический комплекс для студентов не психологических специальностей...
Гидрология 010100. 62 Математика 010101. 65 Математика 010101. 65 Математика 010101. 65 Математика 010300. 62 Математика. Компьютерные...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа и методические указания для студентов очной формы...
Рабочая программа и методические указания для студентов очной формы обучения направлений 010300. 62 «Математика. Компьютерные науки»...
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconДиссертация На соискание степени Магистра по направлению 030100 Философия...
Едеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Диссертация на степень магистра наук по направлению «Математика, компьютерные науки» iconРабочая программа составлена в соответствии с требованиями фгос впо...
Дёгтев А. Н. Теория алгоритмов. Учебно-методический комплекс. Рабочая программа для студентов направления 010200. 62 – математика...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск