Monday, September 18, 2006

Nature of Code - week 1

Some interesting points I came across in The Computational Beauty of Nature, by Gary Flake...

Flake talks about a few different ways in which we might describe a 'thing'. This could be an animal, an atom, or any other constituent of a larger system. According to him, there are three main ways in which we can begin to understand how these things work:

- Look at the 'thing' in question, called an 'agent', isolated from its environment. Dissect it and try to understand how it works and behaves as an individual.

- Look at the system in which it exists from a global point of view, observing the overall pattern formed by all of the system's agents.

- Look at the interactivity between the agents within the global system, or environment, which is akin to taking the middle road. This is the preferred path to take in trying to really understand how an agent works.

It would only be a fraction of the story, to look at one agent individually, observing its separate parts and functions in a vacuum. To really get a good idea, Flake suggest that we need to consider how these agents interact with each other, and therefore within their environment.. how do they respond to one another, and deal with each other on a routine basis? What aspects of the environment are they interacting with, and how can these actions be described?

These thoughts also relate to how we can come to understand a system as a whole. It's possible to go from a larger scope, to smaller one, i.e. take the 'reductionist' point of view, when trying to describe an environment. This is basically, starting at the most general level of things (for example, the universe), and working your way back down to the smallest unit (like perhaps, a proton).

However, it doesn't really work going the other direction. Knowing what an atom is, isn't going to help you in figuring out that it exists in a molecule, in a cell, in the muscle fiber of an animal, etc.

The other point of view one can take is the exact opposite of reductionism, which is holism. In holism, the sum of the parts is greater than the individual parts themselves.

Another concept brought up by Flake is the idea of 'adaptation'. According to him, parallelism + multiplicity = adaptation. Parallelism is having multiple threads going of a similar action, whereas multiplicity is having multiple threads going of different actions, but which are trying to solve the same problem. Multiplicity produces subtle variations among agents in a system, and paves the way for evolution. There will be more successful solutions than others, and the most successful will have the greater chance of survival and reproduction, or 'iteration'.

Going back to interaction, Flake points out that the simplest type of question we can ask when considering this between two agents, X and Y, is, what will 'X' do in the presence of 'Y'?

That's all for now, but i have also posted two processing examples below. These, by the way, have nothing to do with what I just mused over. These are just two examples showing the visual difference between uniform and non-uniform probability. The uniform example is first.

uniformly random lines

non-uniformly random lines

No comments: