computology.org

Introduction

This is a website about computing technology both hardware and software from nothing, up to some very advanced topics. From zero to hero.

My life has been spent doing things with this kind of magic called electricity, starting with electronics, to computing and now I am starting on AI. (More about me here) What I won't be doing is talking about how to use your favourite App' word-processor etc.

I am going to try to give you a way into this magic. You may be any age and you may have done something else all your life but now this technology is coming and perhaps your excited or perhaps you are afraid. If your afraid why not read my page Humans and Machines and if your excited then read on...

I am trying to create a detailed website that gives you enough summary backstory so you can really understand computing and master it. This is a teaching website and also a reference website, a teaching website because I love teaching, and a reference website because there are so many things in computing that I don't use everyday but need to keep notes about and recall from time to time. So as much as anything else this is my notes so they often start a bit scruffily but like a good wine they improve over time partly because somebody writes to me and corrects something, asks a question or answers a question of mine. Sometimes they just write to me to say thanks because something I wrote about in my life journey in computing has helped them on theirs.

I am not the only author of this website, but I am the editor of contributions from others of varying experience and interest. So if you would like to contribute I would be happy to hear from you. Just use the information at the bottom of the page to contact me.

Why and What should you learn about computing?

There was perhaps a time in history when people asked whether it was useful to be able to read and write given that it was a job for scribes. Now we accept that reading and writing are just a normal part of life and that they are very empowering. I am not saying that everybody should learn something about computing but I can promise you that it teaches you to raise your game in terms of logical thinking.

What should you learn? For sure you won't learn everything and the area you choose to explore more deeply will depend on what you enjoy and what you want to do.

Before doing anything else it is probably important for everyone interested in computers to learn a little history about digital things in general and their origins.

History

The Jacquard Loom

Jacquard loom with punched cards Imagine "making" a machine that can execute instructions coded using some kind of symbols! Perhaps the first such machine was the Jacquard Loom which executes instructions written on cards in a language of holes, to weave patterns in the cloth it produces. Jacquard looms are programmable machines because the function they perform is not determined by the machines hardware but by two symbols "hole" and "no hole" coded on the cards. The writing on the cards we would now call "software" because it is flexible and can be changed easily. Just load a different stack of cards onto the loom and it produces a different pattern. It's just like running a different program on a computer.

The pattern of holes on the cards lifted or lowered the threads during the weaving process to create the pattern in the cloth. A very simple mechanism, in this case but still the point is that the binary (two symbol) language of hole/nohole could be turned into a pattern of cloth.

Use of Binary Codes

The Jacquard Loom was one of the first machines to use a binary code. Electronic computers use a binary (two symbol) on/off based language, but usually rather than say on/off we say 1 or 0 and refer to a 1 or a 0 as a "bit".

Although today you DON'T need to understand binary to program a computer and we probably won't even mention binary in any program you write, an appreciation of how and why computers use binary, a technology from weaving looms, can be enlightening and can help you write better programs.

Whether we represent 0 and 1 by a nohole/hole or off/on it isn't important. With just two symbols 1 and 0, what can you do with that?

In the decimal number system you will remember that there are just ten symbols 0,1,2,3,4,5,6,7,8,9 what can you do with that?

Well you can write bigger numbers than 9 by using the idea of "place value". So 4217 is understood to mean the number resulting from 4x10x10x10 + 2x10x10 + 1x10 + 7.

You can do the same sort of thing with binary (the 0/1 system) so 1101 is understood to mean the number resulting from 1x2x2x2 + 1x2x2 + 0x2 + 1 which in decimal is 13

Any number you can represent in decimal you can also represent in binary so 4217 is 1000001111001.

A computer can easily do any calculations you like using binary.

In modern computing, simply for convenience and as a matter of convention, we choose to group 1s and 0s together in groups of 8 bits and call that a byte. Using a byte it is possible to represent numbers from 0 to 255.

Current processors typically handle 64 bit long numbers that is numbers which are 8 bytes where each byte is 8 bits, but 1 byte is a good size for representing the symbols people need like the alphabet for example. Capitals, small letters, numeric digits, punctuation and some left over for accented characters etc.

The Terminal

Teleprinter Initially the telegraph used Morse code to transmit messages over long distances but as machinery became more advanced this was largely replaced by a machine called a Teleprinter where you could press keys on a keyboard of a teleprinter in one place and have it print out on a teleprinter in another place miles away. Of course the preference for communication was to use an on/off code, i.e. binary.

Eventually ASCII became the standard coding system with what was at first a 7 bit code and then the 8 bit or 1 byte coding system used today. Every character is assigned its own code.

'A' is 01000001 which is equivalent to the decimal number 65. 'B' is 01000010 which is equivalent to the decimal number 66. 'a' is 01100001 which is equivalent to the decimal number 97. 'b' is 01100010 which is equivalent to the decimal number 98. I am sure you get the idea. A few special codes mean start a 'new line' or 'return' to the left of the paper or screen. Code 00000111 means ding the bell on the teleprinter to attract attention, yes there actually was a little bell built into the old teleprinters like the one in the picture.

Not surprisingly computers initially combined the idea of punched card technology hole/nohole binary codes, with teleprinter on/off electrical technology binary codes, as a way to store text information.

Punched paper tape Punched cards Even as late as 1980 there were still computers where users, used punched cards and punched paper tape to store text and numbers as hole/nohole binary codes, and where users submitted programs and data to the computer room of the organisation as a role of punched paper tape or a stack of punched cards held together with an elastic band! What came back was your original submitted tape or cards plus possibly some more tape or cards or perhaps a printout with the results from the execution of your program on the data you submitted. By the way the tape was about 1 inch wide and the cards were about 2.5 x 6 inches. (2.5cm = 1 inch)

If you were lucky you had a direct connection to the computer via a teleprinter like the one pictured above, where you could type commands write programs and where the results would print directly on your teleprinter. A teleprinter connected to a computer was often called a "computer terminal" or simply a "terminal".

The concept of the terminal is not out of date any more than the concept of the wheel is out of date and we still use terminals for programming though they are no longer electro-mechanical devices but rather simulations of those devices on our computer desktop on our screen. It's quite odd that the concept of terminals lives on in this way.

The Memory

In a typical computer there is a CPU (Central Processor Unit) which is an electronic device to execute instructions and process data. Both instructions and data are stored in the computers memory.

A typical computer has;

CPUs

The fundamental operation of CPUs, regardless of the physical form they take, is to execute a sequence of stored instructions that is called a program stored as codes in the memory.

It was a great step in computing when the CPU (Central Processor Unit) was able to be manufactured as a single electronic component. This made cheap computing possible. The Intel 4004 was introduced in 1971 and was a 4 bit processor for use in pocket calculators. The 8008 followed in 1972 and was an 8 bit computer. The 8080 followed in 1974. Federico Faggin did a great deal in the initial work on microprocessors including the 4004.

Personal Computers

The 6502 was the first seriously low cost CPU and with the Z80, formed the basis of nearly all personal computers until IBM made great efforts with a Charlie Chaplin advertisment in 1984 to dominate the market with a PC based around the 8088. More about history appears here but you probably know enough no to continue the story.

There is a list of personal computers on wikipedia but is missing a whole bunch of stuff.

A much more interesting set of lists are here. Micro-computers

and here. Computer History

Contents

Take a look at the headings below and follow the one that grabs you. Each topic is independent unless it says otherwise, so it doesn't matter what order you read them in.

Hardware

Although most people are familiar with desktop and laptop computers, tablets and mobile phones, there are far more computers "Embedded" in their everyday equipment than perhaps they realise.

Writing programs

Many many years ago a computer was a person who computed numbers. The race was on to create machines that could do calculations for you. The first machines were not programmable. You put in (input) two stacks of punched cards into one side of the machine and it would multiply the numbers punched on the cards and output a new stack of punched cards with the products of the numbers worked out for you. However the idea of being able to put a list of instructions into the machine, so that it could do different calculations, depending on the instructions, made the machines far more useful. The machines we call "Hardware" and the instructions we call "Software".

These programmable computers went beyond only processing numbers to process all forms of information, even to control machinary that then could be used to manufacture different products based on the program. Now programs control every aspect of computers so programming has become one of the most important aspects of computing. Go to Programming to find out more about it.

Making websites

As computers became more flexible they got used for storing text and paper documents began to be replaced. One of the biggest issues in scientific documents is the ability to refer to other documents. The concept of what has become known as "Hyperlinks" was born, linking documents stored in all different places on different computers. Because these computers were connected electronically documents on one computer document "Server" could be retrieved on another computer the "Client". This "web" of linked documents all over the world became known as the World Wide Web. It was only possible because the internet was there connecting the computers across the world.

The World Wide Web has become one of the most powerful influences of today so it's probably the case that no matter what you do you will want to understand something about how to create your own website. That means understanding a bit of HTML (HyperText Markup Language) and CSS (Cascading Style Sheets). Even a very little knowledge can go a long way here. Some people use a content manager like Squarespace to start making a website but after working hard for a few months they usually reach a "crunch point" where in order to do what they want to do they have to understand some HTML and CSS anyway. So content managers can be a false economy, which is why I start with HTML and CSS. Go to HTML & CSS to find out more about creating websites.

Operating Systems

Early in the evolution of computers it was clear that collections of programs were required for users to conveniently operate the computer. Programs to copy files, drive printers, communicate with terminals and send files over the network and that sort of thing. The collection of programs provided with computers when they were sold, got called "The Operating System". Linux and Windows are common operating systems. Go to Operating Systems to find out more about Operating Systems.

Networks

The other day a friend asked me about how the internet worked and I realised I really didn't fully understand it, despite having programmed since 1978 and despite having written the web-server serving these pages. So I decided to get back to the fundamentals and understand how information is sent from one computer to another. This is because the Internet is not the same thing as the World Wide Web. The Internet is a way to send packets of information from one place to another. The World Wide Web is a way to use the Internet for publishing pages of written work and much more. Go to Networks to find out more though this is an advanced topic not for beginners.