title: Code golf
text: # 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
  
  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, linguaggio che si presta alla scrittura di programmi compatti. In seguito sono nati linguaggi dedicati appositamente al code golf, come ad esempio GolfScript e Flogscript. 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.
  
  Il seguente è un esempio di programma in GolfScript che produce le prime mille cifre di pi greco:
  
  