I was reading about the differences standards and specifications for C.
I understood that programming languages are usually stadardized and I learnt that there are different approches to stadardization.
Anyway I did not understand yet what this terms refer to.
If I think to C, I believe it refers to a standard API, the API of the C standard Library (libc).
This seems to make sense to me, as if someone told me "Look these are the only functions, types, Macros....etc you can use", because they're the only thing you "see" after you downloaded the library and they make your code portable.
Anyway, I don't know if my idea of standardization is in some-ways correct, if it's totally wrong or if it's a simplified version, so here I am.

  • 1
    $\begingroup$ I don't see a way how this is CS. It's about how programmers refer to versions of programming languages. This should be on Stack Overflow or Software Engineering; whose perspective do you want? $\endgroup$
    – Raphael
    Commented Jan 24, 2018 at 18:25
  • $\begingroup$ @Raphael Seems that stackoverflow it's used only for code questions right now, and software engineering...well, it's not that easy choosing betweet that and here...I guess here it's more oriented toward computational theory , but for the rest they share a lot of tags...So I just made a random choice....It could have been the wrong one, but only now I know it :) $\endgroup$ Commented Jan 24, 2018 at 19:18
  • $\begingroup$ @GabrieleScarlatti, as a rough understanding of the usage of a standardization, "they're the only thing you 'see' after you downloaded the library and they make your code portable." is pretty good. $\endgroup$
    – John L.
    Commented Nov 2, 2018 at 15:15
  • $\begingroup$ @Raphael, the cs.stackexchange.com/help/on-topic includes "programming language semantics". It looks like how to understand the standardization of programming languages is on-topic to me, even though it might be even more on-topic on other sites. $\endgroup$
    – John L.
    Commented Nov 2, 2018 at 15:18

4 Answers 4


A standard for a programming language is a document defining the syntax and semantics for that language. Usually, for real-world languages, this document involves a (hopefully) precise description in intuitive terms, rather than a formal semantics, written in mathematical terms.

Still, this document acts as a contract between the programmer and the language implementation (usually a compiler/interpreter, plus some "standard libraries").

The programmer knows that, if they stick to what the standard mandates, they will get back the intended result from the implementation. Vice versa, the implementor of the language can assume that the programmer used no other features than those mandated. Often, the implementor will also provide non-standard features (additional APIs, additional language constructs, OS-specific libraries, etc.).

Note that the standard does not only involve describing the APIs in the standard library. In the case of the C language, as mentioned by the OP, the standard defines among others: the syntax, the type system, the memory model, the statements, the variable declarations, etc.

For instance, what happens if we write int *x; *x=0;? The ISO standard answers that: an implementation printing mooo! on screen is perfectly conforming (as any other implementation is).

So, summing up, a standard is the authoritative document which answers questions like "is running code C guaranteed to have behavior B?".

Most standards are written by a committee made of the most prominent organizations which developed / are developing the most widespread implementations. They vote on which features should be in or out, until they reach an agreement on what should be the standard definition. Some languages are revised every few years, so to include more features.


Standardization is the process of developing, promoting and possibly mandating standards-based and compatible technologies and processes within a given industry.

Standards for technologies can mandate the quality and consistency of technologies and ensure their compatibility, interoperability and safety. Standards organizations such as ANSI , IEEE and IETF exist to promote standardization and endorse official standards for given applications.

A lack of standardization often manifests in large numbers of incompatible proprietary formats for a given technology and for technologies that must interoperate. That all-too-common situation hinders the adoption and advancement of the technology and industry.

The burgeoning Internet of Things (IoT) is a current case in point. The main purpose of the IoT is enabling almost any object imaginable to be connected and to transmit data over the Internet. Although that scenario is increasingly becoming realized, incompatible formats and market fragmentation are slowing adoption.


Standards are simply a list of software guidelines that a project will need to conform to. These standards can be a mixture of requirements. There could be special format and documentation of the code needed. You many need to program the flow of routines in a certain way. How you name functions, files, and variables may need to fit into certain schemes. There could be limits on the types of features that a developer can use while working in some platform.

The reason why it is important to know about standardization in C is that many compilers have been built to default to various versions or even only support only one standard of C programming. You may be forced to work with a particular compiler or a legacy system that may not be able to support a new version of C. Luckily, C programmer did not see many changes of features between the ANSI-C and the C99 standards.


I wrote this to help someone understand standardization in the context of c++.

Most programming languages have a committee that works on a specification of the language called a standard. Individual vendors then implement interpreters or compilers that conform to this standard.

The idea is that code should be portable between compilers. Sometimes code works on one compiler and not on another. The standard is then consulted to see whether it is the code that doesn't conform to the standard or whether it is the compiler that doesn't conform.

Consider for a second Chomsky's work on grammar. There are infinitely many grammatically correct sentences, but we are all endowed with the ability to tell if any given one is grammatical.

There are infinitely many pieces of code. A programming language standard is a specification from which we can determine if a given piece of code is correct.

If it is correct, it is said to conform with the standard or to be well defined by the standard. Otherwise it is said not to conform and it's behaviour is then called undefined behaviour (as it might happen to work on some vendors implementations of the language, and not on others i.e. not guaranteed to work, rather than guaranteed not to work).

It's a good idea to write code that is well defined/conformant. Otherwise the vendor might change their implementation, and break your code. They would be considered to be in the right, since they are conformant. In this way, it's a little like the law.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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