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

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
 
Cobbbbbbbnnnnnnnnnnnnnnnnncepts of PL.pptx
Cobbbbbbbnnnnnnnnnnnnnnnnncepts of PL.pptxCobbbbbbbnnnnnnnnnnnnnnnnncepts of PL.pptx
Cobbbbbbbnnnnnnnnnnnnnnnnncepts of PL.pptx
 
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)
 

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

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Recently uploaded (20)

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

From Programming to Modeling And Back Again