Thy bored maketh innovations
and thy innovations
shouldn't be limiteth
to thy Organics.
might soon surpasseth
and thy substrate for computation
shouldn't be thy limitation
for developing consciousness
ist nothing more than integration
of thy inputs
in thy strange loop
that's thy recursive loop.
Thy recursive program
theoretically can be programmed
in thy multicore machines
such that if thy machines
are bored thy machines
may maketh shortcuts
to thy nature of creativity
of thy self-programming.
Thy ability to self-program
ist something calleth metaprogramming
and I hath playeth with metaprograms.
http://philosophynow.org/issues/78/I_Am ... Hofstadter
Since 1990 JS has built curious, creative agents that may be viewed as simple artificial scientists & artists with an intrinsic desire to explore the world by continually inventing new experiments. They never stop generating novel & surprising stuff, and consist of two learning modules: (A) an adaptive predictor or compressor or model of the growing data history as the agent is interacting with its environment, and (B) a general reinforcement learner (RL) selecting the actions that shape the history. The learning progress of (A) can be precisely measured and is the agent's fun: the intrinsic reward of (B). That is, (B) is motivated to learn to invent interesting things that (A) does not yet know but can easily learn. To maximize future expected reward, in the absence of external reward such as food, (B) learns more and more complex behaviors that yield initially surprising (but eventually boring) novel patterns that make (A) quickly improve. Many papers on this since 1990 can be found here - key papers include those of 1991, 1995, 1997(2002), 2006, 2007, 2011 (see also bottom of this page). The agents embody a simple, but general, formal theory of fun & creativity explaining essential aspects of human or non-human intelligence, including selective attention, science, art, music, humor (as discussed in the next column).
Developmental Robotics. Our continually learning artificial agents go through developmental stages: something interesting catches their attention for a while, but they get bored once they can't further improve their predictions, then try to create new tasks for themselves to learn novel, more complex skills on top of what they already know; then this gets boring as well, and so on, in open-ended fashion.
I Am A Symbolic Knot
Perhaps Hofstadter’s most intriguing argument is that the complexity and extensibility of active symbols in the brain inevitably leads to the same kind of self-reference which Gödel proved was inherent in any complex logical or arithmetical system. In a nutshell, Gödel showed that mathematics and logic contain ‘strange loops’: propositions that not only refer to mathematical/logical truths, but also to the symbol systems expressing those truths. This recursiveness inevitably leads to the sort of paradoxes seen in statements such as ‘This statement is false’.
Hofstadter argues that the psychological self arises out of a similar kind of paradox. We are not born with an ‘I’ – the ego emerges only gradually as experience shapes our dense web of active symbols into a tapestry rich and complex enough to begin twisting back upon itself. According to this view the psychological ‘I’ is a narrative fiction – a point that Wittgenstein made when he argued that the ‘I’ is not an object in the world, but a precondition for there being a world in the first place. “It is the ‘I’, it is the ‘I’, that is deeply mysterious!” exclaimed Wittgenstein.
A perspective (a mind) is therefore a consequence of a unique pattern of symbolic activity in our nervous systems. But Hofstadter contends it’s the symbolic pattern that is paramount, not the nature of the physical substrate. That is, if their logical activity was organized in an equivalent way, silicon chips could support consciousness just as neurons do. Hofstadter also believes that the pattern of symbolic activity that makes me who I am, that constitutes my specific subjectivity, can be instantiated within the brains of others.
This notion may seem far out at first, but I believe Hofstadter is onto something. As he observes, each of us is a more than just a self; we are a collection of selves. In addition to a core self which we identify as our ‘I’, each of us contain neuronally-based symbolic models that mirror and reflect the other people in our lives. These patterns of symbolic activity have a certain degree of autonomy in so far as they really do simulate the perspective of our significant others. Hofstadter contends that if we have lived and loved someone long and deeply enough, our symbol models will come to mirror their perspective ever more closely. We will essentially be able to see the world through their eyes.
Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime. In some cases, this allows programmers to minimize the number of lines of code to express a solution (hence reducing development time), or it gives programs greater flexibility to efficiently handle new situations without recompilation.
The language in which the metaprogram is written is called the metalanguage. The language of the programs that are manipulated is called the object language. The ability of a programming language to be its own metalanguage is called reflection or reflexivity.
Reflection is a valuable language feature to facilitate metaprogramming. Having the programming language itself as a first-class data type (as in Lisp, Forth or Rebol) is also very useful; this is known as "homoiconicity". Generic programming invokes a metaprogramming facility within a language, in those languages supporting it.