LanguageOfStandardsAndSpecifications

BarneySockPortrait "Okay! Here's our standard!"

JoeSockPortrait "TCP is a standard. That, my friend, is merely a specification."

There is a lot of arguing over the words standard and specification.

It may be better to say interface.

Standard

People get touchy when you say something is a standard.

You may simply mean to say, "This is the way we do it here, and we are committed to this way." Among your group, it is in fact a decided standard.

But there are people who want to make sure that others understand that it's just your group of people. "I haven't accepted this. He hasn't accepted this. That other guy hasn't accepted this. All this guy's talk of "standards" is just him talking big. Don't buy it." They may think you are trying to trick other people into using your standard, by implying that everybody is using it.

This is independent of your actual intent and meaning.

Specification

On the other side, specification could be anything. "Specification" sounds very weak.

In a given C++ project, there are hoards of header files. They change frequently, and are rarely published outside of the project. "Specification" feels like these header files, to me at least. (LionKimbro)

Perhaps most importantly, the word "specification" has no implication of permanence or promise.

If a group of people have agreed to a specification, they want to say, "This is our agreement, this is our promise, this is what we have sworn to use and implement." The word "specification" somehow does not hold that idea.

Somehow, (sarcasm here,) it is a perfectly useful word for anyone who wants to put down someone who is saying, "Here is our standard."

Interface

Perhaps the best word is "interface."

It's worth noting that the word "interface" has a history of being associated with the word "contract" in programmer's jargon.

The idea of an interface is that it is intended to be a more-or-less permenant specification.

In actual use, within (say) C++ projects, interfaces tend to change quite a bit. This is (in part) just the pragmatics vs. the ideal- the promises of ObjectOrientedProgramming? have failed: Within programs, the arrangement of classes needs to change frequently. The programmers who thought they were making more-or-less permanent interfaces were wrong. But what is important here is that their goal for the words interface and contract was to represent permanent interfaces.

Nowadays, use of the word interface seems to be more appropriate: the word is being reserved for things that will have some permanence.

Language

Maybe sometimes the word "language" is a good choice.

The word "language" implies that there are more of it and we know from the real world that everone prefers his language, but there is no single "best".

Are Standards Standard?

The joke is this: "The great thing about standards is that there are so many to choose from!"

This snide remark is usually a manifestation of cynicism. It means, "Look at all these hypocrits: They each claim to be the best, the one, the only, but they're all lyers! Because if there was a real standard, there would be no competition!"

This is just a misunderstanding of HowStandardsForm.

And again, the trouble is the multiple meanings of the word "standard."

When there are multiple standards, it just generally means: "Various groups use their own standard."

Discussion

I don't know why I was motivated to write this; It just seems like a tension point within the development community lately.

A lot of people are trying to get their code to work with other people's code.

Define external redirect: ObjectOrientedProgramming

Languages: