C (langage)

Page d'aide sur l'homonymie Pour les articles homonymes, voir C.
C
Logo.
Image illustrative de l'article C (langage)

Date de première version Voir et modifier les données sur Wikidata
Paradigme Impératif, procédural, structuré
Auteur Dennis Ritchie
Développeur Dennis Ritchie, Bell Labs
Dernière version C11 Voir et modifier les données sur Wikidata
Typage Statique, faible
Normes ANSI X3.159-1989 (ANSI C, C89)
ISO/CEI 9899:1990 (C90)
ISO/CEI 9899:1999 (C99)
ISO/CEI 9899:2011 (C11)
Influencé par BCPL, B, Algol 68, Fortran
A influencé awk, csh, C++, C#, Objective-C, D, Concurrent C, Java, JavaScript, PHP, Perl
Implémentations GCC, MSVC, Borland C, Clang
Extensions de fichiers .c, .h

C est un langage de programmation impératif et généraliste. Inventé au début des années 1970 pour réécrire UNIX, C est devenu un des langages les plus utilisés. De nombreux langages plus modernes comme C++, Java et PHP reprennent des aspects de C.

Histoire

Ken Thompson (à gauche) et Dennis Ritchie (à droite).

Le langage C a été inventé au cours de l'année 1972 dans les Laboratoires Bell. Il était développé en même temps que UNIX par Dennis Ritchie et Ken Thompson. Ken Thompson avait développé un prédécesseur de C, le langage B, qui est lui-même inspiré de BCPL. Dennis Ritchie a fait évoluer le langage B dans une nouvelle version suffisamment différente, en ajoutant notamment les types, pour qu'elle soit appelée C [1].

Bien que C soit officiellement inspiré de B et de BCPL, on note une forte influence de PL/I (ou de PL360) ; on a pu dire que C était à Unix et au PDP-11 ce que PL/I fut pour la réécriture de Multics.

Par la suite, Brian Kernighan aida à populariser le langage C. Il procéda aussi à quelques modifications de dernière minute.

En 1978, Kernighan fut le principal auteur du livre The C Programming Language décrivant le langage enfin stabilisé ; Ritchie s'était occupé des appendices et des exemples avec Unix. On appelle aussi ce livre « le K&R », et l'on parle de C traditionnel ou de C K&R lorsqu'on se réfère au langage tel qu'il existait à cette époque.

Normalisation

En 1983, l' Institut national américain de normalisation (ANSI) a formé un comité de normalisation (X3J11) du langage qui a abouti en 1989 à la norme dite ANSI C ou C89 (formellement ANSI X3.159-1989). En 1990, cette norme a également été adoptée par l' Organisation internationale de normalisation (C90, C ISO, formellement ISO/CEI 9899:1990). ANSI C est une évolution du C K&R qui reste extrêmement compatible. Elle reprend quelques idées de C++, notamment la notion de prototype et les qualificateurs de type [2].

Entre 1994 et 1996, le groupe de travail de l'ISO (ISO/CEI JTC1/SC22/WG14) a publié deux correctifs et un amendement à C90 : ISO/CEI 9899/COR1:1994 Technical Corrigendum 1, ISO/CEI 9899/AMD1:1995 Intégrité de C et ISO/CEI 9899/COR1:1996 Technical Corrigendum 2. Ces changements assez modestes sont parfois appelés C89 avec amendement 1, ou C94 / C95 [3], [4]. Trois fichiers d'entêtes ont été ajoutés, dont deux concernant les caractères larges et un autre définissant un certain nombre de macros en rapport avec la norme de caractères ISO 646.

En 1999, une nouvelle évolution du langage est normalisée par l' ISO : C99 (formellement ISO/CEI 9899:1999). Les nouveautés portent notamment sur les tableaux de taille variable, les pointeurs restreints, les nombres complexes, les littéraux composés, les déclarations mélangées avec les instructions, les fonctions inline, le support avancé des nombres flottants, et la syntaxe de commentaire de C++. La bibliothèque standard du C99 a été enrichie de six fichiers d'en-tête depuis la précédente norme.

En 2011, l' ISO ratifie une nouvelle version du standard [5] : C11, formellement ISO/CEI 9899:2011. Cette évolution introduit notamment le support de la programmation multi-thread, les expressions à type générique, et un meilleur support d' Unicode.

Other Languages
العربية: سي (لغة برمجة)
žemaitėška: C (kalba)
беларуская (тарашкевіца)‎: C (мова праграмаваньня)
brezhoneg: Areg C
ᨅᨔ ᨕᨘᨁᨗ: C (basa maprogram)
català: Llenguatge C
Mìng-dĕ̤ng-ngṳ̄: C ngṳ̄-ngiòng
客家語/Hak-kâ-ngî: C ngî-ngièn
Bahasa Indonesia: C (bahasa pemrograman)
italiano: C (linguaggio)
日本語: C言語
Taqbaylit: C (tameslayt)
ភាសាខ្មែរ: ភាសាស៊ី
lumbaart: C (lenguagg)
lietuvių: C (kalba)
Malagasy: Fiteny C
монгол: Си хэл
မြန်မာဘာသာ: C (programming language)
नेपाली: सि
occitan: C (lengatge)
srpskohrvatski / српскохрватски: C (programski jezik)
Simple English: C (programming language)
slovenščina: Programski jezik C
తెలుగు: సి
oʻzbekcha/ўзбекча: C (dasturlash tili)
吴语: C语言
中文: C语言