Computer Hardware and Software
Programs written in a computer’s machine language can be directly executed by the computer’s electronic circuits, without any intervening interpreters or translators. These electronic circuits, along, with the memory and input/output devices, from the computer’s hardware. Hardware consists of devices listed below:
- Input devices to enter the information such as the keyboard, mouse, microphone or scanner.
- The Central Processing Unit (CPU), containing the Arithmetic Logic Unit (ALU) which carries out the arithmetic and logical computations and the control which executes commands typed at the keyboard or stored in program.
- Storage is split into short-term memory, using microchips inside the computer which hold data and programs while processing is being carried out and long-term storage normally using magnetic disks.
- Output devices for communicating the results of processing such as printer, monitor or loudspeaker. The circuitry linking these various devices, consisting of 8, 16, 32 or 64 strands of parallel wires, called buses, along which all the bits that make up each item of the information travel in parallel.
Software, in contrast, of computer programs. A computer program is a set of instructions to solve a particular problem. Programs can be stored on magnetic disks, magnetic tapes and other media but the essence of software is the set of instructions that makes up the programs, not the physical media on which they are recorded.
An intermediate form between hardware and software is firmware, which consists of software embedded in electronic devices during their manufacture. Firmware is used when the programs are rarely or never expected to be changed, for example in toys or appliances. Firmware is also used when the programs must not be lost when the power is off.
Any operation performed by software can also be built directly into the hardware and any instruction executed by the hardware can also be simulated in software. Hardware and software are logically equivalent. The decision to put certain functions in hardware and others in software is based on such factors as cost, speed, reliability and frequency of expected change. There are no hard and fast rules about what must be in hardware and what must be in software. Designers with different goals may make different decisions.
