This is a work in progress. It will undergo continual revision.
There is a fundamental flaw in how we conceive software, which has drastic effects on how we work with it. As its name suggests, the name 'software' implies that software is intangible. This is not correct.
I would like to correct this notion by proving that, like any other entity in the real world, software is physical and what the consequences of this are. I am persuaded that this can facilitate the development of a more scientific approach in the production of software.
In my research for this article, I found it surprisingly difficult to get definitions of 'software' from renowned organisations. It seems to me that those with the reputation to craft high quality software have no trouble with the concept. Sadly, this does nothing for the millions who could benefit from an understanding that correctly blends the essence of software with how it should be produced. The definitions I could find were mainly aimed at entry-level audiences implying that everyone with a working knowledge of software clearly undstands what it is.
In all quotes below I have added emphasis using italics.
"Software" refers to a collection of instructions, data, or programs used to operate computers and execute specific tasks. It is essentially the non-tangible component of computers, in contrast to hardware, which is the physical aspect of computers and computer networks. Software can be categorized broadly into several types:
1. Application Software: These are programs designed for end-users to perform specific tasks like word processing, web browsing, or playing games. Examples include Microsoft Word, Adobe Photoshop, and web browsers like Google Chrome.
2. System Software: This includes the operating system and all the utilities that enable the computer to function. System software acts as a bridge between hardware and user applications. Examples include Microsoft Windows, macOS, Linux, and device drivers.
3. Middleware: This software acts as a bridge between application software and system software or between two different kinds of application software. For example, it might be used to connect a database system with a web server.
4. Programming Software: These tools help developers write programs by providing program editing and testing functions. Examples include compilers, interpreters, and text editors used for coding.
5. Firmware: This is a specialized type of software that is closely linked to the hardware on which it runs. Firmware is typically stored in read-only memory (ROM) and is used to control low-level functions of hardware devices.
Software is characterized by its ability to be programmed, updated, or configured. Unlike hardware, it doesn't have a physical form, but it is essential for the operation of all computer systems and electronic devices that require programming.
While software is not physical or tangible in the traditional sense, accounting rules allow businesses to capitalize software as if it were a tangible asset.
"Software is a set of instructions, data or programs used to operate computers and execute specific tasks. It is the opposite of hardware, which describes the physical aspects of a computer. Software is a generic term used to refer to applications, scripts and programs that run on a device. It can be thought of as the variable part of a computer, while hardware is the invariable part."
software, instructions that tell a computer what to do. Software comprises the entire set of programs, procedures, and routines associated with the operation of a computer system. The term was coined to differentiate these instructions from hardware—i.e., the physical components of a computer system.
anything that is not hardware but is used with hardware, especially audiovisual materials, as film, tapes, records, etc.:
A computer system is divided into two categories: Hardware and Software. Hardware refers to the physical and visible components of the system such as a monitor, CPU, keyboard and mouse. Software, on the other hand, refers to a set of instructions which enable the hardware to perform a specific set of tasks. The software must be installed in the hardware to function properly and similarly, the hardware must be present for the tasks to be performed. Both are interdependent, yet they are also different from each other.
Anything that is stored and/or processed on physical devices is physical. I doubt there is any room for debate on this point.
It is very important to distinguish between the actual physical form of information (e.g ink on a page, bits in a computer etc.) and the information that the physical form contains. The information is not physical but the realisation is. I believe this is the heart of the the confusion: for information to exist in the physical world, it must be physicalised but mere physicalisation is not information. Physicalisation and information are distinct and independent entities and come together whenever communication happens; the physical ingredients may exists apart from their use in communication just as you can have a swirl of ideas internally that never find expression.
It is this physicalisation which expends energy: writing down your thoughts uses up energy in the physical world because you must pick the pen, flip the page and write. Similarly, multiplying two numbers on a computer requires that the two numbers are physicalised in memory using some numerical encoding, transported to registers then traverse the CPU to produce the result, all of which expend energy albeit very little. The wonderful thing about the technology used in modern computers is that the both the physicalisation and the physical effect are miniscule.
It is important to be aware that the physical form that software takes will vary from medium to medium. For example, when the sequence of bits constituting a given piece of software are in memory they will take the form of transistor states but take a completely different form as surface pits in an optical disk (DVD, CD, Bluray). Similarly, the same bit sequence in transit through a computer network may take the form of laser pulses in an optical cable, modulated electromagnetic waves in a 5G signal and magnetic dipole orientations on a hard disk drive. Regardless of which physicalisation is used, it is required that the bit sequence retain its integrity so that when clocked through computer engine (CPU), the same effects will be failthfully reproduced.
I believe the argument presented in the previous two sections warrants the conclusion that software is indeed physical. Thinking of software in exactly the same terms as we think of commodities (gold, cotton, This means that it is subject to the exact same physical laws such as having mass, energy etc. and that these should be accounted for.
Unfortunately, the ubiquity and power of modern computers hide away the complexity involved in storing, transform and transporting bit sequences to such a great extent that the fallacy that software is not physical has been perpetuated.