SlideShare a Scribd company logo
1 of 258
Download to read offline
Programming ,[object Object],from,[object Object],to,[object Object],Modeling,[object Object],…and back again,[object Object],Markus Voelter,[object Object],Independent/itemis,[object Object],voelter@acm.org,[object Object]
A Journey…,[object Object]
„Houston,,[object Object],we have a,[object Object],Problem!“,[object Object]
Programming ,[object Object],Languages,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],C,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],expressive,[object Object],enough.,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],C,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],high-level,[object Object],enough.,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],C,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],abstract,[object Object],enough.,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],C,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],domain-specific,[object Object],enough.,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],C,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],enough.,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],C,[object Object]
Programming ,[object Object],Languages,[object Object],Formats,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Ruby,[object Object],Groovy,[object Object],Fortran,[object Object],json,[object Object],C,[object Object],HTML,[object Object],CSS,[object Object],yaml,[object Object],XML,[object Object]
Programming ,[object Object],Languages,[object Object],Formats,[object Object],Frameworks,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Django,[object Object],Ruby,[object Object],Groovy,[object Object],WPF,[object Object],Fortran,[object Object],json,[object Object],C,[object Object],JEE,[object Object],JMS,[object Object],HTML,[object Object],CSS,[object Object],Rails,[object Object],yaml,[object Object],XML,[object Object],lift,[object Object]
Programming ,[object Object],Languages,[object Object],Formats,[object Object],Frameworks,[object Object],enough.,[object Object],are not,[object Object],Erlang,[object Object],C# ,[object Object],C++,[object Object],Python,[object Object],Java,[object Object],Django,[object Object],Ruby,[object Object],Groovy,[object Object],WPF,[object Object],Fortran,[object Object],json,[object Object],C,[object Object],JEE,[object Object],JMS,[object Object],HTML,[object Object],CSS,[object Object],Rails,[object Object],yaml,[object Object],XML,[object Object],lift,[object Object]
not enough?,[object Object],for what?,[object Object]
not enough?,[object Object],for what?,[object Object]
not enough?,[object Object],for what?,[object Object]
So?,[object Object]
Modeling,[object Object],… Higher Level,[object Object],… Domain Specific,[object Object],Concepts & Notations,[object Object],… Code Generation,[object Object],Interpretation,[object Object]
Modeling,[object Object],… Higher Level,[object Object],… Domain Specific,[object Object],Concepts & Notations,[object Object],… Code Generation,[object Object],Interpretation,[object Object],Solvesthe,[object Object],Problem!,[object Object]
But:,[object Object]
Different Worlds,[object Object],Programming Tools,[object Object],!=,[object Object],Modeling Tools ,[object Object]
Different Worlds,[object Object],Modeling Tool,[object Object],!=,[object Object],Modeling Tool,[object Object]
Different Worlds,[object Object],Mix Models and Programs,[object Object]
Different Worlds,[object Object],Mix Models and Programs,[object Object],AST Navigation & Query,[object Object]
Different Worlds,[object Object],Mix Models and Programs,[object Object],AST Navigation & Query,[object Object],Integration of 3GL code,[object Object]
Different Worlds,[object Object],Mix Models and Programs,[object Object],AST Navigation & Query,[object Object],Integration of 3GL code,[object Object],Code Constraints,[object Object]
pare,[object Object],Com,[object Object]
pare,[object Object],Com,[object Object]
Domain Specific,[object Object],Notations,[object Object],and,[object Object],Abstractions,[object Object],Flexible!,[object Object],Limited!,[object Object],Frameworks,[object Object],Libraries,[object Object],(Fluent) APIs,[object Object]
Graphical,[object Object],Textual,[object Object],Forms,[object Object],Tables,[object Object],Limited!,[object Object],Flexible!,[object Object],Textual,[object Object],Trees,[object Object]
Customize,[object Object],Generator,[object Object],or,[object Object],Interpreter,[object Object],Limited!,[object Object],Flexible!,[object Object],Reflection,[object Object],Meta Programs,[object Object],Open Compilers,[object Object]
Define custom,[object Object],Query,[object Object],or,[object Object],Navigate,[object Object],or,[object Object],Transform,[object Object],Limited!,[object Object],Flexible!,[object Object],AST APIs,[object Object],Static Analysis,[object Object],Regex,[object Object]
Custom,[object Object],Validation,[object Object],or,[object Object],Error Checks,[object Object],Limited!,[object Object],Flexible!,[object Object],IDE plugins,[object Object],Static Analysis,[object Object],Open Compilers,[object Object]
Different,[object Object],Representations,[object Object],and,[object Object],Projections,[object Object],Limited!,[object Object],Flexible!,[object Object],Text is Text,[object Object],Code Folding,[object Object],Tree Views,[object Object],Visualizations,[object Object]
Mixing,[object Object],and,[object Object],Composing,[object Object],Languages,[object Object],Limited!,[object Object],Flexible?,[object Object],Python-to-C-like,[object Object],Internal DSLs,[object Object],Embed-As-String,[object Object],Specific: LINQ,[object Object]
Scalable,[object Object],Usable,[object Object],IDE Support,[object Object],Mature!,[object Object],Brittle!,[object Object],Modeling Tools…!?,[object Object]
Debugging,[object Object],Refactoring,[object Object],Testing,[object Object],Mature!,[object Object],Brittle!,[object Object],?,[object Object]
Versioning,[object Object],Diff, Merge,[object Object],Branching,[object Object],Mature!,[object Object],Brittle!,[object Object],for some tools…,[object Object]
Gets the,[object Object],Gets some,[object Object],Job Done!,[object Object],Jobs done.,[object Object],some people doubt that…,[object Object],everybody agrees…,[object Object]
Why,[object Object],the difference?,[object Object]
History?,[object Object]
Modeling,[object Object],Programming,[object Object]
Modeling,[object Object],Programming,[object Object],… (Mostly) Textual     Notations,[object Object],… Concrete Syntax     Storage,[object Object],… (Fancy) ASCII Editors,[object Object],… Read-Only     Visualizations,[object Object]
Modeling,[object Object],Programming,[object Object],… (Mostly) Graphical    Notations,[object Object],… Abstract Syntax     Storage,[object Object],… Projecting Editors,[object Object],… Different editable    views for model,[object Object],… (Mostly) Textual     Notations,[object Object],… Concrete Syntax     Storage,[object Object],… (Fancy) ASCII Editors,[object Object],… Read-Only     Visualizations,[object Object]
Why,[object Object],the difference?,[object Object]
It is time for …,[object Object]
… a Different Perspective,[object Object]
Programming,[object Object],the waywe do,[object Object],Modeling?,[object Object],Modeling,[object Object],the waywe do,[object Object],Programming?,[object Object]
Modeling,[object Object],Programming,[object Object],==,[object Object],==,[object Object],Programming,[object Object],Modeling,[object Object]
We don‘t want to,[object Object],model,,[object Object],we want to,[object Object],program!,[object Object]
We don‘t want to,[object Object],model,,[object Object],we want to,[object Object],program!,[object Object],… at different levels of abstaction,[object Object],… from different viewpoints,[object Object],… integrated!,[object Object]
We don‘t want to,[object Object],model,,[object Object],we want to,[object Object],program!,[object Object],… with different degrees of ,[object Object],domain-specificity,[object Object],… with suitable notations,[object Object],… with suitable expressiveness,[object Object]
We don‘t want to,[object Object],model,,[object Object],we want to,[object Object],program!,[object Object],And always:,[object Object],precise and tool processable,[object Object]
Where do we go from here?,[object Object]
A vision for,[object Object],,[object Object],programming,[object Object]
A vision for,[object Object],,[object Object],programming,[object Object],Enabling,[object Object],,[object Object],Technologies,[object Object]
A vision for,[object Object],,[object Object],programming,[object Object],Enabling,[object Object],,[object Object],Technologies,[object Object],Available,[object Object],,[object Object],Tooling,[object Object]
,[object Object],A vision for,[object Object],Programming,[object Object],,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],MODULAR,[object Object],enough.,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],COMPOSABLE,[object Object],enough.,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],CONFIGURABLE,[object Object],enough.,[object Object]
Programming ,[object Object],Languages,[object Object],are not,[object Object],ADAPTABLE,[object Object],enough.,[object Object]
Programming ,[object Object],Language Syntax,[object Object],is not,[object Object],FLEXIBLE,[object Object],enough.,[object Object]
Big Language?,[object Object],withmany first class concepts!,[object Object]
Small Language?,[object Object],with a few, orthogonal,[object Object],and poweful concepts,[object Object]
a,[object Object],b,[object Object],c,[object Object],d,[object Object],e,[object Object],f,[object Object],g,[object Object],h,[object Object],i,[object Object],j,[object Object],k,[object Object],l,[object Object],Modular Language,[object Object],with many optional,,[object Object],composable  concepts,[object Object]
Modular Language,[object Object],Likeframeworksandlibraries, ,[object Object]
Modular Language,[object Object],Likeframeworksandlibraries, ,[object Object],but withsyntaxand IDE support,[object Object]
Not a new idea…,[object Object]
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
Growing A Language,[object Object],(Guy L Steele),[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],Freely,[object Object],define,[object Object],languages and,[object Object],integrate,[object Object],them,[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],use,[object Object],?,[object Object],persistent,[object Object],abstract,[object Object],representation,[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],language ::=,[object Object],schema,[object Object],editors,[object Object],+,[object Object],generators,[object Object],+,[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],?,[object Object],projectional,[object Object],editing,[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],persist,[object Object],incomplete,[object Object],or,[object Object],contradictory,[object Object],information,[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],powerful,[object Object],+,[object Object],editing,[object Object],testing,[object Object],refactoring,[object Object],debugging,[object Object],groupware,[object Object],language definition,[object Object],implies,[object Object],IDE definition,[object Object]
Language,[object Object],Workbench,[object Object],(Martin Fowler),[object Object],+,[object Object],support for,[object Object],„classical“,[object Object],programming,[object Object],and,[object Object],„classical“,[object Object],modeling,[object Object]
Syntax,[object Object],primarily,[object Object],textual,[object Object]
Syntax,[object Object],primarily,[object Object],textual,[object Object],withmoresymbols,[object Object],think: mathematics,[object Object]
Syntax,[object Object],primarily,[object Object],textual,[object Object],sometimes,[object Object],box&line style,[object Object]
Syntax,[object Object],primarily,[object Object],textual,[object Object],sophisticated,[object Object],visualizations,[object Object]
Viewpoints,[object Object]
Viewpoints,[object Object],suitable,[object Object],abstractions,[object Object],and,[object Object],notations,[object Object],foreach,[object Object]
Viewpoints,[object Object],Integrated,[object Object],via,[object Object],symbolic,[object Object],references,[object Object],and,[object Object],seamless,[object Object],transitions,[object Object]
Viewpoints,[object Object],Business,[object Object],custom,[object Object],purpose-built,[object Object],create/include,[object Object]
Viewpoints,[object Object],Business,[object Object],Custom,[object Object],Notations,[object Object],real,[object Object],business,[object Object],expert integration,[object Object]
Viewpoints,[object Object],Business,[object Object],Custom,[object Object],Notations,[object Object],real,[object Object],business,[object Object],expert integration,[object Object],But that‘s another talk…,[object Object]
Viewpoints,[object Object],Technical,[object Object],predefined,[object Object],library,[object Object],configure,[object Object]
Example Languages,[object Object]
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
(Seemingly),[object Object],Simple Example,[object Object],Adding,[object Object],matrices,[object Object],to C in an ,[object Object],embedded,[object Object],environment.,[object Object]
Currently:,[object Object]
Currently:,[object Object],Matrices,[object Object],not supported,[object Object],in XML format ,[object Object],and generator,[object Object]
Currently:,[object Object],Tool team,[object Object],would have to,[object Object],do the extension,[object Object],… a lot of work,[object Object],… busy,[object Object],… one central tool,[object Object]
Currently:,[object Object],No real ,[object Object],compiler support,[object Object],in the resulting C code,[object Object],… type checks,[object Object],… operator overloading,[object Object],… generics (matrix<int>),[object Object],… matrix syntax?,[object Object]
From Programming to Modeling And Back Again
Better Solution,[object Object]
Better Solution,[object Object],generic,[object Object], matrix,[object Object], and,[object Object], vector,[object Object], types,[object Object]
Better Solution,[object Object],real,[object Object], matrix,[object Object], and,[object Object], vector,[object Object], literals,[object Object]
Better Solution,[object Object],syntax,[object Object],highlights,[object Object], for,[object Object], vectors,[object Object], and,[object Object], matrices,[object Object]
Better Solution,[object Object], operator,[object Object],overloading,[object Object]
Better Solution,[object Object], operator,[object Object],overloading,[object Object],static,[object Object],optimization,[object Object],… symmetrical  matrices,[object Object],… identity matrix,[object Object],… diagonal matrices,[object Object]
Better Solution,[object Object],math,[object Object],notation,[object Object]
Better Solution,[object Object],a,[object Object],separate,[object Object], language,[object Object], module,[object Object],used only by,[object Object],those who,[object Object],really need it,[object Object]
From Programming to Modeling And Back Again
In addition: PLE Variability,[object Object],annotating,[object Object],variability,[object Object],expressions,[object Object],to,[object Object], arbitrary,[object Object], regions,[object Object]
In addition: PLE Variability,[object Object],annotating,[object Object],variability,[object Object],expressions,[object Object],to,[object Object], arbitrary,[object Object], regions,[object Object], statically ,[object Object], checked,[object Object]
In addition: PLE Variability,[object Object],annotating,[object Object],variability,[object Object],expressions,[object Object],to,[object Object], arbitrary,[object Object], regions,[object Object], project,[object Object], variant,[object Object]
From Programming to Modeling And Back Again
more later…,[object Object],(tool examples),[object Object]
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
,[object Object],Enabling,[object Object],Technologies,[object Object],,[object Object]
,[object Object],Enabling,[object Object],Technologies,[object Object],,[object Object],Advanced,[object Object],Parser,[object Object],Generators,[object Object]
Modeling as Programmig,[object Object],… (Mostly) Textual     Notations,[object Object],… Concrete Syntax     Storage,[object Object],… (Fancy) ASCII Editors,[object Object],… Read-Only     Visualizations,[object Object]
Custom ,[object Object],Syntax,[object Object],Graphical,[object Object],Textual,[object Object],Symbolic++,[object Object]
IDE,[object Object],Support,[object Object],Teamwork,[object Object],Debugging,[object Object],Custom Editors,[object Object]
Complete,[object Object],Symbolic,[object Object],Integration,[object Object],Goto Def,[object Object],Find Refs,[object Object],Refactoring,[object Object]
Xtext-like Tools,[object Object],provide editor support,[object Object],Custom Editors,[object Object],Teamwork,[object Object],Goto Def,[object Object],Find Refs,[object Object],Refactoring,[object Object]
Limited to,[object Object],Unicode,[object Object],how to handle,[object Object],non-character symbols,[object Object]
Graphics !=,[object Object],Text,[object Object],two worlds…,[object Object],separate editors,[object Object],… per syntax/viewpoint,[object Object],… models can still be ref integrated,[object Object]
From Programming to Modeling And Back Again
What if!,[object Object],combine languages,[object Object],same seq<Char> as,[object Object],different tokens?,[object Object]
Ambiguous!,[object Object],Not Parsable.,[object Object],Bad Luck.,[object Object]
Traditionally:,[object Object],Language ::=,[object Object],      Token* | Rule*;,[object Object]
Traditionally:,[object Object],Language ::=,[object Object],      Token* | Rule*;,[object Object],Token ::=,[object Object],      Character*;,[object Object]
Traditionally:,[object Object],Language ::=,[object Object],      Token* | Rule*;,[object Object],Token ::=,[object Object],      Character*;,[object Object],Rule ::=,[object Object],      Token* | Rule;,[object Object]
Traditionally:,[object Object],Language ::=,[object Object],      Token* | Rule*;,[object Object],2 Phases:,[object Object],1. Global Tokenization,[object Object],(aka Scanning),[object Object],2. Grammar Recognition,[object Object],(aka Parsing),[object Object]
Modern:,[object Object],Language ::=,[object Object],             Rule*;,[object Object],Rule ::=,[object Object],             Char* | Rule*;,[object Object],1 Phase:,[object Object],Grammar Recognition,[object Object],directly on char*,[object Object]
Scannerless,[object Object],Parsing,[object Object],No Ambiguity,[object Object],when combining languages,[object Object],Always Parsable.,[object Object],(well, almost. There are some corner cases…),[object Object]
From Programming to Modeling And Back Again
,[object Object],Enabling,[object Object],Technologies,[object Object],,[object Object],Projectional,[object Object],Editing,[object Object]
text,[object Object],… to tree,[object Object],… to text,[object Object],Parser-based,[object Object]
Projectional,[object Object],tree,[object Object],… to text-lookalike (editor),[object Object],… to other trees … [*],[object Object],… to text ,[object Object]
Programming as Modeling,[object Object],… (Mostly) Graphical    Notations,[object Object],… Abstract Syntax     Storage,[object Object],… Projecting Editors,[object Object],… Different editable    views for model,[object Object]
Programming as Modeling,[object Object],… (Mostly) Graphical Any kind of    Notations,[object Object],… Abstract Syntax     Storage,[object Object],… Projecting Editors,[object Object],… Different editable    views for model,[object Object]
Language,[object Object],Composition,[object Object],There‘sno parsing.,[object Object],Unique Language Element Identity.,[object Object],Unlimted language composition.,[object Object]
Flexible,[object Object],Notations,[object Object],Textual,[object Object],like ASCII,[object Object],treated the same,[object Object],},[object Object],Graphical,[object Object],can be mixed,[object Object],box & line,[object Object],Semi-Graphical,[object Object],mathematical,[object Object]
Automatic,[object Object],IDE Extension,[object Object],tool support is inherent,[object Object],for languages build with,[object Object],projectional tools,[object Object],language definition,[object Object],implies,[object Object],IDE definition,[object Object]
Multiple,[object Object],Notations,[object Object],… for the same concepts,[object Object],e.g. in different contexts,[object Object],or for different tasks,[object Object]
Partial,[object Object],Projections,[object Object],… different views,[object Object],… for different roles/people,[object Object],… only a particular variant,[object Object]
Storage,[object Object],!= Schema,[object Object],… store arbitraty meta data,[object Object],change log,[object Object],conflicting information,[object Object],variability annotations,[object Object],… independent of language schema!,[object Object],… „aspects“, overlay,[object Object]
Live,[object Object],Programs,[object Object],think: spreadsheet,[object Object],a change to one part of program,[object Object],can lead to (dependent) changes,[object Object],in other parts,[object Object]
Tree Editing,[object Object],… is different from editing text,[object Object],… try to make it feel like text,[object Object],… takes some gettingused to,[object Object],but: for more flexible notations a more general editing paradigm is needed,[object Object]
Infrastructure,[object Object],Integration,[object Object],… storage is not text,[object Object],… diff/merge must be in tool,[object Object],… existing text tools don‘t work,[object Object]
Proprietary,[object Object],Tools,[object Object],… no standards,[object Object],… no interop,[object Object]
From Programming to Modeling And Back Again
,[object Object],Available,[object Object],Tooling,[object Object],,[object Object]
,[object Object],Available,[object Object],Tooling,[object Object],,[object Object],Eclipse,[object Object],Xtext,[object Object]
http://eclipse.org/modeling,[object Object]
http://eclipse.org/xtext,[object Object]
Eclipse Xtext,[object Object],Building Textual Editors,[object Object]
Eclipse Xtext,[object Object],Building Textual Editors,[object Object]
Xtext: Specify Grammar,[object Object]
Xtext: Gen. Meta Model,[object Object]
Xtext: Constraints,[object Object]
Xtext: Generated Editor,[object Object]
Xtext: Generated Editor,[object Object],Code Completion,[object Object]
Xtext: Generated Editor,[object Object],Syntax Coloring,[object Object],Custom KeywordColoring,[object Object]
Xtext: Generated Editor,[object Object],RealtimeConstraintValidation,[object Object]
Xtext: Generated Editor,[object Object],Customizable,[object Object],Outlines,[object Object]
Xtext: Generated Editor,[object Object],Code Folding,[object Object]
Xtext: Generated Editor,[object Object],Goto Definition ,[object Object],Find References,[object Object],Cross-File References,[object Object],Model as EMF,[object Object]
Xtext: Generated Editor,[object Object]
From Programming to Modeling And Back Again
PlatformArchitecture,[object Object],DSL,[object Object]
As you understand,[object Object],anddevelopyour,[object Object],PlatformArchitecture…,[object Object]
Develop a language to express it!,[object Object]
Language resembles architectural concepts…,[object Object]
Express the applications with the language.,[object Object]
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
Another Story…,[object Object],Architecture As Language,[object Object]
From Programming to Modeling And Back Again
DEMO I,[object Object],Building DSLs with Eclipse Xtext,[object Object]
From Programming to Modeling And Back Again
,[object Object],Available,[object Object],Tooling,[object Object],,[object Object]
,[object Object],Available,[object Object],Tooling,[object Object],,[object Object],Jetbrains‘,[object Object],Meta ,[object Object],Programming,[object Object],System,[object Object]
also do…,[object Object],IntelliJ IDEA,[object Object],Resharper,[object Object]
released in,[object Object],Q3 2009,[object Object],currently ,[object Object],1.1 RC1,[object Object]
licensed under,[object Object],Apache 2.0,[object Object]
Build new standalone DSLs,[object Object]
Build new standalone DSLs,[object Object],Build DSLs that reuse parts,[object Object],of other languages,[object Object]
Build new standalone DSLs,[object Object],Build DSLs that reuse parts,[object Object],of other languages,[object Object],Java++,[object Object],(MPS comes with BaseLanguage),[object Object],extend base language,[object Object]
Build new standalone DSLs,[object Object],Build DSLs that reuse parts,[object Object],of other languages,[object Object],Java++,[object Object],(MPS comes with BaseLanguage),[object Object],extend base language,[object Object],build DSLs that reuse parts,[object Object],of BaseLanguage,[object Object]
Language Extension Example,[object Object],Java + Extension,[object Object]
Language Extension Example,[object Object],Old,[object Object],Java,[object Object],Java + Extension,[object Object],ReadWriteLock l = …,[object Object],l.readLock().lock();,[object Object],try {,[object Object],  //code,[object Object],} finally {,[object Object],  l.readLock().unlock();,[object Object],},[object Object]
Language Extension Example,[object Object],Old,[object Object],New,[object Object],Java,[object Object],Java + Extension,[object Object],ReadWriteLock l = …,[object Object],l.readLock().lock();,[object Object],try {,[object Object],  //code,[object Object],} finally {,[object Object],  l.readLock().unlock();,[object Object],},[object Object],ReadWriteLock l = …,[object Object],lock (l) {,[object Object],  //code,[object Object],},[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Structure  Editor   Typesystem  Generator,[object Object]
Language Extension Example,[object Object],Result behaves like a native,[object Object],base language construct,[object Object]
Language Extension Example,[object Object],Result behaves like a native,[object Object],base language construct,[object Object]
Language Extension Example,[object Object],Translated to regular Java code,[object Object],based on the generator,[object Object],package jaxdemo.sandbox.sandbox;,[object Object],import java.util.concurrent.locks.Lock;,[object Object],public class DemoClass {,[object Object],  private Lock lock;,[object Object],  public DemoClass() {,[object Object],    try {,[object Object],      this.getLock().lock();,[object Object],      SharedResouce.instance().doSomething();,[object Object],    } finally {,[object Object],      this.getLock().unlock();,[object Object],    },[object Object],  },[object Object],  private Lock getLock() {   return this.lock;  },[object Object],},[object Object]
From Programming to Modeling And Back Again
Example Languages,[object Object],UI Language,[object Object]
Example Languages,[object Object],HTML Templates,[object Object]
Example Languages,[object Object],Persistent Classes,[object Object]
From Programming to Modeling And Back Again
DEMO I,[object Object],Building DSLs with JetBrains MPS,[object Object]
From Programming to Modeling And Back Again
,[object Object],Available,[object Object],Tooling,[object Object],,[object Object]
,[object Object],Available,[object Object],Tooling,[object Object],,[object Object],Intentional Software,[object Object],Domain,[object Object],Workbench,[object Object]
From Programming to Modeling And Back Again
Version 1.0 released in,[object Object],Dec 15, 2008,[object Object],currently at 1.4,[object Object]
Commercial,[object Object],Product,[object Object]
Eval available,[object Object],upon request,[object Object]
Statemachine Example,[object Object],Native Projection,[object Object]
Statemachine Example,[object Object],Tabular Projection,[object Object]
Statemachine Example,[object Object],Textual DSL Projection,[object Object]
Statemachine Example,[object Object],Java Projection,[object Object]
Statemachine Example,[object Object],Ruby Projection,[object Object]
Statemachine Example,[object Object],Two projections side/side,[object Object]
Statemachine Example,[object Object],Two projections side/side,[object Object]
From Programming to Modeling And Back Again
Pension Workbench Example,[object Object],Text Editing Domain,[object Object]
Pension Workbench Example,[object Object],Insurance Mathematics Domain,[object Object]
Pension Workbench Example,[object Object],Pension Contract Rules Domain,[object Object]
Pension Workbench Example,[object Object],All in one Document,[object Object]
Pension Workbench Example,[object Object],Symbolically integrated,[object Object]
From Programming to Modeling And Back Again
A Journey…,[object Object],Arewethere?,[object Object]
A Journey…,[object Object],.coordinates,[object Object],web email skypexinglinkedin,[object Object],www.voelter.devoelter@acm.orgschogglad,[object Object],http://www.xing.com/profile/Markus_Voelter,[object Object],http://www.linkedin.com/pub/0/377/a31,[object Object]
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again
From Programming to Modeling And Back Again

More Related Content

What's hot

Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming LanguagesIshan Monga
 
Programming Languages An Intro
Programming Languages An IntroProgramming Languages An Intro
Programming Languages An IntroKimberly De Guzman
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming languageForrester High School
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharVivek Parihar
 
Programing language
Programing languagePrograming language
Programing languageJames Taylor
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languagesVarun Garg
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentationguestaa97d9
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm Kaya Ota
 
Programming languages
Programming languagesProgramming languages
Programming languagesSimon Mui
 
Programming Language
Programming  LanguageProgramming  Language
Programming LanguageAdeel Hamid
 
Test-driven language development
Test-driven language developmentTest-driven language development
Test-driven language developmentlennartkats
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigmbusyking03
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof languagenicky_walters
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overviewagorolabs
 

What's hot (20)

Programing Language
Programing LanguagePrograming Language
Programing Language
 
Paradigms
ParadigmsParadigms
Paradigms
 
C Language
C LanguageC Language
C Language
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
 
Programming Languages An Intro
Programming Languages An IntroProgramming Languages An Intro
Programming Languages An Intro
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek parihar
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
 
Programing language
Programing languagePrograming language
Programing language
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentation
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
Programming languages
Programming languagesProgramming languages
Programming languages
 
Programming Language
Programming  LanguageProgramming  Language
Programming Language
 
Test-driven language development
Test-driven language developmentTest-driven language development
Test-driven language development
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigm
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof language
 
SD & D Implementation
SD & D ImplementationSD & D Implementation
SD & D Implementation
 
Prgramming paradigms
Prgramming paradigmsPrgramming paradigms
Prgramming paradigms
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overview
 

Viewers also liked

Model driven development using smart use cases and domain driven design
Model driven development using smart use cases and domain driven designModel driven development using smart use cases and domain driven design
Model driven development using smart use cases and domain driven designSander Hoogendoorn
 
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, 2009Markus Voelter
 
Agile IT: Modern Architecture for Rapid Mobile App Development
Agile IT: Modern Architecture for Rapid Mobile App DevelopmentAgile IT: Modern Architecture for Rapid Mobile App Development
Agile IT: Modern Architecture for Rapid Mobile App DevelopmentAnyPresence
 
An introduction to smart use cases
An introduction to smart use casesAn introduction to smart use cases
An introduction to smart use casesSander Hoogendoorn
 
Using Mobile-D methodology in development of mobile applications: Challenges ...
Using Mobile-D methodology in development of mobile applications: Challenges ...Using Mobile-D methodology in development of mobile applications: Challenges ...
Using Mobile-D methodology in development of mobile applications: Challenges ...Zlatko Stapic
 
Model driven development and code generation of software systems
Model driven development and code generation of software systemsModel driven development and code generation of software systems
Model driven development and code generation of software systemsMarco Brambilla
 
C programming-apurbo datta
C programming-apurbo dattaC programming-apurbo datta
C programming-apurbo dattaApurbo Datta
 
C Prog. - Introduction to Hardware, Software, Algorithm & Flowchart
C Prog. - Introduction to Hardware, Software, Algorithm & FlowchartC Prog. - Introduction to Hardware, Software, Algorithm & Flowchart
C Prog. - Introduction to Hardware, Software, Algorithm & Flowchartvinay arora
 
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointJavaTpoint.Com
 
Programming flowcharts for C Language
Programming flowcharts for C LanguageProgramming flowcharts for C Language
Programming flowcharts for C LanguageAryan Ajmer
 
Algorithmsandflowcharts1
Algorithmsandflowcharts1Algorithmsandflowcharts1
Algorithmsandflowcharts1luhkahreth
 
Algorithms and Flowcharts
Algorithms and FlowchartsAlgorithms and Flowcharts
Algorithms and FlowchartsDeva Singh
 

Viewers also liked (15)

Model driven development using smart use cases and domain driven design
Model driven development using smart use cases and domain driven designModel driven development using smart use cases and domain driven design
Model driven development using smart use cases and domain driven design
 
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
 
Agile IT: Modern Architecture for Rapid Mobile App Development
Agile IT: Modern Architecture for Rapid Mobile App DevelopmentAgile IT: Modern Architecture for Rapid Mobile App Development
Agile IT: Modern Architecture for Rapid Mobile App Development
 
An introduction to smart use cases
An introduction to smart use casesAn introduction to smart use cases
An introduction to smart use cases
 
Using Mobile-D methodology in development of mobile applications: Challenges ...
Using Mobile-D methodology in development of mobile applications: Challenges ...Using Mobile-D methodology in development of mobile applications: Challenges ...
Using Mobile-D methodology in development of mobile applications: Challenges ...
 
Model driven development and code generation of software systems
Model driven development and code generation of software systemsModel driven development and code generation of software systems
Model driven development and code generation of software systems
 
Introduction to problem solving in C
Introduction to problem solving in CIntroduction to problem solving in C
Introduction to problem solving in C
 
C programming-apurbo datta
C programming-apurbo dattaC programming-apurbo datta
C programming-apurbo datta
 
C Prog. - Introduction to Hardware, Software, Algorithm & Flowchart
C Prog. - Introduction to Hardware, Software, Algorithm & FlowchartC Prog. - Introduction to Hardware, Software, Algorithm & Flowchart
C Prog. - Introduction to Hardware, Software, Algorithm & Flowchart
 
Programming in c
Programming in cProgramming in c
Programming in c
 
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
 
Programming flowcharts for C Language
Programming flowcharts for C LanguageProgramming flowcharts for C Language
Programming flowcharts for C Language
 
Algorithmsandflowcharts1
Algorithmsandflowcharts1Algorithmsandflowcharts1
Algorithmsandflowcharts1
 
Algorithms and Flowcharts
Algorithms and FlowchartsAlgorithms and Flowcharts
Algorithms and Flowcharts
 
Algorithm and flowchart
Algorithm and flowchartAlgorithm and flowchart
Algorithm and flowchart
 

Similar to From Programming to Modeling And Back Again

English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacionVillalba Griselda
 
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?CHOOSE
 
The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185Mahmoud Samir Fayed
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?Markus Voelter
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184Mahmoud Samir Fayed
 
Programming assignment help by myassignmenthelp
Programming assignment help by myassignmenthelpProgramming assignment help by myassignmenthelp
Programming assignment help by myassignmenthelpwww.myassignmenthelp.net
 
Introduction To Computer Programming
Introduction To Computer ProgrammingIntroduction To Computer Programming
Introduction To Computer ProgrammingHussain Buksh
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdfARslan Ahmad
 
The Ring programming language version 1.5.2 book - Part 5 of 181
The Ring programming language version 1.5.2 book - Part 5 of 181The Ring programming language version 1.5.2 book - Part 5 of 181
The Ring programming language version 1.5.2 book - Part 5 of 181Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212Mahmoud Samir Fayed
 
Object oriented slides
Object oriented slidesObject oriented slides
Object oriented slidesahad nadeem
 
Procedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesProcedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesTammy Moncrief
 
PPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.ppt
PPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.pptPPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.ppt
PPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.pptAshutoshNeemval
 
Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009spierre
 
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 Programming Languages
Introduction Programming LanguagesIntroduction Programming Languages
Introduction Programming LanguagesManish Kharotia
 

Similar to From Programming to Modeling And Back Again (20)

About programming languages
About programming languagesAbout programming languages
About programming languages
 
Python overview
Python overviewPython overview
Python overview
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacion
 
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?
 
The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184
 
Programming assignment help by myassignmenthelp
Programming assignment help by myassignmenthelpProgramming assignment help by myassignmenthelp
Programming assignment help by myassignmenthelp
 
Introduction To Computer Programming
Introduction To Computer ProgrammingIntroduction To Computer Programming
Introduction To Computer Programming
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdf
 
The Ring programming language version 1.5.2 book - Part 5 of 181
The Ring programming language version 1.5.2 book - Part 5 of 181The Ring programming language version 1.5.2 book - Part 5 of 181
The Ring programming language version 1.5.2 book - Part 5 of 181
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212
 
Object oriented slides
Object oriented slidesObject oriented slides
Object oriented slides
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 
Procedural Programming Of Programming Languages
Procedural Programming Of Programming LanguagesProcedural Programming Of Programming Languages
Procedural Programming Of Programming Languages
 
PPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.ppt
PPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.pptPPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.ppt
PPT ON PROGRAMMING LANGUAGES AN THEIR TYPES.ppt
 
Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009
 
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 Programming Languages
Introduction Programming LanguagesIntroduction Programming Languages
Introduction Programming Languages
 

More from Markus Voelter

Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart ContractsMarkus Voelter
 
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 ...Markus Voelter
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language WorkbenchesMarkus Voelter
 
How Domains Shape Languages
 How Domains Shape Languages How Domains Shape Languages
How Domains Shape LanguagesMarkus Voelter
 
Why Modeling Suck Sucks
Why Modeling Suck SucksWhy Modeling Suck Sucks
Why Modeling Suck SucksMarkus Voelter
 
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 ProgrammingMarkus Voelter
 
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 methodsMarkus Voelter
 
Lessons Learned from building mbeddr
Lessons Learned from building mbeddrLessons Learned from building mbeddr
Lessons Learned from building mbeddrMarkus 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 KernelFMarkus Voelter
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
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)Markus Voelter
 
Language-Oriented Business Applications
Language-Oriented Business ApplicationsLanguage-Oriented Business Applications
Language-Oriented Business ApplicationsMarkus Voelter
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific LaguagesMarkus Voelter
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination SegelfliegenMarkus Voelter
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting GuideMarkus Voelter
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
Architecture As Language
Architecture As LanguageArchitecture As Language
Architecture As LanguageMarkus Voelter
 

More from Markus Voelter (20)

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 ...
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language Workbenches
 
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
 
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
 
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
 
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
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
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)
 
Language-Oriented Business Applications
Language-Oriented Business ApplicationsLanguage-Oriented Business Applications
Language-Oriented Business Applications
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
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
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
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
 

Recently uploaded

My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIVijayananda Mohire
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024Brian Pichman
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdfThe Good Food Institute
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.IPLOOK Networks
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarThousandEyes
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 

Recently uploaded (20)

My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAI
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile Brochure
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? Webinar
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 

From Programming to Modeling And Back Again

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 131.
  • 132.
  • 133.
  • 135.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
  • 173.
  • 174.
  • 175.
  • 176.
  • 177.
  • 178.
  • 179.
  • 180.
  • 181.
  • 182.
  • 183.
  • 184.
  • 185.
  • 186.
  • 187.
  • 188.
  • 189.
  • 191.
  • 192.
  • 193.
  • 194.
  • 195.
  • 199.
  • 201.
  • 203.
  • 204.
  • 205.
  • 206.
  • 207.
  • 208.
  • 209.
  • 210.
  • 211.
  • 212.
  • 213.
  • 214.
  • 215.
  • 216.
  • 217.
  • 218.
  • 219.
  • 220.
  • 221.
  • 222.
  • 223.
  • 224.
  • 225.
  • 226.
  • 228.
  • 229.
  • 230.
  • 232.
  • 234.
  • 235.
  • 237.
  • 238.
  • 239.
  • 240.
  • 241.
  • 242.
  • 243.
  • 244.
  • 245.
  • 246.
  • 248.
  • 249.
  • 250.
  • 251.
  • 252.
  • 254.
  • 255.