Kód golf - Code golf
Kód golf je druh rekreační počítačové programovací soutěže, ve které se účastníci snaží dosáhnout co nejkratší možné doby zdrojový kód který implementuje určité algoritmus. Hraní golfu s kódem je známé jako „golfové skriptování“. Kódové 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 Kolmogorov v roce 1963. Kódový golf však může být obecnější než tento, protože často specifikuje obecnou vstupně-výstupní transformaci, která musí být provedena, místo aby požadovala jediný výstup bez vstupu.
Zatímco termín „code golf“ byl zjevně poprvé použit v roce 1999 s Perl,[1] a později popularizoval pomocí Perl psát program, který hrál RSA šifrování,[2] je známo, že podobná neformální soutěž byla dříve oblíbená APL hackeři. Samotná náročná agresivní optimalizace velikosti programu byla uznána již dlouho, například příručka pro kódování z roku 1962 Regnecentralen Počítač GIER poznamenává, že „je časově náročný sport kódovat s co nejmenším počtem instrukcí“, a pro praktické programování to nedoporučuje.[3] Dnes se tento pojem rozrostl tak, aby zahrnoval širokou škálu jazyků, což dokonce vyvolalo vytvoření specializovaných golfových jazyků.
Etymologie
Termín „code golf“ je odvozen od podobnosti jeho cíle s tím konvenčním golf, kde se účastníci snaží dosáhnout nejnižšího možného skóre, spíše než nejvyššího, jak je standardem ve většině systémů bodování sportů a her. Zatímco hráči konvenčního golfu se snaží minimalizovat počet úderů holí potřebných k dokončení kurzu, golfisté kódu se snaží snížit počet úderů kláves nutných k napsání programu.
Vyhrazené golfové jazyky
Několik nových jazyků bylo vytvořeno konkrétně s ohledem na kódování golfu. Mezi příklady patří GolfScript a Flogscript, které jsou Turing-kompletní jazyky, které poskytují konstrukty pro výstiž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é účely, ale ukáže se jako vhodný pro kódový golf.
Příklad kódu GolfScript pro tisk 1 000 číslic pi:
;''6666,-2%{2+.2/@*\/10.3??2*+}*`1000<~\;
Vytiskne řetězec začínající na „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 Code Golf. Mezi další populární jazyky patří 05AB1E a Jelly.
Druhy kódového golfu
Některé otázky týkající se golfu s kódem, například otázky kladené na obecných programovacích webech, nemusí vyžadovat implementaci v konkrétním programovací jazyk. To však omezuje styl problémů, které mohou návrháři problémů představovat (například omezením používání určitých jazykových funkcí). Vytvoření takových „otevřených“ otázek navíc vyústilo v návrh dialektů programovacího jazyka specifických pro kódový golf, jako je REBMU (dialekt REBOL ). Online i živé soutěže mohou zahrnovat také časové limity.
Viz také
Reference
- ^ Greg Bacon (1999-05-28). "Re: Zvyšování hodnoty v řezu". Diskusní skupina: comp.lang.perl.misc. Usenet: [email protected]. Citováno 2011-07-12.
- ^ Zpět, Adame. „RSA in 5 lines of perl“. Citováno 2011-01-10.
- ^ Andersen, Christian; Gram, Christian (1962). Lærebog i Kodning pro GIER (PDF). 1 (3. vyd.). Kodaň: Regnecentralen. str. 104. Citováno 2020-05-16.