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 P...
1. Minimal Syntax
2. Dynamic Semantics
3. Reflective Facilities
4. Homogeneous Language
5. Homogeneous Tools
6. On-the-fly P...
1
    Minimal
    Syntax
Abstract Type Declaration            Default Binding Resolver     Method Declaration            Statement

Annotation     ...
^í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...
Re p re s e n t s A
                              ST o f
         e nclose d e x p
                            re s s i o ...
``(`,(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
Why Smalltalk Wins the Host Languages Shootout
Why Smalltalk Wins the Host Languages Shootout
Nächste SlideShare
Wird geladen in …5
×

Why Smalltalk Wins the Host Languages Shootout

810 Aufrufe

Veröffentlicht am

Integration of multiple languages into each other and into an existing development environment is a difficult task. As a consequence, developers often end up using only internal DSLs that strictly rely on the constraints imposed by the host language. Infrastructures do exist to mix languages, but they often do it at the price of losing the development tools of the host language. Instead of inventing a completely new infrastructure, our solution is to integrate new languages deeply into the existing host environment and reuse the infrastructure offered by it. In this presentation we show why Smalltalk is the best practical choice for such a host language.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
810
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
7
Aktionen
Geteilt
0
Downloads
9
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Why Smalltalk Wins the Host Languages Shootout

  1. 1. Why Smalltalk Wins the Host Languages Shutout Lukas Renggli and Tudor Gîrba http://scg.unibe.ch/research/helvetia
  2. 2. Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
  3. 3. Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
  4. 4. Multiple Context Specific Languages
  5. 5. Homogeneous Language Integration
  6. 6. Homogeneous Tool Integration
  7. 7. ‣ C++ ‣ C# ‣ Java ‣ Javascript ‣ Lisp ‣ Ruby ‣ Smalltalk
  8. 8. 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools 6. On-the-fly Programming
  9. 9. 1. Minimal Syntax 2. Dynamic Semantics 3. Reflective Facilities 4. Homogeneous Language 5. Homogeneous Tools 6. On-the-fly Programming
  10. 10. 1 Minimal Syntax
  11. 11. 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
  12. 12. ^íoã iáëí
  13. 13. Method Block Pragma Return Sequence Variable Message Assignment Cascade Literal
  14. 14. /.+@.+..+/
  15. 15. 0101001011
  16. 16. 3 Reflective Facilities
  17. 17. erco ol Üb Reflection
  18. 18. t er co ol U n Meta-Programming
  19. 19. Parser parseExpression: aString , ' asRegex'
  20. 20. MessageNode receiver: (LiteralNode value: aString) selector: #asRegex
  21. 21. ``(`,(aString) asRegex)
  22. 22. qu ot e/ Q ua si nq uo te U ``(`,(aString) asRegex)
  23. 23. qu ot e/ Q ua si nq uo te U ``(`,(aString) asRegex) LISPe r k no w t h is
  24. 24. 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)
  25. 25. ``(`,(aString) asRegex) p re s s io n e x e c u te d Ex a t r un - t i me
  26. 26. Lisp Smalltalk Quasiquote ` `` Unquote , `, Splice ,@ `@
  27. 27. Standard
  28. 28. He vetia scg.unibe.ch/research/helvetia

×