dsl explained _

69
(Domain Specific Language, not Direct Server Link) [email protected] DSL explained

Upload: dmitry-kandalov

Post on 10-May-2015

1.115 views

Category:

Technology


4 download

DESCRIPTION

Explanation of what DSLs are with slight shift towards MPS. Slides from my talk at Deutsche Bank. There is nothing particulary new in these slides, there are mostly based on Martin Fowler talks and book (http://www.martinfowler.com/dslwip/).

TRANSCRIPT

Page 1: DSL explained _

(Domain Specific Language,not Direct Server Link)

[email protected]

DSL explained

Page 2: DSL explained _

DSL premises

Page 3: DSL explained _

and only then for computers

Code is written for

people

Page 4: DSL explained _

Objects ---> Vocabulary

Grammar ---> Language

Domain Driven Design

DSL

Page 5: DSL explained _

DSL is advanced stuff

Page 6: DSL explained _

DSL example(by Martin Fowler)

Page 7: DSL explained _
Page 8: DSL explained _
Page 9: DSL explained _
Page 10: DSL explained _
Page 11: DSL explained _
Page 12: DSL explained _
Page 13: DSL explained _
Page 14: DSL explained _
Page 15: DSL explained _

DSL is a computer language with:

human language nature

limited expressiveness

domain focus

Page 16: DSL explained _

DSL types

internal external

language workbench

Page 17: DSL explained _

Internal DSLexample

Page 18: DSL explained _
Page 19: DSL explained _
Page 20: DSL explained _

External DSLexample

Page 21: DSL explained _
Page 22: DSL explained _

Language workbenchexample

Page 23: DSL explained _
Page 24: DSL explained _

More examples

Page 25: DSL explained _

regular expressions

CSSSQL

all XML

Unix config filesRuby on Rails

mocking frameworks

wiki syntax / markdown

LINQ

Page 26: DSL explained _

Using internal DSL(aka Fluent Interface)

Page 27: DSL explained _

Easy to do... no parsers, etc.

Full IDE support

Good

BadLimited by host language

Page 28: DSL explained _
Page 29: DSL explained _
Page 30: DSL explained _
Page 31: DSL explained _
Page 32: DSL explained _
Page 33: DSL explained _

Method chaining

Object scoping

Expression Builder

Page 34: DSL explained _

Using external DSL

Page 35: DSL explained _

Unlimited expressiveness

You choose execution environment

Good

Bad

Requires “more” work

No IDE support

Page 36: DSL explained _

DSLscript

parse

AST Semantic model

optional

Page 37: DSL explained _

You can parse DSL

manually (regexp, Tokenizer)

using some tool(ANTLR, yacc, ...)

Page 38: DSL explained _
Page 39: DSL explained _

Using Language Workbenches

Page 40: DSL explained _

Meta Programming System

Microsoft Oslo

Intentional Domain Workbench

Eclipse Modeling Project

Page 41: DSL explained _
Page 42: DSL explained _

concepts(language)

edit

you

Page 43: DSL explained _

AST(DSL script)

concepts(language)

edit

describe

you

Page 44: DSL explained _

AST(DSL script)

concepts(language)

edit

edit

describe

“user”

you

Page 45: DSL explained _

AST(DSL script)

concepts(language)

edit

describe

“user”

you

no text, just AST !

edit

Page 46: DSL explained _

useful stuff

(like java code)

AST(DSL script)

concepts(language)

edit

describe

transformed

“user”

you

edit

Page 47: DSL explained _
Page 48: DSL explained _

Module Project

Page 49: DSL explained _

Module Project

Solution

Language

Generator

DevKit

kind of

Page 50: DSL explained _

Model Module Project

Solution

Language

Generator

DevKit

kind of

Page 51: DSL explained _

Node Model Module Project

Solution

Language

Generator

DevKit

kind ofincludes

Conceptdefined

by

Page 52: DSL explained _
Page 53: DSL explained _
Page 54: DSL explained _
Page 55: DSL explained _
Page 56: DSL explained _
Page 57: DSL explained _
Page 58: DSL explained _
Page 59: DSL explained _
Page 60: DSL explained _
Page 61: DSL explained _
Page 62: DSL explained _
Page 63: DSL explained _
Page 64: DSL explained _
Page 65: DSL explained _
Page 66: DSL explained _
Page 67: DSL explained _
Page 68: DSL explained _
Page 69: DSL explained _

Internal DSLs rule! :)