SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Building domain-specific
languages with Groovy
Yaroslav Yermilov
Senior Software Engineer, EPAM Systems
About me
Yaroslav Yermilov
Senior Software Engineer, student
https://ua.linkedin.com/pub/yaroslav-yermilov/58/682/506
https://www.facebook.com/yaroslav.yermilov
https://twitter.com/yermilov17
http://megamozg.ru/post/7256/
fond of Java, complete code, big data, data science, Groovy
A domain-specific language (DSL)
is a computer language specialized to
a particular application domain. This
is in contrast to a general-purpose
language (GPL), which is broadly
applicable across domains, and
lacks specialized features for a
particular domain.
DSL?
A domain-specific language (DSL)
is a computer language specialized to
a particular application domain. This
is in contrast to a general-purpose
language (GPL), which is broadly
applicable across domains, and
lacks specialized features for a
particular domain.
http://en.wikipedia.org/wiki/Domain-specific_language
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
DSL or not a DSL?
DSL
NO
Quiz!
DSL or not a DSL?
DSL
NO
Quiz!
http://stackoverflow.com/questions/1642028/what-is-the-name-of-the-operator
DSL or not a DSL?
DSL
NO
https://github.com/yermilov/groovy-dsl/tree/develop/examples/dsl-or-not-a-dsl
Quiz!
DSL or not a DSL?
DSL
NO
How to build DSL?
Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for
the Java platform aimed at multiplying developers’ productivity thanks to a concise, familiar and easy to learn syntax. It
integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting
capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional
programming.
http://www.groovy-lang.org/
Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for
the Java platform aimed at multiplying developers’ productivity thanks to a concise, familiar and easy to learn syntax. It
integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting
capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional
programming.
http://www.groovy-lang.org/
Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for
the Java platform aimed at multiplying developers’ productivity thanks to a concise, familiar and easy to learn syntax. It
integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting
capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional
programming.
Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for
the Java platform aimed at multiplying developers’ productivity thanks to a concise, familiar and easy to learn syntax. It
integrates smoothly with any Java program, and immediately delivers to your application powerful features, including
scripting
capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional
programming.
Groovy?
Groovy
https://github.com/yermilov/groovy-dsl
Notes:
concentrate more on possibilities
concentrate less on technical details
something is unclear - ask
want to discuss - you are welcome after the talk
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
https://github.com/yermilov/groovy-dsl
Groovy existing DSLs
https://github.com/yermilov/groovy-dsl
Groovy existing DSLs
https://github.com/yermilov/groovy-dsl
Groovy existing DSLs
https://github.com/yermilov/groovy-dsl/tree/develop/examples/existing-dsls
Groovy existing DSLs
https://github.com/yermilov/groovy-dsl/tree/develop/examples/existing-dsls
Groovy existing DSLs
https://github.com/yermilov/groovy-dsl/tree/develop/examples/existing-dsls
Groovy existing DSLs
https://github.com/yermilov/groovy-dsl/tree/develop/examples/existing-dsls
Looking further
http://www.groovy-lang.org/dsls.html
http://www.groovy-lang.org/
Thanks!

Weitere ähnliche Inhalte

Was ist angesagt? (6)

JavaScript for Enterprise Applications
JavaScript for Enterprise ApplicationsJavaScript for Enterprise Applications
JavaScript for Enterprise Applications
 
BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32BDD Testing Using Godog - Bangalore Golang Meetup # 32
BDD Testing Using Godog - Bangalore Golang Meetup # 32
 
Buildingwebapplicationswith.net
Buildingwebapplicationswith.netBuildingwebapplicationswith.net
Buildingwebapplicationswith.net
 
Let's go
Let's go Let's go
Let's go
 
End-to-End Machine learning pipelines for Python driven organizations - Nick ...
End-to-End Machine learning pipelines for Python driven organizations - Nick ...End-to-End Machine learning pipelines for Python driven organizations - Nick ...
End-to-End Machine learning pipelines for Python driven organizations - Nick ...
 
Profile
ProfileProfile
Profile
 

Ähnlich wie Building domain-specific languages with Groovy

Top Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web ApplicationsTop Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web Applications
KaneJordy1
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
elliando dias
 

Ähnlich wie Building domain-specific languages with Groovy (20)

JavaCro 2016 - From Java to Groovy: Adventure Time!
JavaCro 2016 - From Java to Groovy: Adventure Time!JavaCro 2016 - From Java to Groovy: Adventure Time!
JavaCro 2016 - From Java to Groovy: Adventure Time!
 
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
Gr8Conf US 2017 - From Java to Groovy: Adventure Time!
 
Progamming Path.pptx
Progamming Path.pptxProgamming Path.pptx
Progamming Path.pptx
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparison
 
Java Intro
Java IntroJava Intro
Java Intro
 
Top Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web ApplicationsTop Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web Applications
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 
Understanding the Pros and Cons of Java Software Development
Understanding the Pros and Cons of Java Software DevelopmentUnderstanding the Pros and Cons of Java Software Development
Understanding the Pros and Cons of Java Software Development
 
Groovy DSL
Groovy DSLGroovy DSL
Groovy DSL
 
Top 10 Programming Languages 2023.docx
Top 10 Programming Languages 2023.docxTop 10 Programming Languages 2023.docx
Top 10 Programming Languages 2023.docx
 
Scaling applications with go
Scaling applications with goScaling applications with go
Scaling applications with go
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Java Course in Gurgaon: Your Gateway to Mastering Java Programming
Java Course in Gurgaon: Your Gateway to Mastering Java ProgrammingJava Course in Gurgaon: Your Gateway to Mastering Java Programming
Java Course in Gurgaon: Your Gateway to Mastering Java Programming
 
OpenSlava 2013 - Dynamic Languages
OpenSlava 2013 - Dynamic LanguagesOpenSlava 2013 - Dynamic Languages
OpenSlava 2013 - Dynamic Languages
 
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
Ruby vs Java: Comparing Two Popular Programming Languages For Developing Ente...
 
Step by Step Guide on Essay Format in APA For Beginners
Step by Step Guide on Essay Format in APA For BeginnersStep by Step Guide on Essay Format in APA For Beginners
Step by Step Guide on Essay Format in APA For Beginners
 
The top programming languages for mobile app development in 2024
The top programming languages for mobile app development in 2024The top programming languages for mobile app development in 2024
The top programming languages for mobile app development in 2024
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
JBoss Forge - Breaking new ground in developer productivity
JBoss Forge - Breaking new ground in developer productivityJBoss Forge - Breaking new ground in developer productivity
JBoss Forge - Breaking new ground in developer productivity
 

Kürzlich hochgeladen

Teachers record management system project report..pdf
Teachers record management system project report..pdfTeachers record management system project report..pdf
Teachers record management system project report..pdf
Kamal Acharya
 
Lecture_8-Digital implementation of analog controller design.pdf
Lecture_8-Digital implementation of analog controller design.pdfLecture_8-Digital implementation of analog controller design.pdf
Lecture_8-Digital implementation of analog controller design.pdf
mohamedsamy9878
 
Complex plane, Modulus, Argument, Graphical representation of a complex numbe...
Complex plane, Modulus, Argument, Graphical representation of a complex numbe...Complex plane, Modulus, Argument, Graphical representation of a complex numbe...
Complex plane, Modulus, Argument, Graphical representation of a complex numbe...
MohammadAliNayeem
 
DR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdf
DR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdfDR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdf
DR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdf
DrGurudutt
 

Kürzlich hochgeladen (20)

2024 DevOps Pro Europe - Growing at the edge
2024 DevOps Pro Europe - Growing at the edge2024 DevOps Pro Europe - Growing at the edge
2024 DevOps Pro Europe - Growing at the edge
 
Planetary Gears of automatic transmission of vehicle
Planetary Gears of automatic transmission of vehiclePlanetary Gears of automatic transmission of vehicle
Planetary Gears of automatic transmission of vehicle
 
Lect_Z_Transform_Main_digital_image_processing.pptx
Lect_Z_Transform_Main_digital_image_processing.pptxLect_Z_Transform_Main_digital_image_processing.pptx
Lect_Z_Transform_Main_digital_image_processing.pptx
 
Lect 2 - Design of slender column-2.pptx
Lect 2 - Design of slender column-2.pptxLect 2 - Design of slender column-2.pptx
Lect 2 - Design of slender column-2.pptx
 
Electrostatic field in a coaxial transmission line
Electrostatic field in a coaxial transmission lineElectrostatic field in a coaxial transmission line
Electrostatic field in a coaxial transmission line
 
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data StreamKIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
KIT-601 Lecture Notes-UNIT-3.pdf Mining Data Stream
 
Online resume builder management system project report.pdf
Online resume builder management system project report.pdfOnline resume builder management system project report.pdf
Online resume builder management system project report.pdf
 
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdfONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
ONLINE CAR SERVICING SYSTEM PROJECT REPORT.pdf
 
An improvement in the safety of big data using blockchain technology
An improvement in the safety of big data using blockchain technologyAn improvement in the safety of big data using blockchain technology
An improvement in the safety of big data using blockchain technology
 
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
 
Teachers record management system project report..pdf
Teachers record management system project report..pdfTeachers record management system project report..pdf
Teachers record management system project report..pdf
 
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
The battle for RAG, explore the pros and cons of using KnowledgeGraphs and Ve...
 
Lecture_8-Digital implementation of analog controller design.pdf
Lecture_8-Digital implementation of analog controller design.pdfLecture_8-Digital implementation of analog controller design.pdf
Lecture_8-Digital implementation of analog controller design.pdf
 
Low rpm Generator for efficient energy harnessing from a two stage wind turbine
Low rpm Generator for efficient energy harnessing from a two stage wind turbineLow rpm Generator for efficient energy harnessing from a two stage wind turbine
Low rpm Generator for efficient energy harnessing from a two stage wind turbine
 
Complex plane, Modulus, Argument, Graphical representation of a complex numbe...
Complex plane, Modulus, Argument, Graphical representation of a complex numbe...Complex plane, Modulus, Argument, Graphical representation of a complex numbe...
Complex plane, Modulus, Argument, Graphical representation of a complex numbe...
 
Peek implant persentation - Copy (1).pdf
Peek implant persentation - Copy (1).pdfPeek implant persentation - Copy (1).pdf
Peek implant persentation - Copy (1).pdf
 
DR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdf
DR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdfDR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdf
DR PROF ING GURUDUTT SAHNI WIKIPEDIA.pdf
 
Arduino based vehicle speed tracker project
Arduino based vehicle speed tracker projectArduino based vehicle speed tracker project
Arduino based vehicle speed tracker project
 
Construction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptxConstruction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptx
 
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and VisualizationKIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
KIT-601 Lecture Notes-UNIT-5.pdf Frame Works and Visualization
 

Building domain-specific languages with Groovy