Hardware Vs Software
Learn about differences between hardware and software.
Last updated
Learn about differences between hardware and software.
Last updated
Hardware describes the electrical or electro-mechanical aspects of a computer. These are the physical, tangible parts of the computer, such as keyboard and mouse.
On the other hand, Software describes the programs that make the computer function. These are the intangible parts of a computer which are necessary for its operations. For example, the audio on a CD doesn't have a physical presence, you cannot touch the 0s and 1s that make up the program.
Some examples to help distinguish between hardware and software:
Monitor
✓
RAM Chip
✓
MacOS
✓
Microphone
✓
Virus Checker
✓
All software fit into one of these categories: system software and application software.
System software is the required to run & manage a computer's hardware and it's application software.
Function of system software include:
Peripheral Management
Allocation of jobs to processor
Maintaining cyber security (checking for malware)
Application software installation
Translation of program code into machine code
An Operating System (OS) serves as a middle-man for communication between a computer's hardware and software. Software applications cannot communicate directly with the hardware, so an OS is required.
Some examples of popular operating system (as at 02/2024):
MacOS
iOS
Windows
Linux
Android (modified version of the Linux kernel)
Tasks of an OS include:
Resource Management (IO management, processor scheduling etc)
Providing a user interface (can be command line interface or graphical user interface)
Utility software is designed to analyse, configure, optimise or maintain a computer system.
Some of the most common tasks of utility software are: disk defragmentation, installing/uninstalling software, updating software & monitoring resources and performance.
Some utility software perform additional common tasks which are needed by almost all users: virus detection, auto backup/restore and file compression.
A library is a collection of pre-compiled routines which can be used by other programs. This can useful as programmers will not have to re-write long code and they can instead focus on their missions.
Example of libraries in python:
Most operating systems have hundreds of libraries which can be shared by multiple processes.
Machine code is the lowest level of instruction that is in pure binary format. All computer instructions need to be converted into machine code in order to be executed. That's why we use a translator program to translate code that has been written in assembly or other high-level language into machine code.
Translator software are distinct from utility software.
There are three types of translator software.
Assemblers — translate assembly into machine code.
Compilers — translate high-level language programs into object code (machine code) which can be saved and ran when needed, without the compiler being present.
Interpreter — translates high-level language programs into object code, line-by-line.
Application software refers to programs and software designed for user-end tasks or purposes, such as word processing, web browsing, or gaming.
These are software packages that can be used for a range of generic tasks. Examples of this type of software include:
Word Processors — for letters, posters, thumbnails or textbooks
Graphics packages — for image retouching, photo editing or drawing diagrams
Spreadsheet software — for modelling, creating tables of data or list
Special purpose software performs tasks for a single, specific job. For example: Payroll/Accountancy software, media player, calendar programs and online payment systems.
Some examples to help tell difference between general purpose software and special purpose software:
Presentation Software
✓
Driving Simulator
✓
Route Finding App
✓
Calculator
✓
Video editing suite
✓
These are software that can be downloaded from a public marketplace.
Readily available for usage.
Little-To-No control over features.
Less costly as development costs are shared among the buyers.
It may not do exactly what you want.
More likely to be well-tested & well-documented
There may be a security threat which you cannot fix as you have no control.
This is the type of software that's specifically created to fulfil your own exact specification.
The main disadvantage of bespoken software is that it can be significantly costly and it may take months/years to develop. However, bespoken software gives you a complete control over it's functioning and updates.