The grass

We have defined automatic communication as the intersection between Computer science and Communication science. It is therefore essential to be quite clear on what is computer science.

Computer science is the science that deals with the theory and practice of what it is, how it is done, what you can do and what you actually do with a computer.

This science was born in the United States around 1950.

Given this, we think it is natural to begin these notes by saying what is a computer. And this is precisely the purpose of this section. As we will see to precisely define a computer is not a simple thing and it has given much to think of researchers for a long time now. Intuitively, one can say that a computer is a system/entity that performs a job in an "automatic" manner. But what exactly does "automatic" mean? For example, you can well say that to execute a dish recipe can be done automatically. If, for example, this recipe is that of the tomato sauce spaghetti for 4 people just run "blindly" the following instructions in the order.

I1: Take a pan,
I2: put half a cup of extra virgin olive oil into the pan,
I3: put two cloves of chopped garlic into the pot,
I4: put the pan on the heat until the garlic has became golden,
I5: add 500g of tomatoes into the pan, and cook for 15 more minutes,
I6: add 8 basil leaves into the pan and cook for other 5 minutes.
I7: Take a pot,
I8: fill the pot with water,
I9: put a handful of salt into the pot,
I10: put the pot on the fire until the water does not boil,
I11: throw 500g of spaghetti into the pot, and cook for 9 minutes,
I12: drain the spaghetti with the colanders.
I13: Mix the spaghetti with the sauce in the pan and serve.

We can say that any person animal or thing that performs a recipe is an entity that does a job (that of cooking the dish) automatically. Can we say the same thing if the task is to paint a picture? That is, can we say that a person who paints a picture does this automatically? On this there may be strong doubts. If this were true, Leonardo da Vinci would have painted the Mona Lisa, or any other picture he had in mind (in other words, he would have invented the Mona Lisa), automatically. Hence, note that the problem of defining exactly what a computer is, it is equivalent to the problem of defining exactly what is meant by automatic, and, among all the jobs, which job can be done automatically and which one cannot. In this section we deal with this problem. We begin to give the following definition.

Definition of Computer: A computer is a machine that computes/calculates, or performs an automatic process, or executes a job automatically, or runs/executes an algorithm specified in a language that can be understood by the machine.

From this definition, it is readily seen that the concept of Computer is closely linked to that of algorithm, and clarified the latter, it is clear the concept of Computer and Automatic. In fact, "to work automatically" just means run a job through an algorithm. The word "algorithm" denotes a concept that has been defined strictly in the first half of the twentieth century and expresses what we all understand intuitively for algorithm. Namely, "an algorithm is a set of instructions, written, given, ..., encoded in a certain (formal) language, which defines how the execution of a certain work must be performed". The encoding of an algorithm in the language is called program. The rigorous definition to which we have arrived nowadays can be given as follows.

Definition of algorithm: an algorithm is a particular Turing machine (by Alan Turing (1912-1954) English mathematician and logician. See Alan Turing on Wikipedia) or a program of the von Neumann machine (by John von Neumann (1903-1957), American mathematician of Hungarian origin. See John von Neumann on Wikipedia).

The Turing machine and the von Neumann machine are two different specific models of computations (that is, ways of defining and/or performing algorithms, or mathematical models of the peculiar way of thinking, say, of a soldier, a slave or a servant). In short, the concept of algorithm is defined as anything that can be executed by the two types of machine specifications stated above. We mean that, among all the computational models existing today, these two play an important role. The computational model described by Turing machine (introduced in 1936) is important because it is the first model that has been defined and is still used as a theoretical definition of algorithm. The models of computation described by the von Neumann machine (introduced in 1946) is important because it translates into practice the concept of the algorithm. In other words, all modern computers are structured as a von Neumann machine. We will define these two machines in the next sections.