As a programmer, what line of computer science or mechanism should I consider as the first step to constructing a program aware of its environment instead of blindly carrying out tasks? Or a program that convincingly simulates such to the degree its deemed useful by responding to its surroundings. Random goes against convincing.

Awareness means, for example, the program would be "smart" enough, somewhat perceptive, to meet some human needs without being instructed by the human to do so. And to not be perceived as annoying (i.e. repetitive, boring, needy prompting) while doing so.

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.
If this question can be reworded to fit the rules in the help center, please edit the question.

I think randomness can be an excellent help in creating a lifelike system
–
NathanFeb 27 '10 at 4:18

1 Answer
1

The first step is to admit that the extensive awareness that people have of their environment, comes at a high price.

people have very high resolution sensory apparatus, their brain have had an enormous amount of time to perform statistical inference on this sensory data, and they impose an abundance of learned arbitrary cultural constraints upon this data to further simplify it.

The field you are looking for is Artificial Intelligence, and it's many side and sub-fields, machine learning, statistics, data-mining, digital signal processing, heuristics and search, and others.

A program that is going to have awareness of human needs, should ideally try to predict what the human will need given abundant past sensory data. you will need to collect this sensory data first, and then collect information on what the human wants or needs. then use AI techniques to predict the latter given the former.

However, even if you do manage to do this, extensive learning will be required. According to some philosophers of AI, no system doing this could really have a convincing awareness of our needs without experiencing life as a typical human itself.

But going ahead with the problem anyways, I assume humans need food, sleep, water, comfort, and autonomy. all further needs could be expressed as subgoals of these needs. so if the program had a dependency graph of all the things one needs in order to have something else, and if it knew what a human had already, then it could determine what that human still needed. (what that human thinks he needs is another story...)