SlideShare una empresa de Scribd logo
1 de 69
(Domain Specific Language, not Direct Server Link) [email_address] DSL explained
DSL premises
and only then for computers Code is written for people
Objects ---> Vocabulary Grammar ---> Language Domain Driven  Design DSL
DSL is advanced stuff
DSL example (by Martin Fowler)
 
 
 
 
 
 
 
 
DSL is a computer  language with: human language nature limited expressiveness domain focus
DSL types internal external language workbench
Internal DSL example
 
 
External DSL example
 
Language workbench example
 
More examples
regular expressions CSS SQL all XML Unix config files Ruby on Rails mocking frameworks wiki syntax / markdown LINQ
Using internal DSL (aka Fluent Interface)
Easy to do... no parsers, etc. Full IDE support Good Bad Limited by host language
 
 
 
 
 
Method chaining Object scoping Expression Builder
Using external DSL
Unlimited expressiveness You choose execution environment Good Bad Requires “more” work No IDE support
DSL script parse AST Semantic model optional
You can parse DSL manually  (regexp, Tokenizer) using some tool (ANTLR, yacc, ...)
 
Using  Language Workbenches
Meta Programming System Microsoft Oslo Intentional Domain Workbench Eclipse Modeling Project
 
concepts (language) edit you
AST (DSL script) concepts (language) edit describe you
AST (DSL script) concepts (language) edit edit describe “ user” you
AST (DSL script) concepts (language) edit describe “ user” you no text, just AST ! edit
useful stuff (like java code) AST (DSL script) concepts (language) edit describe transformed “ user” you edit
 
Module Project
Module Project Solution Language Generator DevKit kind of
Model Module Project Solution Language Generator DevKit kind of
Node Model Module Project Solution Language Generator DevKit kind of includes Concept defined by
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Internal DSLs rule! :)

Más contenido relacionado

La actualidad más candente

.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...NETFest
 
Translating software with SDL Passolo?
Translating software with SDL Passolo?Translating software with SDL Passolo?
Translating software with SDL Passolo?Loctimize GmbH
 
Php melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddyPhp melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddyDouglas Reith
 
Introduction to C# - Week 0
Introduction to C# - Week 0Introduction to C# - Week 0
Introduction to C# - Week 0Jamshid Hashimi
 
Week 4 css recap and js
Week 4   css recap and jsWeek 4   css recap and js
Week 4 css recap and jsbrianjihoonlee
 
Domain Specific Languages
Domain Specific LanguagesDomain Specific Languages
Domain Specific LanguagesLakshan Perera
 
Linq presentation by vaidhesh
Linq presentation by vaidheshLinq presentation by vaidhesh
Linq presentation by vaidheshVaidheswaran CS
 
Introduction to .NET with C# @ university of wayamba
Introduction to .NET with C# @ university of wayambaIntroduction to .NET with C# @ university of wayamba
Introduction to .NET with C# @ university of wayambaPrageeth Sandakalum
 
Structured web programming
Structured web programmingStructured web programming
Structured web programmingahfast
 
The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)lennartkats
 
Introduction to Frontend Development - Session 1 - HTML Fundamentals
Introduction to Frontend Development - Session 1 - HTML FundamentalsIntroduction to Frontend Development - Session 1 - HTML Fundamentals
Introduction to Frontend Development - Session 1 - HTML FundamentalsKalin Chernev
 
Dart the better Javascript 2015
Dart the better Javascript 2015Dart the better Javascript 2015
Dart the better Javascript 2015Jorg Janke
 

La actualidad más candente (18)

.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
 
Translating software with SDL Passolo?
Translating software with SDL Passolo?Translating software with SDL Passolo?
Translating software with SDL Passolo?
 
Php melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddyPhp melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddy
 
Introduction to C# - Week 0
Introduction to C# - Week 0Introduction to C# - Week 0
Introduction to C# - Week 0
 
Week 4 css recap and js
Week 4   css recap and jsWeek 4   css recap and js
Week 4 css recap and js
 
Domain Specific Languages
Domain Specific LanguagesDomain Specific Languages
Domain Specific Languages
 
Linq presentation by vaidhesh
Linq presentation by vaidheshLinq presentation by vaidhesh
Linq presentation by vaidhesh
 
Racket
RacketRacket
Racket
 
Miami2015
Miami2015Miami2015
Miami2015
 
E-publishing
E-publishingE-publishing
E-publishing
 
Introduction to .NET with C# @ university of wayamba
Introduction to .NET with C# @ university of wayambaIntroduction to .NET with C# @ university of wayamba
Introduction to .NET with C# @ university of wayamba
 
Oodb
OodbOodb
Oodb
 
Structured web programming
Structured web programmingStructured web programming
Structured web programming
 
The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)The Spoofax Language Workbench (SPLASH 2010)
The Spoofax Language Workbench (SPLASH 2010)
 
Introduction to Frontend Development - Session 1 - HTML Fundamentals
Introduction to Frontend Development - Session 1 - HTML FundamentalsIntroduction to Frontend Development - Session 1 - HTML Fundamentals
Introduction to Frontend Development - Session 1 - HTML Fundamentals
 
Dart the better Javascript 2015
Dart the better Javascript 2015Dart the better Javascript 2015
Dart the better Javascript 2015
 
Markup Languages
Markup Languages Markup Languages
Markup Languages
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 

Destacado

Nsp Company Profile And Capbilities Presentation
Nsp Company Profile And Capbilities PresentationNsp Company Profile And Capbilities Presentation
Nsp Company Profile And Capbilities Presentationniemer4
 
Usability Techniques for Startups
Usability Techniques for StartupsUsability Techniques for Startups
Usability Techniques for StartupsPerfetti Media
 
Mike's presentation
Mike's presentationMike's presentation
Mike's presentationMike Lee
 
Pomodoro Technique. How not to be distracted at work?
Pomodoro Technique. How not to be distracted at work?Pomodoro Technique. How not to be distracted at work?
Pomodoro Technique. How not to be distracted at work?Dmitry Kandalov
 
Birdwatching argentina
Birdwatching argentinaBirdwatching argentina
Birdwatching argentinapenderyn
 
Effective Techniques for Measuring Your Content's Success
Effective Techniques for Measuring Your Content's SuccessEffective Techniques for Measuring Your Content's Success
Effective Techniques for Measuring Your Content's SuccessPerfetti Media
 
James Presentation
James PresentationJames Presentation
James PresentationTofudude
 
Social media marketing
Social media marketingSocial media marketing
Social media marketingDina Lima
 
Creative Observations
Creative ObservationsCreative Observations
Creative ObservationsBrian Crooks
 
Mother’S Will
Mother’S WillMother’S Will
Mother’S Willdmashurova
 
Social Media Revolutions: How to communicate in the web 2.0 world
Social Media Revolutions: How to communicate in the web 2.0 worldSocial Media Revolutions: How to communicate in the web 2.0 world
Social Media Revolutions: How to communicate in the web 2.0 worldAlastair Smith
 
Social Media GLAM
Social Media GLAMSocial Media GLAM
Social Media GLAMJosh Peters
 
Essential Techniques for Designing Delightful Web Sites
Essential Techniques for Designing Delightful Web SitesEssential Techniques for Designing Delightful Web Sites
Essential Techniques for Designing Delightful Web SitesPerfetti Media
 

Destacado (20)

Engage! V6
Engage! V6Engage! V6
Engage! V6
 
Nsp Company Profile And Capbilities Presentation
Nsp Company Profile And Capbilities PresentationNsp Company Profile And Capbilities Presentation
Nsp Company Profile And Capbilities Presentation
 
Facts About Me
Facts About MeFacts About Me
Facts About Me
 
Usability Techniques for Startups
Usability Techniques for StartupsUsability Techniques for Startups
Usability Techniques for Startups
 
Mike's presentation
Mike's presentationMike's presentation
Mike's presentation
 
Pomodoro Technique. How not to be distracted at work?
Pomodoro Technique. How not to be distracted at work?Pomodoro Technique. How not to be distracted at work?
Pomodoro Technique. How not to be distracted at work?
 
Glam
GlamGlam
Glam
 
Eclispe Credential 1.0
Eclispe Credential 1.0Eclispe Credential 1.0
Eclispe Credential 1.0
 
Birdwatching argentina
Birdwatching argentinaBirdwatching argentina
Birdwatching argentina
 
Effective Techniques for Measuring Your Content's Success
Effective Techniques for Measuring Your Content's SuccessEffective Techniques for Measuring Your Content's Success
Effective Techniques for Measuring Your Content's Success
 
Spy on-yourself
Spy on-yourselfSpy on-yourself
Spy on-yourself
 
James Presentation
James PresentationJames Presentation
James Presentation
 
Social media marketing
Social media marketingSocial media marketing
Social media marketing
 
PIRC 101
PIRC 101PIRC 101
PIRC 101
 
Creative Observations
Creative ObservationsCreative Observations
Creative Observations
 
Mother’S Will
Mother’S WillMother’S Will
Mother’S Will
 
Social Media Revolutions: How to communicate in the web 2.0 world
Social Media Revolutions: How to communicate in the web 2.0 worldSocial Media Revolutions: How to communicate in the web 2.0 world
Social Media Revolutions: How to communicate in the web 2.0 world
 
Modeontwerper
ModeontwerperModeontwerper
Modeontwerper
 
Social Media GLAM
Social Media GLAMSocial Media GLAM
Social Media GLAM
 
Essential Techniques for Designing Delightful Web Sites
Essential Techniques for Designing Delightful Web SitesEssential Techniques for Designing Delightful Web Sites
Essential Techniques for Designing Delightful Web Sites
 

Similar a DSL explained _

Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?mikaelbarbero
 
Zoo of domain-specific languages
Zoo of domain-specific languagesZoo of domain-specific languages
Zoo of domain-specific languagesMikhail Barash
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaDmitry Buzdin
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеISsoft
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...SQALab
 
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionCompiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionEelco Visser
 
Introduction to programming world
Introduction to programming worldIntroduction to programming world
Introduction to programming worldJaskaran Singh
 
[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in actionMickael Istria
 
DSL in test automation
DSL in test automationDSL in test automation
DSL in test automationtest test
 
Overview of microsoft dot net platforms
Overview of microsoft dot net platformsOverview of microsoft dot net platforms
Overview of microsoft dot net platformsAbhijit B.
 
Copmuter Languages
Copmuter LanguagesCopmuter Languages
Copmuter Languagesactanimation
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
 
Xbase implementing specific domain language for java
Xbase  implementing specific domain language for javaXbase  implementing specific domain language for java
Xbase implementing specific domain language for javaYash Patel
 
Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific LanguagesMarkus Voelter
 

Similar a DSL explained _ (20)

Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?
 
Zoo of domain-specific languages
Zoo of domain-specific languagesZoo of domain-specific languages
Zoo of domain-specific languages
 
Groovy DSL
Groovy DSLGroovy DSL
Groovy DSL
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in Scala
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
 
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionCompiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler Construction
 
Introduction to programming world
Introduction to programming worldIntroduction to programming world
Introduction to programming world
 
.Net
.Net.Net
.Net
 
[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action
 
DSL in test automation
DSL in test automationDSL in test automation
DSL in test automation
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
Overview of microsoft dot net platforms
Overview of microsoft dot net platformsOverview of microsoft dot net platforms
Overview of microsoft dot net platforms
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
Copmuter Languages
Copmuter LanguagesCopmuter Languages
Copmuter Languages
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
Xbase implementing specific domain language for java
Xbase  implementing specific domain language for javaXbase  implementing specific domain language for java
Xbase implementing specific domain language for java
 
Introduction To MDD
Introduction To MDDIntroduction To MDD
Introduction To MDD
 
Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific Languages
 

Último

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Último (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

DSL explained _

Notas del editor

  1. Hi For those who haven't heard about it, SOLID is acronym composed from principles names. (There are 5 of them.) SOLID doesn't have any particular meaning. It's just a good way to remember list of principles. These principles are about low-level design and partly interpretation of OOP basics.
  2. Before doing anything it's good to know “why” you're going to do it. In other words operating without context you're becoming coding monkey or a screwdriver.
  3. I began programming at school because it was fun (before anyone actually taught me). Turbo Pascal, asm for DOS (for cool things). Then Delphi, C++. Of course we were told at school that OOP not only “Организация Освобождения Палестины”(Palestine Liberation Organization, in Russian sounds like OOP) but also encapsulation, polymorphism, inheritance © Nice words which I've known for quite a long time. What I did at the time was kind of “goal-oriented programming” . You don't really care how the work is done (almost), it's works today – fine! I knew some techniques like using inheritance but never bothered to understand why they exist. After (four?) years I got tired of “fighting the mess” and vision of programming as “low-level activity” so I programmed only for some “code for labs”. Some time later for some reason I though it would be nice to make sense of objects anyway. That way I came across patterns, UML, java, junit, refactoring and OOP (this time for real) . Nice java IDEs were also very attractive, but not more than the following “promises”.