by Tika Carr
January 20, 2007

A Lesson In Artificial Species Recognition

Introduction

I've always wanted to learn C++ so I took an online continuing education course. I've also taken two Visual Basic.NET courses (Introduction and Intermediate) and received my Certificate of Completion for both. I loved the courses! :) I can study at home, and they also helped me a great deal in my work (which I'm supposed to be doing right now but decided to take a break). The C++ course, however, has given me a few ideas.

Categorizing Our World

In school this past week we were learning about Classes. In VB.NET you define a class as Public Class [name] where [name] is the name of the class. Thus the title of my post here. However, this is a C++ course I'm taking so I didn't get to learning how to define a class yet in the C++ IDE. We were learning this past week about classes and objects, and how to describe such in very distinct and definite terms so that a computer would understand. Like for instance, a class is like a category, which a flashlight, for example, would belong to. Every flashlight you see would be an instance of an object called a flashlight, derived from the Flashlight Class. Each object (flashlight) has some characteristics such as length, diameter, color, battery power. And methods such as switch on, switch off, change batteries. Now, some methods would change some of the characteristics. Suppose you turn the flashlight on? Battery Power goes down. Turn it off and the power stops decreasing. Change the batteries and it replenishes the power. Yes, it's in that technical of terms.

I'm thinking this is perfect for Artificial Intelligence programming. I mean, a computer wouldn't know this. But if you can programmatically describe things like this, then you can teach a computer nearly anything! It's fascinating to think about.

Characteristics of Species Classes

But AI is far more than just that. There's also some other things that one needs to think about. The Human Factor.

I might share some human qualities or characteristics, but there are some characteristics I don't share. So, does this mean I'm not human? Does it mean that a machine that shares human qualities is human?

Let's see. Maybe if we defined a class called Human. What characteristics do all humans have in common? They have a height, weight, nose, mouth, voice, brain, IQ, etc. Some computers have the same thing though. Take Ultra Hal Assistant by Zabaware. Load your computer with this software and it will have the same characteristics; it will have a height (the physical PC case), weight (how heavy the computer case is), nose (on the graphic that represents the talking HAL program's "character"), mouth (again, the graphic in the HAL program), voice (speech system, TTS voice), brain (CPU), IQ (dumber than a doorknob, I bet). Ok, maybe IQ is debatable. But then again, IQ can be rather debatable with some humans as well!

Technically, a computer can have a 'nose' with the right software and hardware to detect scents. I've noticed there are some robots with this capability, such as the Robo-sommelier. As another example, a computer's speakers can serve as it's 'mouth'. Sure it does not look like a human mouth but the function serves the same purpose. And my computer (named Megatron) can sing better than any human I know! He can sing anything that I purchase off iTunes to perfection! :)

So a computer can have the same characteristics as a human. But it can have some different ones too. Actually, maybe we could say the Human class and Computer class derive some characteristics from the species or life form class. But it does not make the computer a human. Are computer life forms? And even if I share some characteristics with humans, does it make me a human, if I have other characteristics that not all other humans share? Then I would become a class by myself: Person. Can a computer become a class by itself, much like a person?

Maybe we can look at it this way, with the question what does it mean to be a human? A cat has some characteristics of a human (and even think they are better than a human, naturally, filling the ego characteristic probably even better) but has some characteristics that are not human.

One would probably think that what separates a human from a cat from a computer is what it looks like. Or does it? Ok, let's take the Repliee Q2 Android as an example. It looks quite like a human. Or even take any doll for that matter. They look human! But, the are not considered human.

An Exercise: Part I - Characteristics

Here is an exercise to try. Let's explore this via the class/category, instance/object, characteristics and methods as explained the Categorizing Our World section above.

We have:

Public Class Life Form
Public Class Human (derived from Life Form)
Public Class Cat (derived from Life Form)
Public Class Android (derived from Life Form)

For each of these classes, please come up with some characteristics. Here are some examples: height, width, weight, age, nose, mouth, hands, feet, etc. Keep it very general, especially for the Life Form class as you need to have those items also available on the other sub-classes (Human, Cat, Android).

You'll probably notice something right now. You may be saying "Hey, wait a minute! An android is not a life form! Well, maybe not in the sense that most people would think, but just for this exercise let's use the characteristics from the Life Form class for the android class anyway.

Now come up with characteristics for each of the sub-classes (Human, Cat, Android). Keep in mind you do not need to add the characteristics already added in the Life Form Class because those automatically are available in each of the sub classes. Here you want to add characteristics that are unique to each of the sub-classes. For example, a cat has fur. An android and a human does not. Also keep in mind all aspects. Some cats do have chips implanted so that the owners can find them. Androids also have a ton of chips implanted in them. Some humans have artificial limbs or hearts. (Maybe if you're feeling adventurous, you could start a sub-class under Human called Cyborg but then how would you derive some characteristics from Android that Cyborg share?)

Keep your ideas basic as we all know that we could make huge books of characteristics of each of these. Just list what you yourself feel are the most important indicators. When doing this, think to yourself; what is it about a human that I notice the most that makes me realize it's a human I'm looking at?

Below are some links to some Androids for those who may have a bit of a hard time with that particular class. Keep in mind we need to concentrate on actual androids that are real in our own world, not androids from Science Fiction stories or "humanoid robots" that do not look very human. Also we do not want to count those that are remote or telemetrically controlled. A Telemetrically controlled system is one that is controlled by a human, often with the human either wearing a virtual reality skeleton or other device that records their movements and mimics them on the robot, or via computer commands or other controls operated by humans. We want to only count Androids that are wholly controlled by computers interacting with their surroundings.

An Exercise: Part II - Methods

Once you have completed Part I, do the same for these same classes but instead of characteristics, we want to list methods. This means what the objects in these classes can do. Keep in mind the things that are common to these classes as far as actions. For example, a cat will lick itself. Humans and Androids do not. Cats and humans eat, Androids do not. Cats and humans can walk. Some androids may be able to but I have not yet found any human-looking androids that can actually walk on their own.

Comparisons And Conclusions

I would be most interested anyone's results of these exercises. Feel free to contact me via the contact page. If you've got a long list (of say over 10 characteristics per class, etc.) please post it elsewhere and give me a link to the information. Maybe send me the most important 10 of your results along with your link. Also, under your results, please tell me your answers to the following questions. Please set aside any and all pre-conceived notions, such as that you may have got from TV, movies, science articles, people's opinions you may have read, etc. Form your own observations and post a short paragraph of what you feel this tells you about these classes.

  1. What do they have in common?
  2. What do they not have in common?
  3. What factors have led you to decide what is human and what is a cat and what is an android?
  4. Is an android a human (yes or no)?
  5. What led you to your answer in Question 4.
  6. Is a human an android (yes or no)?
  7. What led you to your answer in Question 6?
  8. Can a human be or become an android via some outside action or an addition of a characteristic?
  9. Can an android become a human via some outside action or an addition of a characteristic?

In Closing

There is no right or wrong answers here. What you find is that we all will have differing results. It is more our perception and interactions that determines the how we categorize into classes what we see and encounter.

Furthermore, we may find out a little more about ourselves, and the technology we develop, as well as where this technology may have a possibility of heading.

I hope you find this informative, and a fun exercise to do (should you opt to try it). Just keep in mind you don't want to write down everything. Just think about the things that stand out the most to you. What you felt is more important or most noticeable.

Bookmark and Share