Reflection gives us a mirror into our programs. Using this mirror, we can see our programs’ structures, perhaps their execution, and maybe even reach through the mirror to change what our programs are and what they do.
In this talk, I’ll consider what lives on each side of the mirror and what happens when we cross that boundary. I’ll describe how mirrors let us peer into the middle of our programs, what happens when we reflect on concepts rather than objects, and what happens when we hold up a mirror up to itself. I’ll discuss the way reflection works in the Grace language, and present some prospects for extending it in the future.
James Noble is Professor of Computer Science and Software Engineering at Victoria University of Wellington, New Zealand. James has B.Sc(Hons) and Ph.D. degrees, both from VUW, completed in 1997. After leaving VUW, James worked in Sydney, first at the University of Technology, Sydney, and then at the Microsoft Research Institute, Macquarie University. James returned to VUW as a lecturer in late 1999, just in time to avoid the predicted end of the world.
James’s research centres around software design. This includes the design of the users’ interface, the parts of software that users have to deal with every day, and the programmers’ interface, the internal structures and organisations of software that programmers see only when they are designing, building, or modifying software. His research in both of these areas is coloured by my longstanding interest in object oriented approaches to design, and topics he has studies range from aliasing and object ownership, design patterns, agile methodology, via usability, visualisation and computer music, to postmodernism and the semiotics of programming.