Enviar pesquisa
Carregar
The Reflectivity
•
1 gostou
•
449 visualizações
E
ESUG
Seguir
The Reflectivity. Marcus Denker. ESUG 2007, Lugano
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 12
Baixar agora
Baixar para ler offline
Recomendados
Demo: Reflectivity
Demo: Reflectivity
Marcus Denker
Reflectivity Demo
Reflectivity Demo
Marcus Denker
Compilation
Compilation
David Halliday
Compilation in c
Compilation in c
JosephBonillaArcinie
Java
Java
kasthurimukila
Active Object
Active Object
melbournepatterns
Multiprocessing.pptx
Multiprocessing.pptx
MaheshGour5
35c
35c
Sireesh K
Recomendados
Demo: Reflectivity
Demo: Reflectivity
Marcus Denker
Reflectivity Demo
Reflectivity Demo
Marcus Denker
Compilation
Compilation
David Halliday
Compilation in c
Compilation in c
JosephBonillaArcinie
Java
Java
kasthurimukila
Active Object
Active Object
melbournepatterns
Multiprocessing.pptx
Multiprocessing.pptx
MaheshGour5
35c
35c
Sireesh K
Starting fresh every morning
Starting fresh every morning
ESUG
TypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable Types
ESUG
Glass
Glass
ESUG
News from Squeak
News from Squeak
ESUG
Modular ObjectLens
Modular ObjectLens
ESUG
Gstreamer
Gstreamer
ESUG
SCL
SCL
ESUG
Stateful Traits
Stateful Traits
ESUG
Spyware-ridden software development
Spyware-ridden software development
ESUG
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Reflection
Reflection
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
Reflection and Context
Reflection and Context
Marcus Denker
Presentation about my Research
Presentation about my Research
Marcus Denker
Beyond Text - Methods as Objects
Beyond Text - Methods as Objects
Marcus Denker
Refactoring
Refactoring
Marcus Denker
Sub-Method Reflection
Sub-Method Reflection
Marcus Denker
Practical, Pluggable Types
Practical, Pluggable Types
Marcus Denker
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
ESUG
Unstuck
Unstuck
Marcus Denker
Mais conteúdo relacionado
Destaque
Starting fresh every morning
Starting fresh every morning
ESUG
TypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable Types
ESUG
Glass
Glass
ESUG
News from Squeak
News from Squeak
ESUG
Modular ObjectLens
Modular ObjectLens
ESUG
Gstreamer
Gstreamer
ESUG
SCL
SCL
ESUG
Stateful Traits
Stateful Traits
ESUG
Spyware-ridden software development
Spyware-ridden software development
ESUG
Destaque
(9)
Starting fresh every morning
Starting fresh every morning
TypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable Types
Glass
Glass
News from Squeak
News from Squeak
Modular ObjectLens
Modular ObjectLens
Gstreamer
Gstreamer
SCL
SCL
Stateful Traits
Stateful Traits
Spyware-ridden software development
Spyware-ridden software development
Semelhante a The Reflectivity
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Lecture: Reflection
Lecture: Reflection
Marcus Denker
Reflection
Reflection
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
Reflection and Context
Reflection and Context
Marcus Denker
Presentation about my Research
Presentation about my Research
Marcus Denker
Beyond Text - Methods as Objects
Beyond Text - Methods as Objects
Marcus Denker
Refactoring
Refactoring
Marcus Denker
Sub-Method Reflection
Sub-Method Reflection
Marcus Denker
Practical, Pluggable Types
Practical, Pluggable Types
Marcus Denker
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
ESUG
Unstuck
Unstuck
Marcus Denker
Software Evolution from the Field: an Experience Report
Software Evolution from the Field: an Experience Report
Marcus Denker
08 refactoring
08 refactoring
The World of Smalltalk
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
Marcus Denker
DDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVC
Andy Butland
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
Marcus Denker
Stoop 305-reflective programming5
Stoop 305-reflective programming5
The World of Smalltalk
Developing multi-platform microservices using .NET core
Developing multi-platform microservices using .NET core
Dror Helper
Semelhante a The Reflectivity
(20)
Lecture: Reflection
Lecture: Reflection
Lecture: Reflection
Lecture: Reflection
Reflection
Reflection
Sub-method Structural and Behavioral Reflection
Sub-method Structural and Behavioral Reflection
Talk: Practical, Pluggable Types
Talk: Practical, Pluggable Types
Reflection and Context
Reflection and Context
Presentation about my Research
Presentation about my Research
Beyond Text - Methods as Objects
Beyond Text - Methods as Objects
Refactoring
Refactoring
Sub-Method Reflection
Sub-Method Reflection
Practical, Pluggable Types
Practical, Pluggable Types
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
Unstuck
Unstuck
Software Evolution from the Field: an Experience Report
Software Evolution from the Field: an Experience Report
08 refactoring
08 refactoring
Unanticipated Partial Behavioral Reflection
Unanticipated Partial Behavioral Reflection
DDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVC
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
Stoop 305-reflective programming5
Stoop 305-reflective programming5
Developing multi-platform microservices using .NET core
Developing multi-platform microservices using .NET core
Mais de ESUG
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
Technical documentation support in Pharo
Technical documentation support in Pharo
ESUG
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
Garbage Collector Tuning
Garbage Collector Tuning
ESUG
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
thisContext in the Debugger
thisContext in the Debugger
ESUG
Websockets for Fencing Score
Websockets for Fencing Score
ESUG
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
Mais de ESUG
(20)
Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
Technical documentation support in Pharo
Technical documentation support in Pharo
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
Garbage Collector Tuning
Garbage Collector Tuning
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
thisContext in the Debugger
thisContext in the Debugger
Websockets for Fencing Score
Websockets for Fencing Score
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
Último
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
UXDXConf
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
Stefano
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
CzechDreamin
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
ScyllaDB
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
CzechDreamin
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
shyamraj55
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
FIDO Alliance
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
GDSC PJATK
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
CzechDreamin
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
FIDO Alliance
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Mark Opanasiuk
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
UXDXConf
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
TopCSSGallery
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
IES VE
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
UXDXConf
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
CzechDreamin
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
FIDO Alliance
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
CzechDreamin
Último
(20)
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
The Reflectivity
1.
© Marcus Denker The
Reflectivity Marcus Denker with: Philippe Marschall David Röthlisberger Nik Haldiman / Stefan Reichhart Adrian Lienhard / Lukas Renggli Eric Tanter Stephane Ducasse Oscar Nierstrasz
2.
© Marcus Denker Structural
Reflection > Structure modeled as objects — Classes, methods are objects — Causally connected > Uses: — Development environments — Language extensions and experiments
3.
© Marcus Denker Methods
and Reflection > Method are Objects > No high-level model for sub-method elements — Message sends — Assignments — Variable access > Structural reflection stops at the granularity of methods
4.
© Marcus Denker Sub-Method
Reflection > Many tools work on sub method level — Profiler, Refactoring Tool, Debugger, Type Checker > Communication between tools needed — example: Code coverage > All tools use different representations — Tools are harder to build — Communication not possible
5.
© Marcus Denker Solution:
Reflective Methods > Annotated, persistent AST > Bytecode generated on demand and cached :ReflectiveMethod annotation #(12 13 45 38 98 128 84 72 42 77 22 28 59 32 7 49 51 87 64) :CompiledMethod compiledMethod reflectiveMethodannotation Tools VM
6.
© Marcus Denker Reflectivity >
Implementation of Reflective Methods for Squeak Smalltalk > Smalltalk Compiler generates Reflective Methods — Translated to Bytecode on demand > Open Compiler: Plugins — Generator plugin: called before code generation – Transform a copy of the AST — Analysis plugin: called after name analysis
7.
© Marcus Denker DEMO
I > Show invalidation of code > Show assert Demo
8.
© Marcus Denker Reflective
Methods: Annotations > Source visible annotations — extended Smalltalk syntax > Source invisible annotations — Reflective API — Can reference any object > Every node can be annotated > Semantics: Compiler Plugins (9 raisedTo: 10000) <:evaluateAtCompiletime:>
9.
© Marcus Denker Example:
Pluggable Type-System > Example for textual annotations bitFromBoolean: aBoolean <:type: Boolean :> ^ (aBoolean ifTrue: [1] ifFalse: [0]) <:type: Integer :> > Optional, pluggable type-system > Types stored as annotations in the Reflective Methods
10.
© Marcus Denker Reflex:
Partial Behavioral Reflection > Hooksets: collection of operation occurrences > Links — Bind hooksets to metaobjects — Define Protocol between base and meta > Goals — Highly selective reification — Flexiblel metalevel engineering – Protocol specification – Cross-cutting hooksets activation condition hookset metaobject links Tanter, OOPSLA03
11.
© Marcus Denker Links
as Annotations Meta Link > Links can be annotations on the AST
12.
© Marcus Denker Demo
II: Geppetto > Show Bounce Demo
Baixar agora