www.wikidata.uk-ua.nina.az
C ukr Si universalna procedurna imperativna mova programuvannya zagalnogo priznachennya rozroblena u 1972 roci Dennisom Ritchi u Bell Telephone Laboratories z metoyu napisannya neyu operacijnoyi sistemi UNIX 1 CParadigma imperativna procedurna Data poyavi 1972Tvorci Dennis RitchiRozrobnik Dennis Ritchi ta Bell LabsSistema tipizaciyi statichna slabkaOsnovni realizaciyi GCC MSVC Borland C Watcom CDialekti K amp R C 1978 ANSI C 1989 C90 1990 C99 1999 C11 2011 Pid vplivom vid B BCPL CPL Algol68 Assembler Pascal FORTRANVplinula na awk csh C Objective C BitC D Concurrent C Java Javascript PythonOperacijna sistema Microsoft Windows i UNIX podibni operacijni sistemiZvichajni rozshirennya fajliv c abo h C u VikishovishiHocha S i bulo rozrobleno dlya napisannya sistemnogo programnogo zabezpechennya 2 narazi vona dosit chasto vikoristovuyetsya dlya napisannya prikladnogo programnogo zabezpechennya S imovirno ye najpopulyarnishoyu u sviti movoyu programuvannya za kilkistyu vzhe napisanogo neyu programnogo zabezpechennya dostupnogo pid vilnimi licenziyami kodu ta kilkosti programistiv kotri yiyi znayut 3 4 Versiyi kompilyatoriv dlya movi S isnuyut dlya bagatoh operacijnih sistem ta aparatnih arhitektur C zdijsnila velikij vpliv na inshi movi programuvannya osoblivo na C yaku spochatku proyektuvali yak rozshirennya dlya S a takozh na Java ta C yaki zapozichili u S sintaksis Zmist 1 Filosofiya 1 1 Minimalizm 2 Harakteristika 2 1 Vidsutnya funkcionalnist 3 Sintaksis i semantika 3 1 Leksemi 3 1 1 Abetka movi 3 1 2 Klyuchovi slova 4 Istoriya 4 1 Rannya rozrobka 4 2 K amp R C 4 3 ANSI C 4 4 Standart C99 4 5 Standart C11 5 Vikoristannya 6 Biblioteki 7 Kritika 8 Pov yazani movi 8 1 S 8 2 Objective C 8 3 S 9 Div takozh 10 Komentari 11 Primitki 12 PosilannyaFilosofiya RedaguvatiS minimalistichna mova programuvannya Sered yiyi golovnih cilej mozhlivist pryamolinijnoyi realizaciyi kompilyaciyi vikoristovuyuchi vidnosno prostij kompilyator zabezpechiti nizkorivnevij dostup do operativnoyi pam yati formuvati lishe kilka instrukcij mashinnoyi movi dlya kozhnogo elementu movi i ne vimagati velikoyi dinamichnoyi pidtrimki U rezultati kod S pridatnij dlya bilshosti sistemnogo programnogo zabezpechennya yake tradicijno pisali asemblerom Popri yiyi nizkorivnevi mozhlivosti movu proyektuvali dlya platformonezalezhnogo programuvannya Sumisna zi standartami ta platformonezalezhna napisana movoyu C programa mozhe legko kompilyuvatisya na velikij kilkosti aparatnih platform ta operacijnih sistem z minimalnimi zminami Mova stala dostupnoyu dlya velikoyi kilkosti platform vid vbudovanih mikrokontroleriv do superkomp yuteriv Minimalizm Redaguvati Movu S proyektuvali z rozrahunkom na te shob vikoristovuvati u sistemnomu programuvanni Otzhe vona ne vimagaye dodatkovogo chasu na vikonannya perevirok riznomanitnih umov yaki nikoli ne vidbudutsya u pravilno napisanij programi a zabezpechuye prostij pryamij dostup do adresi bud yakogo ob yekta napriklad karti pam yati pristroyu kontrolyu registriv i yiyi pochatkovij kod kompilyuyetsya u poslidovnist primitivnih mashinnih operacij B yarn Straustrup yakos napisav pro neyi S robit tak shob vam bulo legko vistriliti sobi v nogu 5 Inshimi slovami S dozvolyaye zdijsnennya nizki operacij kotri chasto ye nebazhanimi a tomu chimalo pomilok u kodi ne viyavlyaye kompilyator i voni ne mozhut buti ochevidnimi pid chas vikonannya Yaksho pid chas programuvannya ta pidtrimki programnogo zabezpechennya ne dotrimuvatisya nizki suvorih pravil piznishe mozhe viniknuti nemalo problem zi shvidkodiyeyu stabilnistyu ta bezpekoyu programnogo zabezpechennya Hocha vinoyu podibnih problem najchastishe ye programisti bo S sama po sobi zabezpechuye nizkij riven zahistu Z chasom bulo rozrobleno bagato utilit dlya dodatkovih perevirok kodu na nayavnist pomilok pered kompilyaciyeyu ta pid chas jogo roboti Nisho ne zavazhaye kompilyatorovi zdijsnyuvati dodatkovi perevirki kodu ne peredbacheni specifikaciyeyu movi odnak dlya deyakogo sistemnogo programnogo zabezpechennya voni ye nepripustimimi bo zmenshuyut shvidkist vikonannya kodu U vidpovid na kritiku movi C yak silno tipizovanoyi movi Kernigan ta Ritchi poslalisya na osnovu filosofiyi dizajnu C Z usim tim C zberigaye osnovnij princip yakij peredbachaye sho programisti dobre znayut sho voni roblyat i vimagaye lishe shob voni chitko davali kompilyatorovi znati pro svoyi namiri 6 7 Harakteristika Redaguvati Yak i bilshist imperativnih mov zasnovanih na tradiciyi ALGOL C maye mozhlivosti dlya strukturnogo programuvannya i dozvolyaye zdijsnyuvati rekursiyi u toj chas yak sistema statichnoyi tipizaciyi danih zapobigaye viniknennyu bagatoh neperedbachuvanih operacij U S uves vikonuvanij kod mistitsya u funkciyah Parametri funkciyi zavzhdi peredayutsya za znachennyami Peredacha parametriv za vkazivnikom realizovuyetsya shlyahom peredachi znachennya vkazivnika Geterogenni sukupnosti tipiv danih strukturi dozvolyayut pov yazanim tipam danih buti ob yednanimi i manipulyuvati nimi yak yedinim cilim C takozh maye taki specifichni vlastivosti zminni mozhut buti prihovanimi u vkladenih blokah slabka tipizaciya napriklad simvoli mozhut vikoristovuvatisya yak cili chisla nizkorivnevij dostup do operativnoyi pam yati shlyahom peretvorennya mashinnih adres na vkazivniki vkazivniki na funkciyi i dani pidtrimuyut dinamichnij polimorfizm indeksaciya masiviv yak vtorinne ponyattya viznachayetsya u terminah arifmetiki vkazivnikiv standartizovanij preprocesor C dlya makrooznachennya vklyuchennya fajlu z dzherelnim kodom umovnoyi translyaciyi tosho vidsutnist vbudovanih operatoriv vvodu vivodu potokiv obrobki ryadkiv i chisel z ruhomoyu komoyu Vsya cya funkcionalnist realizuyetsya u bibliotekah vikonannya vidnosno nevelika kilkist zarezervovanih sliv 32 u S89 i 37 u C99 Leksichni strukturi yaki nagaduyut B bilshe za ALGOL napriklad na vidminu vid ALGOL ivskogo begin end znak rivnosti dlya priznachennya kopiyuvannya yak ce robitsya u movi Fortran dva znaki rivnosti vikoristovuyutsya dlya perevirki rivnosti podibno do EQ u Fortran i abo odnogo znaku rivnosti u BASIC amp amp ta na vidminu vid ALGOL ivskih and ta or cim vona semantichno vidriznyayetsya vid bitovih operatoriv amp ta velika kilkist arifmetichnih i logichnih operatoriv na kshtalt amp Vidsutnya funkcionalnist Redaguvati S maye brak nastupnih mozhlivostej yaki ye v inshih movah programuvannya hocha daleko ne zavzhdi brak deyakih mozhlivostej nayavnih v yakihos movah ye nedolikom Vidsutnist neskalyarnih operacij na zrazok kopiyuvannya masiviv abo ryadkiv Vidsutnist avtomatichnogo keruvannya pam yattyu zbir smittya Vidsutnya perevirka mezh masivu Vidsutnist napivdinamichnih masiviv azh do S99 Vidsutnist sintaksisu dlya masiviv na zrazok A V kotri vikoristovuyut yak starishi tak i novishi movi programuvannya Vidsutnist vkladenih funkcij hocha cya mozhlivist ye z deyakimi kompilyatorami napriklad GCC Odnak znovu zh ye superechlivoyu sama potreba vkladenih funkcij Vidsutnist obrobki vinyatkiv Vidsutnist rudimentarnoyi pidtrimki modulnogo programuvannya Vidsutnist statichnogo polimorfizmu u formi perevantazhennya funkcij abo operatoriv Vidsutnist pidtrimki ob yektnooriyentovanogo programuvannya Vidsutnist vbudovanoyi pidtrimki bagatozadachnosti ta roboti z merezhami hocha ci mozhlivosti zabezpechuyutsya populyarnimi bibliotekami Vidsutnist standartnih bibliotek dlya roboti z grafikoyu ta deyakih inshih bibliotek dlya prikladnogo programuvannyaCi momenti absolyutno ne zavadili movi buti dobre prijnyatoyu specialistami Shvidko buli stvoreni kompilyatori dlya riznih platform A znachnoyu miroyu nizkorivneva priroda movi nadala programistam mozhlivist yakisno kontrolyuvati robotu program dozvolyayuchi optimizuvati yih pid konkretni zavdannya Ce dozvolilo kodovi efektivno pracyuvati na duzhe obmezhenomu aparatnomu zabezpechenni takomu yak vbudovani sistemi sho sogodni mayut taku visoku funkcionalnist zavdyaki pochatkovomu vikoristannyu movi S Mozhlivosti movi pidvishuyutsya u sposib vikoristannya storonnih bibliotek Bilshist ob yektnooriyentovanih funkcij vklyuchayut specialnij vkazivnik cej this u C Java yakij posilayetsya na potochnij ob yekt Peredayuchi cej vkazivnik yak argument funkciyi u S ti zh funkcionalni mozhlivosti mozhut buti vikoristani u S Dlya prikladu u C mozhna napisati stack gt push val u toj chas yak u S ce viglyadalo b primirom tak push stack val de argument stack u S ye vkazivnikom na strukturu struct sho ye ekvivalentnoyu comu vkazivniku u S yakij ye vkazivnikom na ob yekt Sintaksis i semantika RedaguvatiLeksemi Redaguvati Abetka movi Redaguvati U movi vikoristovuyutsya vsi simvoli latinskoyi abetki cifri ta deyaki specialni simvoli Sklad abetki movi programuvannya C Simvoli latinskoyi abetki A B C D E F G H I J K L M N O P Q R S T U V W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y zCifri 0 1 2 3 4 5 6 7 8 9Specialni simvoli koma krapka amp ampersand tilda lt gt apostrof lapki dvokrapka znak pidkreslennya Z dopustimih simvoliv formuyutsya leksemi identifikatori klyuchovi slova literali konstanti znaki operacij ta inshi rozdilniki Klyuchovi slova Redaguvati Klyuchovi slova ce slova znachennya yakih zarezervovano dlya deyakih potreb kompilyatora Klyuchovi slova movi C Klyuchovi slova Priznachennya Standart b sizeof b Otrimannya rozmiru ob yekta chi tipa na etapi kompilyaciyi C89 b typedef b Zavdannya alternativnogo imeni tipu b auto b b register b Pidkazki kompilyatoru shodo miscya zberigannya zminnih b extern b Vkazivka kompilyatoru shukati ob yekt poza potochnim fajlom b static b Ogoloshennya statichnogo ob yektavoid Marker vidsutnosti znachennya u pokazhchikah oznachaye dovilni dani b char b b short b b int b b long b Cilochislenni tipi ta modifikatori yihnogo rozmiru b signed b b unsigned b Modifikatori cilih tipiv sho viznachayut yih yak znakovi chi bezznakovi b float b b double b Dijsni tipi danih b const b Modifikator sho unemozhlivlyuye zminu deyakogo znachennya b volatile b Vkazivka kompilyatoru na mozhlivist zmini znachennya zminnoyi zzovni b struct b Tip danih struktura z naborom poliv b enum b Tip danih sho zberigaye odne z naboru cilih znachen b union b Tip danih u yakomu mozhna zberigati dani odnogo z dekilkoh obranih tipiv b do b b for b b while b Operatori ciklu b if b b else b Umovnij operator b switch b b case b b default b Operator viboru za cilim parametrom b break b b continue b Operatori pererivannya ciklu b goto b Operator bezumovnogo perehodu b return b Povernennya z funkciyi b inline b Ogoloshennya vbudovuvanoyi funkciyi C99 b restrict b Ogoloshennya pokazhchika yakij posilayetsya na blok pam yati na yakij ne posilayetsya niyakij inshij pokazhchik b Bool b a Logichnij tip danih b Complex b b b Imaginary b c Tipi vikoristovuvani u obchislennyah z kompleksnimi chislami b Atomic b Modifikator tipu yakij robit jogo atomarnim C11 b Alignas b d Yavne zavdannya virivnyuvannya v bajtah dlya danih b Alignof b e Otrimannya virivnyuvannya dlya zadanogo tipu danih na etapi kompilyaciyi b Generic b Vibir odnogo z naboru znachen na etapi kompilyaciyi vihodyachi z kontrolovanogo tipu danih b Noreturn b f Vkazivka kompilyatoru sho funkciya nespromozhna zavershuvatisya normalno tobto za dopomogoyu operatora return b Static assert b g Vkazivka tverdzhen yaki pereviryayutsya na etapi kompilyaciyi b Thread local b h Ogoloshennya lokalnoyi dlya potoku zminnoyiIstoriya RedaguvatiRannya rozrobka Redaguvati Pochatkovij etap rozrobki Si vidbuvsya u stinah Bell Labs mizh 1969 ta 1973 rokami Denis Ritchi stverdzhuye sho najbilsh tvorchim buv 1972 rik Movu bulo nazvano Si cherez te sho bagato yiyi mozhlivostej bulo otrimano vid ranishe stvorenoyi movi B Isnuye chimalo legend shodo pohodzhennya movi Si i pov yazanoyi z neyu operacijnoyi sistemi UNIX sered nih Rozrobka Si stala rezultatom togo sho jogo majbutni avtori lyubili komp yuternu gru shozhu na populyarnu gru Asteroids Asteroyidi Voni vzhe davno grali u neyi na golovnomu serveri kompaniyi yakij buv nedostatno potuzhnim i povinen buv obslugovuvati blizko sta koristuvachiv Tompson i Ritchi virishilili sho yim ne vistachaye kontrolyu nad kosmichnim korablem dlya togo shob unikati zitknen z deyakimi kamenyami Tomu voni virishili perenesti gru na vilnij PDP 7 sho stoyit v ofisi Prote cej komp yuter ne mav operacijnoyi sistemi sho zmusilo yih yiyi napisati Vreshti resht voni virishili perenesti cyu operacijnu sistemu she j na ofisnij PDP 11 sho bulo duzhe vazhko oskilki yiyi kod buv cilkom napisanij na asembleri Bulo vineseno propoziciyu vikoristati yakus visokorivnevu portativnu movu shob mozhna bulo legko perenositi OS z odnogo komp yutera na inshij Mova B yaku voni spershu hotili vikoristati viyavilasya pozbavlenoyu funkcionalnosti zdatnoyi vikoristovuvati novi mozhlivosti PDP 11 Tomu voni j zupinilisya na rozrobci movi S Najpershij komp yuter dlya yakogo bula spochatku napisana UNIX priznachavsya dlya stvorennya sistemi avtomatichnogo zapovnennya dokumentiv Persha versiya UNIX bula napisana na asembleri Piznishe dlya togo shob perepisati cyu operacijnu sistemu bula rozroblena mova S Do 1974 roku mova S stala dostatno funkcionalnoyu dlya togo shob perepisati na nij bilshu chastinu yadra UNIX kotre spershu bulo napisane na asembleri PDP 11 Ce bulo pershe yadro operacijnoyi sistemi realizovane ne na asembleri K amp R C Redaguvati U 1978 roci Ritchi ta Kernigan opublikuvali pershu redakciyu knigi Mova programuvannya Si Cya kniga vidoma sered programistiv yak K amp R Opisanu u nij versiyu movi Si chasto nazivayut K amp R Druga redakciya ciyeyi knigi prisvyachena piznishomu standartu ANSI C opisanomu nizhche K amp R opisuye taki osoblivosti movi Tip danih struct Tip danih long int Tip danih unsigned int Operator bulo zmineno na shobi pozbutisya semantichnoyi dvoznachnosti stvoryuvanoyi konstrukciyami na zrazok i 10 yaka mogla interpretuvatisya yak i 10 abo i 10K amp R chasto vvazhayut najgolovnishoyu chastinoyu movi yaku povinen pidtrimuvati kompilyator S Bagato rokiv navit pislya vihodu ANSI C vin vvazhavsya minimalnim rivnem yakogo slid bulo dotrimuvatisya programistam ohochim dobitisya vid svoyih program maksimalnoyi portativnosti oskilki ne vsi kompilyatori todi pidtrimuvali ANSI C a kod na K amp R C buv sumisnim i z ANSI C U rannih versiyah C lishe funkciyi sho povertayut znachennya z tipom vidminnim vid int povinni buli buti ogoloshenimi yaksho voni vikoristovuvalisya pered viznachennyam funkciyi funkciyi bez poperednogo ogoloshennya povinni povertati lishe cile chislo Dlya prikladu long int SomeFunction int OtherFunction int CallingFunction long int test1 int test2 test1 SomeFunction if test1 gt 0 test2 0 else test2 OtherFunction return test2 U comu prikladi yak SomeFunction tak i OtherFunction buli ogolosheni pered svoyim vikoristannyam U K amp R ogoloshennyam OtherFunction mozhna bulo znehtuvati Oskilki deklaraciya funkcij u K amp R C ne vklyuchaye niyakoyi informaciyi pro argumenti funkciyi perevirka tipu parametriv ne vikonuyetsya hocha deyaki kompilyatori vidayut poperedzhuvalne povidomlennya yaksho do lokalnoyi funkciyi zvertayutsya iz nepravilnim chislom argumentiv abo yaksho bagatorazovi vikliki do zovnishnoyi funkciyi vikoristovuyut riznu kilkist argumentiv Nastupni dekilka rokiv pislya publikaciyi K amp R C do movi bulo dodano dekilka neoficijnih mozhlivostej u toj chas yak oficijnogo novogo standartu ne bulo kotri pidtrimuvalisya kompilyatorami vid AT amp T ta deyakih inshih postachalnikiv Sered nih funkciyi z tipom rezultatu void funkciyi sho povertayut znachennya tipu struct abo union a ne vkazivnik prisvoyennya dlya tipu struct Viznachnik const kotrij robiv ob yekt dostupnim lishe dlya chitannya Perelichuvani tipi danihVelika kilkist dopovnen i vidsutnist standartnoyi biblioteki razom iz velikoyu populyarnistyu movi stvorili nagalnu potrebu u standartizaciyi ANSI C Redaguvati Dokladnishe ANSI CNaprikinci 1970 h mova C viperedila BASIC i stala najpopulyarnishoyu movoyu programuvannya dlya mikrokomp yuteriv Protyagom 1980 h yiyi prijnyali dlya vikoristannya v IBM PC i yiyi populyarnist pochala zrostati dosit strimkimi tempami Razom z tim Byarn Straustrup ta inshi pracivniki Bell Labs rozpochali robotu nad dodannyam ob yektnooriyentovanih konstrukcij do C sho prizvelo do viniknennya C U 1983 Amerikanskij Nacionalnij Institut Standartiv ANSI sformuvav komitet X3J11 dlya stvorennya standartnoyi specifikaciyi dlya movi C U 1989 standart buv ratifikovanij yak ANSI X3 159 1989 Mova Programuvannya C Cyu versiyu chasto nazivayut ANSI C Standartnij C abo S89 U 1990 standart z dekilkoma neznachnimi modifikaciyami ANSI C ratifikuvala Mizhnarodna Organizaciya iz Standartizaciyi ISO ISO IEC 9899 1990 Cyu versiyu inodi nazivayut C90 Tomu termini C89 i C90 po suti poznachayut odnu movu ANSI yak i inshi instituti iz standartizaciyi bilshe samotuzhki ne zajmayetsya rozvitkom standartu movi programuvannya S Prijnyattya standartu nacionalnimi institutami yak pravilo vidbuvayetsya protyagom roku pislya publikaciyi standartu ANSI Odna z cilej procesu standartizaciyi movi S polyagala u rozrobci nadmnozhini nad K amp R C yaka vklyuchala b chimalo neoficijnih mozhlivostej Komiteti zi standartizaciyi takozh dodali chimalo dodatkovih funkcij yak to prototipi funkcij zapozicheni v C vkazivniki void pidtrimku mizhnarodnih naboriv simvoliv ta mov i lokalej a takozh nizku rozshiren dlya preprocesora Sintaksis deklaraciyi parametriv takozh bulo rozshireno vikoristovuyuchi zapozichennya z S hocha interfejs K amp R takozh dopuskayetsya dlya zberezhennya zvorotnoyi sumisnosti zi starim kodom C89 narazi pidtrimuyetsya usima kompilyatorami S i bilshist teperishnogo kodu napisano na bazi danogo standartu Bud yaka programa napisana na standartnij S i bez vikoristannya aparatno zalezhnih zasobiv mozhe buti skompilovana i zapushena na bud yakij operacijnij sistemi ta aparatnij arhitekturi bez bud yakih obmezhen resursiv Standart C99 Redaguvati Dokladnishe S99Pislya procesu standartizaciyi ANSI specifikaciya movi C protyagom yakogos chasu zalishilasya vidnosno statichnoyu todi yak C prodovzhuvala evolyucionuvati znachnoyu miroyu zavdyaki svoyim vlasnim zusillyam zi standartizaciyi Normativna Popravka 1 stvorila novij standart dlya movi C u 1995 ale lishe dlya togo shob vipraviti deyaki detali standartu C89 i dodati prostorishu pidtrimku mizhnarodnih naboriv simvoliv Prote standart piddavsya podalshomu pereglyadu v kinci 1990 h privivshi do publikaciyi ISO 9899 1999 u 1999 roci Cej standart zazvichaj imenuyut yak C99 Vin buv prijnyatij yak standart ANSI u berezni 2000 Standart C99 vviv dekilka novih osoblivostej bagato z yakih vzhe buli realizovani u dekilkoh kompilyatorah Vkladeni funkciyi Zminni mozhut ogoloshuvatisya bud de yak u C Vvedeno dekilka novih tipiv danih zokrema long long int yavnij logichnij bulevij tip danih i kompleksnij tip dlya predstavlennya kompleksnih chisel Masivi zi zminnimi dovzhinami Pidtrimka korotkih odnoryadkovih komentariv sho pochinayutsya z yak u BCPL ta C Novi bibliotechni funkciyi yak napriklad sprintf Novi zagolovni fajli yak to stdbool h ta inttypes h Vdoskonalena pidtrimka standartu IEEE dlya roboti z ruhomoyu komoyu Vipravleno drukarski ogrihi C99 sumisnij z C90 odnak maye deyaki vidminnosti zokrema yaksho v deklaraciyi identifikatora ne vistachaye specifikatora tipu zminna chi funkciya nadali ne sprijmayetsya ogoloshenoyu neyavno yak int Komitet standartiv virishiv sho vazhlivishe shobi kompilyatori diagnostuvali neuvazhne upushennya specifikatora tipu nizh movchki obroblyali kod Na praktici kompilyatori jmovirno diagnostuyut upushennya ale j prijmayut zminnu ogoloshenoyu yak int i prodovzhuyut pereklad programi GCC ta inshi kompilyatori C narazi pidtrimuyut bagato z novih mozhlivostej C99 Prote voni menshoyu miroyu pidtrimuyutsya kompilyatorami takih kompanij yak Microsoft i Borland kotri zoseredilisya perevazhno na C vidtodi yak C zabezpechuye podibnu funkcionalnist Standart C11 Redaguvati Dokladnishe C11Mizhnarodna organizaciya zi standartizaciyi ISO u grudni 2011 opublikuvala onovlenij variant standartu dlya movi Si ISO IEC 9899 2011 8 sho buv stvorenij pid kodovim im yam C1X i prijshov na zminu standartu C99 Oskilki standart rozvivavsya dosit trivalij chas projshovshi stadiyi vipusku dekilkoh chornovih redakcij suchasni kompilyatori taki yak GCC 4 6 i LLVM 3 0 uzhe pidtrimuyut bilshist opisanih u specifikaciyi mozhlivostej U novij specifikaciyi zbilshena sumisnist z movoyu S i predstavleni deyaki novi mozhlivosti taki yak pidtrimka bagatonitkovosti pidtrimka Unicode vilucheno funkciyu gets interfejs dlya perevirki dopustimih mezh i diapazoniv znachen anonimni strukturi ta ob yednannya napriklad mozhna vklasti blok union v struct dodatkova funkciya dlya mittyevogo vihodu z programi quick exit statichni tverdzhennya Static assertions zaluchennya dodatkovih makrosiv dlya perevirki chisel z ruhomoyu komoyu Finalnij tekst standartu ne dostupnij dlya vilnogo zavantazhennya tilki platne zavantazhennya ale mozhna zavantazhiti ostannyu chornovu redakciyu PDF 3 6 Mb 701 stor Arhivovano 25 grudnya 2021 u Wayback Machine yaka majzhe ne vidriznyayetsya vid zatverdzhenoyi specifikaciyi Vikoristannya Redaguvati The C Programming LanguageOdnim iz naslidkiv znachnogo poshirennya ta efektivnosti S ye te sho kompilyatori biblioteki ta interpretatori bagatoh inshih visokorivnevih mov programuvannya realizuyutsya na S S vikoristovuyetsya yak promizhna mova deyakimi visokorivnevimi movami programuvannya Ce zdijsnyuyetsya odnim iz dvoh nastupnih sposobiv Produkuyetsya tekst programi movoyu C paralelno z inshim vihidnim kodom mashinnim ob yektnim ta abo dvijkovim Napriklad taka povedinka harakterna dlya deyakih dialektiv movi Lisp Lush Produkuyetsya viklyuchno tekst na S Prikladi Eiffel Sather Esterel Vihidnij tekst programi na S peredayetsya kompilyatoru S yakij vidaye kincevij mashinnij abo dvijkovij kod Ce zrobleno zadlya platformonezalezhnosti kompilyatori movi S isnuyut majzhe dlya usih platform i unikannya neobhidnosti rozvitku specifichnih dlya mashini generatoriv komand Zavdyaki velicheznij populyarnosti movi programuvannya C ostanni standarti movi Fortran vveli mehanizm sumisnosti sho dozvolyaye prostu i standartizovanu vzayemodiyu mizh programami na Fortran ta C Sumisnist dosyagayetsya na majzhe usih osnovnih rivnyah vbudovanih i pohidnih tipiv vkazivnikiv zminnih funkcij ta procedur Biblioteki RedaguvatiMova programuvannya S vikoristovuye biblioteki yak osnovnij zasib svogo rozshirennya U S biblioteka nabir funkcij kotri mistyatsya v odnomu fajli Kozhna biblioteka zazvichaj maye zagolovnij fajl v yakomu mistyatsya prototipi funkcij prisutnih u biblioteci a takozh deklaraciyi specialnih tipiv danih i makrosimvoliv sho vikoristovuyut ci funkciyi Dlya togo shob programa vikoristovuvala biblioteku zagolovnij fajl ciyeyi biblioteki maye buti ogoloshenij vgori fajlu iz sircevim kodom i biblioteka maye buti zlinkovanoyu z programoyu sho u bagatoh vipadkah vimagaye specialnoyi opciyi dlya kompilyatora napriklad lmath Zagalnoyu bibliotekoyu S ye standartna biblioteka S stdlib h sho vkazana v ISO ta ANSI C standartah i rozpovsyudzhuyetsya z kozhnim suchasnim kompilyatorom movi S Inshim zagalnim naborom funkcij standartnoyi biblioteki S ye toj sho vikoristovuyetsya zastosunkami Proyektuvalisya voni dlya UNIX podibnih sistem u pershu chergu dlya zabezpechennya interfejsu do yadra Ci funkciyi detalizuyutsya u riznomanitnih standartah na kshtalt POSIX ta Single UNIX Specification Vidtodi yak S nabula velikoyi populyarnosti dlya neyi bulo napisano chimalo inshih bibliotek Biblioteki chasto pishutsya na S oskilki kompilyatori C generuyut efektivnij ob yektnij kod piznishe programisti stvoryuyut interfejsi do bibliotek takim chinom sho ti mozhut vikoristovuvatisya visokorivnevimi movami na kshtalt Java Perl ta Python Kritika RedaguvatiDokladnishe Kritika movi programuvannya SPopri yiyi veliku populyarnist S chasto kritikuyetsya V osnovnomu kritika zoseredzhena na tomu sho vikoristovuyuchi C vazhko zdijsniti deyaki bazhani diyi i na tomu sho vikoristovuyuchi C duzhe legko zdijsniti deyaki nebazhani diyi Korotko kazhuchi efektivne vikoristannya S vimagaye vid programista bilshe navichok dosvidu ta zusil nizh ce potribno dlya deyakih inshih mov programuvannya Pov yazani movi RedaguvatiKoli ob yektnooriyentovani movi stali populyarnimi C i Objective C buli dvoma riznimi prodovzhennyami C yaki zabezpechuvali ob yektnooriyentovani mozhlivosti Obidvi movi spochatku funkcionuvali yak preprocesori napisanij na nih kod spochatku perevodivsya na C a potim kompilyuvavsya kompilyatorom C S Redaguvati Movu programuvannya C rozroblenu na osnovi S bulo otrimano unaslidok dodavannya B yarnom Straustrupom do neyi ob yektnooriyentovanoyi funkcionalnosti iz C podibnim sintaksisom Objective C Redaguvati Objective C duzhe tonka nadbudova nad S yaka dozvolyaye ob yektnooriyentovane programuvannya vikoristovuyuchi gibrid dinamichnoyi statichnoyi paradigmi tipiv Osnovu sintaksisu Objective C sklav sintaksis movi S odnak sintaksis dlya jogo ob yektnooriyentovanih mozhlivostej buv zapozichenij u Smalltalk Objective C ta C vidriznyayutsya svoyeyu filosofiyeyu dlya bilshoyi informaciyi chitajte vidpovidni statti S Redaguvati Mova programuvannya C zasnovana na strogij komponentnij arhitekturi i realizuye peredovi mehanizmi zabezpechennya bezpeki kodu C ob yednala najkrashi risi cilogo ryadu poperednikiv Div takozh RedaguvatiOperatori v C ta C B BitC C D Objective CKomentari Redaguvati Makros bool iz zagolovnogo fajlu a href Stdbool h html title Stdbool h stdbool h a ye obgortkoyu nad klyuchovim slovom b Bool b Makros complex iz zagolovnogo fajlu a href Complex h html title Complex h complex h a ye obgortkoyu nad klyuchovim slovom b Complex b Makros imaginary iz zagolovnogo fajlu a href Complex h html title Complex h complex h a ye obgortkoyu nad klyuchovim slovom b Imaginary b Makros alignas iz zagolovnogo fajlu stdalign h ye obgortkoyu nad klyuchovim slovom b Alignas b Makros alignof iz zagolovnogo fajlu stdalign h ye obgortkoyu nad klyuchovim slovom b Alignof b Makros noreturn iz zagolovnogo fajlu stdnoreturn h ye obgortkoyu nad klyuchovim slovom b Noreturn b Makros static assert iz zagolovnogo fajlu a href Assert h html title Assert h assert h a ye obgortkoyu nad klyuchovim slovom b Static assert b Makros thread local iz zagolovnogo fajlu threads h ye obgortkoyu nad klyuchovim slovom b Thread local b Primitki Redaguvati Stewart Bill 7 sichnya 2000 History of the C Programming Language Living Internet Arhiv originalu za 22 chervnya 2013 Procitovano 31 zhovtnya 2006 Patricia K Lawlis c j kemp systems inc 1997 Guidelines for Choosing a Computer Language Support for the Visionary Organization Ada Information Clearinghouse Arhiv originalu za 22 chervnya 2013 Procitovano 18 lipnya 2006 Programming Language Popularity 2009 Arhiv originalu za 27 travnya 2012 Procitovano 16 sichnya 2009 TIOBE Programming Community Index 2009 Arhiv originalu za 22 chervnya 2013 Procitovano 16 sichnya 2009 Bjarne Stroustrup FAQ angl Arhiv originalu za 17 chervnya 2008 Procitovano 8 sichnya 2009 Ritchie Dennis The Development of the C Language Arhiv originalu za 22 chervnya 2013 Procitovano 26 lipnya 2006 Brian W Kernighan and Dennis M Ritchie The C Programming Language 2nd ed Prentice Hall 1988 c 3 Opublikovan novyj mezhdunarodnyj standart dlya yazyka Si C1X C11 Arhiv originalu za 7 sichnya 2012 Procitovano 22 grudnya 2011 Posilannya RedaguvatiSi Universalnij slovnik enciklopediya 4 te vid K Teka 2006 Otrimano z https uk wikipedia org w index php title C mova programuvannya amp oldid 39256301