Experiments with Pro-Active Declarative Meta-Programming

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Experiments with Pro-Active Declarative Meta-Programming - Presentation Transcript

    1. Experiments with Pro-Active Declarative Meta-Programming Verónica Uquillas Gómez Andy Kellens Kris Gybels Theo D’Hondt International Workshop on Smalltalk Technologies Software Languages Lab 31st of August 2009, Brest - France Vrije Universiteit Brussel ESUG 2009 Belgium
    2. Problem   Developer-driven ( pro-active)   Snapshot-based reasoning ( time)
    3. SOUL: Smalltalk Open Unification Language   Query language   Prolog-like   Smalltalk, Java, C(++), Cobol class(?class) if member(?class, [Smalltalk allClasses])
    4. PARACHUT: Programming And Reasoning About CHanges Using Time if subclassOf(?subclass, ?superclass), …. Ch1 Ch2 Ch3 Chn TIME …
    5. Backward Chaining vs. Forward Chaining Goal-driven Data-driven   More possible start states or goal states?   What kind of events triggers problem-solving?
    6. Example: hash – equal rule “re-implementing the = method implies re-implementing the hash method” classNeedsHash(?class) if   class methodInClass(?class, =),   instanceVariableInClass not(methodInClass(?class, hash))   methodInClass   methodCallsMethod classNeedsEqual(?class) if   classInPackage methodInClass(?class, hash),   subclassOf not(methodInClass(?class, =))   classInHierarchyOf
    7. PARACHUT: defining the declarative queries
    8. PARACHUT: outputs to developers (I)
    9. PARACHUT: outputs to developers (II)
    10. Other Examples   Pulsar class pattern   Possible refactoring opportunities
    11. Pulsar Class Pattern Pulsar class TIME pulsar(?class) if pulsar(?class, ?len3, ?len2, ?len1) pulsar(?class, ?len3, ?len2, ?len1) if allConsecutiveSizes(?class, ?len3, ?len2, ?len1), escape(?val, [(?len1 * 2) = ?len2 and:[ ?len1 = ?len3]])
    12. Detecting possible refactoring opportunities duplicateSelector(?classA, ?classB, ?method) if addedMethodInClass(?classB, ?method), mostrecent(addedMethodInClass(?classA, ?method)) refactoringOpportunity(?superclass, ?method) if duplicatedSelector(?classA, ?classB, ?method), subclassOf(?classA, ?superclass), subclassOf(?classB, ?superclass), not(addedMethodInClass(?superclass, ?method))
    13. Conclusions if subclassOf(?subclass, ?superclass), …. Verónica Uquillas Gómez vuquilla@vub.ac.be … Ch1 Ch2 Ch3 Chn TIME

    + ESUGESUG, 3 months ago

    custom

    136 views, 0 favs, 0 embeds more stats

    Experiments with Pro-Active Declarative Meta-Progra more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 136
      • 136 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 1
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories