Generative Programming from a DSL Viewpoint Charles Consel Compose Research Group LaBRI  –  INRIA-Futurs 2004
Domain-Specific Languages: What Problem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family Problem Generator Program Application generator Preprocessor DSL compiler Specification Declaration DSL program
Unconventional, Domain-Specific Languages (1) Domain-specific notations and abstractions Types (return value, SIP addr) Exceptions (timers, resources…) Domain-specific verifications No call loss Valid state transition Domain-specific optimizations Server state management Domain-specific code generation Exception handling (multiple platforms)  Domain-specific development tools Textual tools Graphical tools
Unconventional, Domain-Specific Languages (2) Examples of DSLs Scripting languages Shell, AWK… (~) Layer-oriented DSL XDR [ SUN ], Devil Component-oriented DSL Plan-P, Bossa [ Muller & Lawall ], Call/C Benefits Efficiency Verification Conciseness Re-use Productivity
Domain-Specific Languages: How Problem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family DSL Program Generator Program Representation Domain-specific information Domain-specific abstractions Exploitation Factorize / re-use Code/expertise/verification/treatment
Domain-Specific Languages: How Problem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family DSL Program Generator Program Representation Domain-specific information Domain-specific abstractions Exploitation Factorize / re-use Code/expertise/verification/treatment Generative Programming
Domain-Specific Languages: How Problem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family DSL Program Generator Program Representation Domain-specific information Domain-specific abstractions Exploitation Factorize / re-use Code/expertise/verification/treatment Encoding of expertise Generative Programming
From Program Family to Generative Programming: Declarations / AOP Declarations Generator Program DS info: declarations BT declarations AOP (call pattern/history) Program Processor Exploitation Verification Optimization Code generation
From Program Family to Generative Programming: Annotations Annotations Generator Program DS info: annotations Assertions Hints Program Processor Exploitation Verification Optimization Code generation
From Program Family to Generative Programming: Meta-Programming Transformer Generator Program DS info: transformer Extensions Program Exploitation Verification Optimization Code generation
From Program Family to Generative Programming DSL Program Generator Program Domain-specific information Domain-specific abstractions ( Re-)use of GP tools Semantic independent Restricted  Reliable Predictable Technology independent Traded for reduced flexibility Declarations Annotations Transformer Complementary
Disclaimers Not the panacea: need for a program family Not fixed : need to evolve with the program family Not GPL expressivity:  Not embedded language: embedding rich run-time environment
Conventional  vs.  Unconventional Unconventional today    conventional tomorrow Unconventional today    gone tomorrow Examples: Garbage collection Objects Counter-examples Parallelizing compilers Language-based machine architectures

Generative Programming from a DSL Viewpoint

  • 1.
    Generative Programming froma DSL Viewpoint Charles Consel Compose Research Group LaBRI – INRIA-Futurs 2004
  • 2.
    Domain-Specific Languages: WhatProblem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family Problem Generator Program Application generator Preprocessor DSL compiler Specification Declaration DSL program
  • 3.
    Unconventional, Domain-Specific Languages(1) Domain-specific notations and abstractions Types (return value, SIP addr) Exceptions (timers, resources…) Domain-specific verifications No call loss Valid state transition Domain-specific optimizations Server state management Domain-specific code generation Exception handling (multiple platforms) Domain-specific development tools Textual tools Graphical tools
  • 4.
    Unconventional, Domain-Specific Languages(2) Examples of DSLs Scripting languages Shell, AWK… (~) Layer-oriented DSL XDR [ SUN ], Devil Component-oriented DSL Plan-P, Bossa [ Muller & Lawall ], Call/C Benefits Efficiency Verification Conciseness Re-use Productivity
  • 5.
    Domain-Specific Languages: HowProblem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family DSL Program Generator Program Representation Domain-specific information Domain-specific abstractions Exploitation Factorize / re-use Code/expertise/verification/treatment
  • 6.
    Domain-Specific Languages: HowProblem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family DSL Program Generator Program Representation Domain-specific information Domain-specific abstractions Exploitation Factorize / re-use Code/expertise/verification/treatment Generative Programming
  • 7.
    Domain-Specific Languages: HowProblem 1 Program 1 Problem 2 Program 2 Problem 3 Program 3 … Problem family Program family DSL Program Generator Program Representation Domain-specific information Domain-specific abstractions Exploitation Factorize / re-use Code/expertise/verification/treatment Encoding of expertise Generative Programming
  • 8.
    From Program Familyto Generative Programming: Declarations / AOP Declarations Generator Program DS info: declarations BT declarations AOP (call pattern/history) Program Processor Exploitation Verification Optimization Code generation
  • 9.
    From Program Familyto Generative Programming: Annotations Annotations Generator Program DS info: annotations Assertions Hints Program Processor Exploitation Verification Optimization Code generation
  • 10.
    From Program Familyto Generative Programming: Meta-Programming Transformer Generator Program DS info: transformer Extensions Program Exploitation Verification Optimization Code generation
  • 11.
    From Program Familyto Generative Programming DSL Program Generator Program Domain-specific information Domain-specific abstractions ( Re-)use of GP tools Semantic independent Restricted Reliable Predictable Technology independent Traded for reduced flexibility Declarations Annotations Transformer Complementary
  • 12.
    Disclaimers Not thepanacea: need for a program family Not fixed : need to evolve with the program family Not GPL expressivity: Not embedded language: embedding rich run-time environment
  • 13.
    Conventional vs. Unconventional Unconventional today  conventional tomorrow Unconventional today  gone tomorrow Examples: Garbage collection Objects Counter-examples Parallelizing compilers Language-based machine architectures