Slide 1

Slide 1 text

разработка производительного пользовательского DSL для анализа временных рядов алексей семин октябрь 2017

Slide 2

Slide 2 text

предметно-ориентированные языки ● HTML ● SQL ● shell-scripts ● ... 2

Slide 3

Slide 3 text

причины использования DSL подхода ● громоздкий API или UI ● сериализация ● использование конечными пользователями 3

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

критерии для языка dxScript ● простота ● выразительность ● безопасность ● производительность 5

Slide 6

Slide 6 text

простота ● декларативный синтаксис ● декларативное задание синтаксиса ○ формальная грамматика ○ парсер-генератор ANTLR 6 dxScript

Slide 7

Slide 7 text

выразительность ● значения параметров по умолчанию ● многозначность результатов ● вывод типов 7 dxScript

Slide 8

Slide 8 text

foreign function interface (FFI) 8 Java

Slide 9

Slide 9 text

безопасность ● отсутствие Тьюринг-полноты ○ запрещена рекурсия ○ отсутствие явных циклов ● конечная память ○ конечный размер окна данных 9 dxScript

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

производительность ● компиляция в JVM байткод c помощью ASM ● снижение нагрузки на garbage collector (GC) ● оптимизации кода ○ constant folding ○ dead code elimination ○ common subexpression elimination 11

Slide 12

Slide 12 text

Kotlin Java

Slide 13

Slide 13 text

Java ASM

Slide 14

Slide 14 text

критерии достоинства языка dxScript 14 ● простота ● выразительность ● безопасность ● производительность

Slide 15

Slide 15 text

15 алексей семин @ октябрь 2017 [email protected] [email protected]