Is there a distinction between software and an application-if so, what?

I often find myself interchanging the words software and application in my writing. I’m not sure there is a difference. Is it merely a matter of semantics (old school vs new school) or is there a technical difference and if so, what is it?

See also: program.

I don’t think there’s a meaningful difference between any of these terms: software, program, application, app. I think it’s just the evolution of language.

Arguably if you were to show a 15-year-old TikTok and describe it as “software,” they’d look at you funny. Same if you were talking to a sysadmin with decades of experience and you described the latest config UI for a USB driver as an “app.”

My bet is that different people have different soft definitions for these terms, but they fundamentally describe the same thing: code that allows a user to do something.


I (mostly) use the terms like this:

Software: Collective term for “stuff that runs on a computer”

Program: One instance of software. It may be a daemon, utility, automated job, OS kernel, or something an end user uses.

Application: An interactive, user-facing program used to perform a given type of work for that user.

These aren’t really hard and fast and I sometimes mix them up a bit (especially program and application), but that’s mostly how I use the terms.

They form a hierarchy of sorts: all applications are programs and all programs are software, though some applications may consist of more than one program, and some programs can be stored in firmware, so that’s not really hard and fast either.


In my work, we generally think of things this way. There’s no universal definition for much of this – standards organization such as NIST, IEEE, ACM, and so on, have definitions, as does the law, but for the most part use of almost all of the terms in the image – as well as the boundaries between them – are colloquial.


You need another box around that labeled, “Support. (Where we make the real money).”


But of course!

(Not to mention the big bucks in “integrations”; “platforms”; the AASes (“SAAS, PAAS, IAAS,”); “environments”, etc.)

1 Like

Software is used to differentiate with the term Hardware. A physical media, device,thing etc. Anything that runs on such hardware is Software.

I think that a bit of it comes down to taxonomic hierarchy.

If we drew it as a Venn diagram, “software” is a huge circle with everything else inside it. As an example, a library for compressing audio is “software”, but nobody would call it an “app”.

And by standard convention that library probably wouldn’t even be referred to as a “program”, because “program” usually conveys some sense of “you can run this and it does something”. A 10-line piece of software that calls that library to compress an MP3 file would more likely be considered a “program” though, even if it’s a trivial one.

And to make it extra-confusing, the word “programming” seems to almost-universally mean “writing software”, even if what you wind up with isn’t technically a “program” by most peoples’ definitions. :slight_smile:

Except for firmware :upside_down_face:

1 Like

Think of software like “clothes,” while application, app, program would be a piece of clothing, like “shirt.”

Also while I have the floor, “code” is like “corn”. No need for “codes” it’s just “code”. You eat some corn, you write some code. You ship corn, you ship code.
While you can have secret codes, that’s a different animal. If you say an archive of Python codes, well, that’s just wrong :slightly_smiling_face:

(Mostly my opinion. Merriam-Webster doesn’t seem to make a distinction.)

That’s actually an interesting point. I’ve always taken firmware to mean executable code that’s either stored in ROM or (E(E(PROM)). So is software something results in a process (or being part of a process in the case of a library) when executed or does it also have to be easily alterable? If the latter, then would code on a DVD/CD-ROM not be software?

You sure you’re not having fun with us? The term “firmware” itself is kind of a joke playing off the uncertainty that lies between hardware and software.

This discussion sounds like a Robot or Not episode.

And then there are field programmable gate arrays, where the “program” defines the hardware’s behavior, but doesn’t “run” on the hardware.

1 Like

I’m absolutely having fun, but also musing a bit “out loud” as I’m typing :slight_smile:

“What’s ROM?”
“Read Only Memory.”
“Oh…so what’s an EEPROM?”
“It’s…erm…Read Only Memory that you can, uh…hmmm…you know what? Never mind.”

And don’t forget WOM, just to round things out. :smiley:


At one of my very first University lectures many, many years ago, our professor explained to us that “hardware is something you can actually kick, as opposed to software, which you can only swear at” :wink:


I work with microservices in Norway, and have noticed that the word App is being used to refer to those internally, though only in Norwegian. As in “we have 21 apps in this team”.
Language is confusing as hell…


Program - Code that does one thing. Smallest piece of running code.

App - Collection of such smaller programs to achieve a greater task. This is mostly referred to software on a mobile device that does one particular task. Mostly small teams or indies developing. Though a subset of Software

Software - An app which is much more elaborate and bigger in all aspects. Has an enterprise feeling around it.

Solution - Collection of software or a just Software to accomplish a goal in the eyes of a customer or a company providing such service. It’s more from the services eye you use this term

Hardware - As nicely said above it just needs to kicked to run, wiggled, pulled, patted, or even hammered to run :joy:

1 Like

and optical WORM drives

You forgot that hardware and software both need regular sacrifices of time, energy, money and sometimes small mammals and managers to keep them operating.