In computer science education, there exists a dichotomy between what we call "hardware" and what we call "software". Software can exist as patterns on hardware and also as a purely syntactic construct.

Is the dichotomy between software and hardware in computer science an invented thing that doesn't hold any ontological significance? Where does software stop being abstract?

Update 1: I now understand that ontologically people can think of both software and hardware as significant things. But where exactly does software become hardware?

  • 4
    Question: What is the relationship between a fully-equipped kitchen and a recipe? Do recipes exist? How about the plots of novels, do they exist? Those are software. In fact not just a plot, but a novel itself is software. The paper it's written on is the hardware. The novel is independent of the medium in which it's expressed. It's just an abstract sequence of ideas, as is a program. The kitche/recipe analogy is strongly on point. Novels are a little trickier I think, maybe someone can explain that. – user4894 Feb 24 at 7:21
  • 3
    You pay for it (sometimes): thus, it is "real". – Mauro ALLEGRANZA Feb 24 at 7:30
  • 1
    Computer hardware can not be "expressed" as algorithms. Algorithms are abstractions, hardware is metal and silicon. Not even software is algorithms, it is their tangible implementation as programs stored in hardware's memory cells. And it is as real as temperature distributions in a rod, which also cannot exist without the rod. Algorithms or mathematical distributions, on the other hand, can "exist" in abstraction from anything physical, for their ontological status see SEP, Abstract Objects. – Conifold Feb 24 at 15:06
  • 1
    You are asking if electricity can't exist without conductors, is electricity a real thing? or if odors can't exist without noses, what exactly are odors? Not all concepts in our brain correspond to physical objects. But they exist as soon as they become concepts in our brain. Got this idea? Now the idea exists in your head, and can't exist without your head. – RodolfoAP Feb 26 at 3:29
  • 1
    "Computer hardware is any physical device used in or with your machine, whereas software is a collection of programming code installed on your computer's hard drive", computerhope.com. Yes, they can be modeled using equations and algorithms, but so can be heated rods, and existence of a rod or heat in it is quite a different issue from "existence" of their mathematical models. – Conifold Feb 26 at 11:05

It's useful to think for a moment about the distinction between air and wind. It's tempting to say that 'wind' is just moving air, but that's not strictly true. Air is always moving (aka brownian motion); we call it 'wind' when that motion develops an overarching pattern due to some set of forces.

Interestingly, we don't have a name for that set of forces that establishes the pattern that air moves in to become wind. Maybe 'weather system', or 'convection cell', but neither is quite right. But it's clear that this 'set of forces' is a 'thing' that 'exists', because without it there would be no wind.

A computer is merely a material object (like air) that has an intrinsic potential for movement in the flipping of switches. In fact, it's possible to make a fully mechanical computer. Think of something like a mechanical music box or a player piano, which has the potential to make an infinite variety of sounds, but plays a 'song' when its internal gearing imposes a pattern by flicking mechanical switches that cause notes to be struck. At rest, the nature of a computer or a music box is undefined; neither of these is really anything until we impose an active, in-motion pattern on it. For a music box, that pattern is defined by the mechanical song cylinder; for a computer, that pattern is defined by software.

So really what we have is two states of a material object:

  • The computer in its 'natural' state, powered-down and inert, with all its switches and registers in random, disorganized states
  • The computer in its 'mobilized' state, following a specific pattern, doing specific tasks, 'moving' through a pattern of actions

The term 'software' is ambiguous. Sometimes we use the term to mean the mobilized state of the computer — e.g. "I have software that makes my omputercay eakspay igpay atinlay — and then the term 'software' is analogous to the term 'wind'. Other times we use the term 'software' to refer to the symbolic system that structures the mobilized state — e.g., "I'm writing software that will calculate the national debt to the nearest tenth of a cent" — and then the term is analogous to the music cylinder that drives a music box, or the convection cell that creates a wind. But in either case, it's still a 'thing' that 'exists'. We merely need to be clear about which 'thing' we're referring to.

  • I think by software I'm referring to both your second example about the wind and also the symbolic system. The convection cell analogy really cleared things up for me because before I thought of "software" at that level as somewhat of a synonym with the algorithms that give it structure. From your answer I now see that it's mostly a matter of more concrete definitions. – lmn32 Feb 26 at 21:37

The behavior of hardware, such as a monitor connected to a computer, may depend upon the program/software that is running on the computer.

While people are free to use ontological terms such as "real" and "exist" in a variety of ways, I personally, prefer to say that the "things" that I use to explain behavior are "real" and "exist". That is, since I explain the behavior of a monitor/computer pair by referring to software, I prefer to say that software exists, or is real. Explaining the behavior of the computer/monitor in terms of software, but then denying that software actually exists or asserting that software is not real, does not appeal to me. However, I cannot enforce my preference when it comes to others.

  • I could also argue that the monitor and computer are solely sending out physical voltages/current patterns to each other, which can both be modelled using (abstract entities) like mathematics and logic.Is the (abstract) concept of a program more superior to the logical algorithm that defines it? If it is, then in this context what makes this abstraction more "superior"? – lmn32 Feb 26 at 7:51
  • 1
    You could, and I can't stop you. However, I particularly like my way of describing reality, in which I can refer to the differences between Chrome and (the now obsolete) Internet Explorer, their various features, etc. It wouldn't be wrong to talk about physical voltage/current patterns. However, restricting the conversation seems to impoverish the conversation. – Math Keeps Me Busy Feb 26 at 12:03

All kinds of existence in our perceived physical world are all relative to our senses and our philosophical belief, not absolute. Their relation is like X-ray and its generating machine, you can touch the machine, and without the machine X-ray is impossible to emanate from it. But we normally say they both exist. Software is more like mind, while hardware is more like body. Under dualism, both exist. While under materialism, mind seems originated from body, so you can correctly claim it does not exist. Our hands can feel the hardware, our minds can feel the software in a more abstract manner when playing with the software. If you ask Plato this question, he'll most likely treat those distilled abstract but beautiful liberal ideas from software and hardware as more real than either general software or hardware "executive like" notion. But if you go to ask Aristotle the same question, being more practical, he probably will answer differently. Actually no philosopher can be sure and logically prove the real ontological existence of either hardware or Software at all...

  • 1
    Oh I don't agree with that. X-rays are as physical as the X-ray machine. However the software that runs the X-ray machine is not physical. You remember the famous story of the Therac-25, an x-ray therapy machine with faulty software that killed people. hackaday.com/2015/10/26/killed-by-a-machine-the-therac-25 So software is real, just not physical. – user4894 Feb 24 at 7:47
  • 1
    We're all just using metaphors to express and support our views, not in a literal sense here. Software as code written by programmers is also definitely physical, most likely sits in some Github repo. And software definitely cost many programmer's health or even life, so I don't see any issue with my example. – Double Knot Feb 25 at 6:16
  • 1
    No not at all. OP is asking what software is. Software is NOT physical. A novel is implemented by a book or a CD or someone reading books on tape, but the novel is not the paper or plastic CD or tape. Whereas an xray is a physical phenomena, it has energy and a wavelength and can be measured by physicists. Your analogy is entirely incorrect, not just a matter of a different opinion or an metaphor. The bits on the spinning hard drive in a Github repo are not the software any more than the paperback edition of Moby Dick is the novel. Imperative you clarify your thinking regarding these matters. – user4894 Feb 25 at 6:27
  • As some other comment mentioned, "software" relative to its runtime context, it becomes physical after its code is loaded from disk and entering memory. My "software" definition is simply its written codebase like your novel paper analogy. Your "software" seems the workflow/plot/thesis of a novel/app. With different context and philosophical belief, as long as we're both honest, both are correct. The difference of philosophy and other concrete fields lies at philosophy's numerous seemingly conflict claims and theories, as long as it's coherent within your own system, it's fine but hard... – Double Knot Feb 25 at 6:46
  • 1
    @lmn32 We distinguish between the program, which is the recipe, or algorithm, or set of instructions; and the computation, or process, which is the program executing on hardware. A program is abstract in the same sense that a novel is, independent of the medium in which it's expressed -- paper, movie, books on tape. A computation is a physical process that inputs energy, takes time, and outputs heat: all measurable physical quantities. Programs are abstract; computations are physical. – user4894 Feb 26 at 21:10

A brief addendum:

In its most basic form (pun intended), software is a list of instructions which can be read and executed by an electromechanical machine. Seen in this way, software is a recipe and hardware is the cooking robot that makes and bakes the cake.

  • So by your analogy software is real because it does something? Just clarifying. – lmn32 Mar 1 at 1:56
  • software and hardware are both real but in completely different ways- in the sense that a recipe is different from a mixing bowl. – niels nielsen Mar 1 at 4:12

It depends on how you define a ‘real thing’. For me, if it has measurable and repeatable properties then it is real. If I run the same software multiple times with the same input data and get the same result then I would say that it’s real.

This begs the counter-question, if it’s not a real thing then what is it?

  • Reductio ad absurdum (or perhaps not) is a straight line a real thing? It has to be a property of something else, as distinct from a part of something else. If you want to get into quantum physics then an atom isn’t an entity in its own right but a property of the universe, and so the distinction ceases to exist. – Frog Feb 27 at 19:58

Software is real - both as a product (economic, social, cultural value) and as a concept (utility, user interface). The processes and systems invented to develop both software and hardware are also real (as opposed to only hypothetical and theoretical) - they are real in the sense that they exist, actually, and can be utilised to achieve whatever outcomes originally conceived by the inventor/developer, e.g. developed to solve a problem or address a practical need.

Some software is developed to allow users to interface with hardware. For example, using a keyboard to interface with hardware (hard-disk, CPU, monitor) in order to send instructions to a word processor application. Or, to use software developed to allow users to input text into a website's search field - and then for the website to run your request on a web server, and return a useful result - whether a query about news or a maths calculation.

Some software, such as that developed for CPU temperature measurements, don't require any direct input from the user. But, still - in order for the hardware to perform efficiently, the hardware must be instructed by the logical processes embedded within the software.

During the NASA Apollo missions, the software was embedded not (just) within virtual interfaces, but also hardware-based devices, with real switches and knobs - used to instruct the hardware (command and service module) what to do and when.

Ultimately, all software allows us to control hardware through an user-interface, and then allowing for further reactions to the results (output) of our interfacing via the software. All software is an encapsulation of our intention, expressed through formal logical structures, necessary for effective manipulation and utilisation of hardware.

Ultimately, all hardware is a spontaneous reaction to and the organisation of electricity and electrical signals.

Like art - software and hardware exist, actually, by virtue of the fact we conceived of them, but our dependency upon software is arguably much greater, and so, by now, software... has much greater value to our tech-oriented society.

Like most things conceived by humanity - the ultimate intention and purpose is to control and harness the fundamental laws of nature in order to guarantee survival.

Some software could be considered trivial, and some - such as those controlling essential life-support hardware, are held in the highest possible regard (value).


The difference between software and hardware is like the difference between your mind and brain.

In other words, the difference is real, and the abstraction begins at digital logic, where the measurable reality of voltage turns into the unmeasurable idea of a binary number. Once there, the underlying hardware could be anything.

  • this is a better answer than it first seems, imho. i've made a small edit. – user50495 Feb 26 at 0:55
  • no i can't edit, froze. anyway, it's not exactly the same, you should say "is like the difference". not sure what "digital logic" is – user50495 Feb 26 at 0:57
  • But we still know very little about the mind, soul, and the physical brain and how they interact. I'm sorry this is too deep for me to understand and quite frankly I'm not capable of seeing how this relates to the ontology of computer science. – lmn32 Feb 26 at 7:54
  • One could also abstractly model a capacitor as a "Lego block" if you will, by abstracting away the details of Maxwell's equations and turning the capacitor into a concept essentially, and thus the whole field of Electrical Engineering, into something that runs on pspice. Doing so disregards the fact that Electrical Engineering is empirical, and If you don't care about non ideal conditions you won't be able to physically engineer a reliable circuit. – lmn32 Feb 26 at 7:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.