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 versionVoir et modifier les données sur Wikidata
ParadigmeImpératif, procédural, structuré
AuteurDennis Ritchie
DéveloppeurDennis Ritchie, Bell Labs
Dernière versionC11Voir et modifier les données sur Wikidata
TypageStatique, faible
NormesANSI X3.159-1989 (ANSI C, C89)
ISO/CEI 9899:1990 (C90)
ISO/CEI 9899:1999 (C99)
ISO/CEI 9899:2011 (C11)
Influencé parBCPL, B, Algol 68, Fortran
A influencéawk, csh, C++, C#, Objective-C, D, Concurrent C, Java, JavaScript, PHP, Perl
ImplémentationsGCC, MSVC, Borland C, Clang, TCC
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++, 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
монгол: Си хэл
नेपाली: सि
occitan: C (lengatge)
srpskohrvatski / српскохрватски: C (programski jezik)
Simple English: C (programming language)
slovenščina: Programski jezik C
తెలుగు: సి
тоҷикӣ: Си
oʻzbekcha/ўзбекча: C (dasturlash tili)
吴语: C语言
中文: C语言