Beaucoup de gens ont tendance à confondre un langage et les librairies qui y sont afférentes. Cette courte page se propose de définir ces deux termes de la manière la plus simple possible afin que la confusion n'arrive plus.
Un langage informatique est une grammaire. Chaque instruction du langage (chaque "phrase") doit obéir à un ensemble de règles syntaxiques afin d'être valide. Ainsi, en langage C, l'appel d'une fonction doit obéir à l'une des syntaxes suivantes :
En aucun cas on ne doit considérer les fonctions fournies avec le langage comme étant le langage. Elles ne sont qu'un ensemble d'outils de base fournis pour accomplir les tâches basiques. Ces fonctions font partie de ce qu'on peut appeler la "librairie de base", et le langage pourrait s'en passer, ou on pourrait les réécrire. Rien n'empêche d'ailleurs, avec les primitives du langage (la grammaire, les opérateurs et les types de base essentiels), de se passer de ces fonctions, bien que ce ne soit pas forcément souhaitable. La notion de langage et celle de librairie doit être bien séparée.
Une librairie (c'est un vilain anglicisme, les Académiciens diraient bibliothèque) est un regroupement de fonctions et de types, éventuellement de classes dans un langage orienté objet écrite dans un langage, visant à fournir des fonctionnalités. En C, la libc est une librairie qui fournit les fonctions de base telles que printf(), scanf(), qui servent à l'entrée/sortie et des fonctions plus avancées. Par ailleurs, pour être certifié conforme à la spécification du langage C, il est obligatoire que cette librairie soit disponible, mais dans l'absolu cela n'a rien d'obligatoire. En C++, la stdlib contient les fonctions de base cin, cout, et d'autres. Toutefois, on peut utiliser d'autres librairies, telles que Boost, pour ajouter des possibilités de programmes en réutilisant des composants fournis.
Une librairie est à un langage ce qu'un sous-ensemble du vocabulaire est à la grammaire française.