Hi again and welcome back.
Did want to introduce you to a general topic. This one covers the various means by which we allow the computer to do the hard work of understanding us, the human master. Let’s not get into the topic of master/slave relationships 🙂 as that’s been covered elsewhere.
To control our digit assistant, we issue commands using a keyboard and our digital assistant responds by showing us text on a screen or display panel. The modern mouse device is really just a short-cut to do the same thing without all the typing.
Most commands are man-readable, they’re not written in binary numerics that computers understand. Our man-readable stuff is often english-like and not directly computer-usable cos that would take a long time to write. I know as i did it that way in ‘the old days’. Hours were spent hand crafting machine instructions for the computers of that time. It was long and laborious. We needed a way to speed up the whole process of writing our commands, thus creating a ‘program’ of commands, as a sequence steps.
Enter, the translator. This is a clever program to read a man-readable program and spit out a set of steps in binary – the language of most modern computers. This clever program is just a program that reads other programs and writes a digital equivalent. It’s written by a team of people, often by the computer manufacturer, who do the hard stuff of making this “A4B1040006” from this “add 4 to counter”.
The “A4..” sequence is a single 10 character machine code instruction from one of the early computer systems we worked on. This was machine code for an RCA 301 computer. It had a tiny, though typical, amount of internal memory for it’s day. Our system had 10,000 characters while a similar Univac 1005 had about 4,000 characters of memory, or 4K as an abbreviation. We had to do a lot of work in a small amount of memory and it took ages to write. Then it had to be punched into paper-tape or 80 column punchcards, creating huge decks of cards, often 2,000 cards in a box. It was quick to run, to be sure. The computer just munched through big sets of commands rather quickly, but it took forever to write. The balance of labor was a lot of expensive man-time versus a small amount of relatively cheap computer time.
Compilers offer another approach. Compilers do the same job as translators, but instead of executing each line of machine code immediately, it collects all those digital commands and writes them away to some form of persistent storage. Each set of commands is known as a program, and each program is given a unique name, so it can be found again. Why have three houses on a street with the same house number/name ? How would we identify Mr. Jones house on that street ? The answer is that, like houses on a street, each program name must be unique within it’s “street” or folder/path/directory, pick one. And like streets in a town, towns in a city, cities in a county, counties in a state, we see a similar mapping structure in the digital realm. Programs live within a directory, directories can be found within other directories, directories live within volumes, one or more volumes exist on a disk, several disks can be attached to one system. It’s a hierarchy scheme. Examples of modern compilers could include the languages such as Java, Cobol, RPG. Each language has a defined syntax and the rules of each language must be followed in order to make the compiler understand what’s to be done. If written correctly, the result is a small digital program that runs quickly and consumes a small amount of resource.
Ok, bored you enough with this, have a cuppa. You’ve earned it 🙂