Valentin Kurbatov. nie je čo vyčítať... všeobecné problémy modernej literatúry na pozadí „Yasnaya Polyana“


). Sťažovať sa, sťažovať sa na niekoho, napomínať niekoho, vyčítať niekoho. "Nemá zmysel obviňovať zrkadlo, ak je tvoja tvár krivá."(posledný) "Poslal ti (Guidon) poklonu, ale vyčíta ti: sľúbil, že nás navštívi, ale stále sa nepripravil." Puškin . "Ukázali sa spolu a nikoho nenapadlo viniť ich za to." Puškin . "Ak nenájdete, čo ste hľadali, obviňujte sa." Gončarov .


Ušakovov vysvetľujúci slovník.


D.N. Ušakov.

    1935-1940. Pozrite sa, čo je „FINE“ v iných slovníkoch:

    Vidieť sťažovať sa, hnevať sa... Slovník synoným

    FOAM, yay, yay; nedokonavý, komu alebo na koho (čo) (hovorový). Vyčítať niekomu, sťažovať sa na niekoho alebo niečo. Obviňujte sa (obviňujte sa za nič). | suverénne výčitka, jaj, jaj. Ozhegovov výkladový slovník. S.I. Ozhegov, N.Yu. Švedova. 1949 1992 … Ozhegovov výkladový slovník obviňovať

    FOAM, yay, yay; nedokonavý, komu alebo na koho (čo) (hovorový). Vyčítať niekomu, sťažovať sa na niekoho alebo niečo. Obviňujte sa (obviňujte sa za nič). | suverénne výčitka, jaj, jaj. Ozhegovov výkladový slovník. S.I. Ozhegov, N.Yu. Švedova. 1949 1992 …- "Obviňujte sa!" hovoria a zdôrazňujú, že za svoje činy je zodpovedný sám človek. A tiež hovoria: „Nemá zmysel obviňovať zrkadlo, ak je vaša tvár pokrivená,“ to znamená, nesťažujte sa na ostatných, ak je to vaša chyba. Sloveso vyčítať je sťažovať sa, vyčítať vedie... ... Zábavný etymologický slovník

    - komu, za čo a za čo. Zinochka mu vyčítal, že ju nechal na pokoji (B. Polevoy). Zrkadlu nie je čo vyčítať, ak je tvár krivá (príslovie) ... Kontrolný slovník

    FOAM, yay, yay; nedokonavý, komu alebo na koho (čo) (hovorový). Vyčítať niekomu, sťažovať sa na niekoho alebo niečo. Obviňujte sa (obviňujte sa za nič). | suverénne výčitka, jaj, jaj. Ozhegovov výkladový slovník. S.I. Ozhegov, N.Yu. Švedova. 1949 1992 … Yayu, Yayu; nsv. (na koho čo). Razg. Sťažujte sa, nariekajte. * Nemá zmysel obviňovať zrkadlo, ak je tvár krivá (Posled.). //zvyčajne komu. Napomínať, vyjadrovať nespokojnosť s niečím. ◊ Obviňujte (nech obviňuje) seba. Obviňujte len seba (za ...... Encyklopedický slovník

    - ja/yu, ja/jem; nsv. a) komu čo hovorovo. Sťažujte sa, nariekajte. * Zrkadlu nie je čo vyčítať, ak je tvár krivá (posledná) b) ott. zvyčajne niekoho napomínať, vyjadrovať s niečím nespokojnosť. obviňovať sa... Slovník mnohých výrazov Nesov. nepereh. rozklad 1. Sťažovať sa, sťažovať sa na niekoho alebo na niečo, vyčítať, vyčítať niekoho. 2. Napomínať niekoho za niečo, prejavovať s niečím nespokojnosť. Efraimov výkladový slovník. T. F. Efremová. 2000... Moderné

    výkladový slovník

    FOAM, yay, yay; nedokonavý, komu alebo na koho (čo) (hovorový). Vyčítať niekomu, sťažovať sa na niekoho alebo niečo. Obviňujte sa (obviňujte sa za nič). | suverénne výčitka, jaj, jaj. Ozhegovov výkladový slovník. S.I. Ozhegov, N.Yu. Švedova. 1949 1992 … ruský jazyk Efremova Etymologický slovník ruského jazyka

    FOAM, yay, yay; nedokonavý, komu alebo na koho (čo) (hovorový). Vyčítať niekomu, sťažovať sa na niekoho alebo niečo. Obviňujte sa (obviňujte sa za nič). | suverénne výčitka, jaj, jaj. Ozhegovov výkladový slovník. S.I. Ozhegov, N.Yu. Švedova. 1949 1992 …- Toto sloveso, znamenajúce niekoho vyčítať, je tvorené príponovým spôsobom z peni... Etymologický slovník ruského jazyka od Krylova

knihy

  • Pre teba a mňa a do pekla s nimi! , Dilya Enikeeva. Predstavujeme vám nová séria knihy od Dili Enikeeva, pozostávajúce z vtipných a erotické scény z jej diel rôznych žánrov, životné príbehy, rozprávky, anekdoty a autorove „ironizmy“.…
  • Ako si udržať zdravie a ovládať svoj osud. V jednom kruhu: duch, duša, telo, Serebryakova Lyudmila Andreevna. Ako často je teraz zvykom obviňovať osud, karmu, dedičnosť. A preto veríme, že sa nedá nič zmeniť. A ak máme naozaj dosť, utekáme k astrológom, veštcom, jasnovidcom...
“NIČ AKO KOPU DO ZRKADLA, KEĎ JE TVÁR KRVIVÁ”...

KOPNUTIE ZRKADLA

Tatyana Shabaeva
novinár z Moskvy

Ako dieťa som nerozumel významu slova „penalizovať“ – s ktorým som sa, prirodzene, prvýkrát stretol v epigrafe „Generálny inšpektor“. Mal som asi osem rokov a rozhodol som sa, že toto slovo znamená to isté ako „kopať“, niečo ako „ Necha zrkadlo kopnúť, ak je tvár krivá.“

Odvtedy prešlo viac ako dvadsať rokov a ja už dávno viem, čo znamená „viniť“ ​​a zakaždým, keď sa kútikom oka pozriem do „veľkej politiky“, som prekvapený, akú som mal vtedy pravdu, keďže dieťa. Alebo sa morálka od čias Gogoľa natoľko zhoršila, že „obviňovanie“ je už príliš chúlostivé opatrenie a chcete kopať a šliapať?

Po prvé, Shoigu. Vysvetľuje teda, že za dopravné katastrofy nie je zodpovedný minister dopravy Levitin, ale ľudia, ľudkovia, ktorých morálku treba zlepšiť silnými represívnymi opatreniami. Toto sme už niekde počuli, celkom nedávno. Áno, to povedal minister Fursenko v reakcii na kritiku reformy školstva a ministerka Goliková v reakcii na kritiku reformy zdravotníctva. Ministri sú dobrí, profesionálni, myslia to dobre. Malí ľudia sú nemorálni, nezodpovední, sabotážni. Musíme to zvýšiť.

A nemôžete povedať, že to nie je potrebné! Že nie je potrebná disciplína, že korupcia nie je zlo. Potrebné. Zlo. Musíme to zvýšiť. Ale kto to hovorí? Kto požaduje vedomie a zodpovednosť? To hovoria ľudia, ktorí bežne pošliapu Ústavu a v deklarovanej demokracii neustále a bez hanby ignorujú verejnej mienky, aj keď je to vyjadrené odborne a jasne.

Potrebujete zodpovedných ľudí? No nech sú naozaj zodpovední. Nech si sami stanovia pravidlá, ktoré sú ochotní rešpektovať. Možno to nie je univerzálna metóda, ale v Rusku sú oblasti, v ktorých je spoločnosť schopná nominovať odborníkov, ktorí dokážu takéto pravidlá vytvoriť. Atrofia tejto schopnosti – menovite atrofia nezávislosti, ktorú si dnes naša vláda pestuje – vždy vedie k strate zodpovednosti na nižších úrovniach. Prečo sa musíme riadiť pravidlami, ktoré si osvojili pochybní profesionáli, ktorí sami cestujú na iných vozidlách, navštevujú iné kliniky a školy – teda ľudí, ktorí existujú v inom súradnicovom systéme, než pre ktorý nastavili pravidlá?

Po druhé, liberáli. Teraz je tu zmena z Medvedeva na Putina. Niekto nevedel, že genetický rozdiel medzi prstami jednej ruky je nulový a bol z toho prekvapený. OK. Aké sú však závery? Tu je jeden typický (a, mimochodom, so snahou zovšeobecniť pocity): teraz vypadnite z tejto krajiny. Opäť, už po niekoľkýkrát, sú naše posledné ilúzie stratené. To je všetko, páni.

Predstavme si situáciu. Snažíš sa uchvátiť dievča. Prinesieš jej čokoládu a povedzme ruže, prečítaš jej Balmonta. Noste a čítajte už roky. A k tebe je stále chladnejšia a chladnejšia. „Aký blázon,“ poviete si, ak ste priemerný ruský liberál. "Tá žena je hrubá a nevzdelaná, bez perspektívy." Choď od nej preč." A nie je to tak, že by ste to nevedeli, ale vo všeobecnosti je vám fuk, že dievča miluje zmrzlinu a orgován, a nie Balmont, ale Tyutchev.

Nezdá sa vám to ako najvhodnejšie prirovnanie? Dá sa porovnať krajina s dievčaťom, o ktoré sa tiež treba starať? A nebolo by celkom vhodné nebyť tejto emotívnej, neférovej, infantilnej reakcie: „Ach, opäť si nás pripravil o ilúzie! Tak zbohom, neumyté Rusko!“ Kto však môže za to, že ste prišli o ilúzie, ktoré ste si sami z ničoho nič vytvorili?

Je to veľmi podobné. Autokratická vláda je nespokojná s ľuďmi, pretože nespĺňajú ich očakávania. Liberáli sú nespokojní s vládou, aj s ľuďmi, pretože nenapĺňajú svoje ilúzie. Ľudia sú celkovo nespokojní s vládou (aspoň čo sa týka figúrok Fursenkovej a Golikovej) a liberálov (ak sú si vedomí ich existencie). A všetci sa navzájom odrážajú a kopú spolu do zrkadla.


Starosta, už starý v službe a svojim spôsobom veľmi inteligentný človek. Hoci je úplatkár, správa sa veľmi slušne; celkom vážne; niektoré sú dokonca rezonančné; nehovorí ani nahlas, ani potichu, ani viac ani menej. Každé jeho slovo je dôležité. Jeho črty tváre sú hrubé a tvrdé, ako u každého, kto začal svoju službu z nižších radov. Prechod od strachu k radosti, od hrubosti k arogancii je pomerne rýchly, ako u človeka s hrubo vyvinutými sklonmi duše. Oblečený je, ako inak, v uniforme s gombíkovými dierkami a v čižmách s ostrohami. Vlasy má ostrihané a posiate šedinami




Ammos Fedorovič Lyapkin-Tyapkin – sudca. Považuje sa za veľmi šikovný človek, keďže som za celý svoj život prečítal päť alebo šesť kníh. Je vášnivým poľovníkom. V jeho kancelárii nad kartotékou visí lovecká puška. So šteniatkami chrtov berie úplatky. Trestné prípady, ktoré zvažoval, boli v takom stave, že sám nevedel prísť na to, kde je pravda a kde klamstvo.


O úplnej ľahostajnosti k verejná službaľudia na ňom hovoria v komédii a obraz poverenca charitatívne inštitúcie Jahoda, tučný muž, ale tenký nezbedník. V nemocnici pod jeho jurisdikciou pacienti umierajú ako muchy, doktor nevie ani slovo po rusky. Jahoda medzitým argumentuje: Jednoduchý človek: ak zomrie, aj tak zomrie; ak sa uzdraví, potom sa uzdraví. Ako typický predstaviteľ byrokracie sa vyznačuje aj plazením sa pred nadriadenými a ochotou odsúdiť svojich kolegov, čo robí, keď príde Khlestakov.


Christian Ivanovič Gibner okresný lekár(vedúci lekár). Jahoda o Gibnerovi: „Čo sa týka liečenia, Christian Ivanovič a ja sme urobili opatrenia: jednoduchý človek: ak zomrie, aj tak zomrie; ak sa uzdraví, potom sa uzdraví... a Christian Ivanovič nevie ani slovo po rusky...“


Luka Lukich Khlopov - riaditeľ školy. Povahovo je veľmi zbabelý. Hovorí si: „Ak so mnou hovorí niekto z vyššieho postavenia, jednoducho nemám dušu a jazyk mi vyschol ako špina. V škole učia učitelia. Jeden učiteľ sprevádzal svoje vyučovanie neustálymi grimasami. A učiteľ dejepisu z prebytočných pocitov rozbil stoličky


Shpekin je veľkým fanúšikom čítania listov iných ľudí, „nielen z opatrnosti, ale aj zo zvedavosti“. Dokonca zbiera svoje obľúbené listy. Okrem toho sám starosta, znepokojený tým „prekliate inkognito“, ho požiadal „v záujme spoločného dobra“, aby vytlačil každý prichádzajúci a odchádzajúci list, aby zistil, či obsahuje nejakú správu.


Bobchinsky a Dobchinsky, obaja krátke, krátke, veľmi zvedavé; extrémne podobné jeden druhému: obaja s malými bruškami; Obaja hovoria rýchlo a sú mimoriadne nápomocní gestami a rukami. Dobchinsky je o niečo vyšší a vážnejší ako Bobchinsky, ale Bobchinsky je drzejší a živší

"Nemá zmysel obviňovať zrkadlo, ak je tvoja tvár krivá," - ľudové príslovie, epigraf k „Generálnemu inšpektorovi“.

Keď zakrivenie tváre nadobudne fantazmagorické parametre, vzniká absurdné divadlo. Veľké divadlo, ktorého hlavné pramene a počiatky sú v ruskej próze, ruš dramaturgia XIX storočí. Dráma, ktorá má schopnosť zrodiť sa nanovo na rozhodujúcich historických križovatkách, a jej postavy sa obzerajúce okolo seba obracajú na vás a mňa s otázkou: kde to sme?

Dom Michala Vasilicha Krečinského, ktorý sa nachádza na ul Nový Arbat 11 (kde sa v Divadle Ermitáž premieta premiéra Suchovo-Kobylinovej hry „Krechinského svadba“ v réžii Michaila Levitina) zasväcuje portrét údajne vysoko postaveného predka. Portrét bol vyrobený tak, že ak by ste ho zavesili hore nohami, zo všetkých uhlov, sotva by ste si ho všimli. Michal Vasilich sa však pri pozornom pohľade spozná v pokrivenosti hodnostárovho portrétu. Je totiž veľkým odborníkom na túto časť, na okolité zakrivenie, malebnosť a všetky ostatné veci. Nielen odborník, ale aj architekt, tvorca. Takto ho hrá Jevgenij Redko.

Povedať: ruská absurdita znamená nepovedať takmer nič. Ruská absurdita - je extrémne, úžasne odlišná.

Gogoľov smiech cez slzy, keď sa ťa zmocní vlna sympatií pri pohľade nielen na Podkolesina a Agafju Tichonovnu, ale aj na Gorodničyho a jeho rodinu.

V hre „Balalaikin a spol.“ (1973, Tovstonogov, „Súčasník“, podľa „ Moderná idylka“ prísneho, nemilosrdného Saltykova-Shchedrina) najprenikavejšie momenty sú zúfalé záblesky hanby, ktoré sa vyskytli v dušiach bolestne sa zhoršujúcich postáv.

V Krechinskom Jevgenijovi Redkovi nie je ani kvapka hanby, v predstavení Michaila Levitina ani štipka sympatie a zakrivenie tvárí nie je nevyhnutne zakrivenie tvárí, ale nevyhnutne zakrivenie duší.

Niekedy počujete: čaro zla. čo to je Krechinsky v predstavení Ermitáž je stelesnením tohto šarmu. Určite mu dáte za slovo, keď zistíte, že hlúpa Lidochka Muromskaja nie je ani zďaleka jeho prvou obeťou. Evgeniya Redko Krechinsky je muž s všestrannou vášňou: hra, dobrodružstvo, peniaze, sila - krok za krokom, a ak to zlyhá, začnime znova.

Zdalo sa mi, že „Krechinského svadba“ je niečo iné, stále to bolo v súlade s Ostrovským, nie celkom Suchovo-Kobylin. Inak tomu nie je ani v Levitinovej hre. Tu sa hrá možno celý Suchovo-Kobylin so štylistickými a sémantickými prístupmi k „Prípadu“ aj „Smrti Tarelkina“.

No, tu je Krechinského sprievod. Jemne povedané - tím, presne povedané - svorka, kde je Krechinsky vodcom.

Fedorovým komorníkom je umelec Alexander Pozharov. Vyzeralo to ako služobná postava. Napísané - veľmi málo riadkov. Zohraná - výmenou pohľadov a gest s Krechinským, keď k úplnému vzájomnému porozumeniu nie je potrebné ani pol slova - sa hralo o dlhodobú spoluprácu dvoch najskúsenejších, z ktorých každý presne pozná svoje miesto. Fedor - zachovať každodennú vážnosť.

Rasplyuev - vykonávať pochybné, špinavé príkazy. Tu v podaní umelca Konstantina Tumiloviča je zakrivenie mimo hitparád. Tu nie je čaro zla, ale jeho odvrhnutie. Pamätám si grotesky raného Iljinského, Garina, Martinsona. Pomyslel som si – nie je to priveľa? Nie, nie príliš. Dúfam, že to, čo bolo povedané, mladému umelcovi neuškodí.

Odvrhnuté – máme ich vyhodiť ako nepotrebné? Nie, nemôžete to vyhodiť. Všetci traja - Krechinsky, Fedor, Rasplyuev - sú tak prepojení, že už nemôžu prežiť oddelene. Navyše za nimi - napnite trochu fantázie - môžete hádať asistentov, poradcov, manažérov, vrahov, sekretárky. Kŕdeľ chtivo zachytávajúci životný priestor.

Takéto zajatie nie je ťažká práca, a to je najtrpkejšia trpkosť predstavenia na Novom Arbate, 11. Kto je dobrý, na koho je hrdý? Toto je od Majakovského. Teta Anna Antonovna (umelkyňa Daria Belousova) s jej vážnym fázovým posunom v dôsledku spoločenského trblietky? Lukonohý (zase krivý!) čudák Nelkin (umelec Stanislav Sukharev) - no, čo je dobré robiť proti Krečinskému, aj keď prehral? Muromsky (umelec Sergei Oleksyak), jeho dcéra Lidochka (umelkyňa Alla Chernykh) s ich stabilným umiestnením od nuly?

Ovečky kráčajú v rade,
Bubny bijú.
Dávajú im kožu
Samé ovečky.

Toto je od Bertolta Brechta.

S ovcami možno súcitiť, ale zrazu som si z ničoho nič spomenul na iné živé tvory.

Niekde som čítal: v Moskve sa objavili flayeri, ktorí blokujúc jediný východ zo suterénu svojho domu a zamurujú tam túlavé mačky, ktoré našli úkryt na zimu. A pomyslel som si: čo by som cítil, keby som počul stonanie zamurovanej mačky?

V dnešnej dobe je veľa mačiek bez domova a ich krik sa mieša s ľudským.

V Levitinovej hre nie sú žiadne ovce ani mačky, ale je tu vlastný zverinec. Krechinsky sa prvýkrát objaví na javisku v maske býka s červenými očami, ktorý vedie reťaz jemu podriadených postáv. (V „The Shadow“ od Schwartza, jednom z predchádzajúcich Levitinových predstavení, Shadow v podaní toho istého Evgeniy Redka tiež viedol poslušný kruhový tanec, ale tam bola stále tieňom, ale tu, v „Krechinsky“, sa stala silnejší, taký zakorenený, že je správne vrhať tieň sám.)

Takže býk - mimochodom, je z hry: Krečinskij ho dáva Muromskému, ktorý z takého daru úplne zmäkol. A predsa - údené bravčové mäso z vôle umelkyne Márie Krivtsovej, kto vie ako, nahradilo na javisku masívny zvonec, ktorý, pravdepodobne, nikdy nezaznel. Nuž a portrét, portrét vysoko postaveného predka. Pod sofistikovanou posmešnou hudbou Vladimíra Daškeviča bolo všetko na Novom Arbate (11) zamotané a zmätené.

A zrazu som chcel kričať: to nie som ja - ten šialenec s banditými nohami! A silný fázový posun nie je pre mňa! A je to ston cudzinca zo zamurovanej pivnice. Cudzinec! Mimozemšťan... Čo ak - nie cudzinec?

Tak prečo obviňovať zrkadlo? Obrovská ruská absurdita. Jedna z jeho inkarnácií.

Priznávam, že hre „Krechniského svadba na Novom Arbate 11“ chýba humanistický začiatok. Ale ako byť hodný tohto začiatku je niečo, o čom tiež neuškodí premýšľať. Nám všetkým. Aspoň preto, aby nebol na pokraji nie celkom humanistického konca.

  • Preklad

Jednou z najviac deprimujúcich vecí pre každého programátora je uvedomenie si, že všetok váš čas nevenuje vytváraniu niečoho užitočného, ​​ale odstraňovaniu problémov, ktoré sami vytvárame.

Tento proces sa nazýva ladenie. Každý programátor sa každý deň stretáva s tým, že keď píše kód, vytvára v kóde aj chyby. A keď si uvedomí, že jeho program nefunguje, musí hľadať problémy, ktoré sám vytvoril.

Na vyriešenie takýchto problémov vytvoril počítačový priemysel obrovské množstvo nástroje, ktoré vám pomôžu uistiť sa, že program funguje správne. Programátori používajú na nájdenie chýb metódy nepretržitej integrácie, testovanie jednotiek, asercie, debuggery atď. Ale chyby stále zostávajú a musia byť odstránené pomocou ľudského myslenia.

Niektoré programovacie jazyky, ako napríklad C, sú mimoriadne náchylné na tieto typy chýb, ktoré sa objavujú a miznú náhodne, a akonáhle začnete chápať dôvod ich výskytu, okamžite zmiznú. Takéto chyby sa často nazývajú Heisenbugs, pretože akonáhle ich začnete hľadať, zmiznú.

Takéto chyby sa môžu vyskytnúť v akomkoľvek programovacom jazyku, najmä pri písaní multitaskingového kódu, kde najmenšie oneskorenie môže spôsobiť súbeh. Ale v C je ďalší problém - únik pamäte.

Bez ohľadu na to, čo chybu spôsobuje, kľúčové kroky pri riešení problému sú vždy nasledujúce:

  • Nájdite najmenší vzor, ​​v ktorom je chyba úplne reprodukovaná. S Heisenbugs to môže byť ťažké, ale aj malé percento pokusov, v ktorých sa chyba reprodukuje, je významné.
  • Automatizujte proces testovania. Je oveľa lepšie, keď môžete test spúšťať znova a znova. Môžete ho dokonca urobiť súčasťou programu, keď je chyba opravená - zabránite tak opätovnému zobrazeniu chyby.
  • Hľadajte príčinu, kým sa nenájde jej základ. Kým nenájdeš skutočný dôvod Ak sa vyskytne chyba, nemôžete s istotou povedať, že ste ju opravili. S Heisenbugs sa môže veľmi ľahko stať, že budete zmätení, keď si myslíte, že ste chybu opravili, keď po nejakom hľadaní náhle zmizne.
  • Opravte príčinu a skontrolujte podľa kroku 2.
Nedávno sa v Hacker News objavil článok – Ak máte Heisenbug v C, potom je problém vo vašom optimalizátore kompilátora. Toto je veľmi nesprávny úsudok.

Kompilátor, ktorý používate, pravdepodobne používajú tisíce ľudí, zatiaľ čo váš program pravdepodobne používate iba vy. Čo si myslíte, kompilátor alebo váš program funguje najstabilnejšie?

V skutočnosti je znakom programátorovej neskúsenosti fakt, že prvá vec, ktorú pri nájdení chyby urobia, je, že obviňujú niekoho iného. Je veľmi lákavé obviňovať počítač, operačný systém, knižnicu, ktorú používate. Skutočný programátor je však ten, kto dokáže ovládať svoje „ja“ a uvedomuje si, že chyba je s najväčšou pravdepodobnosťou jeho.

Samozrejme, chyby sú aj v kóde iných programátorov. Niet pochýb o tom, že knižnica nemusí fungovať, operačný systém môže robiť zvláštne veci a kompilátor generuje zvláštny kód. Ale častejšie je to vaša chyba, a to platí, aj keď chyba vyzerá príliš zvláštne.

Počas procesu ladenia si často narážate hlavou do vlastného kódu a stále dokola opakujete tie najnemožnejšie veci, ktoré sa vášmu kódu jednoducho nemôžu stať. Avšak v jednom bode sa nemožné stane možným a potom nájdete chybu.

V článku vyššie je jeden určite neúplný príklad:

“Vypnite optimalizátor a znova skontrolujte program. Ak to funguje, problém je v optimalizátore. Pohrajte sa s úrovňami optimalizácie a zvyšujte úroveň, kým sa chyba nezačne reprodukovať.“

Pri zmene úrovní optimalizácie viete len to, že úrovne sa menia bez ohľadu na to, či sa vyskytne chyba alebo nie. To neznamená, že optimalizátor nepracuje správne. Nenašli ste príčinu chyby, ktorú ste hľadali.

Keďže optimalizátory manipulujú s kódom, aby urýchlili svoju prácu, je pravdepodobné, že v závislosti od úrovne optimalizácie sa môžu objaviť alebo zmiznúť Heisenbugy. To neznamená, že optimalizátor nepracuje správne. Stále je to s najväčšou pravdepodobnosťou vaša chyba.

Tu konkrétny príklad program v jazyku C, ktorý obsahuje chybu, ktorá sa objaví pri zmene úrovne optimalizácie kompilátora a vykazuje zvláštne správanie programu.

#include

Int a()
{
int ar;
ar = (getpid() % 19 == 0);
}

Int main(int argc, char * argv)
{
int rc;
rc = 0;
a();
návrat rc;
}

Kompilujte tento program s gcc pod Mac OS X pomocou nasledujúceho Makefile (kód som uložil do odd.c).

CC=gcc
CFLAGS=

A tu je príklad skriptu, ktorý spustí program 20-krát a vytlačí výsledok:

#!/bin/bash
pre ja v (0..20)
robiť
./nepárne ; echo -n "$?"
hotovo
ozvena

Ak spustíte tento skript, budete očakávať reťazec núl, pretože rc nikdy neprijíma nenulové hodnoty. Tu je však príklad fungovania programu:

$./test
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ak ste skúsený programátor v jazyku C, uvidíte, ako som to urobil a prečo sa objavuje rôznych miestach. Ale skúsme teraz odladiť program pomocou printf:

[...]
rc = 0;
printf("[%d]", rc);
a();
[...]

Teraz, keď spustíte program, chyba zmizne.

$./test
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Vyzerá to divne, takže presuniete printf na iné miesto:

[...]
rc = 0;
a();
printf("[%d]", rc);
[...]

A získate rovnaký zvláštny výsledok, keď chyba zmizne. A to isté sa stane, ak vypnete optimalizátor a ani bez printf sa chyba nezobrazí:

$ make CFLAGS=-O3
gcc -O3 -c -o nepárne.o nepárne.c
gcc nepárny.o -o nepárny

$./test
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Toto všetko sa deje, pretože funkcia a() alokuje pamäť pre 16 prvkov typu Integer. A hneď zapíše za koniec poľa buď 1 alebo 0, podľa toho, či je PID procesu deliteľné 19 alebo nie. Nakoniec sa zapíše do rc kvôli jeho umiestneniu v zásobníku.

Pridanie printf alebo zmena úrovne optimalizácie zmení rozloženie kódu a zabráni nesprávnym volaniam rc. Ale pozor, chyba nezmizla. Jednotka bola jednoducho zapísaná do inej pamäťovej bunky.

Pretože C je veľmi náchylný na tento typ chyby, je dôležité ho používať dobré nástroje na kontrolu takýchto problémov. Napríklad analyzátor statického kódu