SlideShare a Scribd company logo
1 of 30
Download to read offline
Why Smalltalk Wins the
Host Languages Shutout
     Lukas Renggli and Tudor Gîrba
  http://scg.unibe.ch/research/helvetia
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Multiple Context
Specific Languages
Homogeneous
Language Integration
Homogeneous
Tool Integration
‣ C++
‣ C#
‣ Java
‣ Javascript
‣ Lisp
‣ Ruby
‣ Smalltalk
1. Minimal Syntax
2. Dynamic Semantics
3. Reflective Facilities
4. Homogeneous Language
5. Homogeneous Tools
6. On-the-fly Programming
1. Minimal Syntax
2. Dynamic Semantics
3. Reflective Facilities
4. Homogeneous Language
5. Homogeneous Tools
6. On-the-fly Programming
1
    Minimal
    Syntax
Abstract Type Declaration            Default Binding Resolver     Method Declaration            Statement

Annotation                           Default Comment Mapper       Method Invocation             String Literal

Annotation Binding                   Default Value Pair Binding   Method Ref                    Structural Property Descriptor

Annotation Type Declaration          Do Statement                 Method Ref Parameter          Super Constructor Invocation

Annotation Type Member Declaration   Doc Comment Parser           Modifier                       Super Field Access

Anonymous Class Declaration          Empty Statement              Name                          Super Method Invocation

Array Access                         Enhanced For Statement       Node Event Handler            Switch Case

Array Creation                       Enum Constant Declaration    Node Searcher                 Switch Statement

Array Initializer                    Enum Declaration             Normal Annotation             Synchronized Statement

Array Type                           Expression                   Null Literal                  Tag Element

Assert Statement                     Expression Statement         Number Literal                Text Element

Assignment                           Field Access                 Package Binding               This Expression

Block                                Field Declaration            Package Declaration           Throw Statement

Block Comment                        For Statement                Parameterized Type            Try Statement

Body Declaration                     If Statement                 Parenthesized Expression      Type

Boolean Literal                      Import Declaration           Postfix Expression             Type Binding

Break Statement                      Infix Expression              Prefix Expression              Type Declaration

Cast Expression                      Initializer                  Primitive Type                Type Declaration Statement

Catch Clause                         Instanceof Expression        Qualified Name                 Type Literal

Character Literal                    Javadoc                      Qualified Type                 Type Parameter

Child List Property Descriptor       Labeled Statement            Recovered Type Binding        Variable Binding

Child Property Descriptor            Line Comment                 Recovered Variable Binding    Variable Declaration

Class Instance Creation              Marker Annotation            Return Statement              Variable Declaration Expression

Comment                              Member Ref                   Simple Name                   Variable Declaration Fragment

Compilation Unit                     Member Value Pair            Simple Property Descriptor    Variable Declaration Statement

Conditional Expression               Member Value Pair Binding    Simple Type                   While Statement

Constructor Invocation               Message                      Single Member Annotation      Wildcard Type

Continue Statement                   Method Binding               Single Variable Declaration
^íoã
 iáëí
Method     Block
Pragma     Return
Sequence   Variable
Message    Assignment
Cascade    Literal
/.+@.+..+/
0101001011
3
    Reflective
     Facilities
erco ol
Üb
        Reflection
t er co ol
U n
 Meta-Programming
Parser parseExpression:
	 aString , ' asRegex'
MessageNode
	 receiver: (LiteralNode value: aString)
	 selector: #asRegex
``(`,(aString) asRegex)
qu ot e/
Q ua si
      nq uo te
   U
       ``(`,(aString) asRegex)
qu ot e/
Q ua si
      nq uo te
   U
       ``(`,(aString) asRegex)


                       LISPe r
                    k no w t h
                               is
Re p re s e n t s A
                              ST o f
         e nclose d e x p
                            re s s i o n

``(`,(aString) asRegex)
``(`,(aString) asRegex)



           p re s s io n e x  e c u te d
        Ex
              a t r un  - t i me
Lisp   Smalltalk


Quasiquote    `        ``

Unquote       ,        `,

Splice       ,@        `@
Standard
He vetia
scg.unibe.ch/research/helvetia

More Related Content

More from Lukas Renggli

Domain-Specific Program Checking
Domain-Specific Program CheckingDomain-Specific Program Checking
Domain-Specific Program CheckingLukas Renggli
 
Embedding Languages Without Breaking Tools
Embedding Languages Without Breaking ToolsEmbedding Languages Without Breaking Tools
Embedding Languages Without Breaking ToolsLukas Renggli
 
Language Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language ChangesLanguage Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language ChangesLukas Renggli
 
Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status MessageLukas Renggli
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkLukas Renggli
 
Seaside - On not getting bogged down
Seaside - On not getting bogged downSeaside - On not getting bogged down
Seaside - On not getting bogged downLukas Renggli
 
Seaside - Past, Present and Future
Seaside - Past, Present and FutureSeaside - Past, Present and Future
Seaside - Past, Present and FutureLukas Renggli
 
Magritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersMagritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersLukas Renggli
 
Transactional Memory for Smalltalk
Transactional Memory for SmalltalkTransactional Memory for Smalltalk
Transactional Memory for SmalltalkLukas Renggli
 
Seaside - Web Development As You Like It
Seaside - Web Development As You Like ItSeaside - Web Development As You Like It
Seaside - Web Development As You Like ItLukas Renggli
 
5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of SeasideLukas Renggli
 

More from Lukas Renggli (14)

Domain-Specific Program Checking
Domain-Specific Program CheckingDomain-Specific Program Checking
Domain-Specific Program Checking
 
Embedding Languages Without Breaking Tools
Embedding Languages Without Breaking ToolsEmbedding Languages Without Breaking Tools
Embedding Languages Without Breaking Tools
 
Language Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language ChangesLanguage Boxes — Bending the Host Language with Modular Language Changes
Language Boxes — Bending the Host Language with Modular Language Changes
 
jQuery for Seaside
jQuery for SeasidejQuery for Seaside
jQuery for Seaside
 
Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status Message
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
Magritte Blitz
Magritte BlitzMagritte Blitz
Magritte Blitz
 
Seaside - On not getting bogged down
Seaside - On not getting bogged downSeaside - On not getting bogged down
Seaside - On not getting bogged down
 
Magritte
MagritteMagritte
Magritte
 
Seaside - Past, Present and Future
Seaside - Past, Present and FutureSeaside - Past, Present and Future
Seaside - Past, Present and Future
 
Magritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersMagritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End Users
 
Transactional Memory for Smalltalk
Transactional Memory for SmalltalkTransactional Memory for Smalltalk
Transactional Memory for Smalltalk
 
Seaside - Web Development As You Like It
Seaside - Web Development As You Like ItSeaside - Web Development As You Like It
Seaside - Web Development As You Like It
 
5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside
 

Recently uploaded

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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 DiscoveryTrustArc
 
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
 
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 SavingEdi Saputra
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
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...apidays
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
"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 ...Zilliz
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
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
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
"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 ...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Why Smalltalk Wins the Host Languages Shootout

  • 1. Why Smalltalk Wins the Host Languages Shutout Lukas Renggli and Tudor Gîrba http://scg.unibe.ch/research/helvetia
  • 2. Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
  • 3. Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
  • 7.
  • 8. ‣ C++ ‣ C# ‣ Java ‣ Javascript ‣ Lisp ‣ Ruby ‣ Smalltalk
  • 9. 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools 6. On-the-fly Programming
  • 10. 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools 6. On-the-fly Programming
  • 11. 1 Minimal Syntax
  • 12. Abstract Type Declaration Default Binding Resolver Method Declaration Statement Annotation Default Comment Mapper Method Invocation String Literal Annotation Binding Default Value Pair Binding Method Ref Structural Property Descriptor Annotation Type Declaration Do Statement Method Ref Parameter Super Constructor Invocation Annotation Type Member Declaration Doc Comment Parser Modifier Super Field Access Anonymous Class Declaration Empty Statement Name Super Method Invocation Array Access Enhanced For Statement Node Event Handler Switch Case Array Creation Enum Constant Declaration Node Searcher Switch Statement Array Initializer Enum Declaration Normal Annotation Synchronized Statement Array Type Expression Null Literal Tag Element Assert Statement Expression Statement Number Literal Text Element Assignment Field Access Package Binding This Expression Block Field Declaration Package Declaration Throw Statement Block Comment For Statement Parameterized Type Try Statement Body Declaration If Statement Parenthesized Expression Type Boolean Literal Import Declaration Postfix Expression Type Binding Break Statement Infix Expression Prefix Expression Type Declaration Cast Expression Initializer Primitive Type Type Declaration Statement Catch Clause Instanceof Expression Qualified Name Type Literal Character Literal Javadoc Qualified Type Type Parameter Child List Property Descriptor Labeled Statement Recovered Type Binding Variable Binding Child Property Descriptor Line Comment Recovered Variable Binding Variable Declaration Class Instance Creation Marker Annotation Return Statement Variable Declaration Expression Comment Member Ref Simple Name Variable Declaration Fragment Compilation Unit Member Value Pair Simple Property Descriptor Variable Declaration Statement Conditional Expression Member Value Pair Binding Simple Type While Statement Constructor Invocation Message Single Member Annotation Wildcard Type Continue Statement Method Binding Single Variable Declaration
  • 14. Method Block Pragma Return Sequence Variable Message Assignment Cascade Literal
  • 16.
  • 18. 3 Reflective Facilities
  • 19. erco ol Üb Reflection
  • 20. t er co ol U n Meta-Programming
  • 22. MessageNode receiver: (LiteralNode value: aString) selector: #asRegex
  • 24. qu ot e/ Q ua si nq uo te U ``(`,(aString) asRegex)
  • 25. qu ot e/ Q ua si nq uo te U ``(`,(aString) asRegex) LISPe r k no w t h is
  • 26. Re p re s e n t s A ST o f e nclose d e x p re s s i o n ``(`,(aString) asRegex)
  • 27. ``(`,(aString) asRegex) p re s s io n e x e c u te d Ex a t r un - t i me
  • 28. Lisp Smalltalk Quasiquote ` `` Unquote , `, Splice ,@ `@