I was writing up some text the other day; the goal was to introduce some basic computer science modes of thought to a general audience.
APIs, abstractions, and interfaces
In order to talk about abstractions in computer science, it’s useful to explain what an interface is. Eventually, I came to a point where I needed to decide whether to introduce the jargon “API.” If I was going to introduce API, should I explain what it stands for? (What does it stand for, anyway? I thought, and then checked Wikipedia instead of thinking.)
“Interfaces” are very general concepts. I understand an API to be a type of interface that is associated with code and programming. A mouse or keyboard is not an API, that’s is a different kind of interface, a user interface or UI.
Programmers kind of needed a term that means “an interface, in the context of programming,” and API has become that term. The “I” is very important – it stands for “Interface,” which is the whole point. But I don’t think the first two letters are particular meaningful and important, or even helpful for explaining what kind of interface an API is! Do other people agree?
I made a google form that asked people what the “A”, “P”, and “I” stood for, and tweeted it out for an unscientific survey. I had two hypotheses.
- People would be more likely to know what the “I” meant. (I am now much more inclined to think this is true.)
- No matter what Wikipedia says, lots of people will think the “A” stood for “Abstract” or “Abstraction”, because of the relationship between interfaces and abstraction. (I now much more inclined to think this is false.)
These results come from 221 responses collected in the week of January 21, 2019. The clear consensus is that API means “Application Programming Interface,” which is Wikipedia’s answer. 77% of people gave that specific answer if I give some leniency for typos.
People definitely were most consistent about saying that the “I” stood for “Interface,” which was what I expected!
I didn’t have strong suspicions about whether “Application” or “Programming” would be more consistent. However, only 3 people said “Abstract” for the “A,” which was definitely fewer than I expected.
The graph above includes every response, including blank responses and responses that were obviously trolling me, including one answer, Actually, they’re probably Paranormal Process Poltergeists Producing Incrypted Information, which warned me in the optional email field to exclude those results lest I get API ghosts. (Oops.)
Exercising some editorial control and excluding troll answers like “Aggregated Polynesian Industry” as well as blank answers, I get the following, which more clearly gives evidence that “Interface” is the only word that people basically know or can guess.
One person put “A Programming Language,” which I decided not to count as a troll answer despite the conspicuous lack of an “I”. But I’ll exclude that one from the list below.
3 people suggested “Automatic” or “Abstract” for A, and 2 people suggested “Advanced.” Singleton answers were “Automated,” “Adaptive,” “Aggregated,” and “Agnostic.” The “Agnostic” answer said that it was a guess, but I really liked that guess! (Two people said “Applications,” but I counted those as consensus answers.)
11 people suggested the noun “Program” instead of the verb (adjective?) “Programming” for P, and 10 people suggested the noun “Programmer(s)”. Other suggestions were “Programmable” (3), “Public” (3), “Protocol” (2), “Peripheral” (1), “Portal” (1), “Platform” (1). I like this list! Every one of these answers really does carry an interesting shade of meaning of the way an API is tool for programmers, a set protocol for communicating over the boundary of implementation and client.
There were only two non-consensus guesses for “I,” one for “Industry” and one for “Integration.”
The “A” in “API” is kind of weird, and people either remember that it means “Application” or they kind of guess random things. What does “Application” even mean in this context anyway?
There are lots of answers for what the “P” stands for, they’re mostly pretty good. While there is a broad consensus for “Programming,” there are other options, like “Program” or “Programmer,” which are interesting, in part because center other ideas. I would argue against considering these “wrong” if you have an ounce of descriptivism in your bones.
The “I” in API stands for “Interface,” in both prescriptive and descriptive senses. Which is good, because an API is a kind of interface.