(I have posted most of text below in ArsTechnica forums a couple of months ago, but now find it appropriate for discussion here)

Another thing about computers of old era and mathematics that amused me is history of first compilers.

It is related to monumental figure in history of computers: Grace Hopper https://en.wikipedia.org/wiki/Grace_Hopper

She was part of the team that developed famous UNIVAC I computer and later she created one of the first compilers.

Her first product was A-0 which evolution led to A-1, A-2, A-3 and... B-0.

I didn't find detailed information about A-0 and A-1 (it looks like they didn't go out of lab), but A-2 was some kind of virtual machine with rich set of math instructions.

It was also known by name ARITH-MATIC https://en.wikipedia.org/wiki/ARITH-MATIC. It's 'syntax' reminds assembler for this machine, but very simplified for use.

But next A-3 language known as MATH-MATIC https://en.wikipedia.org/wiki/MATH-MATIC uses text-based programs and math notation for expressions.

For example:

Code: Select all

```
X1 = (7*10^3*Y*A*SIN ALPHA)^3 / (B POW D+C POW E) .
```

BUT

In the next language B-0 known as https://en.wikipedia.org/wiki/FLOW-MATIC math was gone!

Let's quote Grace Hopper herself:

And 'B' stands for 'business'.I used to be a mathematics professor. At that time I found there were a certain number of students who could not learn mathematics. I then was charged with the job of making it easy for businessmen to use our computers. I found it was not a question of whether they could learn mathematics or not, but whether they would. […] They said, ‘Throw those symbols out — I do not know what they mean, I have not time to learn symbols.’ I suggest a reply to those who would like data processing people to use mathematical symbols that they make them first attempt to teach those symbols to vice-presidents or a colonel or admiral. I assure you that I tried it.

B-0 had great influence on COBOL (COmmon Business-Oriented Language) and all these languages have 'natural-language-oriented' expressions for calculations like these:

Code: Select all

```
ADD a, b TO c
```

Code: Select all

```
ADD TAX TO PRICE.
```

Another quote of Grace:

8<-------------------- (end of old post)Manipulating symbols was fine for mathematicians but it was no good for data processors who were not symbol manipulators. Very few people are really symbol manipulators. If they are they become professional mathematicians, not data processors. It's much easier for most people to write an English statement than it is to use symbols. So I decided data processors ought to be able to write their programs in English, and the computers would translate them into machine code. That was the beginning of COBOL...

And you know what? Assembler languages are suspiciously 'human-readable non-math' things.

Look at all these 'MOVE/LOAD/SAVE', 'ADD/SUB' and so on!

(And my point in topic mentioned above was:) Why not:

Code: Select all

```
eax = Data1 ; mov
eax += ebx ; add
Data2 -c= eax ; sub with carry
ecx ^= edx ; xor (eor)
pc = Label1 if ZF ; conditional jump
```