1Summary

  • Programmers program Programmees.
    • Programs are communication mediums.
      • Programmers create Programs.
      • Programmees execute Programs.

2The verb "program"

"X programs Y to do Z" means "X makes Y do Z", that is, "X forces Y to do Z".

Thus, "X programs Y" means "X makes Y do something X wants".

Here are some examples of programming.

Computer programmers program computers.

Employers program employees.

Teachers program students.

Parents program children.

States program citizens.

Trainers program animals.

Bio-engineers program microorganisms.

Material engineers program materials.

Farmers program fields.

Urban planners program cities.

We program our bodies: We move our hands to where we want them to be, and so on.

Powerful people program powerless people.

When people help us, they let us program them.

3The noun "program"

3.1What was a program?

"Program" used to mean "public notice".1

It is easy to imagine that authorities wrote programs to make people behave accordingly, that is, in 20th century parlance, to program the people.

We began using "program" as a verb when electronic computers were invented, around 1945.2 I think Etymonline is referring to the ENIAC.

There is a confusion: A "program" can mean both an individual show3 and the entire plan for a television station4.

3.2What is a program?

To define a program, we have to simultaneously relate these concepts: programmer, program, programmee, and execution.

A programmer creates a program for execution by a programmee.

Those four concepts are inseparable. They must be understood simultaneously.

Thus, a program is a medium, a means of communication for relating the programmer's desire and the programmee's actions.

A program is something that is mutually understood by the programmer and the programmee.

A program is a concrete representation that is given the same abstract meaning by the programmer and the programmee, by virtue of a convention previously agreed between the programmer and the programmee.

If the programmer and the programmee are both humans, then the program can be an utterance in a human language mutually understood by them.

If the programmee is a machine, then the human programmer has to follow whatever convention set by the person who created the machine, and the convention is not negotiable because it is impractical to alter the machine.

Here are some examples of programs.

Laws are programs. Laws are designed by the legislative branch and executed/interpreted/enforced by the executive branch, especially by the police.

Recipes are programs, designed by chefs and executed by cooks.

4What is programmable?

Everything is programmable in principle but not in practice.

In principle, you can disassemble a machine into its parts and reassemble the parts into another machine that does what you want. In principle, you can threaten some people and get them to do something.

In practice, you will rarely do any of those, if ever.

Thus, the question is not what is programmable, but how hard something is to program, and why some systems are more programmable than others, that is, what affects, promotes, or hampers programmability.

5Why are some things more programmable?

Electronic computers are programmable because they have been designed to be modifiable without physical reassembly, and because people have invented tools such as high-level programming languages that make programming computers easier.

People are somewhat programmable because they have evolved to socialize and cooperate a bit.

People with less power are more programmable because people tend to avoid pain, and the programmee's BATNA5 is lower than the programmer's BATNA.

Some animals are programmable because they have evolved to respond to Pavlovian conditioning, because they understand correlation but perhaps not causation. But perhaps causation is a special case of correlation with temporal dependency?

(Begin rambling.)

This makes me think. Perhaps causation is correlation in which one thing always precedes the other. In fact, we infer causation from correlation, temporal dependency, and experiment: If C happens shortly before E, and eliminating C eliminates E, then we infer that C causes E. Thus, to infer whether C causes E, we need two things: First, we must observe that C happens shortly before E; second, we must be able to perform an experiment (interfere with the natural course of events) such that C is eliminated, and see whether E still happens. At least that is my mental model of causation (what I think causation is). But I believe that other people have the same model of causation.

It is so hard to write when your mind is so eager to connect everything.

(End rambling.)

Thus, programming is the intersection between computer science, psychology, parenting, sociology, law, marketing, and cooking, if not everything, because humans always try to make others do what they want.

6What is a programming language?

For programming people, the language can be a variant of human languages such as English.

For programming computers, the language is a formal language with no ambiguity.

7How do we program?

To program something, we must have an approximate understanding (a mental model) of its internal workings, how it responds to stimuli, how it changes its internal state.

There is no general answer; it depends very much on the programmee. Here are some examples. Some people will undress for $100, others won't. Some computers lack some circuitries and thus they can't do some things fast enough. Furthermore, perhaps we cannot program a typical wrench or crowbar to compute prime numbers because we do not know any physical property that would enable us to exploit those things to compute prime numbers.

Thus, we can program something, if we know what it can do, its limitations, and perhaps the laws that underlie its behavior.

We do not need to perfectly understand the programmee. We only need a model that enables us to predict the responses of the programmee.

An X-programming model is a model that enables us to program the programmee X. For example, there are adult programming model, child programming model, dog programming model, computer programming model.

Empathy (simulating other minds, thinking from someone else's perspective) is perhaps the foundation for programming other humans.

For example, how do we make a man punch us? We can tell him to punch us, or we can punch him with the hope of angering him and making him punch us back.

Thus, we program by constructing and following a programming model.

8How did we program computers?

The first electronic computers were programmed by manually rewiring the cables inside the computers.

Then, by entering machine codes via switchboard. It reduced the amount of physical work required to program a computer. Instead of rewiring cables, the programmer now flips switches and pushes buttons.

Then, stored-program computers.6

Program as data. Code that generates code. Computers that reason about programs.

Advancements in programming (increase in the productivity of programmers) is achieved by inventing abstractions that free the programmer from having to consider what is not essential to the problem at hand. What is essential depends on the requirements. For example, for a business programmer, manual memory allocation is often not essential.

A "programmable calculator" can be made to do many things without physical reassembly.

We can make a 4-bit adder. But all it can do is addition modulo 2^4. It implements only one mathematical function.

We can make a multiplexer and an ALU, but it implements a few mathematical functions.

The mathematical function computed by an asynchronous electronic circuit is quite limited.

Shannon: electronic circuits, bits, and algebra.

9How do we program computers?

By the question "How do we program computers", we actually mean to ask "What is the easiest way for us to make computers do what we want?"

We can make tools, but returns diminish. At least we have to tell the computer something. Thus the essential complexity of a program is the length of its requirements specification. This is the shortest description we have to tell a programmer. At least we have to tell a programmer what we want.

10How do we program people?

Perhaps, to understand how to program others, we only need to look into ourselves and ask: Under what circumstances would we do what others want us to do?

10.1On changing people's minds with stories and not arguments

One way to lower people's defense to change their opinions is "I used to …, but then …"

Bad title, provokes defense mechanism: "Abortion is wrong"

Bad title, sounds confrontational: "Why abortion is wrong"

Better title: "I used to be against abortion until I encounter the sorites paradox"

The most convincing argument is a story, not an argument.

The strange thing about people is that counter-arguments increase the strength of the attacked belief.

The good news is that empathy (feeling others, thinking from someone else's point of view) can reduce the strength of beliefs.

Reason alone does not change beliefs. What changes beliefs is a lot of feelings plus a tiny bit of reason. Perhaps that is why stories work: People can feel the characters.

The bad news is people tend to auto-segregate, so their children never get the chance to empathize with dissimilar people. Then these children grow up and write despicable things on the Internet.

The Internet reflects a collective parenting failure of the human race.

<2019-10-27> https://en.wikipedia.org/wiki/Defence_mechanisms

10.2Mutual programming, conflicts, and employment

When two people X and Y interact, sometimes each wants the other to do something, that is, X wants Y to do what X wants, and Y wants X to do what Y wants, to some extent. Thus, they mutually program each other, to some extent.

Mutual programming causes conflicts.

For example, in a company, employees may want to maximize their salaries, and employers may want to maximize their profits. Those two desires are often, but not always, adversarial.

How can the employer make the employee feel in control without actually making the employee in control? Employers can let employees control relatively unimportant things such as their working hours and the ornaments on their desks, but, do such trivial allowances make the employee feel a satisfactory sense of control? Are employees smart enough to feel whether their sense of control is fake, and they cannot actually control important things such as the distribution of profits or the directions of the company?

10.3<2019-08-20> On workplace fairness

As an employer, it is very difficult to treat all employees fairly. Fairness does not exist. What exist are envy and jealousy. Everyone has their own idea of fairness. Thus, the problem is not to be fair, but to be perceived as fair by each employee. But every person has a different idea of fairness.

10.4Exploiting cognitive biases?

Does brainwashing work?

<2019-10-27> https://en.wikipedia.org/wiki/Brainwashing

Zimbardo 1971 Stanford prison experiment?

People have cognitive biases7, and their biases can be exploited to facilitate their programming.

Thus, to make people believe something, the belief should be presented in terms of something consonant with the person's existing beliefs.

How do we deradicalize extremists?

The halo effect (leakage of positive trait, e.g. people think that handsome implies kind and smart) and the horn effect (leakage of negative trait, e.g. people think that ugly implies evil and stupid).

https://en.wikipedia.org/wiki/Halo_effect

https://en.wikipedia.org/wiki/Horn_effect

10.5Can psychology solve terrorism?

The thing common to all terrorists is belief and segregation.

Why do many people harbor extreme thoughts but only few act them out?

11Why are programs called "applications"?

What is applied?

Application of what?

Appliance?


  1. <2019-10-26> https://www.etymonline.com/search?q=program

  2. <2019-10-26> https://www.etymonline.com/search?q=program

  3. https://simple.wikipedia.org/wiki/Television_program

  4. https://en.wikipedia.org/wiki/Broadcast_programming

  5. <2019-10-26> https://www.beyondintractability.org/essay/batna

  6. <2019-10-26> https://en.wikipedia.org/wiki/Stored-program_computer

  7. <2019-10-27> https://en.wikipedia.org/wiki/Cognitive_bias