Code golf - Code golf
Code golf je druh rekreační počítačové programovací soutěže, ve které se účastníci snaží dosáhnout co nejkratšího zdrojového kódu, který implementuje určitý algoritmus . Hraní kódového golfu je známé jako „golfové skriptování“. Code golfové výzvy a turnaje lze pojmenovat také podle použitého programovacího jazyka (například Perl golf ).
Dějiny
Délka nejkratšího možného programu, který produkuje daný výstup (v jakémkoli pevném programovacím jazyce), je znám jako Kolmogorovova složitost výstupu a jeho matematické studium se datuje k práci Andrey Kolmogorova v roce 1963. Code golf však může být obecnější než toto, protože často určuje obecnou transformaci vstupů a výstupů, kterou je třeba provést, a nikoli žádat o jeden výstup bez vstupu.
Zatímco termín „kódový golf“ byl zřejmě poprvé použit v roce 1999 s Perlem a později byl propagován pomocí Perlu k napsání programu, který prováděl šifrování RSA , je známo, že podobná neformální soutěž byla oblíbená u dřívějších hackerů APL . Náročná povaha agresivní optimalizace pro velikost programu je již dlouho uznávána, například kódovací příručka pro počítač GIER společnosti Regnecentralen z roku 1962 uvádí, že „je časově náročný sport na kódování s co nejmenším počtem instrukcí“ a doporučuje ji pro praktické programování. Dnes se tento termín rozrostl tak, aby zahrnoval širokou škálu jazyků, což dokonce vyvolalo vytvoření specializovaných jazyků golfu.
Etymologie
Termín „kódový golf“ je odvozen od podobnosti jeho cíle s konvenčním golfem , kde se účastníci snaží dosáhnout nejnižšího možného skóre než nejvyššího, což je standardem většiny systémů pro skórování sportů a her. Zatímco se konvenční hráči golfu snaží minimalizovat počet úderů kyjem potřebných k dokončení hřiště, kódoví golfisté usilují o snížení počtu úderů klíčů nezbytných k napsání programu.
Specializované golfové jazyky
Bylo vytvořeno několik nových jazyků speciálně s ohledem na kódový golf. Mezi příklady patří GolfScript, Flogscript a Vyxal, což jsou jazyky Turing-Complete, které poskytují konstrukty pro stručné vyjádření myšlenek v kódu. Protože golfové jazyky soutěží o extrémní stručnost, jejich design obětuje čitelnost, což je důležité pro praktická produkční prostředí, a proto jsou často esoterické . Někdy je však jazyk navržen pro praktický účel, ale ukazuje se, že je vhodný pro kódový golf.
Příklad kódu GolfScript pro tisk 1000 číslic pí :
;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;
Tím se vytiskne řetězec začínající „3141592653“ následovaný 990 dalšími číslicemi pí.
Webové stránky Code Golf umožňují uživatelům neustále vytvářet nové a jedinečné golfové jazyky, aby vyhráli výzvy v oblasti golfového kódu. Mezi další populární jazyky patří 05AB1E a Jelly.
Typy kódového golfu
Některé otázky týkající se golfového kódu, například otázky kladené na obecných programovacích webech, nemusí vyžadovat implementaci v konkrétním programovacím jazyce . To však omezuje styl problémů, které je možné pro návrháře problémů představovat (například omezením používání určitých jazykových funkcí). Kromě toho vytvoření takových „otevřených“ otázek vyústilo v návrh dialektů programovacího jazyka specifického pro golfový kód, jako je REBMU (dialekt REBOL ). Online i živé soutěže mohou také zahrnovat časové limity.
Viz také
- Kódová poezie
- Komprese dat
- Minifikace (programování)
- Perl kratochvíle
- Kolmogorovova složitost
- Kata (programování)