SlideShare a Scribd company logo
Markus Völter
voelter@acm.org
www.voelter.de
@markusvoelter
Envisioning Future
Language Workbenches
Where I come from I
Precision
Programming
!=
{
Formulas, Rules
Data Structures
Tables
Values
}
Performance
Scalability
Robustness
Deployment
+ Tests
All languages shown in this talk
are built with the open source
JetBrains MPS language workbench.
MPS Language Workbench
Language Workbench
Open Source, by Jetbrains
Very Expressive
Used for years in industry
Vast Experience
+ Refactorings, Find Usages, Syntax Coloring, Debugging, ...
MPS Language Workbench
MPS: Notational Freedom
100% crucial for acceptance in domain!
Rabbit Hole
Modeling is more than diagrams!
MPS: Language Composition
SPLE on Language Level!
Language Patterns
New Language
GPL Extension
Existing
Domain Notation
(Informal)
Formalization
Formalized
Language
Reuse GPL incl. Expressions and TS
Add/Embed DS-extensions
Compatible notational style
Reduce to GPL
Analyze Domain to find Abstractions
Define suitable, new notations
Rely on existing behavioral paradigm
Reuse standard expression language
Interpret/Generate to one or more
GPLs
Use existing notation from domain
Clean up and formalize
Generate/Interpret
Often import existing „models“
Language Extension Patterns
Language PatternsLanguage Flavours
Language Concerns II
Realtime
Incremental
Transformations
1
Example Use Cases
• Mapping of system models to model checkers for
interactive verification of temporal properties
• Flattening of component hierarchies for type checking
• Flattening of hierarchical feature models for path
expression evaluation
• Weaving in of safety concerns into C code.
• Desugaring of business DSLs to a core functional
language; that core language would then feature an
interpreter, a compiler and an integration with an SMT
solver
What is Shadow Models?
Functional transformation language with
support for fixpoints
Incremental execution upon change of input
model
Unidirectional, but with first-class support for
lifting results
Fully integrated into MPS IDE
Code: https://github.com/JetBrains/MPS-extensions/tree/master/code/shadowmodels
Docs: https://jetbrains.github.io/MPS-extensions/extensions/shadowmodels/
Mechanics
Input Model
Shadow Model
...
‚
User edits the input model
A delta is propagated into the
transformation engine
A change on the shadow model
is produced
This triggers analysis or update
of results in Shadow Model
Results/messages are lifted
back to input level
Results are annotated to the
input model
Mightbestacked
Kf2
Core
Interpreter Generator Verifier
Sugar
DSL1 DSL2 DSL3
ShadowModels
• Minimal, Expressive Core
• Functional
• Reactive
• Sugar on top
• Interpter, Generator
and Verifier below
• Realtime-Trafo with
Shadow Models
Kf2
Semantics
2
LWBs Semantics
LWBs Semantics
LWBs Semantics
LWBs + Semantics
Semantics
Spec
Interpreter
Compiler
Verifier
Functional + Imperative + Reactive
The tools exist: K, Funcons, VDM
IDE
Deployment
Correctness
But there is very limited integration with LWBs.
Exception: Spoofax + Funcons
Semantics
Grow on (imperative) C
KernelF
Semantics
Functional
Interpreter
Reactive
Interpreter
Several
Projects / DSLs
Grow on Functional Language...
KernelF
Semantics
Solver
Model
Checker
Rules
Engine
Functional
Interpreter
Reactive
Interpreter
Several
Projects / DSLs
Lots of ideas J
Grow on Functional Language...
... and other Foundations.
Liveness
3
Beyond Balls and Trees
Not too much has happened since the legandary demo.
Overlay program execution data
Run tests and illustrate results in the background.
Instance-based programming (Jonathan Edwards)
That‘s it?
What else can we do?
Which LWB-support can be build?
Why do people like Excel?
Beyond Balls and Trees
Beyond Balls and Trees
Not too much has happened since the legandary demo.
Overlay program execution data
Run tests and illustrate results in the background.
Instance-based programming (Jonathan Edwards)
That‘s it?
What else can we do?
Which LWB-support can be build?
Debuggers
4
Debuggers
Different ones for different language paradigms
Functional => Tree
Imperative => Stepping
Declarative => ?
Debuggers
Different ones for different language paradigms
Functional => Tree
Imperative => Stepping
Declarative => ?
Often the (semantic reverse) of generation
it has to recover DSL semantics for watches, views, breakpoints
Related to simulators and „model animators“
No good tool support for building them!
Realtime vs. Post Mortem
Language
Parametrization
& Interfaces
5
Language Composition
Language Composition
Defining „abstract“ languages with holes
Example: State machines with pluggable expression language
What is the type of those that can be plugged in?
Language Types or Interfaces / Megamodels
Example: How do you descibe a „valid“ expression language?
Does this include execution sematics?
Tool Concerns
III
Guidance
6
Applications
Applications Modeling Toolvs.
But not like that!
Novice Users need Guidance!
Applications Modeling Toolvs.
Novice Users need Guidance!
Applications Modeling Toolvs.
Novice Users need Guidance!
What am I working on? Roles
Applications Modeling Toolvs.
Novice Users need Guidance!
What am I working on?
What should I do next?
Roles
Tasks, Workflow
Applications Modeling Toolvs.
Novice Users need Guidance!
What am I working on?
What should I do next?
How complete is my model?
Roles
Tasks, Workflow
Model States
Applications Modeling Toolvs.
Novice Users need Guidance!
What am I working on?
What should I do next?
How complete is my model?
What is the quality of my model?
Roles
Tasks, Workflow
Model States
Metrics
Applications Modeling Toolvs.
Novice Users need Guidance!
What am I working on?
What should I do next?
How complete is my model?
What is the quality of my model?
Roles
Tasks, Workflow
Model States
Metrics
Defined jointly with the language.
Permissions
7
Permissions
Which user groups can see and edit which part of the model?
Can we define views for showing parts or aspects of models.
Proxies for „hidden details“?
Collaboration
8
Version Control Systems are a problem
Version Control Systems are a problem
https://git-man-page-generator.lokaltog.net/
But file-based version control is often not suitable.
Google Docs Style Collaboration
Realtime collaboration à la Google Docs
Language/structure-aware
Some level of transaction or isolation
Some version of branching.
The cloud
9
Cloud Backend
Local vs. „real“
Data Protection!
LSP-style frontend.
Browser Frontends
Become more App-Like
UI must be less like an IDE.
Things must look slicker!
It must be easier to integrate
with web apps that are
developed without the LWB:
Microservice-style modeling „services“
Integration on common backend and also with non-model apps.
Bring in M0
Language DSLs
Language
Model
User Data
M0
M1
M2
M3
Part of the LWB
Defined using the LWB
Should feel like IDE
Should be on the web
Not feel like IDE
Completely outside in generated App/DB
Bring in M0
Language DSLs
Language
Model
M3
Part of the LWB
User Data
Bring into joint repository.
Simplified Migration of models.
MetaEdit+ does this.
Bring in M0
Language DSLs
Language
Model
User Data
M3
Part of the LWB
Bring into joint repository.
Simplified Migration of models.
MetaEdit+ does this.
User-data also needs (incremental)
analysis, transformation and migration.
Should also scale indefinitely.
Why „externalize“ through generation etc?
Scale Down
10
Get Rid of IDE feel
Make it simpler.
https://alarmingdevelopment.org/
In terms of UI
But also in terms of paradigm.
Is functional or imperative the answer?
Make it modular(er).
Explain
Communicate
Convince
Educate
BBonus
Maybe more important!
!
How do we call
what we do?
How do we
de-risk tools?
What are the
right paradigms?
Computational
Thinking
End-User
programming
Case Studies

More Related Content

What's hot

Lecture 10 software development
Lecture 10 software developmentLecture 10 software development
Lecture 10 software development
Jehanzaib Yousuf
 

What's hot (20)

Architecting Domain-Specific Languages
Architecting Domain-Specific LanguagesArchitecting Domain-Specific Languages
Architecting Domain-Specific Languages
 
Swift vs. Language X
Swift vs. Language XSwift vs. Language X
Swift vs. Language X
 
Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)
 
Swift
SwiftSwift
Swift
 
Language-Oriented Business Applications
Language-Oriented Business ApplicationsLanguage-Oriented Business Applications
Language-Oriented Business Applications
 
EMPEX LA 2018 - Inclusion Starts with Docs
EMPEX LA 2018 - Inclusion Starts with DocsEMPEX LA 2018 - Inclusion Starts with Docs
EMPEX LA 2018 - Inclusion Starts with Docs
 
Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#
 
Beginning PHP
Beginning PHPBeginning PHP
Beginning PHP
 
Lecture 10 software development
Lecture 10 software developmentLecture 10 software development
Lecture 10 software development
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
 
Programming Language Selection
Programming Language SelectionProgramming Language Selection
Programming Language Selection
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 
Sally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development PatternsSally Kleinfeldt - Plone Application Development Patterns
Sally Kleinfeldt - Plone Application Development Patterns
 
Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry  Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry
 
Dion computerprogramming
Dion computerprogrammingDion computerprogramming
Dion computerprogramming
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
 
Top 10 programming languages
Top 10 programming languagesTop 10 programming languages
Top 10 programming languages
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
Ten compelling reasons to learn .net framework
Ten compelling reasons to learn .net frameworkTen compelling reasons to learn .net framework
Ten compelling reasons to learn .net framework
 
Design concerns for concrete syntax
Design concerns for concrete syntaxDesign concerns for concrete syntax
Design concerns for concrete syntax
 

Similar to Envisioning the Future of Language Workbenches

Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
Markus Voelter
 
A Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpA Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And Rlbp
Rikki Wright
 

Similar to Envisioning the Future of Language Workbenches (20)

Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
Fusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented ProgrammingFusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented Programming
 
Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Introducing Language-Oriented Business Applications - Markus Voelter
Introducing Language-Oriented Business Applications - Markus VoelterIntroducing Language-Oriented Business Applications - Markus Voelter
Introducing Language-Oriented Business Applications - Markus Voelter
 
The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelFThe Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelF
 
OOP Java
OOP JavaOOP Java
OOP Java
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
 
The Economics of OptimJ
The Economics of OptimJThe Economics of OptimJ
The Economics of OptimJ
 
DSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentDSL, the absolute weapon for the development
DSL, the absolute weapon for the development
 
Unit 1
Unit 1Unit 1
Unit 1
 
JAVA
JAVAJAVA
JAVA
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language Workbenches
 
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
APIs And SDKs  Breaking Into And Succeeding In A Specialty MarketAPIs And SDKs  Breaking Into And Succeeding In A Specialty Market
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
 
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdfTop Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
A Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpA Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And Rlbp
 

More from Markus Voelter

Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart Contracts
Markus Voelter
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
Markus Voelter
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
Markus Voelter
 

More from Markus Voelter (17)

Consulting
ConsultingConsulting
Consulting
 
Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart Contracts
 
Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...
 
How Domains Shape Languages
 How Domains Shape Languages How Domains Shape Languages
How Domains Shape Languages
 
Why Modeling Suck Sucks
Why Modeling Suck SucksWhy Modeling Suck Sucks
Why Modeling Suck Sucks
 
The future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsThe future of DSLs - functions and formal methods
The future of DSLs - functions and formal methods
 
Lessons Learned from building mbeddr
Lessons Learned from building mbeddrLessons Learned from building mbeddr
Lessons Learned from building mbeddr
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back Again
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination Segelfliegen
 
Introduction To MDD
Introduction To MDDIntroduction To MDD
Introduction To MDD
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting Guide
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Architecture As Language
Architecture As LanguageArchitecture As Language
Architecture As Language
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
 
Trends In Languages 2010
Trends In Languages 2010Trends In Languages 2010
Trends In Languages 2010
 
Visual Profile - Markus Voelter, Jan 1, 2009
Visual Profile - Markus Voelter, Jan 1, 2009Visual Profile - Markus Voelter, Jan 1, 2009
Visual Profile - Markus Voelter, Jan 1, 2009
 

Recently uploaded

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

Envisioning the Future of Language Workbenches