Autor: Henry Spencer
Překlad: Přemek
Brada
Originál
desatera a copyright překladu. Budu vděčný za
vaše připomínky a opravy.
Toto je i dnes platná moudrá rada, ačkoli mnohé moderní překladače umí odhalit množství hříchů stejně dobře a lint začíná mít problémy způsobené stářím a zesláblostí, a v četných nových neznámých krajinách se nevyskytuje. K podobným účelům sloužít také jiné nástroje, například Saber C."Hojnému používání" rozuměj tak, že jeho radami jest záhodno nechati se vést každodenně, spíše než doufat požehnání tvého kódu v záchvatu pozdní kajícnosti. Odlintování programu nikdy dříve nelintovaného podobá se často čištění stájí, jakého bys nepřál ani svým nejzavilejším nepřátelům. Zkušenost některých také praví, že pečlivé naslouchání lintovým slovům je často velikou pomocí při ladění programu.
"Bedlivé naslouchání" pak neznamená bezhlavou snahu odstranit každičký byte lintových výstupů -- už jen pro to, že jest pro tebe nemožné jej umlčet v některých věcech -- nýbrž porozumění důvodům jeho nespokojenosti a rozpoznávání znepokojujících znamení, o nichž se snaží tě zpravit.
Toto jest zjevná známka chybného opisu písem, neboť zde mělo stát "neinicializovaným ukazatelem" jako obrana proti zmatení konceptu prázdných (neinicializovaných) ukazatelů a makra NULL, o němž se píše dále. Jinak ovšem je význam přikázání zřejmý -- neinicializovaný ukazatel ukazuje do krajin obývaných draky, démony a core dumpy, jejichž největším potěšením je začít skotačit ve tvých programech, vyrušíš-li je ze spánku. Neinicializovaný (prázdný) ukazatel neukazuje na nulu jakéhokoli druhu, přestože se vyskytují rouhačské kusy kódu, které s tím neuctivě počítají.
Programátor by měl rozumět typové struktuře svého jazyka, jinak jej může stihnout veliké neštěstí. Jakkoli se tak někteří osídlenci Západního pobřeží mylně domnívají, int a long jsou rozdílné typy. Doba jejich stejnosti co do velikosti a reprezentace byla krátká, však agónie jež stihne zastánce jejich vzájemné zaměnitelnosti bude trvat navěky, až se 64-bitové stroje stanou běžnými.Dále pak, na rozdíl od přesvědčení rozšířenému mezi zpátečnickými obyvateli Zkažených východních bažin, není NULL žádného typu ukazatel a musí být správně přetypován pokaždé, když je použit jako parametr funkce.
(Slova proroka Ansiho, který dovolil definovat NULL jako by byl typu void * , jsou často vytrhávána z kontextu a špatně chápána. Byla totiž míněna jako zvláštní dispens pro případy velikých soužení v divokých končinách. Vpravdě pak každý program musí nalézt svoji cestu Houštinou typů a nespoléhat, že pomocí tohoto zřídka dostupného osvobození vyřeší všechny své problémy. Tak či tak velký bůh Dmr, stvořitel C, moudře vybavil jazyk mnoha druhy ukazatelů, ne jen jedním, a tak bude vždy potřeba konvertovat prorokův NULL na žádaný typ.)
Možná se někteří domnívají, že nové požehnání v podobě "prototypů" odstraní nutnost obezřetnosti v otázce typů argumentů. Nikoli, bratří! Za prvé, problém se objeví pokaždé, stojíme-li před podivnými zákonitostmi proměnného počtu parametrů... a ten, kdo neposiloval svoji víru častým cvičením, bude do této léčky zajisté lapen. Za druhé, zkušenost moudrých praví, že spoléhání se na prototypy otevírá dveře mnoha podivným chybám, a proto si někteří dokonce přáli aby použití prototypů bylo určeno pouze k účelům kontroly chyb, nikoli však k implicitním typovým konverzím. Konečně pak spoléhání se na prototypy přináší veliké složitosti v dnešním Reálném světě, kdy mnozí stále lnou ke starým překladačům z rozmaru či z nezbytí, a nikdy nevíš, na jakých strojích bude tvůj kód nucen běhat zítra.
Moudrý prorok Ansi k tomu dodává, že bys měl své Dodavatele nutit pod pohrůžkou exkomunikace, aby ke svým knihovnám poskytovali hlavičkové soubory s deklaracemi funkcí. Neboť vpravdě jen oni mohou znát přesné formule zaříkávadel, která vyvolávají jejich kouzla tím nejlepším způsobem.Prorok také poznamenává, že je nemoudré a do jam zatracení a podivných chyb vedoucí, aby ses pokoušel cizí knihovní funkce deklarovat sám, jestliže hlavičkové soubory slouží dobře a spolehlivě.
Skutky Velkého červa nás přesvědčily o jednom důsledku této věty, a sice že robustní software nemá nikdy používat gets() kteréžto je vpravdě nástrojem Ďáblovým. Tvá rozhraní by měla vždy informovat tvé služebníky o mezích tvých polí; a ti z nich, kdo na tyto rady shlížejí spatra či je potichu obcházejí, nechť jsou odkázáni do Krajin Rm, kde ti nebudou moci již nikdy škodit.
Jest přáním každého pravověrného, mít po ruce lepší systém pro zpracování chyb, neboť explicitní kontrola návratových kódů je unavující a pokušení kontrolu vynechat je veliké. Leč dokud onen vzdálený den vysvobození nepřijde, nezbývá nám než jít po klikaté a dlouhé cestě s trpělivostí a pozorností, neboť tvůj Dodavatel, Počítač i Software mají zálibu v překvapeních a nerozpakují se vyrobit podivně nesmyslné výsledky den před tvou Obhajobou diplomové práce nebo Velkou dodávkou zákazníkovi.Někdy je možné, jako v případě ferror() ve stdio, odložit kontrolu chyb až do chvíle, kdy lze otestovat kumulativní výsledek -- což často vede ke kratšímu a průhlednějšímu kódu. A ovšem také každý, i ten nejhorlivější, přívrženec by měl s rozmyslem přistupovat k ošetřování funkcí, jejichž selhání je naprosto nepodstatné ... leč pozor, přetypování na void je dvousečná zbraň, která bez výčitky prolije tvou vlastní krev.
Je bezpočet nečistých pohanů, kteří pohrdají knihovnami z různých nerozumných a pochybných důvodů jako je vzývání Cínových bůžků (také známých jako 'efektivita' a 'rychlost'). Jest zajisté pravdou, že některé vlastnosti knihoven jazyka C byly nedobře navrženy, ovšem v naprosté většině je lepší a levnější použít výtvorů jiných lidí než se vytrvale snažit znovu vynalézt hranaté kolo. Měl by ses však usilovně snažit porozumět tomu, co tvé knihovny slibují a co nikoli, abys nespoléhal na takové jejich vlastnosti, které ti v budoucnu mohou zmizet pod rukama.
Tato slova naneštěstí působí nejistotu mezi novici a konvertity, kteří neznají starých moudrostí. Ona Pravá Štábní Kultura, o níž se zde hovoří, pochází ze spisů Prvních proroků, Kernighana a Ritchieho. Časté a neutuchající jsou její kritiky od neznalých, dle kterých jest těžké ji používati, zatímco ve skutečnosti je jen poněkud obtížné se ji naučit a poté se stane průzračně čistou a jasnou, byť snad poněkud citlivou na drobné chyby.A tak zatímco ty se domníváš, že tvé způsoby štábní kultury vedou k čitelnějším programůmu, tvoji následovníci za ně nebudou vděčni neboť budou nuceni přepisovat tvá díla a proklínat tvé jméno, a ozvěna jejich slov se může dostat až k tvému příštímu zaměstnavateli. Jest mnoho zvyků stále dodržovaných v tomto světě, které odstraňují třenice a zlepšují produktivitu skrze jejich všeobecné přijetí, a proto zdaleka není tak důležité jsou-li to optimální řešení. Stejně tak to je i s Pravou Štábní Kulturou.
Nutno jest učititi jednu politování hodnou poznámku na okraj. Fanatičtí přívrženci Zájmenného gestapa způsobili rozruch kolem použití mužského rodu v těchto Přikázáních, neboť věří že veliké snažení a hlasitý křik za účelem rituální očisty jazyka jakýmsi způsobem přispějí k dobru utiskovaných (na jejichž opravdové a bolavé bědnosti se v tom křiku a rozčilení zapomíná). Budou-li tato slova hlásána lidem jednoduché mysli a rychlým k rozčilení, je možné v takových případech používat neutrální výrazy jako 'bytost' apod. jakožto vhodné pseudobiblické termíny očištěné od nákazy Politické nekorektnosti. (*2)
Někteří unáhlení horlivci ovšem volají "nikoli, milénium přichází a toto učení je zastaralé a není třeba ho dále poslouchat" -- leč vpravdě jsou ve světě mnohé historické systémy a jest znám výrok obávaného boha Murphyho, že právě ve tvé příští práci můžeš takový systém potkat. Zatímco spíš, kuje proti tobě pikle; a proto se probuď a buď bdělý.Povšimni si přitom, že není nutné aby tvé identifikátory byly pouze šest znaků dlouhé. Jediné, co podle svatého přikázání musíš zachovat, je jedinečnost v rámci prvních šesti znaků. To často není zdaleka tak těžké, jak mnozí tvrdí.
Tato zcestná myšlenka může mít podobný tvar ``Všude je Sun'' nebo ``Všude je 386'' (tento poslední je přitom obzvláště odporný vynález Satanův), leč slova přikázání platí pro všechny podobné případy stejně. Dej zvláště pozor na nenápadné ale hrozivé ``Všude jsou 32-bitové stroje'', což je téměř úplně pravdou dnes ale přestane jí být dříve, než se tvůj odborný životopis jen o málo prodlouží.
Doporučujeme přečíst také komentovaný originál desatera, a knihu Pavla Herouta Učebnice jazyka C, 2. díl (nakladatelství Kopp, 1995), kde se tento překlad (v nekomentované verzi) vyskytuje na papíře.
Tento text je v originále Copyright © Henry Spencer