When I started learning about computers in the mid nineties, all books used the word program to reference any executable that ran under MS-DOS (.exe, .com, .bat). Applications was a math concept, at least in French, like application injective, surjective, and bijective. Now I rarely hear it outside of the development community and most people and websites even Microsoft's refer to them as apps. So is there any differences between an application (app) and program Is there a reason for using that specific word?
A Program is any piece of software. Note, however, that some restrict the use of the word to only include largely self-contained pieces of software and thus don't include libraries and similar code as programs.
An Application is a program that has an interface that the user directly interacts with. Applications also used to be contrasted with games, but that usage seems to have entirely fallen out of favour.
An App¹ was Apple’s marketing term for applications running on the iPhone and iPod Touch, but has since made its way back into common usage to refer to applications running on Windows, Linux, etc.
So all applications are programs, but not all programs are applications. Commonly encountered programs that are not applications include drivers and parts of the operating system.
Which word is used seems by normal users is largely a matter of fashion.
¹"App" was sometimes used prior to Apple's use of it - it's a natural enough shortening of Application after all - but that's how it entered into mainstream usage.
So is there any differences between an application (app) and program. Is there a reason for using that specific word.
No. They are interchangeable - at least in common, every day usage.
App is shortened from Application which in turn is short for Application Program
Now in a more specific context they are about point of view and do mark overlapping regions.
Program is rather a technical term tied to mean a distinct self-contained piece of software, which may stand on its own or be part of a larger construct.
Application on the other hand is more of a user-centric term, picturing a non-developer view of a tool to be used, independent of its implementation.
To illustrate, a word processor's components, like menu, merge or spellchecker are usually called programs not applications, despite being fully self-sufficient. In contrast the word processor as whole is seen (by users) as an application. Today often not even that but the whole office package.
But it is and might always be a blurry line and word choice depending on point of view and environment used in. This is even further true with the changed world we (developers) experienced over the last 40+ years - mainly turning from the majority of computer users into a being a very small minority.
In common parlance, the terms are essentially synonymous now. However, if you want to take a stricter approach:
A program is any piece of executable code.
An application is a program that is concerned with something other than running the computer itself. So, a word processor would be an application but your CPU scheduler wouldn't be.
I strongly disagree with this answer, an application absolutely doesn't require a user to directly interact with it. For instance, web services are applications, one could easily have a web service that does nothing but scrape Reddit for memes and repost them on Twitter, with no user interaction required.
There is one other wrinkle to classifications of software people (used to) use -- the applet. This was a term used for a Java program that ran in a restricted-access sandbox, such as a web browser. One such restriction was that it could not open a local file except for self-contained data files. It could also read and write cookies, using a strict cookie-access protocol If ran standalone, it would be outside of the sandbox and considered a normal program or app.
Unfortunately (IMO) Java was removed from browsers due to alleged security concerns. Maybe some of the claims were legit, but Sun and later Oracle quickly fixed reported problems.
Anyway, applets are just a footnote of history, like a Betamax.
/added 26 June 23: Based on comments, I thought showing a historical usage overview of 'applet' would be instructive. I included 'widget' just as another not-commonplace tech term for comparison. link to interactive NGram
Clearly the word 'applet' is still around, but not anywhere near as common as when browsers hosted them. BTW, I first tried using 'app' instead of 'widget', but it is so common, it drowned out applet almost completely.
Studying the origins of the words may give some insight: in the pre-computer era a program(me) was a sequence of events, typically ordered by time, such as for a musical concert or for a loom weaving socks. An application was, and still is, a use for some kind of resource. So the difference in meaning comes down to ‘what purpose does it serve’ vs ‘how does it work’ and the usage or one term or the other might be taken as an indication of the speaker’s line of thinking.
I have had the same struggle when I started seeing the word "app" used for what looked like all programs. I think that Jack Aidley's answers is correct in regard to
An App was Apple’s marketing term for applications running on the iPhone and iPod Touch [...]
I recall that it started to grow around that time. As mentioned by others, the word application was already used. It is just that a marketing trick made the abbreviation of that word much more popular and kind of wiped our the word program in the process. Just like a movie (Hasta la vista, baby) or a TV series (Meh) would make some word or expression more popular.
However, I wanted to chime in for the mathematical usage you present. This is only in French. The correct English translation would be to use the verb "apply", although specifically, in mathematics, those are called functions:
(i.e. the word application for some of the French meanings are false friends in English.)
An app is always downloaded through an app store. Yes, it's as simple as that. That is why it's called app store. (I mean app store in general and not Apple's app store.)
While you can get a program from everywhere (a website or CD for example).
On Windows you can get many apps/programs from either the Microsoft Store or the website of the creator.
For example if you download Adobe Reader from the Microsoft Store it's an app and if you download it from adobe.com it's a program.
So if you use the short form app it's always from some kind of app store.
But if you use the long form application I think most people use it synonymously to program. (While there might be a different.)
Other characteristics of apps:
It should also be said that apps (often but not always) ask for permission before accessing resources like camera or personal data. It depends on whether the OS supports permission requesting.
An app store is typically connected to a package manager. The package manager can update installed apps to a newer version. That's very comfortable for an app developer. While the developer of a classical program needs to implement his own update mechanism (if there is no package manager on the OS).
On Android there is a slightly different definition of what an app is. Most apps can be downloaded from the app store (e.g. Google Play Store, Samsung Galaxy Store). So my definition applies to 99% of all apps. However there can be system apps for example which do not exist on any app store. So in fact every installed package on Android can be called an app. Those can be listed by
pm list packages.