SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

A fresh eye on Oracle VM VirtualBox
A fresh eye on Oracle VM VirtualBoxA fresh eye on Oracle VM VirtualBox
A fresh eye on Oracle VM VirtualBoxPVS-Studio
 
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1PVS-Studio
 
Dusting the globe: analysis of NASA World Wind project
Dusting the globe: analysis of NASA World Wind projectDusting the globe: analysis of NASA World Wind project
Dusting the globe: analysis of NASA World Wind projectPVS-Studio
 
What's New In C# 5.0 - Rumos InsideOut
What's New In C# 5.0 - Rumos InsideOutWhat's New In C# 5.0 - Rumos InsideOut
What's New In C# 5.0 - Rumos InsideOutPaulo Morgado
 
PVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - ContinuationPVS-Studio vs Chromium - Continuation
PVS-Studio vs Chromium - ContinuationPVS-Studio
 
Logic-based program transformation in symbiosis with Eclipse
Logic-based program transformation in symbiosis with EclipseLogic-based program transformation in symbiosis with Eclipse
Logic-based program transformation in symbiosis with EclipseCoen De Roover
 
Native interfaces for R
Native interfaces for RNative interfaces for R
Native interfaces for RSeth Falcon
 
Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Modern c++ (C++ 11/14)
Modern c++ (C++ 11/14)Geeks Anonymes
 
MeCC: Memory Comparison-based Code Clone Detector
MeCC: Memory Comparison-based Code Clone DetectorMeCC: Memory Comparison-based Code Clone Detector
MeCC: Memory Comparison-based Code Clone Detector영범 정
 
Whats New In C# 4 0 - NetPonto
Whats New In C# 4 0 - NetPontoWhats New In C# 4 0 - NetPonto
Whats New In C# 4 0 - NetPontoPaulo Morgado
 
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2PVS-Studio
 
Ekon bestof rtl_delphi
Ekon bestof rtl_delphiEkon bestof rtl_delphi
Ekon bestof rtl_delphiMax Kleiner
 
OpenGurukul : Language : C++ Programming
OpenGurukul : Language : C++ ProgrammingOpenGurukul : Language : C++ Programming
OpenGurukul : Language : C++ ProgrammingOpen Gurukul
 
Linux version of PVS-Studio couldn't help checking CodeLite
Linux version of PVS-Studio couldn't help checking CodeLiteLinux version of PVS-Studio couldn't help checking CodeLite
Linux version of PVS-Studio couldn't help checking CodeLitePVS-Studio
 
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...DrupalMumbai
 
A Spin-off: CryEngine 3 SDK Checked with CppCat
A Spin-off: CryEngine 3 SDK Checked with CppCatA Spin-off: CryEngine 3 SDK Checked with CppCat
A Spin-off: CryEngine 3 SDK Checked with CppCatAndrey Karpov
 
Going On with the Check of Geant4
Going On with the Check of Geant4Going On with the Check of Geant4
Going On with the Check of Geant4Andrey Karpov
 

La actualidad más candente (20)

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

Destacado

Building end user applications
Building end user applicationsBuilding end user applications
Building end user applicationsESUG
 
Getting Off the Island
Getting Off the IslandGetting Off the Island
Getting Off the IslandESUG
 
Testing for Real
Testing for RealTesting for Real
Testing for RealESUG
 
From Print Design to Web Design
From Print Design to Web DesignFrom Print Design to Web Design
From Print Design to Web DesignESUG
 
Diagnosis and semi-automatic correction of detected design inconsistencies in...
Diagnosis and semi-automatic correction of detected design inconsistencies in...Diagnosis and semi-automatic correction of detected design inconsistencies in...
Diagnosis and semi-automatic correction of detected design inconsistencies in...ESUG
 
Bifrost
BifrostBifrost
BifrostESUG
 
VASmalltalk, Today and Tomorrow
VASmalltalk, Today and TomorrowVASmalltalk, Today and Tomorrow
VASmalltalk, Today and TomorrowESUG
 
Retrobjects - Fun with C64 and NES
Retrobjects - Fun with C64 and NESRetrobjects - Fun with C64 and NES
Retrobjects - Fun with C64 and NESESUG
 
Listado de premiados bacchus 2014
Listado de premiados bacchus 2014Listado de premiados bacchus 2014
Listado de premiados bacchus 2014Quelujo.es
 
Rogerio e Marcelo a34
Rogerio e Marcelo a34Rogerio e Marcelo a34
Rogerio e Marcelo a34Jossi Boyen
 
Bildergalerie Technology Fast 50 2015
Bildergalerie Technology Fast 50 2015Bildergalerie Technology Fast 50 2015
Bildergalerie Technology Fast 50 2015Deloitte Deutschland
 
How Much You Need To Save For Retirement
How Much You Need To Save For RetirementHow Much You Need To Save For Retirement
How Much You Need To Save For RetirementFinancial Wellness
 
Dragi tiens saradnici akcija iner dupla celuloza-likopen
Dragi tiens saradnici akcija iner dupla celuloza-likopenDragi tiens saradnici akcija iner dupla celuloza-likopen
Dragi tiens saradnici akcija iner dupla celuloza-likopenMilan Stanic
 
Jyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi Letter of Experience _FoodCloudJyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi Letter of Experience _FoodCloudJyoti Tyagi
 
slides from personal tax
slides from personal taxslides from personal tax
slides from personal taxDouglas Lui
 
CV Shaji
CV ShajiCV Shaji
CV ShajiShaji C
 
I bølgen blå - Skagens Museum
I bølgen blå - Skagens MuseumI bølgen blå - Skagens Museum
I bølgen blå - Skagens MuseumAnne Schnettler
 

Destacado (20)

Building end user applications
Building end user applicationsBuilding end user applications
Building end user applications
 
Getting Off the Island
Getting Off the IslandGetting Off the Island
Getting Off the Island
 
Testing for Real
Testing for RealTesting for Real
Testing for Real
 
From Print Design to Web Design
From Print Design to Web DesignFrom Print Design to Web Design
From Print Design to Web Design
 
Diagnosis and semi-automatic correction of detected design inconsistencies in...
Diagnosis and semi-automatic correction of detected design inconsistencies in...Diagnosis and semi-automatic correction of detected design inconsistencies in...
Diagnosis and semi-automatic correction of detected design inconsistencies in...
 
Bifrost
BifrostBifrost
Bifrost
 
VASmalltalk, Today and Tomorrow
VASmalltalk, Today and TomorrowVASmalltalk, Today and Tomorrow
VASmalltalk, Today and Tomorrow
 
Retrobjects - Fun with C64 and NES
Retrobjects - Fun with C64 and NESRetrobjects - Fun with C64 and NES
Retrobjects - Fun with C64 and NES
 
Listado de premiados bacchus 2014
Listado de premiados bacchus 2014Listado de premiados bacchus 2014
Listado de premiados bacchus 2014
 
obrien_T_resume
obrien_T_resumeobrien_T_resume
obrien_T_resume
 
Rogerio e Marcelo a34
Rogerio e Marcelo a34Rogerio e Marcelo a34
Rogerio e Marcelo a34
 
Deut 065-slides
Deut 065-slidesDeut 065-slides
Deut 065-slides
 
Bildergalerie Technology Fast 50 2015
Bildergalerie Technology Fast 50 2015Bildergalerie Technology Fast 50 2015
Bildergalerie Technology Fast 50 2015
 
How Much You Need To Save For Retirement
How Much You Need To Save For RetirementHow Much You Need To Save For Retirement
How Much You Need To Save For Retirement
 
Dragi tiens saradnici akcija iner dupla celuloza-likopen
Dragi tiens saradnici akcija iner dupla celuloza-likopenDragi tiens saradnici akcija iner dupla celuloza-likopen
Dragi tiens saradnici akcija iner dupla celuloza-likopen
 
Jyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi Letter of Experience _FoodCloudJyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi Letter of Experience _FoodCloud
 
slides from personal tax
slides from personal taxslides from personal tax
slides from personal tax
 
CV Shaji
CV ShajiCV Shaji
CV Shaji
 
cswattsresume616
cswattsresume616cswattsresume616
cswattsresume616
 
I bølgen blå - Skagens Museum
I bølgen blå - Skagens MuseumI bølgen blå - Skagens Museum
I bølgen blå - Skagens Museum
 

Similar a Smalltalk implementation of EXIL, a Component-based Programming Language

Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...ICSM 2011
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
 
Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Coen De Roover
 
1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir OverviewPTIHPA
 
Drilling the Async Library
Drilling the Async LibraryDrilling the Async Library
Drilling the Async LibraryKnoldus Inc.
 
Java 8 Lambda Built-in Functional Interfaces
Java 8 Lambda Built-in Functional InterfacesJava 8 Lambda Built-in Functional Interfaces
Java 8 Lambda Built-in Functional InterfacesGanesh Samarthyam
 
golang_getting_started.pptx
golang_getting_started.pptxgolang_getting_started.pptx
golang_getting_started.pptxGuy Komari
 
U Xml Defense presentation
U Xml Defense presentationU Xml Defense presentation
U Xml Defense presentationksp4186
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Marcel Bruch
 
Javascript internals
Javascript internalsJavascript internals
Javascript internalsNir Noy
 
ChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft EdgeChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft EdgePVS-Studio
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIJörn Guy Süß JGS
 
Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Max Kleiner
 
Deep Dumpster Diving
Deep Dumpster DivingDeep Dumpster Diving
Deep Dumpster DivingRonnBlack
 
Symbian OS - Memory Management
Symbian OS - Memory ManagementSymbian OS - Memory Management
Symbian OS - Memory ManagementAndreas Jakl
 
RxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMixRxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMixTracy Lee
 

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

Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012
 
1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir Overview
 
Drilling the Async Library
Drilling the Async LibraryDrilling the Async Library
Drilling the Async Library
 
Java 8 Lambda Built-in Functional Interfaces
Java 8 Lambda Built-in Functional InterfacesJava 8 Lambda Built-in Functional Interfaces
Java 8 Lambda Built-in Functional Interfaces
 
golang_getting_started.pptx
golang_getting_started.pptxgolang_getting_started.pptx
golang_getting_started.pptx
 
U Xml Defense presentation
U Xml Defense presentationU Xml Defense presentation
U Xml Defense presentation
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
 
Javascript internals
Javascript internalsJavascript internals
Javascript internals
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
ChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft EdgeChakraCore: analysis of JavaScript-engine for Microsoft Edge
ChakraCore: analysis of JavaScript-engine for Microsoft Edge
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2
 
Deep Dumpster Diving
Deep Dumpster DivingDeep Dumpster Diving
Deep Dumpster Diving
 
SRAVANByCPP
SRAVANByCPPSRAVANByCPP
SRAVANByCPP
 
OCP-SPIRIT-Final-v5
OCP-SPIRIT-Final-v5OCP-SPIRIT-Final-v5
OCP-SPIRIT-Final-v5
 
Symbian OS - Memory Management
Symbian OS - Memory ManagementSymbian OS - Memory Management
Symbian OS - Memory Management
 
RxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMixRxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMix
 

Más de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Más de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Último

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

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