SlideShare a Scribd company logo
What we are doing?    Component-based programming         Scl   Exil   Summarize




           A Smalltalk implementation of E XIL, a Component-based
                          Programming Language


                                      ˇ c
                                 Petr Spaˇ ek
                             in cooperation with
            Christophe Dony, Chouki Tibermacine and Luc Fabresse

                                         LIRMM,
                                University of Montpellier 2
                                petr.spacek@lirmm.fr


                               23rd of August, 2011
What we are doing?                                              Component-based programming                                                               Scl                                   Exil                                Summarize




W HAT WE ARE DOING ? - M OTIVATION


       public class CParser implements IAST, BindingController {
        private ITokenStream scanner;
                                                                                ICompile                                                                 Compiler
        Token currentToken;

        // Fractal BindingController implementation
                                                                                           main                                    cSRC : Source
                                                                                                                                                                         ICharacterStream                      cScanner : Scanner
        // configuration concern
        public String[] listFc () { return new String[] {"scanner"}; }                                                                                                                         source
        public Object lookupFc (String itfName) {                                                                     in                                        access




                                                                                &
          if (itfName.equals("scanner")) {return scanner;}                                        ISourceManager
          else return null;                                                                                                                                                                    tokens
        }
        public void bindFc(String itfName, Object itfValue) {
          if (itfName.equals("scanner") { scanner = (ITokenStream)itfValue; }
                                                                                                     ICodeGen                                                                       ITokenScanner
        }
        public void unbindFc(String itfName){
          if (itfName.equals("scanner") { scanner = null; }                                                        cVG : CodeGenerator
        }                                                                                                                                                   IAST                                    cParser : Parser
        // functional concern
                                                                                                       main                                        ast                               scanner

         public AST-Node getRoot {
           return expression();
         }                                                                                                                                                                            ast
       .......
         }




                      Combine a modeling (architecture description) language
                      and a programming language
What we are doing?             Component-based programming                  Scl             Exil             Summarize




W HAT WE ARE DOING ? - A PPROACH

              Our approach: components
              Applying component-paradigm into a programming
              language
              With such a language:
                     design components - design for reuse
                     design applications using components - design by reuse

       “A software component is a unit of composition with contractually
          specified interfaces and explicit context dependencies only. A
      software component can be deployed independently and is subject to
                          composition by third parties”
       Szyperski C. Component software: beyond object-oriented programming. 2nd ed., Reading, MA: Addison-Wesley;
                                                           2002
What we are doing?                        Component-based programming                                       Scl                          Exil                  Summarize




I N GENERAL


        service hello()   service hello() {
                            cHellloer sayHello.
                                                                                      ExilHelloerApp
                          }
                                                                                                   service print(string)
                                                                                                   service clear()
            helloer
                                                                                                                           cPrinter : ExilTranscriptPrinter
                                                           cHelloer : ExilHelloer
                                       helloer                                                                     printer
                                                                                         printer                                  service print(s) {
                                                 service sayHello() {                                                                Transcript show: s; cr.
                                                   printer print: #('Hello World').                                               }
                                                 }
                                                                                                                                  service clear() {
                  service sayHello()
                                                                                                                                     Transcript clear.
                                                                                                                                  }




               Explicit external contract with an environment
                          requirements - what is demanded from the environment
                          provisions - what is offered to the environment
               Explicit architecture
What we are doing?         Component-based programming   Scl     Exil   Summarize




S CL - O VERVIEW 1



              Scl - Simple Component-oriented language
              Invented by Luc Fabresse (presented in ESUG’06)
              E XIL extends Scl towards to a modeling language

                     !"#$%&'$()*+!"#$+,"#$-)$$.)*
                           %&'"()*+$+/"#$012345$)60-)$$.7.*$(/8
                           *",-.*"/0)*'1$+,!,9*':;)*8<
                           2*)3./"/0)*'1$+=!,-)$$.)*0>,!,63?-)$$.+88@
What we are doing?          Component-based programming    Scl            Exil   Summarize




S CL - O VERVIEW 2

              Component
                     Black box
                     Ports described by interfaces
                     Provides and requires services
              Port
                     Unidirectional interaction point
                     Plug
              Service
                     Functionality
                     Like a method or a set of methods
              Interface
                     Describes the valid uses of a port
                     Service signatures sets, protocols, contracts, ...
What we are doing?         Component-based programming   Scl   Exil   Summarize




E XIL - O VERVIEW


       Component = instance of
       descriptor
       Reusable interfaces
       Ports
              described by list of services
              or by interfaces
              roles
                     provided
                     required
       Connection
       Internal components
What we are doing?         Component-based programming   Scl   Exil   Summarize




E XIL - N EW F EATURES

to support modeling
     Explicit architecture
              extracting architecture from
              the code
       Inheritance
              sub-descriptors: a descriptor
              may extend an another
              descriptor
              extension and specialization
              of:
                     Ports
                     Services
                     Internal components &
                     Connections
What we are doing?                                 Component-based programming                                            Scl                                             Exil               Summarize




E XIL - I NHERITANCE
                              problem with additional requirements & substitution


                                                                                                        Person
                                                                        IPerson
                                                                                                                                                                            IAccommodation
                                                                                                          def service1
                                                                                                          def service2
                                                                             person


                                                                 IStudent                                                                                                   accommodation
                                           Brain
                                                                                               heart->Heart                       IControll
                                                                                       IPump

                          controller                                         student    pump                                muscles                                              IPerson
            IControll

                          memory                                  IMemory                                                                     brain->Brain                   friend
                                                                                                                     controller
                                                                                                    IControll

                                                                                                                      memory
                    IMemory                                                 memory
                                                                                                                IMemory




                                                                                                        Person
                                                                        IPerson
                                                                                                                                                                            IAccommodation
                                                                                                          def service1
                                                                                                          def service2
                                                                             person


                                                     ICoffein
                                                                 IStudent                                                                                                   accommodation
                        OverclockedBrain
                                                                                               heart->Heart                       IControll
                                                                                       IPump
                                                       cafe                  student    pump                                muscles                                              IPerson
                                                                                                                                                             ICoffein




                                                                  IMemory                                                                 brain->Brain                       friend
                                                                                                                     controller
                                                                                                   IControll
                                                                                                                                                                   cafe
                                                                                                                      memory
                                                                            memory
                                                                                                                IMemory
What we are doing?        Component-based programming   Scl   Exil     Summarize




E XIL - I MPLEMENTATION


              E XIL parser uses PetitParser framework and PetitSmalltalk
              parser
              Compiler - visitor pattern
              Core
                     ExilComponent class
                     ExilInterface class
              image can be downloaded here:
              http://www.lirmm.fr/˜spacek/exil (source codes -
              SqueakSource download is coming)
What we are doing?                      Component-based programming                                      Scl                       Exil                       Summarize




E XIL - L IVE EXAMPLE




        service hello()   service hello() {
                            cHellloer sayHello.
                                                                                      ExilHelloerApp
                          }
                                                                                                   service print(string)
                                                                                                   service clear()
            helloer
                                                                                                                           cPrinter : ExilTranscriptPrinter
                                                           cHelloer : ExilHelloer
                                       helloer                                                                     printer
                                                                                         printer                                  service print(s) {
                                                 service sayHello() {                                                                Transcript show: s; cr.
                                                   printer print: #('Hello World').                                               }
                                                 }
                                                                                                                                  service clear() {
                  service sayHello()
                                                                                                                                     Transcript clear.
                                                                                                                                  }
What we are doing?      Component-based programming   Scl   Exil   Summarize




E XIL - F UTURE WORK




              Reflexivity level - goal = write model analysis and
              transformations in E XIL
              Architecture constrains
              Visual development
What we are doing?     Component-based programming   Scl   Exil       Summarize




S UMMARIZE


      E XIL
              is a component-oriented language
              which merges modeling and programming
              and brings component-paradigm closer to the Smalltalk
              users
What we are doing?     Component-based programming   Scl   Exil       Summarize




S UMMARIZE


      E XIL
              is a component-oriented language
              which merges modeling and programming
              and brings component-paradigm closer to the Smalltalk
              users


                                       Thank you

More Related Content

PDF
Oop10 6
PDF
Qe Reference
PDF
C++aptitude questions and answers
PDF
"Why is there no artificial intelligence yet?" Or, analysis of CNTK tool kit ...
ODP
Pysmbc Python C Modules are Easy
PPTX
PPT
STL ALGORITHMS
PDF
Intel IPP Samples for Windows - error correction
Oop10 6
Qe Reference
C++aptitude questions and answers
"Why is there no artificial intelligence yet?" Or, analysis of CNTK tool kit ...
Pysmbc Python C Modules are Easy
STL ALGORITHMS
Intel IPP Samples for Windows - error correction

What's hot (20)

PDF
A fresh eye on Oracle VM VirtualBox
PDF
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1
PDF
Dusting the globe: analysis of NASA World Wind project
PPTX
What's New In C# 5.0 - Rumos InsideOut
PDF
PVS-Studio vs Chromium - Continuation
PDF
Logic-based program transformation in symbiosis with Eclipse
PDF
Le langage rust
PDF
Native interfaces for R
PDF
Modern c++ (C++ 11/14)
PDF
MeCC: Memory Comparison-based Code Clone Detector
PPTX
Whats New In C# 4 0 - NetPonto
PDF
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
PPTX
Idiomatic C++
PDF
Ekon bestof rtl_delphi
ODP
OpenGurukul : Language : C++ Programming
PDF
Linux version of PVS-Studio couldn't help checking CodeLite
PPTX
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
PDF
A Spin-off: CryEngine 3 SDK Checked with CppCat
PPTX
PDF
Going On with the Check of Geant4
A fresh eye on Oracle VM VirtualBox
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1
Dusting the globe: analysis of NASA World Wind project
What's New In C# 5.0 - Rumos InsideOut
PVS-Studio vs Chromium - Continuation
Logic-based program transformation in symbiosis with Eclipse
Le langage rust
Native interfaces for R
Modern c++ (C++ 11/14)
MeCC: Memory Comparison-based Code Clone Detector
Whats New In C# 4 0 - NetPonto
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Idiomatic C++
Ekon bestof rtl_delphi
OpenGurukul : Language : C++ Programming
Linux version of PVS-Studio couldn't help checking CodeLite
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
A Spin-off: CryEngine 3 SDK Checked with CppCat
Going On with the Check of Geant4
Ad

Viewers also liked (20)

PDF
Building end user applications
PDF
Getting Off the Island
PDF
Testing for Real
PDF
From Print Design to Web Design
PDF
Diagnosis and semi-automatic correction of detected design inconsistencies in...
PDF
Bifrost
PDF
VASmalltalk, Today and Tomorrow
PPSX
Retrobjects - Fun with C64 and NES
PDF
Listado de premiados bacchus 2014
DOCX
obrien_T_resume
PPS
Rogerio e Marcelo a34
PDF
Deut 065-slides
PDF
Bildergalerie Technology Fast 50 2015
PDF
How Much You Need To Save For Retirement
DOCX
Dragi tiens saradnici akcija iner dupla celuloza-likopen
PDF
Jyoti Tyagi Letter of Experience _FoodCloud
PPT
slides from personal tax
DOC
CV Shaji
PDF
cswattsresume616
PDF
I bølgen blå - Skagens Museum
Building end user applications
Getting Off the Island
Testing for Real
From Print Design to Web Design
Diagnosis and semi-automatic correction of detected design inconsistencies in...
Bifrost
VASmalltalk, Today and Tomorrow
Retrobjects - Fun with C64 and NES
Listado de premiados bacchus 2014
obrien_T_resume
Rogerio e Marcelo a34
Deut 065-slides
Bildergalerie Technology Fast 50 2015
How Much You Need To Save For Retirement
Dragi tiens saradnici akcija iner dupla celuloza-likopen
Jyoti Tyagi Letter of Experience _FoodCloud
slides from personal tax
CV Shaji
cswattsresume616
I bølgen blå - Skagens Museum
Ad

Similar to Smalltalk implementation of EXIL, a Component-based Programming Language (20)

PPTX
Project Roslyn: Exposing the C# and VB compiler’s code analysis
PDF
Design and Concepts of Android Graphics
PPTX
PDF
clang-intro
PDF
Mixing Source and Bytecode: A Case for Compilation By Normalization (OOPSLA 2...
KEY
Xbase - Implementing Domain-Specific Languages for Java
PDF
Designpatternscard
PDF
test
PPT
No Heap Remote Objects for Distributed real-time Java
PDF
A Better Python for the JVM
PDF
MeCC: Memory Comparison based Clone Detector
ZIP
Inside PHP [OSCON 2012]
KEY
Opal compiler
PPT
COM and DCOM
PDF
Programming Android Application in Scala.
PDF
Android IPC Mechanism
PDF
Objective-C @ ITIS
PDF
Data access layer and schema definitions
PDF
Extending and scripting PDT
PDF
Virtual machine and javascript engine
Project Roslyn: Exposing the C# and VB compiler’s code analysis
Design and Concepts of Android Graphics
clang-intro
Mixing Source and Bytecode: A Case for Compilation By Normalization (OOPSLA 2...
Xbase - Implementing Domain-Specific Languages for Java
Designpatternscard
test
No Heap Remote Objects for Distributed real-time Java
A Better Python for the JVM
MeCC: Memory Comparison based Clone Detector
Inside PHP [OSCON 2012]
Opal compiler
COM and DCOM
Programming Android Application in Scala.
Android IPC Mechanism
Objective-C @ ITIS
Data access layer and schema definitions
Extending and scripting PDT
Virtual machine and javascript engine

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PPTX
Cloud computing and distributed systems.
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
A Presentation on Artificial Intelligence
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Network Security Unit 5.pdf for BCA BBA.
Electronic commerce courselecture one. Pdf
Cloud computing and distributed systems.
Building Integrated photovoltaic BIPV_UPV.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
A comparative analysis of optical character recognition models for extracting...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Review of recent advances in non-invasive hemoglobin estimation
Unlocking AI with Model Context Protocol (MCP)
Per capita expenditure prediction using model stacking based on satellite ima...
A Presentation on Artificial Intelligence
sap open course for s4hana steps from ECC to s4
Spectral efficient network and resource selection model in 5G networks
NewMind AI Weekly Chronicles - August'25-Week II
Chapter 3 Spatial Domain Image Processing.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Big Data Technologies - Introduction.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Reach Out and Touch Someone: Haptics and Empathic Computing
Network Security Unit 5.pdf for BCA BBA.

Smalltalk implementation of EXIL, a Component-based Programming Language

  • 1. What we are doing? Component-based programming Scl Exil Summarize A Smalltalk implementation of E XIL, a Component-based Programming Language ˇ c Petr Spaˇ ek in cooperation with Christophe Dony, Chouki Tibermacine and Luc Fabresse LIRMM, University of Montpellier 2 petr.spacek@lirmm.fr 23rd of August, 2011
  • 2. What we are doing? Component-based programming Scl Exil Summarize W HAT WE ARE DOING ? - M OTIVATION public class CParser implements IAST, BindingController { private ITokenStream scanner; ICompile Compiler Token currentToken; // Fractal BindingController implementation main cSRC : Source ICharacterStream cScanner : Scanner // configuration concern public String[] listFc () { return new String[] {"scanner"}; } source public Object lookupFc (String itfName) { in access & if (itfName.equals("scanner")) {return scanner;} ISourceManager else return null; tokens } public void bindFc(String itfName, Object itfValue) { if (itfName.equals("scanner") { scanner = (ITokenStream)itfValue; } ICodeGen ITokenScanner } public void unbindFc(String itfName){ if (itfName.equals("scanner") { scanner = null; } cVG : CodeGenerator } IAST cParser : Parser // functional concern main ast scanner public AST-Node getRoot { return expression(); } ast ....... } Combine a modeling (architecture description) language and a programming language
  • 3. What we are doing? Component-based programming Scl Exil Summarize W HAT WE ARE DOING ? - A PPROACH Our approach: components Applying component-paradigm into a programming language With such a language: design components - design for reuse design applications using components - design by reuse “A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties” Szyperski C. Component software: beyond object-oriented programming. 2nd ed., Reading, MA: Addison-Wesley; 2002
  • 4. What we are doing? Component-based programming Scl Exil Summarize I N GENERAL service hello() service hello() { cHellloer sayHello. ExilHelloerApp } service print(string) service clear() helloer cPrinter : ExilTranscriptPrinter cHelloer : ExilHelloer helloer printer printer service print(s) { service sayHello() { Transcript show: s; cr. printer print: #('Hello World'). } } service clear() { service sayHello() Transcript clear. } Explicit external contract with an environment requirements - what is demanded from the environment provisions - what is offered to the environment Explicit architecture
  • 5. What we are doing? Component-based programming Scl Exil Summarize S CL - O VERVIEW 1 Scl - Simple Component-oriented language Invented by Luc Fabresse (presented in ESUG’06) E XIL extends Scl towards to a modeling language !"#$%&'$()*+!"#$+,"#$-)$$.)* %&'"()*+$+/"#$012345$)60-)$$.7.*$(/8 *",-.*"/0)*'1$+,!,9*':;)*8< 2*)3./"/0)*'1$+=!,-)$$.)*0>,!,63?-)$$.+88@
  • 6. What we are doing? Component-based programming Scl Exil Summarize S CL - O VERVIEW 2 Component Black box Ports described by interfaces Provides and requires services Port Unidirectional interaction point Plug Service Functionality Like a method or a set of methods Interface Describes the valid uses of a port Service signatures sets, protocols, contracts, ...
  • 7. What we are doing? Component-based programming Scl Exil Summarize E XIL - O VERVIEW Component = instance of descriptor Reusable interfaces Ports described by list of services or by interfaces roles provided required Connection Internal components
  • 8. What we are doing? Component-based programming Scl Exil Summarize E XIL - N EW F EATURES to support modeling Explicit architecture extracting architecture from the code Inheritance sub-descriptors: a descriptor may extend an another descriptor extension and specialization of: Ports Services Internal components & Connections
  • 9. What we are doing? Component-based programming Scl Exil Summarize E XIL - I NHERITANCE problem with additional requirements & substitution Person IPerson IAccommodation def service1 def service2 person IStudent accommodation Brain heart->Heart IControll IPump controller student pump muscles IPerson IControll memory IMemory brain->Brain friend controller IControll memory IMemory memory IMemory Person IPerson IAccommodation def service1 def service2 person ICoffein IStudent accommodation OverclockedBrain heart->Heart IControll IPump cafe student pump muscles IPerson ICoffein IMemory brain->Brain friend controller IControll cafe memory memory IMemory
  • 10. What we are doing? Component-based programming Scl Exil Summarize E XIL - I MPLEMENTATION E XIL parser uses PetitParser framework and PetitSmalltalk parser Compiler - visitor pattern Core ExilComponent class ExilInterface class image can be downloaded here: http://www.lirmm.fr/˜spacek/exil (source codes - SqueakSource download is coming)
  • 11. What we are doing? Component-based programming Scl Exil Summarize E XIL - L IVE EXAMPLE service hello() service hello() { cHellloer sayHello. ExilHelloerApp } service print(string) service clear() helloer cPrinter : ExilTranscriptPrinter cHelloer : ExilHelloer helloer printer printer service print(s) { service sayHello() { Transcript show: s; cr. printer print: #('Hello World'). } } service clear() { service sayHello() Transcript clear. }
  • 12. What we are doing? Component-based programming Scl Exil Summarize E XIL - F UTURE WORK Reflexivity level - goal = write model analysis and transformations in E XIL Architecture constrains Visual development
  • 13. What we are doing? Component-based programming Scl Exil Summarize S UMMARIZE E XIL is a component-oriented language which merges modeling and programming and brings component-paradigm closer to the Smalltalk users
  • 14. What we are doing? Component-based programming Scl Exil Summarize S UMMARIZE E XIL is a component-oriented language which merges modeling and programming and brings component-paradigm closer to the Smalltalk users Thank you