Скачать презентацию XIX Всероссийская конференция Научный сервис в сети Интернет Скачать презентацию XIX Всероссийская конференция Научный сервис в сети Интернет

983b9e08b5658dc0fce4af1759a79e50.ppt

  • Количество слайдов: 22

XIX Всероссийская конференция «Научный сервис в сети Интернет» Резервы синтаксически ориентированного конструирования систем программирования XIX Всероссийская конференция «Научный сервис в сети Интернет» Резервы синтаксически ориентированного конструирования систем программирования Л. В. Городняя Институт систем информатики СО РАН, НГУ lidvas@gmail. com

Интеллектуальный вызов системному программированию Фр. Брукс в своей знаменитой книге отмечал, что трудоёмкость решения Интеллектуальный вызов системному программированию Фр. Брукс в своей знаменитой книге отмечал, что трудоёмкость решения задачи в виде компонента программы примерно в три раза выше трудоёмкости разработки автономной программы, а трудоёмкость создания компонента для многопрограммного комплекса ещё выше. В. Е. Котов отмечал, что системному программированию не хватает уровня абстрагирования, сравнимого с дифференциальным и интегральным исчислением. А. Л. Фуксман предлагал методику вертикального слоения программ, концептуально близкую аспектно-ориентированному программированию (сосредоточенное представление рассредоточенных действий), допускающую автономное развитие выделенных компонент.

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

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

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

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

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

Число метапонятий: С - 110 → C++ - 270 75 – без альтернатив 24 Число метапонятий: С - 110 → C++ - 270 75 – без альтернатив 24 – переименование 59 – лексика 17 - макро 47 – выражения 13 – операторы 41 - ООП 88 – декларации

Частота вхождения понятий в синтаксис identifier: 59 nested-name-specifier: 19 expression: 14 cast-expression: 13 constant-expression: Частота вхождения понятий в синтаксис identifier: 59 nested-name-specifier: 19 expression: 14 cast-expression: 13 constant-expression: 12 decl-specifier-seq, statement: 11 braced-init-list, postfix-expression, simple-template-id: 10 declarator, digit, pp-number: 8 expression-list, initializer-clause: 7 compound-statement, id-expression, type-name, type-specifier-seq: 6 abstract-declarator, assignment-expression, condition: 5

Частота вхождения понятий на 30 страницах определения синтаксиса identifier: 59 nested-name-specifier: 19 expression: 14 Частота вхождения понятий на 30 страницах определения синтаксиса identifier: 59 nested-name-specifier: 19 expression: 14 cast-expression: 13 constant-expression: 12 decl-specifier-seq, statement: 11 braced-init-list, postfix-expression, simple-template-id: 10 declarator, digit, pp-number: 8 expression-list, initializer-clause: 7 compound-statement, id-expression, type-name, type-specifier-seq: 6 abstract-declarator, assignment-expression, condition: 5

Локальное определение id-expression: unqualified-id ( qualified-id: nested-name-specifier template opt unqualified-id ) Локальное определение id-expression: unqualified-id ( qualified-id: nested-name-specifier template opt unqualified-id )

Перечни через разделитель сapture-list: ( ( capture. . . opt ) / , ) Перечни через разделитель сapture-list: ( ( capture. . . opt ) / , ) ) /– перечень через запятую and-expression: ( ( equality-expr ) / & ) ) /– перечень через «&» additive-expression: ( ( multiplicative-expr ) / { + -} ) ) /– перечень через «+» или «-» «+»

unary-expression symbol ТАБ ( symbol ) ++ – * & + - ! ~ unary-expression symbol ТАБ ( symbol ) ++ – * & + - ! ~ cast-expression sizeof { unary-expression | ( type-id ) |. . . ( identifier ) } alignof ( type-id ) noexcept ( expression ) : : { new-exp | delete del-exp } new New-placement { new-type-id | new-type-id new-initializer | ( type-id ) |( type-id ) new-initializer } delete ( del-exp : : = { cast-expression | [ ] cast-expression } )

Инфиксные выражения pm-expression: cast-expression pm-expression. * cast-expression pm-expression ->* cast-expression. . . logical-or-expression: logical-and-expression Инфиксные выражения pm-expression: cast-expression pm-expression. * cast-expression pm-expression ->* cast-expression. . . logical-or-expression: logical-and-expression logical-or-expression || logical-and-expression

Конструктор правил (Map. Red. Name. List 'pm-expression 'logical-or-expression #'Subst. Rule '( {. * ->* Конструктор правил (Map. Red. Name. List 'pm-expression 'logical-or-expression #'Subst. Rule '( {. * ->* } { * / % }{ + - }{ << >> }{ < > <= >= }{ == != } & ^ | && || ) ) Subst. Rule = (New. NT NT Sign) ( list New. NT ': (list NT '/ Sign) )

Map. Red. Name. List (First Last Fsubst Sign) First — исходное понятия, Last — Map. Red. Name. List (First Last Fsubst Sign) First — исходное понятия, Last — заключительное понятие, Fsubst — отображение, Sign — список инфиксных операций, упорядоченный по приоритетам. Строим список LNew. NT длины (#SL-1) из различных новых имён, в конец его копии LNT встраиваем имя Last, а в начало - First. После этого поэлементно отображаем списки LNew. NT LNT SL через шаблон «( list LNew. NT ': (list NT '/ Sign) )» в последовательность элементов определений. New. NT NT Sign – Элементы списков LNew. NT LNT SL соответственно.

Абстрактная декомпозиция Венская методика DSL: LLVM-Clang КС ↔ АС DSL → AST ↓ АМ Абстрактная декомпозиция Венская методика DSL: LLVM-Clang КС ↔ АС DSL → AST ↓ АМ → КМ IR → MSP Существует отображение конкретного синтаксиса (КС) в конкретного синтаксиса (DSL) в абстрактный (АС) и обратно. дерево абстрактного синтаксиса (AST). АС отображается в абстрактную AST отображается на язык машину (АМ). виртуальной машины (IR). АМ реализуется с помощью IR реализуется с помощью конкретной машины (КМ). конкретной платформы (MSP) на базе языка Си.

Пример // Example. c #include <stdio. h> int global; int main (int argc, char Пример // Example. c #include int global; int main (int argc, char *argv[ ]) { int param = 1; my. Print (param); return 0; }

C→ AST ( Var. Decl global ‘int’ ) ← AST for global ( Function. C→ AST ( Var. Decl global ‘int’ ) ← AST for global ( Function. Decl ‘void main (int, char **)’ ) ← AST for main ( ) |-------> (Parm. Var. Decl argc 'int') |-------> (Parm. Var. Decl argv 'char**' ; 'char**') |-------> [Compound. Stat ] |----> [Decl. Stat] | |----> (Var. Decl param 'int') | |-----> [| Integer. Literal 1 'int' |] |----> [| Call. Expr 'void' |] | |----> [| Implicit. Cast. Expr 'void (*) ()' |] | | |----> [| Decl. Ref. Expr 'my. Print' 'void (*) ()' |] | |----> [| Implicit. Cast. Expr 'int' |] | |---> [| Decl. Ref. Expr 'param' 'int' |] |----> [Return. Stmt ] |----> [| Integer. Literal 0 'int' |]

AST → Lisp ; Комментарии не имеют представления ; Макросы не имеют представления (Var. AST → Lisp ; Комментарии не имеют представления ; Макросы не имеют представления (Var. Decl global 'int) (Function. Decl main (int, char *) (Parm. Var. Decl argc 'int) (Parm. Var. Decl argv 'char**) (Compound. Stat (Decl. Stat (Var. Decl param 'int) (Integer. Literal 1 'int) ) (Call. Expr 'void (Implicit. Cast. Expr 'void '(*) '() ) (Decl. Ref. Expr 'my. Print 'void () ) (Implicit. Cast. Expr 'int ) (Decl. Ref. Expr 'param 'int) ) (Return. Stmt (Integer. Literal 0 'int) ) ) )

Системный анализ в программировании К. Лоренц даёт вполне конструктивное определение понятия «система» , сводит Системный анализ в программировании К. Лоренц даёт вполне конструктивное определение понятия «система» , сводит его к возможности в человеческой речи называть сложное одним словом. https: //www. livelib. ru/book/1000334658 -tak-nazyvaemoe-zlo-konradlorents сайт с текстом книги Конрада Лоренца «Так называемое зло» в переводе А. И. Федорова (А. И. Фета). http: //www. rulit. me/books/tak-nazyvaemoe-zlo-read-311025 -1. html сайт с возможностью чтения книги Конрада Лоренца «Так называемое зло» в переводе А. И. Федорова (А. И. Фета)

Спасибо за внимание! Спасибо за внимание!