C-språkets historia

År C standard
1972 Ett språks födelse
1978 K&R C
1989 ANSI C (C89)
1990 ISO C (samma som C89)
1999 C99
2011 C11
2017 C17 (korrigerad C11)
2018 C18 (samma som C17)

Programmeringsspråket C utvecklades mellan 1969 och 1973 Bell Labs . Enligt Ritchie kom den mest aktiva perioden av kreativitet 1972 . Språket kallades "C" (C är den tredje bokstaven i det engelska alfabetet ) eftersom många av dess egenskaper härstammar från det gamla språket " B " (B är den andra bokstaven i det engelska alfabetet). Det finns flera olika versioner av ursprunget till namnet på Bi-språket. Ken Thompson pekar på programmeringsspråket BCPL , men det finns också Bon- språket , också skapat av honom. Ritchie föreslår att namnet på språket kan ha härletts från namnet på Thompsons fru Bonnie [1] .

År 1973 hade C-språket blivit tillräckligt starkt för att det mesta av UNIX -kärnan , som ursprungligen skrevs i PDP-11 /20 assembler, skrevs om i C. Det var en av de tidigaste operativsystemkärnorna skriven på ett annat språk än assembly; tidigare var bara Multics (skrivet i PL/1 ) och TRIPOS (skrivet i BCPL).

Skäl till utveckling

Det finns flera legender om utvecklingen av C och dess relation till UNIX- operativsystemet , inklusive följande:

Enligt en legend var utvecklingen av C resultatet av det faktum att dess framtida författare älskade ett datorspel som det populära spelet Asteroids (Asteroids)[ källa? ] . De hade spelat det länge på företagets huvudserver , som inte var tillräckligt kraftfull och måste betjäna ett hundratal användare. Thompson och Ritchie kände att de saknade kontroll över rymdfarkosten för att undvika att träffa några av stenarna. Så de bestämde sig för att porta spelet till en gratis PDP-7 på kontoret. Den här datorn hade dock inget operativsystem , vilket tvingade dem att skriva ett. Till slut bestämde de sig för att porta det här operativsystemet till kontoret PDP-11 , vilket var mycket svårt, eftersom dess kod var helt skriven i assembler . Ett förslag kom att använda något slags bärbart språk på hög nivå så att operativsystemet enkelt kunde överföras från en dator till en annan. B-språket, som de ursprungligen ville använda för detta, berövades den funktionalitet som kunde använda de nya funktionerna i PDP-11. Därför bestämde de sig för utvecklingen av C-språket.

Det finns en annan legend. Den första datorn som UNIX ursprungligen skrevs för var avsedd att vara ett automatiskt dokumentfyllningssystem. Den första versionen av UNIX skrevs i assemblerspråk. Senare, för att skriva om detta operativsystem, utvecklades C-språket.[ källa? ] .

K&R C

1978 publicerade Brian Kernighan och Dennis Ritchie den första upplagan av The C Programming Language. Denna bok, känd för programmerare som "K&R", fungerade i många år som en informell språkspecifikation. Den version av C-språket som beskrivs i det kallas ofta "K&R C". Den andra upplagan av denna bok behandlar den nyare ANSI C- standarden , som beskrivs nedan.

K&R introducerade följande språkfunktioner:

K&R C anses ofta vara den viktigaste delen av språket som en C-kompilator måste stödja. Under många år, även efter lanseringen av ANSI C, ansågs det vara den lägsta nivå som programmerare bör hålla sig till om de vill uppnå maximal portabilitet från sina program, eftersom inte alla kompilatorer då stödde ANSI C, och bra K&R C-kod var också sant för ANSI C.

Sedan publiceringen av K&R C har flera funktioner lagts till i språket, med stöd av kompilatorer från AT&T och några andra tillverkare:

Språkstandarder

ISO C

I slutet av 1970-talet började C ersätta BASIC som det ledande språket för mikrodatorprogrammering . Den anpassades för användning på IBM PC på 1980 -talet , vilket ledde till en dramatisk ökning av dess popularitet. Samtidigt började Björn Stroustrup och andra på Bell Labs arbetet med att lägga till objektorienterade programmeringsmöjligheter till C. Språket de så småningom skapade, C++ , hade en stor inverkan på mjukvaruutveckling, men matchade aldrig riktigt [2] C:s popularitet, särskilt på UNIX-liknande system.

1983 bildade American National Standards Institute (ANSI) en kommitté för att utveckla en standardspecifikation för C. I slutet av denna långa och svåra process, 1989 godkändes det slutligen som "C-programmeringsspråket" ANSI X3.159-1989 . Denna version av språket kallas ANSI C eller C89. 1990 antogs ANSI C-standarden med mindre ändringar av International Organization for Standardization (ISO) som ISO/IEC 9899:1990 .

Ett av målen med den här standarden var att utveckla en superset av K&R C, som innehåller många av funktionerna i språket som skapades senare. Men standardkommittén inkluderade också flera nya funktioner, såsom funktionsprototyper (lånade från C++) och en mer sofistikerad förprocessor .

ANSI C stöds nu av nästan alla befintliga kompilatorer. Nästan all C-kod som skrivits på senare tid överensstämmer med ANSI C. Alla program som bara skrivits i standard C kommer garanterat att köras korrekt på alla plattformar som har en lämplig C-implementering. Men de flesta program är skrivna på ett sådant sätt att de bara kommer att kompileras och köras på en viss plattform eftersom:

  1. de använder icke-standardiserade bibliotek , till exempel för grafiska skärmar;
  2. de använder specifika plattformsspecifika verktyg;
  3. de är designade för ett visst värde av storleken på vissa datatyper eller för ett visst sätt att lagra denna data i minnet för en viss plattform.

C99

Efter att ha standardiserats i ANSI förblev C-språkspecifikationen relativt oförändrad under lång tid, medan C++ fortsatte att utvecklas ( 1995 introducerades C-standarden genom First Normative Amendment, men nästan ingen kände igen den). Standarden reviderades dock i slutet av 1990 -talet , vilket ledde till publiceringen av ISO 9899: 1999 1999 . Denna standard kallas vanligtvis "C99". I mars 2000 antogs och anpassades den av ANSI.

Några nya funktioner i C99:

C11

Den 8 december 2011 publicerade en ny standard för C-språket (ISO/IEC 9899:2011) [3] . Huvudändringar:

C18

Ett utkast till version av standarden lämnades in som C17 (ISO/IEC 9899:2017) 2017 [4] . I juni 2018 publicerades standarden som C18 (ISO/IEC 9899:2018) [5] [6] . Den nya standarden eliminerar defekter som setts i den tidigare versionen utan att lägga till nya funktioner. Namnen C17 och C18 brukar betecknas som synonymer [6] .

Anteckningar

  1. Ritchie D. M. C-språkets utveckling. Avsnitten "Introduktion" och "Historik: inställningen".
  2. Programmering Community Index för april 2012 . Hämtad 2 februari 2019. Arkiverad från originalet 2 juli 2013.
  3. ISO/IEC 9899:2011 - Informationsteknik - Programmeringsspråk - C . Hämtad 2 februari 2019. Arkiverad från originalet 27 december 2011.
  4. ISO/IEC. ISO/IEC9899:2017 . Programmeringsspråk - C (inte tillgänglig länk) (2017) . Hämtad 2 februari 2019. Arkiverad från originalet 24 oktober 2018. 
  5. ISO/IEC 9899:2018 - Informationsteknik - Programmeringsspråk - C . www.iso.org . Hämtad 2 februari 2019. Arkiverad från originalet 10 augusti 2018.
  6. ↑ 1 2 Använda GNU Compiler Collection (GCC): C  Dialektalternativ . gcc.gnu.org. Hämtad 3 december 2018. Arkiverad från originalet 26 mars 2014.

Litteratur