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

Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status Message
Lukas 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

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
 
+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...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

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...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
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...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
+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...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
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...
 
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
 

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 ,@ `@