2007-10-14

 

Instructions

Last week my daughter’s school distributed a little procedure. It was quite simple and I’m sure it will work. But I realized that it will only work with humans. I mean, if these instructions are translated to a computer system they will probably fail at the first use of the procedure. And most people don’t understand why the computer system should fail. Well, I’m amazed these instructions don’t fail with human operators. I’ll explain this with the procedure I received from school.



This procedure is meant to inform all parents as soon as possible of an urgent event, e.g. when school is closed because all teachers have got the flu. The procedure is illustrated with the scheme on the left. The school calls parent A on top of the list. He (she) calls parent B, C and D. They call the next parents in the scheme and finally on the bottom of the scheme parent B, C and D are calling parent A. In case some parent cannot be reached the next parent on the list must be called and after a while a second call should be made to the parent that could not be reached.

This procedure sounds quite solid. Care has been taken of parents that cannot be reached and at the bottom the loop is closed when parent A gets called. I’m sure this will work with humans and nearly every parent will get the information and it will probably be known at school which parents could not be reached.

Now, imagine that the parents have smart phones and the instruction can be programmed into the phone. When a parent has received a message he/she presses a special button on the phone to repeat the message to the other parents. The scheme is put into the phone and we don’t need the printed scheme any more. The instructions are very simple, so it shouldn’t be too hard to translate it to a piece of software. Well, there are many things that will go wrong with this automated system. Just some examples:
  1. There is no instruction for 2 unreachable parents in a line. If parents E2 and E3 cannot be reached, and parent E2 also not on the second attempt the instructions end. No attempt will be made to call parent E4. Parent B will wait indefinitely for a call of parent E4 (or E3). Parent A will also wait indefinitely for a call of parent B. The school will never be called.
  2. The example above assumes that the parents B, C and D at the bottom will wait for both parents to call them before they will give their report to parent A. Likewise parent A will wait for three calls. This is not in the instruction! In another valid implementation B immediately calls A when he receives a call from F4. And parent A on his turn immediately calls school. This will result in 6 calls to school (if none of the lines is broken).
  3. If E2 cannot be reached on the first attempt and E1 passes the message on to E3, but E2 can be reached on the second attempt, the instruction says he has to call E3. Then E3 gets the message twice. And the second time he will again pass the message to E4. There is nothing that says that a message should only be passed on once.
  4. There is no explicit instruction for A to call E1 and F1 if B cannot be reached.
  5. If parent A is not reachable, the school will probably call parents B, C and D directly. However, it is not in their instructions to call school at the end. They will try to call A twice and stop.
  6. The instruction says nothing about informing other parents that someone could not be reached. Humans will likely do it and the names of parents that could not be reached will be known at the end, but it’s nowhere in the instruction. A computer system won’t do it.
A computer programmer who wants to make a solid implementation of the procedure will have to take all these (and more) problems into consideration. But, to get to a satisfying result he has to know the intended result of the procedure. How many parents must get the message? What is an acceptable loss? How long should parent A, B, C and D wait for all calls to return? Is it required to know which parents could not be reached in the first attempt? Should it be known if they didn’t get the message after two or three attempts? It could even happen that they have received the message, but that the information about it never gets back to school. (This is a fundamental problem. Two parties can never be sure that a communication was 100% successful in finite time. If P1 sends a message to P2 and P2 sends a confirmation to P1 and confirmation message gets lost. P1 doesn’t know whether P2 has received the message or not. And P2 will not know whether P1 has received the confirmation. P1 can send a confirmation of the confirmation, but that message might also get lost. Etcetera.)

When the programmer knows what the requirements of the procedure are he can work out the instructions that will meet the requirements (as long as the requirements are feasible). However, these instructions will be much longer than the 5 lines of the instructions for humans. They will contain details for every exception that might occur. If these instructions are given to ordinary people they will not work. Humans get confused by the details. They will be afraid to do something else, because they have got such a detailed instruction. They will stop following the instruction, and just say ‘I don’t know’.

One of the big differences between humans and computer systems is the way they handle instructions. Humans can very well cope with vague instructions. In general, humans perform excellent when instructions have very little detail. With computer systems it’s the opposite. The origin of this difference is that humans understand the intention of the instruction. They will act according to the intention and not exactly follow the instruction. The instruction is only a guideline. It’s different for a computer system. It doesn’t have any clue about the intention of an instruction. It just follows every letter of the instruction.

Comments:
Volgens mij noemen ze dit ook wel het 'frame probleem' in cognitive science
 

Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?