Computational reflection: Smith’s theory of computation and causal relations

According to Smith (and an untangled interpretation by Charlotte Herzeel), computation can be modeled as a mapping between three distinct domains: a “syntactic” domain, an “internal representational” domain and the “real world”. Syntactical domain consists of description of a system and the internal domain consists of all entities that realize the language constructs by which we describe the system. The real world consists of natural objects and abstract concepts that stakeholders of the system want to refer to in systems, but interpretation of these concepts are obviously out of reach of a computer. Mapping a description to its internal representation is called “internalization” (cf. “parsing”). The mapping from one element in the internal representation to another one in it is called “normalization”. In normalization, an element is reduced to simplest form. The mapping from an internal representation to its meaning in the world is called “denotation”.

Let’s get back to the reflection. Generally, reflection is about inspecting (observing and therefore reasoning about) and changing the internal representation (structural reflection) and also reasoning about the normalization (behavioral reflection) of a system. To be more specific, the inspection of the internal representation is typically called introspection and changing the internal representation and also reasoning about the normalization is well-known as intercession and the mechanism that enable these manipulations is called reification.

The computational reflection as a concept is originated by Brian Cantwell Smith and it was elaborated by Pattie Maes (in “concepts and experiments in computational reflection“) and Gregor Kiczales (in “The Art of the Metaobject Protocol“) and his colleagues in programming languages. Afterward, by emerging new paradigms and the need for distributed and transparent systems by embracing the component-based concepts, the computational reflection found its way all the way down to distributed systems and their underlying middleware infrastructures to make them highly adaptive. As a result of these efforts, a number of reflective component model specifications (Fractal) and middleware implementation (Julia) had been emerged. Finally, by arising the need for dynamic software evolution in self-* systems, the need for explicitly maintaining the architectural description which causally connected to run-time model has been emerged. These concepts have been extensively explored by Walter Cazzola, Peyman Oreizy, Nenad Medvidovic, Richard Taylor, Jeff Magee, Jeff Kramer and their colleagues with the theme of “Architecture-Based Runtime Software Evolution”.

Computational Thinking

I found this paper (Jeannette Wing, CMU) as a good introductory for whoever that are interested to quickly comprehend what is and what is not “computational thinking“. As software engineers, we have been experiencing that people think about us as a kind of geek that the only task we are able to do is computer programming and there are still so many of them who think the fundamental research in our discipline is done and that only the engineering remains. But this is so untrue. I recommend them to read this masterpiece and its corresponding presentation to realize thinking like computer scientists means more than being able to program a computer. It requires thinking at multiple levels of abstraction!!!! Wow! By the way I extracted this interesting quote from the paper and put it here for convincing you to read it: “Computational thinking is using abstraction and decomposition when attacking a large complex task or designing a large complex system. It is separation of concerns. It is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable. It is using invariants to describe a system’s behavior succinctly and declaratively. It is having the confidence we can safely use, modify, and influence a large complex system without understanding its every detail.”