Code golf
Il code golf è un gioco nel quale i partecipanti devono cercare di implementare un determinato algoritmo tramite un codice sorgente più contenuto possibile, in un linguaggio di programmazione che può essere specificato nel quesito oppure scelto liberamente dai singoli partecipanti. Il nome è un riferimento al gioco del golf, nel quale l'obiettivo è completare le buche con un numero più basso di colpi. L'attività di praticare code golf è nota come golf scripting. Si distingue dal sizecoding, nel quale l'obiettivo è invece ottenere un binario dalla dimensione più piccola possibile.
Storia
[modifica | modifica wikitesto]La minima lunghezza possibile di un programma (in un qualsiasi linguaggio) che produce un determinato output è nota come complessità di Kolmogorov, ed è stata introdotta da Andrej Nikolaevič Kolmogorov nel 1963. Il code golf è tuttavia più generale rispetto alla ricerca della complessità di Kolmogorov di un determinato output, in quanto non si limita al caso di programmi senza input e con un output specificato ma riguarda algoritmi che specificano una generica trasformazione input-output.
I primi riferimenti al code golf risalgono al 1999 nella comunità Perl,[1] linguaggio che si presta alla scrittura di programmi compatti.[2] In seguito sono nati linguaggi dedicati appositamente al code golf, come ad esempio GolfScript[3] e Flogscript.[4] Questi ultimi sono esempi di linguaggi Turing completi che forniscono costrutti particolarmente efficaci per implementare concetti in maniera particolarmente concisa, ma allo stesso tempo caratterizzati da scarsa leggibilità, che li rende linguaggi esoterici di limitata utilità al di fuori del golfing. Numerosi altri linguaggi dedicati sono stati sviluppati per il code golf.[5]
Il seguente è un esempio di programma in GolfScript che produce le prime mille cifre di pi greco:
;'' 6666,-2%{2+.2/@*\/10.3??2*+}* `50<~\; #truncate for webpage purposes -> 3141592653589793238462643383279502884197169399375
Note
[modifica | modifica wikitesto]- ^ Greg Bacon, Re: Incrementing a value in a slice, su groups.google.com, 28 maggio 1999.
- ^ Adam Back, RSA in 5 lines of perl, su cypherspace.org. URL consultato il 10 gennaio 2011.
- ^ Golfscript, su golfscript.com.
- ^ FlogScript, su zzo38computer.org. URL consultato il 31 dicembre 2017 (archiviato dall'url originale il 17 novembre 2017).
- ^ List of dedicated golfing languages on the esowiki, su esolangs.org.