Enviar pesquisa
Carregar
Beyond Text Methods as Objects
•
1 gostou
•
474 visualizações
Título melhorado com IA
Marcus Denker
Seguir
"Beyond Text - Methods as Objects" Hasso Plattner Institute, Potsdam / Germany 11.04.2006
Leia menos
Leia mais
Tecnologia
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 25
Baixar agora
Baixar para ler offline
Recomendados
Unstuck
Unstuck
Marcus Denker
Reflectivity Demo
Reflectivity Demo
Marcus Denker
Demo: Reflectivity
Demo: Reflectivity
Marcus Denker
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
Marcus Denker
Interface between kernel and user space
Interface between kernel and user space
Susant Sahani
Introduction to netlink in linux kernel (english)
Introduction to netlink in linux kernel (english)
Sneeker Yeh
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Pratik Tambekar
Recomendados
Unstuck
Unstuck
Marcus Denker
Reflectivity Demo
Reflectivity Demo
Marcus Denker
Demo: Reflectivity
Demo: Reflectivity
Marcus Denker
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
Marcus Denker
Interface between kernel and user space
Interface between kernel and user space
Susant Sahani
Introduction to netlink in linux kernel (english)
Introduction to netlink in linux kernel (english)
Sneeker Yeh
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Pratik Tambekar
Linux scheduling and input and output
Linux scheduling and input and output
Sanidhya Chugh
Chapter 6 os
Chapter 6 os
AbDul ThaYyal
Kqueue : Generic Event notification
Kqueue : Generic Event notification
Mahendra M
A Deep Dive into Apache Cassandra for .NET Developers
A Deep Dive into Apache Cassandra for .NET Developers
Luke Tillman
JActor Cluster Platform
JActor Cluster Platform
Bill La Forge
GopherCon 2017 - Writing Networking Clients in Go: The Design & Implementati...
GopherCon 2017 - Writing Networking Clients in Go: The Design & Implementati...
wallyqs
Process scheduling linux
Process scheduling linux
Dr. C.V. Suresh Babu
Flink Architecture
Flink Architecture
Prasad Wali
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Pratik Tambekar
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Pratik Tambekar
Cassandra Architecture
Cassandra Architecture
Prasad Wali
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Saurav Haloi
Linux process management
Linux process management
Raghu nath
Multithreading
Multithreading
GowriLatha1
ProstgreSQLFailoverConfiguration
ProstgreSQLFailoverConfiguration
Suyog Shirgaonkar
Lcj pg sql-lt-kaigai
Lcj pg sql-lt-kaigai
Kohei KaiGai
Scheduler activations
Scheduler activations
Vin Voro
Scheduler Activations - Effective Kernel Support for the User-Level Managemen...
Scheduler Activations - Effective Kernel Support for the User-Level Managemen...
Kasun Gajasinghe
Chapter 3 chapter reading task
Chapter 3 chapter reading task
Grievous Humorist-Ilham
Client-centric Consistency Models
Client-centric Consistency Models
Ensar Basri Kahveci
Practical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time Debugging
lienhard
Software Evolution from the Field: an Experience Report
Software Evolution from the Field: an Experience Report
Marcus Denker
Mais conteúdo relacionado
Mais procurados
Linux scheduling and input and output
Linux scheduling and input and output
Sanidhya Chugh
Chapter 6 os
Chapter 6 os
AbDul ThaYyal
Kqueue : Generic Event notification
Kqueue : Generic Event notification
Mahendra M
A Deep Dive into Apache Cassandra for .NET Developers
A Deep Dive into Apache Cassandra for .NET Developers
Luke Tillman
JActor Cluster Platform
JActor Cluster Platform
Bill La Forge
GopherCon 2017 - Writing Networking Clients in Go: The Design & Implementati...
GopherCon 2017 - Writing Networking Clients in Go: The Design & Implementati...
wallyqs
Process scheduling linux
Process scheduling linux
Dr. C.V. Suresh Babu
Flink Architecture
Flink Architecture
Prasad Wali
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Pratik Tambekar
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Pratik Tambekar
Cassandra Architecture
Cassandra Architecture
Prasad Wali
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Saurav Haloi
Linux process management
Linux process management
Raghu nath
Multithreading
Multithreading
GowriLatha1
ProstgreSQLFailoverConfiguration
ProstgreSQLFailoverConfiguration
Suyog Shirgaonkar
Lcj pg sql-lt-kaigai
Lcj pg sql-lt-kaigai
Kohei KaiGai
Scheduler activations
Scheduler activations
Vin Voro
Scheduler Activations - Effective Kernel Support for the User-Level Managemen...
Scheduler Activations - Effective Kernel Support for the User-Level Managemen...
Kasun Gajasinghe
Chapter 3 chapter reading task
Chapter 3 chapter reading task
Grievous Humorist-Ilham
Client-centric Consistency Models
Client-centric Consistency Models
Ensar Basri Kahveci
Mais procurados
(20)
Linux scheduling and input and output
Linux scheduling and input and output
Chapter 6 os
Chapter 6 os
Kqueue : Generic Event notification
Kqueue : Generic Event notification
A Deep Dive into Apache Cassandra for .NET Developers
A Deep Dive into Apache Cassandra for .NET Developers
JActor Cluster Platform
JActor Cluster Platform
GopherCon 2017 - Writing Networking Clients in Go: The Design & Implementati...
GopherCon 2017 - Writing Networking Clients in Go: The Design & Implementati...
Process scheduling linux
Process scheduling linux
Flink Architecture
Flink Architecture
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
Cassandra Architecture
Cassandra Architecture
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Linux process management
Linux process management
Multithreading
Multithreading
ProstgreSQLFailoverConfiguration
ProstgreSQLFailoverConfiguration
Lcj pg sql-lt-kaigai
Lcj pg sql-lt-kaigai
Scheduler activations
Scheduler activations
Scheduler Activations - Effective Kernel Support for the User-Level Managemen...
Scheduler Activations - Effective Kernel Support for the User-Level Managemen...
Chapter 3 chapter reading task
Chapter 3 chapter reading task
Client-centric Consistency Models
Client-centric Consistency Models
Destaque
Practical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time Debugging
lienhard
Software Evolution from the Field: an Experience Report
Software Evolution from the Field: an Experience Report
Marcus Denker
Reflection
Reflection
Marcus Denker
Pharo ESUG
Pharo ESUG
Marcus Denker
Fosdem 13: Pharo 2.0 update
Fosdem 13: Pharo 2.0 update
Marcus Denker
Reflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond Smalltak
Marcus Denker
Destaque
(6)
Practical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time Debugging
Software Evolution from the Field: an Experience Report
Software Evolution from the Field: an Experience Report
Reflection
Reflection
Pharo ESUG
Pharo ESUG
Fosdem 13: Pharo 2.0 update
Fosdem 13: Pharo 2.0 update
Reflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond Smalltak
Semelhante a Beyond Text Methods as Objects
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Reflection and Context
Reflection and Context
Marcus Denker
Refactoring
Refactoring
Marcus Denker
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
ESUG
Sub-Method Reflection
Sub-Method Reflection
Marcus Denker
Presentation about my Research
Presentation about my Research
Marcus Denker
Sub-method Structural and Behavioral Reflection
Sub-method Structural and Behavioral Reflection
Marcus Denker
Talk: Practical, Pluggable Types
Talk: Practical, Pluggable Types
Marcus Denker
The Reflectivity
The Reflectivity
ESUG
Behavioral Reflection
Behavioral Reflection
Marcus Denker
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
Marcus Denker
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinks
Marcus Denker
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
Marcus Denker
Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"
LogeekNightUkraine
08 refactoring
08 refactoring
The World of Smalltalk
DDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVC
Andy Butland
Stoop 305-reflective programming5
Stoop 305-reflective programming5
The World of Smalltalk
Unit 5 design engineering ssad
Unit 5 design engineering ssad
Preeti Mishra
Lecture: Refactoring
Lecture: Refactoring
Marcus Denker
Typesafe spark- Zalando meetup
Typesafe spark- Zalando meetup
Stavros Kontopoulos
Semelhante a Beyond Text Methods as Objects
(20)
Lecture: Reflection
Lecture: Reflection
Reflection and Context
Reflection and Context
Refactoring
Refactoring
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
Sub-Method Reflection
Sub-Method Reflection
Presentation about my Research
Presentation about my Research
Sub-method Structural and Behavioral Reflection
Sub-method Structural and Behavioral Reflection
Talk: Practical, Pluggable Types
Talk: Practical, Pluggable Types
The Reflectivity
The Reflectivity
Behavioral Reflection
Behavioral Reflection
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"
08 refactoring
08 refactoring
DDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVC
Stoop 305-reflective programming5
Stoop 305-reflective programming5
Unit 5 design engineering ssad
Unit 5 design engineering ssad
Lecture: Refactoring
Lecture: Refactoring
Typesafe spark- Zalando meetup
Typesafe spark- Zalando meetup
Mais de Marcus Denker
Soil And Pharo
Soil And Pharo
Marcus Denker
ConstantBlocks in Pharo11
ConstantBlocks in Pharo11
Marcus Denker
Demo: Improved DoIt
Demo: Improved DoIt
Marcus Denker
First Class Variables as AST Annotations
First Class Variables as AST Annotations
Marcus Denker
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo Support
Marcus Denker
thisContext in the Debugger
thisContext in the Debugger
Marcus Denker
Variables in Pharo
Variables in Pharo
Marcus Denker
Improving code completion for Pharo
Improving code completion for Pharo
Marcus Denker
Slot Composition
Slot Composition
Marcus Denker
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinks
Marcus Denker
PHARO IOT
PHARO IOT
Marcus Denker
Open-Source: An Infinite Game
Open-Source: An Infinite Game
Marcus Denker
Lecture: MetaLinks
Lecture: MetaLinks
Marcus Denker
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to Pharo
Marcus Denker
Feedback Loops in Practice
Feedback Loops in Practice
Marcus Denker
Pharo6 - ESUG17
Pharo6 - ESUG17
Marcus Denker
Pharo6
Pharo6
Marcus Denker
Reflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond Smalltak
Marcus Denker
Perfection & Feedback Loops or: why worse is better
Perfection & Feedback Loops or: why worse is better
Marcus Denker
Dynamically Composing Collection Operations through Collection Promises
Dynamically Composing Collection Operations through Collection Promises
Marcus Denker
Mais de Marcus Denker
(20)
Soil And Pharo
Soil And Pharo
ConstantBlocks in Pharo11
ConstantBlocks in Pharo11
Demo: Improved DoIt
Demo: Improved DoIt
First Class Variables as AST Annotations
First Class Variables as AST Annotations
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo Support
thisContext in the Debugger
thisContext in the Debugger
Variables in Pharo
Variables in Pharo
Improving code completion for Pharo
Improving code completion for Pharo
Slot Composition
Slot Composition
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinks
PHARO IOT
PHARO IOT
Open-Source: An Infinite Game
Open-Source: An Infinite Game
Lecture: MetaLinks
Lecture: MetaLinks
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to Pharo
Feedback Loops in Practice
Feedback Loops in Practice
Pharo6 - ESUG17
Pharo6 - ESUG17
Pharo6
Pharo6
Reflection in Pharo: Beyond Smalltak
Reflection in Pharo: Beyond Smalltak
Perfection & Feedback Loops or: why worse is better
Perfection & Feedback Loops or: why worse is better
Dynamically Composing Collection Operations through Collection Promises
Dynamically Composing Collection Operations through Collection Promises
Último
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Pooja Nehwal
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
Softradix Technologies
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Scott Keck-Warren
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
naman860154
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Alan Dix
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
Neo4j
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Allon Mureinik
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
ThousandEyes
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Pixlogix Infotech
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
carlostorres15106
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Safe Software
Último
(20)
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Text Methods as Objects
1.
Beyond Text -
Methods As Objects Marcus Denker Software Composition Group University of Berne - Switzerland © Marcus Denker
2.
Software Composition Group University
of Berne > Lead by Oscar Nierstrasz and Stephane Ducasse > Overall Focus: Software Evolution > Two parts: — Evolution of Existing Systems (Reengineering) – Moose, CodeCrawler — Language Design for enabling Evolution – Traits – ClassBoxes > Forward and Reverse engineering viewpoints — We start to see many parallels / cross fertilization © Marcus Denker
3.
Roadmap >
Reflective Systems — Behavioral Reflection — Squeak’s Reflective capabilties > Methods in Squeak — Methods as Objects — Objects as Methods > ByteSurgeon and Geppetto — Usage — Problems > Beyond text © Marcus Denker
4.
Reflection >
Object oriented model of the system available inside the system — called “Introspection” — Java > Model is causally connected — Changing this model changes the system — called “Intercession” > Reflection = Introspection + Intercession © Marcus Denker
5.
Behavioral and Structural >
Structural reflection: changing structure — Add / remove classes and methods — Add / remove instance variables — Change inheritance relationship > Behavioral reflection: changing behavior — What is inheritance? — Hook into instance variable stores (e.g. persistence) > Both are related — change of structure changes behavior © Marcus Denker
6.
Usage: Why Reflection >
Structural reflection — Changing systems at runtime — Powerful development environments (no edit-compile-run) — Analysis (through introspection) > Behavioral reflection — Language experiments — Debugging — Dynamic analysis (tracing, visualization) — New language features (e.g. persistence) © Marcus Denker
7.
Squeak: A Reflective
System > Squeak: open source Smalltalk — Classes and methods are objects — Changing these objects changes the system (at runtime) > API for — adding / removing classes + methods — adding / removing instance variables — changing inheritance relationship © Marcus Denker
8.
Squeak: Behavioral Reflection >
Behavioral Reflection: only by changing methods > There is no API for introspection/intercession of — Instance variable access — Temp variable access — Message sending — Message lookup — Method execution © Marcus Denker
9.
Structural Reflection enables Behavioral
Reflection > General: Change of structure changes behavior > We can use the structural reflection API to provide behavioral reflection — Methods are objects — We can just replace them with our version that does what we want © Marcus Denker
10.
Behavioral Reflection: Howto? >
Method Wrappers (e.g. used by AspectS) — Gives access to before / after of method execution > Squeak’s Objects-As-Methods — we can install any object as a method that implements a simple protocol (#run:with:in) — used by ClassBoxes, FacetS — reifies method execution > Transformation of text / AST / Bytecode © Marcus Denker
11.
ByteSurgeon >
Framework for editing bytecode for Squeak — Like Javasist in Java, but: > Uses structural reflection to transform at runtime — Simple model: Inline code before / after a bytecode — Inlined code is normal smalltalk code — Not much knowledge about bytecode needed © Marcus Denker
12.
Example for Bytesurgeon
I > Goal: Logging Message send example self test. example Transcript show: ‘sending #test’. self test. © Marcus Denker
13.
Example for Bytesurgeon
II > Goal: Log message send > with ByteSurgeon: (Example>>#example) instrumentSend: [:send | send insertBefore: ‘Transcript show: ‘’sending #test’’ ‘. ] © Marcus Denker
14.
Uses of ByteSurgeon
at SCG > Implementation of fast MethodWrapper — 35 lines of code > Trace library for runtime tracing > Back-In-Time Debugger > Runtime analysis: test coverage © Marcus Denker
15.
Problems of ByteSurgeon >
Performance — Faster then code / AST — But installation takes some time > Abstractions too low level — Bytecode — We want to abstract away from bytecode and talk about instance variable access, message sending... — Not a good meta model © Marcus Denker
16.
Geppetto > Framework for
behavioral reflection > Build on top of ByteSurgeon — but abstracts from bytecode > Fine grained scoping of reflection — spatial (where? and what?) — temporal (when?) > Based on the Reflex Model (Eric Tanter) © Marcus Denker
17.
Geppetto: Big Picture
AOP Tracer ....... Geppetto ByteSurgeon Squeak © Marcus Denker
18.
Geppetto: Modell
Reflex (Tanter OOPSLA 03) © Marcus Denker
19.
Problem with Bytecode
in Geppetto > Bytecode is not a good meta model > Lots of management infrastructure is needed — Hook composition — Synthesised elements (hooks) vs. original code — Mapping to source elements > Bytecode is optimized — e.g. no ifTrue: © Marcus Denker
20.
Beyond Text: A
Meta Model for Methods > We need a high-level meta model for methods > This model needs to be causally connected — edit the model --> edit the system > Text and Byte- (Binary-) code generated on demand © Marcus Denker
21.
Beyond Text: A
Meta Model for Methods > Structure of method is implicit — Compile text (to AST) — Decompile bytecode (to IR or AST) > Both text and bytecode are pretty low level > Not suited for being the main representation — How to annotate text? — How to tag synthesised bytecode? > Possible Model: AST © Marcus Denker
22.
Many users
Aspects Refactoring JIT Method Editor Meta Model (pretty printer) Pluggable Typesystem Annotations Reflection © Marcus Denker
23.
Explorations... >
Annotation framework — Nodes can be annotated — We can have any object as a (non-textual) annotation > replace ByteSurgeon by AST based transformer > Idea: Behavioral Reflection with Annotations > Combine with AspectS for dynamic Aspects © Marcus Denker
24.
Conclusion >
We have had a quick intro in Reflection — Squeak and how it enables reflection > How to realize behavioral reflection — Bytesurgeon and Geppetto — Problems > We need a Meta Model for Methods © Marcus Denker
25.
License >
http://creativecommons.org/licenses/by-sa/2.5/ Attribution-ShareAlike 2.5 You are free: • to copy, distribute, display, and perform the work • to make derivative works • to make commercial use of the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. • For any reuse or distribution, you must make clear to others the license terms of this work. • Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. © Marcus Denker
Baixar agora