Software is computer code that is converted ("compiled") into a machine-readable binary program capable of performing complex operations. Software is differentiated from hardware, which is a physical computer attribute, such as a monitor or hard drive. There are many different types of software, ranging from something as central to the computer as its operating system such as Windows or Tails OS, to such productivity-based software like Microsoft Office, to purely entertainment software like video games. The process of creating software is called Computer Programming.
- System software - Software which runs the various necessary functions of a computer system. The operating system is a collection of vital system software
- Applications - Programs which run within a preexisting software environment which perform a wide variety of tasks. These programs can be generic such as a word processor, or specialized bespoke solutions like an air traffic control system.
- Programming tools, frameworks, etc. - One type of application is a program which creates or supports other programs. Code compilers, script frameworks, and other such software generate or facilitate applications, but are themselves applications.
- Autonomous software - As opposed to most applications, which are designed to interact with people (users), autonomous software runs without user oversight. Such software has different names depending upon how it is used.
- Bots - programs which navigate the internet, looking for specific information. For instance, search bots are used to index what is on the world wide web for Search engines such as Google search and Bing.
- Services or Daemons - programs that perform specific operations for operating systems, such as scheduling the running of other tasks or sharing printers (aka print queues). However not all services are part of operating systems.
To better define software, it is often classified into smaller groups. The follow are the common classifications used:
- System software - runs the various necessary functions of a computer system
- Real-time software - monitors and controls real world events as they take place (for example, military defense systems)
- Business software - used for managing and controlling basic business functions (Inventory management, payroll, etc.)
- Engineering and scientific software - used for research and development of technology (used in astronomy and space travel, product design, etc.)
- Artificial intelligence - used for non-algorithmic problem-solving, where advanced comprehension and logic is needed
- Web-based software - uses basic information on remote devices (such as Internet servers) to generate a versatile interface for end-users (web browsers are a common example of such software)
- Personal computer software - Whether a word processor, graphics editor, or media player, this software is designed for typical end-users from their local computer