defining dsl (domain specific language) using ruby

56
DSL domain-specific language @ SPARKcamp #5 (in Ruby)

Upload: netguru

Post on 06-Aug-2015

469 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

@ SPARKcamp #5

(in Ruby)

Page 2: Defining DSL (Domain Specific Language) using Ruby

jakub naliwajek

Page 3: Defining DSL (Domain Specific Language) using Ruby

netguru.co

Page 4: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

Page 5: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

Page 6: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Page 7: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Page 8: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Page 9: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Page 10: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Page 11: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

Page 12: Defining DSL (Domain Specific Language) using Ruby

DSLdomain-specific language

A domain-specific language (DSL) is a computer language specialized to a particular application domain.

•Perl •HTML •MATLAB •VHDL •SQL

Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages INTERNAL.

Page 13: Defining DSL (Domain Specific Language) using Ruby

LISP

Page 14: Defining DSL (Domain Specific Language) using Ruby

LISP1958

Page 15: Defining DSL (Domain Specific Language) using Ruby

LISP1958

Page 16: Defining DSL (Domain Specific Language) using Ruby

“On Lisp” – Paul Graham

Add “for” loop to LISP

Page 17: Defining DSL (Domain Specific Language) using Ruby

RUBY

Page 18: Defining DSL (Domain Specific Language) using Ruby
Page 19: Defining DSL (Domain Specific Language) using Ruby
Page 20: Defining DSL (Domain Specific Language) using Ruby

RUBYon rails

Page 21: Defining DSL (Domain Specific Language) using Ruby

Rails “Migrations” DSL

Page 22: Defining DSL (Domain Specific Language) using Ruby

RSpec DSL (testing framework)

Page 23: Defining DSL (Domain Specific Language) using Ruby

DSLis not for COMPUTERS

Page 24: Defining DSL (Domain Specific Language) using Ruby

describe == context == it(for computers)

Page 25: Defining DSL (Domain Specific Language) using Ruby

PROBLEM

Page 26: Defining DSL (Domain Specific Language) using Ruby
Page 27: Defining DSL (Domain Specific Language) using Ruby
Page 28: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

Page 29: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

Page 30: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

Page 31: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

Page 32: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

Page 33: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

Page 34: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

Page 35: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

Page 36: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

Page 37: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

answer(content)

Page 38: Defining DSL (Domain Specific Language) using Ruby

survey(name, &block)

question(content, **params, &block)

answer(content)

Page 39: Defining DSL (Domain Specific Language) using Ruby

WHAT HELPS?

Page 40: Defining DSL (Domain Specific Language) using Ruby
Page 41: Defining DSL (Domain Specific Language) using Ruby

META PROGRAMMING

Page 42: Defining DSL (Domain Specific Language) using Ruby
Page 43: Defining DSL (Domain Specific Language) using Ruby

BLOCKS

Page 44: Defining DSL (Domain Specific Language) using Ruby
Page 45: Defining DSL (Domain Specific Language) using Ruby

0

20

40

60

80

no DSL DSL

use

uselearn

learn

How DIFFICULT?

Page 46: Defining DSL (Domain Specific Language) using Ruby
Page 47: Defining DSL (Domain Specific Language) using Ruby

0

20

40

60

80

no DSL DSL

use

uselearn

learn

How DIFFICULT?

Page 48: Defining DSL (Domain Specific Language) using Ruby

Which one is more readable?

MiniTest RSpec

Page 49: Defining DSL (Domain Specific Language) using Ruby

NOT ALWAYS COOL

Page 50: Defining DSL (Domain Specific Language) using Ruby
Page 51: Defining DSL (Domain Specific Language) using Ruby

developers […] who cannot survive without frameworks. – Adam Hawkins

http://hawkins.io/2015/05/the-ruby-community-the-next-version/

Page 52: Defining DSL (Domain Specific Language) using Ruby
Page 53: Defining DSL (Domain Specific Language) using Ruby

simplicity over convenience

= good for long-term

Page 54: Defining DSL (Domain Specific Language) using Ruby

how many lines will that DSL save?

Page 55: Defining DSL (Domain Specific Language) using Ruby

thoughtbot/factory_girl(kinda nice example)

Page 56: Defining DSL (Domain Specific Language) using Ruby

thanksnetguru.co/signup/sparkcamp