SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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
Paulo Morgado
 
Ekon bestof rtl_delphi
Ekon bestof rtl_delphiEkon bestof rtl_delphi
Ekon bestof rtl_delphi
Max Kleiner
 

Mais procurados (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
 

Destaque

Bifrost
BifrostBifrost
Bifrost
ESUG
 
Listado de premiados bacchus 2014
Listado de premiados bacchus 2014Listado de premiados bacchus 2014
Listado de premiados bacchus 2014
Quelujo.es
 
Rogerio e Marcelo a34
Rogerio e Marcelo a34Rogerio e Marcelo a34
Rogerio e Marcelo a34
Jossi Boyen
 
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
Milan Stanic
 
Jyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi Letter of Experience _FoodCloudJyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi Letter of Experience _FoodCloud
Jyoti Tyagi
 
slides from personal tax
slides from personal taxslides from personal tax
slides from personal tax
Douglas Lui
 
CV Shaji
CV ShajiCV Shaji
CV Shaji
Shaji C
 
I bølgen blå - Skagens Museum
I bølgen blå - Skagens MuseumI bølgen blå - Skagens Museum
I bølgen blå - Skagens Museum
Anne Schnettler
 

Destaque (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
 

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

Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012
Coen De Roover
 
1 Vampir Overview
1 Vampir Overview1 Vampir Overview
1 Vampir Overview
PTIHPA
 
U Xml Defense presentation
U Xml Defense presentationU Xml Defense presentation
U Xml Defense presentation
ksp4186
 
Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2Pascal script maxbox_ekon_14_2
Pascal script maxbox_ekon_14_2
Max Kleiner
 

Semelhante 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
 

Mais 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 programming
ESUG
 
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
ESUG
 
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 results
ESUG
 
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
ESUG
 
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
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
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
ESUG
 
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
ESUG
 
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
ESUG
 
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
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
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
ESUG
 

Mais 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

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 

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