SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Software Language Composition
for the Masses
Manuel Leduc, Thomas Degueule, Benoit Combemale
Joint work in the context of the associated research team ALE between Inria (DiverSE) and CWI (SWAT).
Context &
Motivation
DSL Everywhere (1/2)
Modular Language Composition for the Masses 1 / 19
DSL Everywhere (2/2)
Challenges
1. Complex Language Engineering effort;
2. Requires expert knowledge;
3. Requires maintenance and evolution investments.
Modular Language Composition for the Masses 2 / 19
DSL Everywhere (2/2)
Challenges
1. Complex Language Engineering effort;
2. Requires expert knowledge;
3. Requires maintenance and evolution investments.
Proposed Solution
Reuse, assemble and customize existing languages.
Modular Language Composition for the Masses 2 / 19
Language extension
A language-development
system supports language
extension of a base language
if the implementation of the
base language can be
reused unchanged to
implement a language
extension.
Language composition
A language-development
system supports language
composition of two languages
if the implementation of both
languages can be reused
unchanged by adding glue
code only.
[MODELS'17] [SLE'18]
Language reuse
Modular Language Composition for the Masses 3 / 19
Language Composition
Goal: "Import, bind & reuse"
Modular Language Composition for the Masses 4 / 19
Rely on dedicated
paradigms
Spoofax (Term reduction
rules);
Monticore (Component
Based);
Neverlang (Sectional DSL).
Relying on mainstream
paradigms
Lisa (Object-Oriented
Attribute Grammar);
Melange (Object-Oriented
Composition Operators).
Pro:
Highly modular.
Cons:
Rely on dedicated paradigms.
Pro:
Mainstream paradigm based.
Cons:
Limited modularity (at the impl.
level) .
A Landscape of Language Composition
Modular Language Composition for the Masses 5 / 19
Rely on dedicated
paradigms
Spoofax (Term reduction
rules);
Monticore (Component
Based);
Neverlang (Sectional DSL).
Relying on mainstream
paradigms
Lisa (Object-Oriented
Attribute Grammar);
Melange (Object-Oriented
Composition Operators).
Pro:
Highly modular.
Pro:
Mainstream paradigm based.
A Landscape of Language Composition
Cons:
Rely on dedicated paradigms.
Cons:
Limited modularity (at the impl.
level).
Modular Language Composition for the Masses 6 / 19
Anatomy of a DSL
Modular Language Composition for the Masses 7 / 19
Anatomy of a DSL
Modular Language Composition for the Masses 7 / 19
Anatomy of a DSL
Modular Language Composition for the Masses 7 / 19
Finite State Machine Language Concern
Modular Language Composition for the Masses 8 / 19
Finite State Machine Language Concern
Modular Language Composition for the Masses 8 / 19
Requirements
Requirements
R1: Concern Encapsulation
Language concerns should be composed without having to
inspect their internal implementation.
Modular Language Composition for the Masses 9 / 19
Requirements
R1: Concern Encapsulation
R2: Explicit Required Interface
Required interfaces of language concerns should explicitly state
the requirements a concern has towards other concerns.
Modular Language Composition for the Masses 10 / 19
Requirements
R1: Concern Encapsulation
R2: Explicit Required Interface
R3: Incremental Compilation
Language Concern should be type-checked and compiled
separately.
Modular Language Composition for the Masses 11 / 19
Requirements
R1: Concern Encapsulation
R2: Explicit Required Interface
R3: Incremental Compilation
R4: Concern Substitutability
Two Language Concerns with compatible interfaces should be
substitutable.
Modular Language Composition for the Masses 12 / 19
Requirements
R1: Concern Encapsulation
R2: Explicit Required Interface
R3: Incremental Compilation
R4: Concern Substitutability
R5: Non-intrusivity
Defining Language Concern should be based on Object-
Oriented engineering technologies.
Modular Language Composition for the Masses 13 / 19
Approach
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Overview
Modular Language Composition for the Masses 14 / 19
Experimentation
Architecture Workflow Actions
IoT Usecase (1/2)
Modular Language Composition for the Masses 15 / 19
Architecture Workflow Actions
Model sensors'
interface
Model sensors'
control flow
Express sensors'
actions
IoT Usecase (1/2)
Modular Language Composition for the Masses 15 / 19
Architecture Workflow Actions
Model sensors'
interface
Model sensors'
control flow
Express sensors'
actions
OMG's IDL
provides operation
getTemp(inout temp)
Activity Diagram
IoT Usecase (1/2)
Modular Language Composition for the Masses 15 / 19
IoT Usecase (2/2)
Modular Language Composition for the Masses 16 / 19
Results
R1: Concern Encapsulation ✅
R3: Incremental Compilation ✅
⇒ Eclipse Plug-in based.
R2: Explicit Required Interface ✅
⇒ Required annotations on EMF classes.
R4: Concern Substitutability ✅
⇒ Lua replaced by 2 toy languages for expressions and actions.
R5: Non-intrusivity ✅
⇒ Based on EMF and Java.
Modular Language Composition for the Masses 17 / 19
Conclusion &
Future Work
Take Away
Implementation pattern enhancing language
composability;
Generative approach to abstract the implementation
pattern;
Alternative to the standard EMF Switch, improving
extensibility and composability.
Seamlessly integrated with EMF (and Java)
Type safe
Modular, Extensible, Composable, Reusable
Modular Language Composition for the Masses 18 / 19
Future Work
Toward language product lines and language families;
Dedicated binding language for glue definition.
Modular Language Composition for the Masses 19 / 19
EOF

Contenu connexe

Tendances

Programming languages
Programming languagesProgramming languages
Programming languagesSimon Mui
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language DesignMarkus Voelter
 
1. over view and history of c
1. over view and history of c1. over view and history of c
1. over view and history of cHarish Kumawat
 
C Programming language - introduction
C Programming  language - introduction  C Programming  language - introduction
C Programming language - introduction GopikaS12
 
PROGRAMMING LANGUAGES
PROGRAMMING LANGUAGESPROGRAMMING LANGUAGES
PROGRAMMING LANGUAGESABHINAV SINGH
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overviewagorolabs
 
Domain Specific Language with pleasure
Domain Specific Language with pleasureDomain Specific Language with pleasure
Domain Specific Language with pleasureVaclav Pech
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof languagenicky_walters
 
Evolution of programming languages
Evolution of programming languagesEvolution of programming languages
Evolution of programming languagesNitin Kumar Kashyap
 
Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)
Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)
Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)Deep Learning Italia
 
Generations Of Programming Languages
Generations Of Programming LanguagesGenerations Of Programming Languages
Generations Of Programming Languagespy7rjs
 

Tendances (19)

Programming languages
Programming languagesProgramming languages
Programming languages
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
 
1. over view and history of c
1. over view and history of c1. over view and history of c
1. over view and history of c
 
C Programming language - introduction
C Programming  language - introduction  C Programming  language - introduction
C Programming language - introduction
 
PROGRAMMING LANGUAGES
PROGRAMMING LANGUAGESPROGRAMMING LANGUAGES
PROGRAMMING LANGUAGES
 
Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overview
 
Domain Specific Language with pleasure
Domain Specific Language with pleasureDomain Specific Language with pleasure
Domain Specific Language with pleasure
 
Ndu06 typesof language
Ndu06 typesof languageNdu06 typesof language
Ndu06 typesof language
 
Go programing language
Go programing languageGo programing language
Go programing language
 
Programing Language
Programing LanguagePrograming Language
Programing Language
 
Programming landuages
Programming landuagesProgramming landuages
Programming landuages
 
Evolution of programming languages
Evolution of programming languagesEvolution of programming languages
Evolution of programming languages
 
Introduction to c
Introduction to cIntroduction to c
Introduction to c
 
Characteristics of c#
Characteristics of c#Characteristics of c#
Characteristics of c#
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Evolution of Computer Languages
Evolution of Computer LanguagesEvolution of Computer Languages
Evolution of Computer Languages
 
Programming names
Programming namesProgramming names
Programming names
 
Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)
Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)
Transformer Seq2Sqe Models: Concepts, Trends & Limitations (DLI)
 
Generations Of Programming Languages
Generations Of Programming LanguagesGenerations Of Programming Languages
Generations Of Programming Languages
 

Similaire à Software Language Composition Techniques for Modular Reuse

Variability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesVariability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesDavid Méndez-Acuña
 
Model executability within the GEMOC Studio
Model executability within the GEMOC StudioModel executability within the GEMOC Studio
Model executability within the GEMOC StudioBenoit Combemale
 
Abstraction level taxonomy of programming language frameworks
Abstraction level taxonomy of programming language frameworksAbstraction level taxonomy of programming language frameworks
Abstraction level taxonomy of programming language frameworksijpla
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languagesVarun Garg
 
The Whole Platform A Language Workbench for Eclipse
The Whole Platform A Language Workbench for EclipseThe Whole Platform A Language Workbench for Eclipse
The Whole Platform A Language Workbench for EclipseRiccardo Solmi
 
Generations of programming language
Generations of programming languageGenerations of programming language
Generations of programming languageJAIDEVPAUL
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacionVillalba Griselda
 
INTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdf
INTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdfINTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdf
INTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdfKakai Catalan
 
Grade 8: Introduction To Java
Grade 8: Introduction To JavaGrade 8: Introduction To Java
Grade 8: Introduction To Javanandanrocker
 
Programing languages
Programing languagesPrograming languages
Programing languagesDanyal Ahmad
 
Computer languages
Computer languagesComputer languages
Computer languagesAtiq_Ahmed
 
Domain Specific Languages in Ruby - Medellin.rb
Domain Specific Languages in Ruby - Medellin.rbDomain Specific Languages in Ruby - Medellin.rb
Domain Specific Languages in Ruby - Medellin.rbOscar Rendon
 
CH 01.pptx
CH 01.pptxCH 01.pptx
CH 01.pptxObsa2
 
2.3 programming language show
2.3 programming language show2.3 programming language show
2.3 programming language showManojKumar4723
 
Use of assembly language[edit]Historical perspective[edit]Assemb.pdf
Use of assembly language[edit]Historical perspective[edit]Assemb.pdfUse of assembly language[edit]Historical perspective[edit]Assemb.pdf
Use of assembly language[edit]Historical perspective[edit]Assemb.pdfannethafashion
 

Similaire à Software Language Composition Techniques for Modular Reuse (20)

Variability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesVariability Management in Domain Specific Languages
Variability Management in Domain Specific Languages
 
Model executability within the GEMOC Studio
Model executability within the GEMOC StudioModel executability within the GEMOC Studio
Model executability within the GEMOC Studio
 
Abstraction level taxonomy of programming language frameworks
Abstraction level taxonomy of programming language frameworksAbstraction level taxonomy of programming language frameworks
Abstraction level taxonomy of programming language frameworks
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
The Whole Platform A Language Workbench for Eclipse
The Whole Platform A Language Workbench for EclipseThe Whole Platform A Language Workbench for Eclipse
The Whole Platform A Language Workbench for Eclipse
 
Generations of programming language
Generations of programming languageGenerations of programming language
Generations of programming language
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacion
 
INTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdf
INTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdfINTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdf
INTRODUCTION TO SOFTWARE, PROGRAMMING LANGUAGES.pdf
 
Grade 8: Introduction To Java
Grade 8: Introduction To JavaGrade 8: Introduction To Java
Grade 8: Introduction To Java
 
Programing languages
Programing languagesPrograming languages
Programing languages
 
Programming.language
Programming.languageProgramming.language
Programming.language
 
Computer languages
Computer languagesComputer languages
Computer languages
 
Domain Specific Languages in Ruby - Medellin.rb
Domain Specific Languages in Ruby - Medellin.rbDomain Specific Languages in Ruby - Medellin.rb
Domain Specific Languages in Ruby - Medellin.rb
 
CH 01.pptx
CH 01.pptxCH 01.pptx
CH 01.pptx
 
2.3 programming language show
2.3 programming language show2.3 programming language show
2.3 programming language show
 
Assignment on basic programming language
Assignment on  basic programming languageAssignment on  basic programming language
Assignment on basic programming language
 
Use of assembly language[edit]Historical perspective[edit]Assemb.pdf
Use of assembly language[edit]Historical perspective[edit]Assemb.pdfUse of assembly language[edit]Historical perspective[edit]Assemb.pdf
Use of assembly language[edit]Historical perspective[edit]Assemb.pdf
 
NEP.pptx
NEP.pptxNEP.pptx
NEP.pptx
 
Unit ii oo design 9
Unit ii oo design 9Unit ii oo design 9
Unit ii oo design 9
 
La5 programming
La5  programmingLa5  programming
La5 programming
 

Dernier

Introduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptxIntroduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptxMedical College
 
Role of Gibberellins, mode of action and external applications.pptx
Role of Gibberellins, mode of action and external applications.pptxRole of Gibberellins, mode of action and external applications.pptx
Role of Gibberellins, mode of action and external applications.pptxjana861314
 
FBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptxFBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptxPayal Shrivastava
 
Timeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological CorrelationsTimeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological CorrelationsDanielBaumann11
 
LAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary Microbiology
LAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary MicrobiologyLAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary Microbiology
LAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary MicrobiologyChayanika Das
 
Q4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptxQ4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptxtuking87
 
Advances in AI-driven Image Recognition for Early Detection of Cancer
Advances in AI-driven Image Recognition for Early Detection of CancerAdvances in AI-driven Image Recognition for Early Detection of Cancer
Advances in AI-driven Image Recognition for Early Detection of CancerLuis Miguel Chong Chong
 
Science (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsScience (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsDobusch Leonhard
 
Introduction of Organ-On-A-Chip - Creative Biolabs
Introduction of Organ-On-A-Chip - Creative BiolabsIntroduction of Organ-On-A-Chip - Creative Biolabs
Introduction of Organ-On-A-Chip - Creative BiolabsCreative-Biolabs
 
Pests of Sunflower_Binomics_Identification_Dr.UPR
Pests of Sunflower_Binomics_Identification_Dr.UPRPests of Sunflower_Binomics_Identification_Dr.UPR
Pests of Sunflower_Binomics_Identification_Dr.UPRPirithiRaju
 
Think Science: What Are Eclipses (101), by Craig Bobchin
Think Science: What Are Eclipses (101), by Craig BobchinThink Science: What Are Eclipses (101), by Craig Bobchin
Think Science: What Are Eclipses (101), by Craig BobchinNathan Cone
 
Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...
Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...
Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...Christina Parmionova
 
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPRPirithiRaju
 
EGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer Zahana
EGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer ZahanaEGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer Zahana
EGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer ZahanaDr.Mahmoud Abbas
 
whole genome sequencing new and its types including shortgun and clone by clone
whole genome sequencing new  and its types including shortgun and clone by clonewhole genome sequencing new  and its types including shortgun and clone by clone
whole genome sequencing new and its types including shortgun and clone by clonechaudhary charan shingh university
 

Dernier (20)

Introduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptxIntroduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptx
 
Interferons.pptx.
Interferons.pptx.Interferons.pptx.
Interferons.pptx.
 
Role of Gibberellins, mode of action and external applications.pptx
Role of Gibberellins, mode of action and external applications.pptxRole of Gibberellins, mode of action and external applications.pptx
Role of Gibberellins, mode of action and external applications.pptx
 
FBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptxFBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptx
 
Timeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological CorrelationsTimeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
 
Introduction Classification Of Alkaloids
Introduction Classification Of AlkaloidsIntroduction Classification Of Alkaloids
Introduction Classification Of Alkaloids
 
LAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary Microbiology
LAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary MicrobiologyLAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary Microbiology
LAMP PCR.pptx by Dr. Chayanika Das, Ph.D, Veterinary Microbiology
 
Q4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptxQ4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptx
 
Advances in AI-driven Image Recognition for Early Detection of Cancer
Advances in AI-driven Image Recognition for Early Detection of CancerAdvances in AI-driven Image Recognition for Early Detection of Cancer
Advances in AI-driven Image Recognition for Early Detection of Cancer
 
Ultrastructure and functions of Chloroplast.pptx
Ultrastructure and functions of Chloroplast.pptxUltrastructure and functions of Chloroplast.pptx
Ultrastructure and functions of Chloroplast.pptx
 
Let’s Say Someone Did Drop the Bomb. Then What?
Let’s Say Someone Did Drop the Bomb. Then What?Let’s Say Someone Did Drop the Bomb. Then What?
Let’s Say Someone Did Drop the Bomb. Then What?
 
Science (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsScience (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and Pitfalls
 
Introduction of Organ-On-A-Chip - Creative Biolabs
Introduction of Organ-On-A-Chip - Creative BiolabsIntroduction of Organ-On-A-Chip - Creative Biolabs
Introduction of Organ-On-A-Chip - Creative Biolabs
 
Pests of Sunflower_Binomics_Identification_Dr.UPR
Pests of Sunflower_Binomics_Identification_Dr.UPRPests of Sunflower_Binomics_Identification_Dr.UPR
Pests of Sunflower_Binomics_Identification_Dr.UPR
 
Think Science: What Are Eclipses (101), by Craig Bobchin
Think Science: What Are Eclipses (101), by Craig BobchinThink Science: What Are Eclipses (101), by Craig Bobchin
Think Science: What Are Eclipses (101), by Craig Bobchin
 
PLASMODIUM. PPTX
PLASMODIUM. PPTXPLASMODIUM. PPTX
PLASMODIUM. PPTX
 
Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...
Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...
Charateristics of the Angara-A5 spacecraft launched from the Vostochny Cosmod...
 
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
 
EGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer Zahana
EGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer ZahanaEGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer Zahana
EGYPTIAN IMPRINT IN SPAIN Lecture by Dr Abeer Zahana
 
whole genome sequencing new and its types including shortgun and clone by clone
whole genome sequencing new  and its types including shortgun and clone by clonewhole genome sequencing new  and its types including shortgun and clone by clone
whole genome sequencing new and its types including shortgun and clone by clone
 

Software Language Composition Techniques for Modular Reuse