• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Why Smalltalk Wins the Host Languages Shootout
 

Why Smalltalk Wins the Host Languages Shootout

on

  • 954 views

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 ...

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.

Statistics

Views

Total Views
954
Views on SlideShare
949
Embed Views
5

Actions

Likes
1
Downloads
6
Comments
0

3 Embeds 5

http://www.slideshare.net 3
http://www.lmodules.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Why Smalltalk Wins the Host Languages Shootout Why Smalltalk Wins the Host Languages Shootout Presentation Transcript

    • 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