Podle zdrojáku poznáte je aneb desatero stylů zápisu programátora

Uměli byste si představit, jak by vypadalo, kdybychom zdroják přirovnali k literárnímu dílu? A mohli bychom ze zdrojáku vyčíst i něco o jeho autorovi, jeho vnitřních pocitech a duševním rozpoložení? Pojďme se ponořit do literárních artefaktů vytvářejících most mezi světem lidí a světem strojů. Pojďme se ponořit do jejich tajů a poodhalit temná zákoutí programátorovy duše.

1. Odborník

Literární styl: Jan Neruda - Povídky malostranské

Číst zdroják vyprodukovaný odborníkem je jako číst dobře napsanou povídku. Odborník vás nebude zatěžovat objemem a složitostí. Dostanete-li odborníkův zdroják do ruky, snadno se do něj začtete. Je krátký a svižný, zároveň plně funkční a efektivní. Poznáte na první dobrou, co má každá komponenta dělat a jak má program fungovat jako celek.

2. Začátečník

Literární styl: maturitní slohovka ala Cermat

Ze zdrojáku začátečníka poznáte, že se začátečník pohybuje v časoprostoru "tady a teď" a že mu prozatím chybí zkušenosti:

  1. Když jeho zdroják čte někdo jiný.
  2. Když čte svůj vlastní zdroják po deseti letech. Což je stejné, jako byste četli zdroják někoho jiného. Už si nepamatujete, co a jak jste naprogramovali.

Začátečník se při programování soustředí především na to, aby program fungoval. Jeho zdroják bude především funkční a možná i efektivní. Čitelnost a strukturovanost však může pokulhávat. Názvy proměnných se zřejmě staly inspirací pro moderní progresivně levicovou terminologii typu "rodič 1" a "rodič 2." Občas dojde i ke splynutí uživatelského rozhraní a funkční logiky, čímž vznikne něco mezi kočkopsem a kvadraturou kruhu.

Každý jsme nějak začínali. Nechme proto začátečníka uzrát, aby se z něj mohl stát odborník.

3. Nerd

Literární styl: Ordinace v růžové zahradě 2

Na první pohled by se zdálo, že nerdi budou úzce zaměření odborníci. Detailnějším zkoumáním zjistíte, že se jedná především o určitou subkulturu. Subkulturu, která striktně dodržuje dané konvence, aby byla nekonvenční. O tom však někdy jindy.

Nerda neskutečně přitahuje, ba přímo rajcuje, když jsou věci složité. Pokud jsou věci jednoduché nebo snad dokonce triviální, nerd si je složitými udělá. O svém řešení pak prohlásí, že "je to" návrhový vzor, který dostane dokonce vznešené jméno. Třeba

  • Hierarchical
  • Observable
  • Virtual
  • Native
  • Object

Výsledkem nerdova snažení je zdroják, který má oproti běžnému zdrojáku asi desetinásobný objem. Má-li nerd své řešení prezentovat, hemží se jeho řeč výrazy typu "je to" moderní, "je to" budoucnost, "je to" (dosaďte cokoli vznešeného). Zeptáte-li se nerda, jaké že přinese jeho vícepráce benefity, jeho odpověď bude všeříkající: "eee ... eee ... eee ..."

Také vám připadá, jako by moderní informatika spočívala v tom, že na čím dál rychlejším hardware běží čím dál pomalejší software? Cherchez la merde. Pardón, cherchez la nerd.

4. Génius

Literární styl: Filippo Tommaso Marinetti - Zang Tumb Tumb

Vyždímal na maximum možnosti, které mu mohou poskytnout šablony v C++, čímž se mu podařilo zredukovat zdroják z 1 000 řádků na 100. Úžasné.

Do doby, než géniův zdroják musel převzít kolega a najít v něm memory leak. Těžké.

5. Machr

Literární styl: črta na sáčku od svačiny

Velmi rád vedl vznešené technické řeči, jak to či ono budoucnost. Šéf mu zobal z ruky. Kolegové uznale pokyvovali hlavami. Já na něj žárlil.

Jednou mi šéf zavolal: "prosím tě, Jirko, běž mu pomoct, on už se s tím patlá několik týdnů a nehne s tím."

Kouknu na to. Zdroják bez ladu a skladu, žádná struktura, žádná logika, žádná funkcionalita. Na můj tázavý pohled odpověděl machr ukňouraným hláskem: "víš, já se na tom teprve učím."

6. Prase

Literární styl: (Ať hledám, jak hledám, představitele vogonské poezie se mi nepodařilo najít.)

Něco jako vývojové a produkční prostředí bylo pod jeho rozlišovací schopnost. Všechno mastil do jednoho. Která verze se má zrovna spustit, to rozlišoval složitou strukturou IF.

Stejně tak když potřeboval novou položku do databáze, lípnul do tabulky nový sloupec. Výsledkem byla tabulka o sto dvaceti sedmi sloupcích.

A také si evidentně nepotykal s něčím, jako je struktura programu.

Když jsem po kolegovi projekt přebíral a chtěl jsem udělat očistu od mrtvého zdrojáku a mrtvých databázových položek, vězte, že jsem záviděl práci bájnému Heraklovi. Vyčistit pověstný Augiášův chlív byla oproti tomuhle zprasku procházka růžovou zahradou.

Tímto se omlouvám všem prasatům ...

7. Programoval v časovém presu

Literární styl: Mein Kampf

Tohle nechcete. Produkťák systematicky ignoruje dotazy programátora. Projekťák má vývojové úkoly zredukované pouze na "effort estimation" a "status update." Zdá se, jako by pojmy "big picture" a "cíl" byly pro projektáka sprostá slova. Pak se přiblíží termín dokončení. Produkťák zjišťuje, že věci nejsou úplně podle jeho představ a popadá ho emoční únos. Hysterák. Co má chudák programátor dělat.

A chudák programátor, který měl v takovém zdrojáku pokračovat. Ono sice všechno fungovalo a fungovalo to dobře. Potíž však byl na takovém zdrojáku vystavět novou funcionalitu. Kupa závislostí rozházená všude možně, jako když exkrement narazí do větráku na stropě. Původní časový odhad patnáct minut včetně záchodové pauzy se zvrtnul na dva týdny intenzivních přesčasů.

8. Měl to na salámu

Literární styl: diplomka z plzeňských práv

Potřeboval jenom opravit chybu a zbavit se protivného tasku. Bylo mu jedno jak, hlavně že to bude fungovat. Tak prostě opravu lípnul na první vhodné místo ve zdrojáku a hodil to za hlavu. Že se k tomu hodil i kousek zdrojáku odvedle? No problemo, copypaste to vyřeší. Funguje to, tak jaképak copak.

Zdroják úspěšně bobtnal.

9. Zdroják na draka

Literární styl: dveře kabinky veřejného WC

Pokud by mě dotyčný kolega požádal, abych mu na linkáči endorsoval nějaký skill, endorsnul bych mu "lezení do zadku." Vskutku, kolega naprosto neomylně poznal, do kterého zadku má vlézt, aby mu z toho kápnul maximální užitek. To jenom tak pro zajímavost.

Psal se rok 2002. Nerdí subkultura prožívala teprve stádium embrya, možná i zygoty, a už tenkrát vykazovala jeden ze svých klíčových znaků: technologie coby fetiš.

Fetišem té doby bylo objektové programování, respektive jeho vlastnost zvaná "dědičnost." Takový OO-nerd byl schopen objekty cpát i do vzorových úkolů z různých školení, kde šlo především o to sfouknout úkol třemi řádky kódu a odporoučet se za účelem požírání baget. Že to mělo řádků třicet a čitelnost zdrojáku pokulhávala? Ale vždyť "je to" hezky naobjektované.

OO-nerd zadkolezec vymyslel nádhernou objektovou strukturu, které dominoval prapředek všech objektů zvaný "Adam." Fakt že nekecám, skutečně se základní třída jmenovala "Adam." Od "Adama" byly odvozeny objektové třídy "ZobrazitelnýAdam" a "SpustitelnýAdam," aby se vzápětí mohly spojit a vytvořit třídu "ZobrazitelnýSpustitelnýAdam." Pak přišel kolega za mnou, že mu kompilátor hlásí nějaké potíže.

Poučení: pokud objektová struktura vypadá jako dráček na dveřích veřejného WC, bude výsledek nejspíš na draka.

10. Nerd interviewer

Literární styl: Pes jitrničku sežral

Jako perličku na závěr ukážu zdroják, který jsem dostal k analýze coby test u pracovního pohovoru. Tak schválně, za jak dlouho poznáte, co prográmek dělá?

public class Example {
	
	private void process(String in, int i) {
		if(i != in.length() - 1) {
			process(in, i + 1);
		}
		System.out.print(in.charAt(i));
	}
	
	public static void main(String[] args) {
		Example e = new Example();
		e.process("This is test", 0);
	}
}

Nebudu daleko od pravdy, když prohlásím, že i odborníkovi bude trvat delší dobu, než pozná, že prográmek má napsat text obráceně. Nerd totiž při kódění použil rekurzi. Tedy funkci, která volá sebe samotnou, jen s jinými parametry. Když jsem prohlásil, že by stačila úplně jednoduchá smyčka a výsledek by byl jednodušší, čitelnější i efektivnější, objevily se v nerdových očích otazníky.

Dalším zkoumáním jsem zjistil, že program obsahuje skrytou chybu. Pokud se funkce volá s nesprávnými parametry, vzniklou nekonečnou smyčku zastaví až pád programu poté, co program spotřebuje celou paměť. Odhalení chyby nesl nerd velmi nelibě.

Nakonec jsem se neubránil poznámce, že kdyby mi programátor odevzdal takový kód do produkce, urazil bych mu pazoury. Čímž jsem definitivně urazil nerdovu citlivou dušičku.

Hádejte, jak se jmenovala pozice, které se pohovor týkal. Správně, projektový manažer.

Post scriptum

Při přípravě materiálů jsem zcela náhodou narazil na výraz mouche à merde, což by měla být moucha masařka. Co myslíte, jak by vypadala mouche à nerd? Snad se o vás při čtení nepokusila příhoda faire caca dans sa culotte. To by byla pěkná emmerde. Přirozené jazyky mají svůj půvab.

Tagy: Programování, Ze života programátora

Tento web bude tebe a tvůj počítač krmit piškotkami, jelikož a protože je to slušný web a jako takový ví, že je potřeba návštěvu řádně pohostit, aby se u nás cítila dobře. Užíváním tohoto webu potvrzuješ, že netrpíš mentální anorexií, nedržíš žádnou obskurní dietu a že můžeš piškotki do sebe cpát kdykoli a v jakémkoli množství. Více informací...