domain specific languages - a superficial approach
DESCRIPTION
Domain Specific Languages - A superficial approachTRANSCRIPT
DSL - Domain Specific Languages
quinta-feira, 12 de dezembro de 13
@toni_esteves
* Software Craftsman
* Web Developer TRE-AL
* Graduando Sistemas de Informação
quinta-feira, 12 de dezembro de 13
Domain...
quinta-feira, 12 de dezembro de 13
* Identify concepts related to system requirements...
* It is an artifact that represents the domain of problem...
* Should be independent of the physical solution...
* Communication...
* Visual representation of conceptual classes or objects real world...
* UML...
quinta-feira, 12 de dezembro de 13
DSL...
quinta-feira, 12 de dezembro de 13
“DSLs are small languages, focused on a particular aspect of a software
system. You can't build a full program with a DSL, but you often use multiple DSLs in a system mainly written in a general purpose language....” - Matin Fowler
quinta-feira, 12 de dezembro de 13
WTF ?!
“DSLs are small languages, focused on a particular aspect of a software
system. You can't build a full program with a DSL, but you often use multiple DSLs in a system mainly written in a general purpose language....” - Matin Fowler
quinta-feira, 12 de dezembro de 13
A real aplication....
quinta-feira, 12 de dezembro de 13
quinta-feira, 12 de dezembro de 13
If you’ll design a device driver, which
programming language do you choose ?!
quinta-feira, 12 de dezembro de 13
Try this then, if you will build a compiler which programming language
you choose ?!
quinta-feira, 12 de dezembro de 13
X
quinta-feira, 12 de dezembro de 13
X
General Purpose Languages
Domain Specific Languages
quinta-feira, 12 de dezembro de 13
Communication Protocol Device Drives Games Databases
Image Manipulations MusicMobile Agents Medical
quinta-feira, 12 de dezembro de 13
Communication Protocol Device Drives Games Databases
Image Manipulations MusicMobile Agents Medical
Domain Specific Languages
quinta-feira, 12 de dezembro de 13
Communication Protocol Device Drives Games Databases
Image Manipulations MusicMobile Agents Medical
Domain Specific Languages
subroutine libraries/ API`s Component Framework / Object-Orientation
quinta-feira, 12 de dezembro de 13
For example...
=SOMA(D1:D5)
Do you know this ?!
quinta-feira, 12 de dezembro de 13
“ DSLs are very common in computing: e x a m p l e s i n c l u d e C S S , r e g u l a r expressions, make, rake, ant, SQL, HQL, many bits of Rails, expectations in JMock, graphviz's dot language, FIT, strut's configuration file....” - Matin Fowler
quinta-feira, 12 de dezembro de 13
GUI builders can also be seen as DSLs?
quinta-feira, 12 de dezembro de 13
Characteristics....* Are usually small...
* Are usually declarative...
* Many DSLs are translated compiled) into calls to APIs...
* Are divided into External DSL and Internal DSL...
* Unambiguous...
quinta-feira, 12 de dezembro de 13
Pattern Application....Model: It`s the problem. May be a te xtual e xpre ss ion or a diagram...
Plataform: Used for the execution of the problem...
Integration: method to express the integration of language on the platform...
quinta-feira, 12 de dezembro de 13
Pattern Application....
quinta-feira, 12 de dezembro de 13
Method of Integration...Reading: part of the platform i tse l f i s de dicate d to the mastery of expressions of dsl and execution of your goals...
G e n e r a t i o n : a s e p a r a t e procedure is used to convert the DSL expression into something t h at re c o gn ize s p l at f or m natively...
quinta-feira, 12 de dezembro de 13
Method of Integration...
Craft Techniques: used when a particular model is not enough to solve the entire problem...
quinta-feira, 12 de dezembro de 13
DSL types...
quinta-feira, 12 de dezembro de 13
External...* Independent of a particular programming language...
* Depends on the programming language...
* It`s benefited by existing resources in the host language...
* It`s limited by the rules of the host language restrictions...
* May be readable to people who do not know anything about the language, but have experience in the field...
quinta-feira, 12 de dezembro de 13
Internal...* Usually are easy to implement...
* Creator of the language has the freedom to create the language the way you want...
* Is necessary to create a compiler for parsing, processing syntax and mapping semantics...
* Very flexible but takes time to create and maintain the compiler...
quinta-feira, 12 de dezembro de 13
Advantages...* Solutions in their own language and domain...
* Increase abstraction level...
* What programming instead how programming...
* Efforts on productivity...
* Encapsulates the problem...
* Prepare code to reuse...
* Make concise code...
* Generate sufficient documentation...quinta-feira, 12 de dezembro de 13
Drawback...* Requires attention to high costs...
* Needs technical expertise on domain...
* Needs to bring all the relevant domain knowledge...
* Difficulty in seeking the general scope and the construction of domain-specific languages...
* Experts must possess the relevant knowledge domain...
quinta-feira, 12 de dezembro de 13
Other topics...
* Embedded DSL...
* Language Workbench...
* Visual DSL`s...
* Language-Oriented Programming...
quinta-feira, 12 de dezembro de 13
Ending....
quinta-feira, 12 de dezembro de 13
References....http://www.martinfowler.com/articles/languageWorkbench.html
http://www.infoq.com/presentations/domain-specific-languages
http://blog.caelum.com.br/domain-specific-languages-em-acao/
http://martinfowler.com/books/dsl.html
http://martinfowler.com/bliki/DomainSpecificLanguage.html
http://blogs.msdn.com/b/wcamb/archive/2009/08/17/algumas-palavrinhas-sobre-domain-specific-language-dsl.aspx
http://www.infoq.com/presentations/Truth-about-DSL
http://www.cesar.edu.br/docs/DSL%20CESAR.pdf
quinta-feira, 12 de dezembro de 13