Kargokultické programování

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Kargokultické programování je programovací paradigma, které se používá v softwarovém inženýrství a vývoji softwaru. Je založeno na konceptech základního kargo kultu, který byl původně spojen s náboženskou vírou a rituály. Kargokultické programování se zaměřuje na nábožensky podobné rituály v procesu tvorby softwaru. Jádrem kargokultického programování je víra, že vhodným sledováním rituálů a dodržováním předepsaných postupů lze dosáhnout vynikajících výsledků v softwarovém vývoji. Těmito rituály jsou například opakování konkrétních kódových fragmentů, programování v určitých časových intervalech či provádění jiných formálních kroků. Tento přístup vychází z myšlenky, že opakování kontrolovaných akcí vede k duchovní prospěšnosti a zlepšení výkonu programátora. Kargo kultické programování často spoléhá na víru, místo základních principů, jako je logika a analýza. I přes svou kontroverznost má kargokultické programování své příznivce, kteří tvrdí, že jejich vývojářské rituály a víra v jedinečnou účinnost tohoto paradigmatu jim přinesly úspěch při programování. Nicméně, stoupenci tradičnějších programovacích paradigmat mají tendenci jej považovat za neefektivní a nevědecký přístup k softwarovému vývoji. Celkově lze říci, že kargokultické programování je kontroverzní a netradiční paradigma, které klade důraz na rituály a náboženské aspekty vývoje softwaru. Jeho účinnost a přínosy jsou stále diskutovány a závisí na perspektivě jednotlivých vývojářů.

Kargokultické programování (cargo cult programming) je označení pro styl programování charakterizovaný „rituálním“ začleněním převzatých vzorů kódu nebo algoritmů, bez jasného pochopení proč jsou použity; tento styl je příznačný pro programátora, který nerozumí problému či chybě, které se pokouší vyřešit. Jako příklad je možné uvést zkopírování kusu kódu z jednoho místa na druhé s minimálním pochopením toho, jak funguje, nebo zda je to opravdu nutné.

Za kargokultické programování je také možné označit použití návrhového vzoru nebo stylu kódování bez pochopení důvodů pro jeho použití. Příkladem může být přidání zbytečných komentářů k samovysvětlujícímu kódu, přílišné dodržování konvencí programovacího paradigmatu nebo volání dealokačních rutin pro objekty, které maže garbage collector.

Dalším znakem kargokultického programování může být obsedantní a nadbytečná kontrola nulových hodnot nebo testování, zda jsou pole či kolekce prázdná před průchodem jejích hodnot ve smyčce. Zbytné řádky kódu zhoršují jeho čitelnost a často ztěžují pochopení významu chybových zpráv nebo zakrývají skutečnou příčinu nefukčnosti algoritmu či programu.

...

Původ

kargokultu na ostrově Tanna, Vanuatu Termín kargokult (cargo cult) je idiom, odkazující se na domorodá náboženství, která vyrostla v jižním Pacifiku po druhé světové válce. +more Praxe těchto skupin se soustředily na primitivní napodobování letištních a dalších staveb, objektů a postupů v naději, že tak budou přivolány „božské“ letouny, které během války přinesly úžasný náklad. Použití termínu v počítačovém programování pravděpodobně pochází převzetím termínu od Richarda Feynmana, který nazval používání určitých praktik či postupů jako kargokultickou vědu.

Příklady

sudo

Používání sudo před dalšími příkazy je užitečné, pokud tyto příkazy vyžadují ke své činnosti administrátorská práva (root).

Jinak je přidávání sudo ke každému příkazu zbytečné, a v některých případech dokonce nebezpečné.

Rust

Následující program napsaný v Rustu má vytvořit náhodné číslo, a zobrazit buď čaj (pokud je toto číslo sudé), nebo káva (pokud je liché).

Tento kód má v sobě nepotřebnou podobu deklarace externí knihovny (od roku 2018 stačí ve většině případů použít use), zbytečné if (které nutí počítač postupně ozkoušet pravdivost každého stavu), a přebytečnou proměnnou rnd:

extern crate rand; // 0.8.5 use rand::Rng;

fn main { let rnd:i32 = rand::thread_rng.gen; if rnd%2==0{ println!("čaj") } else { println!("káva") } }

Po zjednodušení vypadá zmíněný kód takto:

use rand::Rng; // 0.8.5 (informace pro vývojáře - verze knihovny)

fn main { println!("{}", ["čaj", "káva"][rand::thread_rng.gen_range(0..2) as usize]); }

Po vyřešení závislostí výchozím správcem balíčků Cargo, a překladu do strojového jazyka se [url=https://play. rust-lang. +moreorg/. version=stable&mode=debug&edition=2021&code=use%20rand%3A%3ARng%3B%0A%0Afn%20main%20%7B%0A%20%20%20%20println. (%22%7B%7D%22%2C%20%5B%22%C4%8Daj%22%2C%20%22k%C3%A1va%22%5D%5Brand%3A%3Athread_rng. gen_range(0. 2)%20as%20usize%5D)%3B%0A%7D%0A]zobrazí tento výsledek[/url].

Kargokultické softwarové inženýrství

V softwarovém inženýrství se používá příbuzný termín kargokultické softwarové inženýrství, vytvořený Stevem McConnellem.

McConnell popisuje softwarové firmy či organizace, které se pokoušejí napodobit úspěšnější konkurenty buď otrockým následováním jejich vývojových procesů, aniž by pochopily důvody, které za nimi jsou, nebo požadují po zaměstnancích, aby pracovali v rámci neplacených přesčasů - bez pochopení, že v úspěšných organizacích je většinou tato praxe důsledkem vysoké motivace zaměstnanců, než aby byla příčinou úspěchu dané společnosti.

McConnell tvrdí, že pro úspěch projektu je rozhodující kompetence řešitelského týmu bez ohledu na použitý vývojový přístup; dále tvrdí, že nekompetentní „podvodné organizace“ (které pouze napodobují formu úspěšných organizací pro vývoj softwaru) se ve skutečnosti zabývají tím, co nazývá kargokultickým softwarovým inženýrstvím.

Reference

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top