Historie jazyka C

Rok C standard
1972 Zrození jazyka
1978 K&R C
1989 ANSI C (C89)
1990 ISO C (stejné jako C89)
1999 C99
2011 C11
2017 C17 (opraveno C11)
2018 C18 (stejně jako C17)

Programovací jazyk C byl vyvinut v letech 1969 1973 v Bellových laboratořích . Podle Ritchieho nastalo nejaktivnější období kreativity v roce 1972 . Jazyk byl nazýván "C" (C je třetí písmeno anglické abecedy ), protože mnoho z jeho rysů pochází ze starého jazyka " B " (B je druhé písmeno anglické abecedy). Existuje několik různých verzí původu názvu jazyka Bi. Ken Thompson poukazuje na programovací jazyk BCPL , ale existuje také jazyk Bon , který také vytvořil. Ritchie naznačuje, že název jazyka mohl být odvozen od jména Thompsonovy manželky Bonnie [1] .

V roce 1973 se jazyk C stal natolik silným, že většina jádra UNIX , původně napsaného v assembleru PDP-11 /20, byla přepsána do jazyka C. Bylo to jedno z prvních jader operačního systému napsané v jiném jazyce než v assembleru; dříve byly pouze Multics (napsané v PL/1 ) a TRIPOS (napsané v BCPL).

Důvody vývoje

Existuje několik legend týkajících se vývoje jazyka C a jeho vztahu k operačnímu systému UNIX , včetně následujících:

Podle jedné legendy byl vývoj C výsledkem skutečnosti, že její budoucí autoři milovali počítačovou hru, jako je populární hra Asteroids (Asteroids)[ zdroj? ] . Dlouhou dobu ji hráli na hlavním serveru společnosti , který nebyl dostatečně výkonný a musel obsluhovat asi stovku uživatelů. Thompson a Ritchie cítili, že jim chybí kontrola nad kosmickou lodí, aby se vyhnuli nárazu do některých kamenů. Rozhodli se tedy přenést hru na bezplatné PDP-7 v kanceláři. Tento počítač však neměl operační systém , což je nutilo jej napsat. Nakonec se rozhodli tento operační systém portovat do kanceláře PDP-11 , což bylo velmi obtížné, protože jeho kód byl celý napsán v assembleru . Byl učiněn návrh použít nějaký druh přenosného jazyka na vysoké úrovni, aby bylo možné OS snadno přenášet z jednoho počítače do druhého. Jazyk B, který k tomu chtěli původně použít, byl zbaven funkcionality, která mohla využívat nové vlastnosti PDP-11. Proto se rozhodli pro vývoj jazyka C.

Existuje další legenda. První počítač, pro který byl UNIX původně napsán, měl být systémem automatického vyplňování dokumentů. První verze UNIXu byla napsána v assembleru. Později, za účelem přepsání tohoto operačního systému, byl vyvinut jazyk C.[ zdroj? ] .

K&R C

V roce 1978 vydali Brian Kernighan a Dennis Ritchie první vydání The C Programming Language. Tato kniha, programátorům známá jako „K&R“, sloužila po mnoho let jako neformální jazyková specifikace. Verze jazyka C v něm popsaná je často označována jako „K&R C“. Druhé vydání této knihy se zabývá novějším standardem ANSI C , který je popsán níže.

K&R představila následující jazykové funkce:

K&R C je často považováno za nejdůležitější část jazyka, kterou musí kompilátor jazyka C podporovat. Po mnoho let, dokonce i po vydání ANSI C, byla považována za minimální úroveň, kterou by měli programátoři dodržovat, pokud chtějí ze svých programů dosáhnout maximální přenositelnosti, protože ne všechny kompilátory tehdy podporovaly ANSI C a dobrý kód K&R C byl také platí pro ANSI C.

Od vydání K&R C bylo do jazyka přidáno několik funkcí podporovaných kompilátory od AT&T a některých dalších výrobců:

Jazykové standardy

ISO C

Koncem 70. let C začal nahrazovat BASIC jako vedoucí jazyk pro programování mikropočítačů . To bylo upraveno pro použití na IBM PC v 80-tých letech , což vedlo k dramatickému nárůstu jeho popularity. Ve stejné době Björn Stroustrup a další v Bell Labs začali pracovat na přidání objektově orientovaného programování do C. Jazyk, který nakonec vytvořili, C++ , měl velký vliv na vývoj softwaru, ale nikdy se zcela nevyrovnal [2] popularitě jazyka C, zejména na systémech podobných UNIXu.

V roce 1983 vytvořil American National Standards Institute (ANSI) výbor pro vývoj standardní specifikace pro C. Na konci tohoto dlouhého a obtížného procesu byl v roce 1989 konečně schválen jako „programovací jazyk C“ ANSI X3.159-1989 . Tato verze jazyka se nazývá ANSI C nebo C89. V roce 1990 byla norma ANSI C přijata s malými úpravami Mezinárodní organizací pro normalizaci (ISO) jako ISO/IEC 9899:1990 .

Jedním z cílů tohoto standardu bylo vyvinout nadmnožinu K&R C, která zahrnuje mnoho funkcí jazyka, které byly vytvořeny později. Výbor pro standardy však také zahrnul několik nových funkcí, jako jsou prototypy funkcí (vypůjčené z C++) a sofistikovanější preprocesor .

ANSI C je nyní podporován téměř všemi existujícími kompilátory. Téměř veškerý kód C napsaný v poslední době odpovídá ANSI C. Každý program napsaný pouze ve standardu C je zaručen, že bude správně fungovat na jakékoli platformě, která má vhodnou implementaci v jazyce C. Většina programů je však napsána tak, že se budou kompilovat a spouštět pouze na konkrétní platformě, protože:

  1. používají nestandardní knihovny , například pro grafické displeje;
  2. používají specifické nástroje specifické pro platformu;
  3. jsou určeny pro určitou hodnotu velikosti některých datových typů nebo pro určitý způsob ukládání těchto dat do paměti pro konkrétní platformu.

C99

Specifikace jazyka C zůstala po standardizaci v ANSI dlouhou dobu relativně nezměněna, zatímco C++ se nadále vyvíjelo (v roce 1995 byl standard C zaveden Prvním normativním dodatkem, ale téměř nikdo jej neuznával). Nicméně, standard byl revidován na konci 90. let , což vedlo k publikaci ISO 9899:1999 v roce 1999 . Tato norma je běžně označována jako "C99". V březnu 2000 byl přijat a upraven organizací ANSI.

Některé nové funkce C99:

C11

8. prosince 2011 byla zveřejněna nová norma pro jazyk C (ISO/IEC 9899:2011) [3] . Hlavní změny:

C18

Návrh verze normy byl předložen jako C17 (ISO/IEC 9899:2017) v roce 2017 [4] . V červnu 2018 byla norma publikována jako C18 (ISO/IEC 9899:2018) [5] [6] . Nový standard odstraňuje vady zaznamenané v předchozí verzi, aniž by přidával nové funkce. Názvy C17 a C18 jsou obvykle označovány jako synonyma [6] .

Poznámky

  1. Ritchie D. M. Vývoj jazyka C. Sekce "Úvod" a "Historie: nastavení".
  2. Programming Community Index za duben 2012 . Staženo 2. 2. 2019. Archivováno z originálu 2. 7. 2013.
  3. ISO/IEC 9899:2011 - Informační technologie - Programovací jazyky ​​- C . Staženo 2. února 2019. Archivováno z originálu 27. prosince 2011.
  4. ISO/IEC. ISO/IEC9899:2017 . Programovací jazyky - C (nedostupný odkaz) (2017) . Staženo 2. února 2019. Archivováno z originálu dne 24. října 2018. 
  5. ISO/IEC 9899:2018 - Informační technologie - Programovací jazyky ​​- C . www.iso.org . Staženo 2. února 2019. Archivováno z originálu 10. srpna 2018.
  6. ↑ 1 2 Použití GNU Compiler Collection (GCC): Možnosti dialektu C  . gcc.gnu.org. Získáno 3. prosince 2018. Archivováno z originálu dne 26. března 2014.

Literatura