1 dsls with groovy saager mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre...

58
1 DSLs with Groovy Saager Mhatre

Upload: gabrielle-cox

Post on 26-Mar-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

1

DSLs with Groovy

Saager Mhatre

Page 2: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

2

github.com/dexterous

code.google.com/u/saager.mhatre

[email protected]

thinkaround.blogspot.com

@dexterous

Page 3: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

3

Page 4: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

4

The basic idea of a

domain specific languageis…

Page 5: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

5

…a computer languagethat's targeted to a particular kind of problem,

rather than a general purpose languagethat's aimed at any kind of software problem.

Martin Fowlerhttp://www.martinfowler.com/bliki/DomainSpecificLanguage.html

Page 6: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

6

… a computer programming languageof limited expressiveness

focused on a particular domain.Martin Fowler

Domain Specific Languages

Page 7: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

7

Chaar Banarasi Masala

Zardaa lagaa ke, Katri supaari

Tamaakhu jyaada, Gulkand kam

Page 8: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

8

Page 9: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

9

Page 10: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

10

http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html#enhance

Page 11: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

11

Excerpted from org.hamcrest.examples.junit4.ExampleWithAssertThat.java

Excerpted from http://code.google.com/p/logicalpractice-collections/wiki/GettingStarted

Page 12: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

12

the

popularity of DSLsis a result of…

Page 13: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

13

improved

developerproductivity

Page 14: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

14

better

domain-expertinteraction

Page 15: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

15

Page 16: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

16

Page 17: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

17

Page 18: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

18

Page 19: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

19

Page 20: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

20

Page 21: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

21

Page 22: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

22

Page 23: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

23

Page 24: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

24

Page 25: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

25

If a tree falls in a forest and no one is around to hear it, does it make a sound?

Page 26: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

26

If a Groovy enthusiast talks DSL in a conference and no one is interested in it,

does it help the software community?

Page 27: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

27

Page 28: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

28

If a Groovy enthusiast talks DSL in a conference and no one is interested in it,

does it help the software community?

Page 29: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

29

Page 30: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

30

Page 31: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

31

Page 32: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

32

Page 33: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

33

Page 34: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

34

Page 35: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

35

Page 36: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

36

Page 37: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

37

Page 38: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

38

Page 39: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

39

Page 40: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

40

Page 41: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

41

Page 42: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

42

Page 43: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

43

Page 44: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

44

Page 45: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

45

Page 46: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

46

Page 47: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

47

Page 48: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

48

Page 49: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

49

Page 50: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

50

Page 51: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

51

Page 52: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

52

Page 53: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

53

Page 54: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

54

Page 55: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

55

Page 56: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

56

Page 57: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

57

Page 58: 1 DSLs with Groovy Saager Mhatre. 2 github.com/dexterous code.google.com/u/saager.mhatre saager.mhatre@gmail.com thinkaround.blogspot.com @dexterous

58

github.com/dexterous

code.google.com/u/saager.mhatre

[email protected]

thinkaround.blogspot.com

@dexterous