Main characteristics of digital computers
Let us start with a good definition (cf. Wikipedia):
A digital computer is a digital electronic machine that can be programmed to carry out sequences of operations automatically.Main concepts of the definition:
(1) digital computer: A digital computer is a universal electronic data processing equipment or machine which uses fixed-length sequences of binary digits to represent numbers and other elementary or primitive types of data (e.g. logical or Boolean values, characters etc.). Complex data types, e.g. strings, texts, long texts (cf. the "memo" field type, MS Access) etc., and various types of digital media (such as digital images, sounds, videos etc.) also use binary encoding but both the length and the number of the sequences of bits idenfifying elementary data units can change.
In this context, universal means that today's computers are extremely and amazingly versatile. In the first place, the programs are what enable computers to perform a wide range of tasks. To be more specific, computers are suitable to perform, in one way or another, almost any data processing task. Therefore present-day computers provide an innumerable number of applications in almost all areas of the modern economy and society. Some of the more important applications are as follows:
- scientific and other calculations (note that early computers were meant to be used for calculations; that is why we are still using the term 'computer', i.e "computing machine");
- military applications; the early computers, as well as the internet itself, have a military origin, i.e. they were all military developments:
– the first digital electronic calculating machines were developed during World War II (including the famous ENIAC);
– the ancestor of the internet raised from a project funded by the ARPA, the Advanced Research Projects Agency of the US Department of Defense (hence comes the name of the world's first wide area packet switched network, the ARPANET);- business applications: managing the company's databases (e.g. about employees, stock(s), trading, sales, the user's behaviour etc.), sales analysis, budgeting, accounting, advertising, offering online access and services etc.;
- education and learning applications: learning management systems (LMS), a wide range of educational and learning materials etc.;
- communication: web 2.0 services (blogs, forums, wikis, social and community networks etc.), mobile networks and devices, telecommunications networks etc.;
- (public) information and content providing services: various web pages and sites, search engines (e.g. the Google), public databases and services (electronic libraries, open access journals, web shops, public transport timetables, ticket reservations etc.), mass media and news services, GPS services etc.;
- entertainment: computer games, ebook readers, mp3 players, YouTube videos, movie streaming services etc.;
- design and simulation: CAD/CAM applications; virtual reality; computers are also capable to simulate the operation of other computers and automatons, including the implementation of the Universal Turing Machine (UTM) as well;
- industrial and commercial applications: a broad range of industrial and consumer products use computers as control systems (e.g. washing machines, remote controls and controlled devices etc.; robot pilots, industrial robots etc.).
In addition to the purely data processing applications, the capability of computers of being able to control other machines is of vital importance. We can try the RoboMind robot simulation program to get a basic idea of how the computer control works.
A computer is a rather complex system of physical and intangible components including
– the hardware configuration (e.g. the central unit, the peripheral devices etc. and the physical structure which determines how they can connect and cooperate with each other) and
– the software system, which produces a desired behaviour from the computer.
We can draw a clear distinction between the main software (i.e. the operating system) which allocates and controls the system resources, and the set of application software products, which enable the computer to perform different tasks.
- We often speak about the computer architecture which is the specification of a computer system at a somewhat general level, including the description of the hardware configuration and the main software components (which are constituent parts of the operating system). A given computer architecture usually has several implementations which, in time, can lead to a family of computers which have (backward and/or upward) compatibility with each other. (A famous and successful example was the x86 architecture including e.g. the Windows XP and the Windows 7 operating systems.)
In a broader sense, the term 'computer system' may also refer to a group of computers that are connected or linked, and function together, that is, the interconnected computers are cooperating with each other to achieve a certain goal. Typical examples are computer networks, computer clusters, cloud computing and grid computing.
To describe a computer as a system, we have two abstract models.
- black box model: A black box is metaphor of an open system that is described or viewed only in terms of its inputs and outputs. In other words, only the input and output data exchange between the computer and the environment is considered important or taken into consideration. That is because we either do not have any knowledge of the systems's internal workings, or just do not have much interest in it. Metaphorically,
whose outer surface is considered opaque.
- The term 'black box' can be efficiently used to refer to a wide range of open systems including a transistor, a logical circuit, a computer, an algorithm, or even the human brain.
- In this context, open systems refer to systems that have external interactions, i.e. they take their input from their environment, and at the same time they provide output for it. (The opposite of the open systems are isolated systems, which do not have interactions with their environment.)
- Mathematically the output values of the black box can be described as a function of the (given combination of the) input values and some "hidden" parameters that represent the current state of the black box. (The data that characterize the current state of the black box have been generated and stored by the black box itself during its previous operation. )
- A very popular buzzword is artificial intelligence nowadays, and many AI applications use neural networks (e.g. the justly famous Google Translate service). A neural network is a typical implementation of the black box model because,
– on the one hand, when we teach or train the network, we first compile, very carefully, a set of inputs with their corresponding outputs, and try to get the network to "memorize" the relationships between them (i.e. by having the neural network establish and strenghten the input-output relationships);
– on the other hand, to check the correctness of the network we can use a kind of black box testing selecting random inputs and checking whether the network can really demonstrate the expected outputs (or not).- The black box model of the computer as a data processing machine can be illustrated as follows:
- Note that the terms 'data' and 'information' are often used more or less synonymously. Nevertheless, we can make a clear distinction: on the one hand, data usually refers to stored information; on the other hand, information can be considered as retrieved data that has been used up for sth useful (e.g. it can be an input for further processing).
- white box model: A white box is a system where the inner components and their connections, and/or the (working or operating) logic of the system are available for thorough inspection. (The computer becomes a white box for us when we learn how it transforms input data into output data.)
(2) electronic computer: The main hardware units of an electronic computer (e.g. the central unit, the motherboard, extension cards etc.) consist of electronic components for the most part, such as resistors, capacitors, diodes, transistors, integrated circuits etc.
- transistor: A transistor is a semiconductor device which is one of the basic building blocks of modern electronics. Because the transistor can be used as an electronic switch to open or close the controlled circuit in response to a control signal, it is an ideal tool for implementing logic gates and circuits.
- integrated circuit (IC): An integrated circuit is a set of electronic circuits on one small flat piece or "chip" of semiconductor material (usually silicon). Large numbers of tiny transistors (called metal-oxide semiconductor field-effect transistors, MOSFETs) are integrated into a small chip. This results in circuits that are orders of magnitude smaller, faster, and less expensive than those constructed of discrete electronic components.
Integrated circuits are now used in virtually all electronic equipment and revolutionized the world of electronics.
- very large scale integration integrated circuits (VLSI ICs): VLSI is the process or technology of creating an integrated circuit by integrating and combining millions of MOSFET transistors onto a single chip. For example, the microprocessor and the memory chips are VLSI devices. Today's microprocessors have many millions of logic gates and billions of individual transistors.
In terms of the functions and operations that electronic circuits technically implement, logic gates and circuits form the basis of how the computer works.
- logic gates: A logic gate is a device that implements an elementary logic function; accordingly, we can speak about AND, OR, NAND, NOR etc. gates. (The gates implementing the NOT function are called inverters.) In order to represent the two logic states (i.e. true and false), in case of electronic logic gates two different voltage levels are used for the input and output signals. (Usually the high voltage level represents true, and the low voltage level represents false.)
- logic circuits: A logic circuit is a device that implements complex logic functions. It means that when receiving specified binary inputs, logic circuits can produce specified binary outputs. The is accomplished by several logic gates connected with each other in a specified way. There are two different types of logic circuits:
- combinational circuits, whose outputs are a function only of the actual combination of the inputs (e.g. an adder);
- sequential circuits, whose outputs are a function not only of the actual combination of the inputs but also some preceding values (called states) that the circuit previously produced (e.g. memory elements like flip-flops using feedbacks).
(3) (computer) hardware: The hardware is the physical portion (i.e. the technically implemented units) of a digital computer. The main hardware units are as follows:
- electrical and/or electronic components, e.g.
– the microprocessor,
– the random-access memory or RAM,
– the motherboard,
– the monitor,
– solid state drives or SSD,
– USB flash drives,
– various expansion cards,
– etc.;
– various interfaces, ports and sockets,
– wires and cables,
– etc.- electromechanical components, e.g.
– a hard disk drive or HDD,
– optical disc (CD, DVD or Blu-ray) drives,
– the majority of the I/O peripherals, e.g.
– the keyboard,
– the mouse,
– the microphone,
– the loudspeakers,
– the video camera,
– the coolers,
– the power supply,
– etc.- mechanical components (e.g. the computer case).
The computer can operate automatically, that is, it is capable of executing the currently running programs by itself, without any human intervention. At hardware level, the basis for the automatic operation is provided by the instruction cycle executed by the control unit through endless repetitions.
- instruction cycle or fetch-execute cycle: The instruction cycle has two (or, actually, three) main steps which the control unit of the computer executes in an infinite (and synchronous) cycle:
- in the first step the next instruction of the currently running program is obtained (i.e. "fetched") from the memory;
- in the second step the obtained instruction is executed;
- after the second step, or just before the first step, the computer examines whether or not an interrupt request has been sent, triggered or asked.
- interrupt: when an interrupt signal indicates that a special (asynchronous) event occurred that needs to be handled (e.g. an I/O request sent, an error triggered, an action asked by the operator etc.),
- the current sequence of instructions is temporarily suspended,
- the computer starts to execute a dedicated sequence of instructions called an interrupt handler (IH);
- when the IH fulfilled its task, then its process ends and it gives the control back to the interrupted process;
- the execution of the interrupted program, that is, the original sequence of instructions continues, as though nothing had happened.
(4) (computer) software: In general, the software refers to a certain set of programs that can be executed by a computer system. Specifically, the actual software of a computer system consists of a system of mutually cooperating programs, including e.g.
- the operating system (e.g. Microsoft Windows, Unix etc.), which a kind of system software with basic functions that are essential for the operation of the computer (e.g. the operating system manages the hardware and software resources, provides common services for other programs etc.); the operating system is a main software that provides platforms for running different applications
- the application software (e.g. Microsoft Office, Mozilla Firefox, Java System Development Kit etc.)
A computer program is describing a certain algorithm in a formal notation so that the instructions of the algorithm are encoded in the selected programming language.
- (computer) program: A program is a sequence of instructions or statements that can be executed by the computer in a well-defined order so as to produce a desired output by processing the input and the stored data. Programs formally describe ("encode") and implement algorithms by way of one of the programming languages supported by the software of the computer system.
- algorithm: An algorithm is a prescribed set of well-defined instructions or statements for the solution of a given problem in a finite number of steps (e.g. the performance of a calculation).
- programming language: A programming language is a formal notation for the precise description of algorithms (in a form of computer programs). Programming languages are artificial languages in which the syntax (or grammar) and semantics are strictly defined.
There are basicly three types of programming languages which enable to write the codes of programs at different levels.
- A program written at the machine-code level is a sequence of instructions. An instruction is the description of an operation that is to be performed by a computer.
- An instruction set is the set of instructions available in a particular computer. It contains e.g. the operation codes and the permitted addressing schemes supported by a given (micro)processor.
- A program written in an assembly language allows the programmer to use alphabetic operation codes (and other symbolic tools, e.g. symbolic names for the registers, addresses, labels for the instructions etc.) instead of using machine codes and physical addresses for each instructions.
- A program written in a high-level language is constructed from statements. Each statement results in a predefined sequence of the given operations to be performed. Some dedicated sequences of statements (called usually "functions") can be named so that they can be referred to by their name anywhere within the program.