Código de golf


Code golf es un tipo de competencia recreativa de programación de computadoras en la que los participantes se esfuerzan por lograr el código fuente más corto posible que resuelva un problema determinado. [1] Los desafíos y torneos de golf de código también se pueden nombrar con el lenguaje de programación utilizado (por ejemplo, Perl golf ).

La longitud del programa más corto posible que produce una salida dada (en cualquier lenguaje de programación fijo) se conoce como la complejidad de Kolmogorov de la salida, y su estudio matemático data del trabajo de Andrey Kolmogorov en 1963. Code golf, sin embargo, puede ser más general que esto, ya que a menudo especifica una transformación general de entrada-salida que debe realizarse en lugar de solicitar una única salida sin entrada.

Si bien el término "código de golf" aparentemente se usó por primera vez en 1999 con Perl , [2] y luego se popularizó mediante el uso de Perl para escribir un programa que realizaba el cifrado RSA , [3] se sabe que una competencia informal similar fue popular entre piratas informáticos anteriores de APL . La naturaleza desafiante de la optimización agresiva para el tamaño del programa ha sido reconocida durante mucho tiempo, por ejemplo, un manual de codificación de 1962 para la computadora GIER de Regnecentralen señala que "es un deporte que requiere mucho tiempo codificar con el menor número posible de instrucciones" y recomienda no hacerlo para programación práctica. [4] Hoy en día, el término ha crecido para abarcar una amplia variedad de idiomas, lo que incluso ha desencadenado la creación de lenguajes dedicados al golf.

El término "code golf" se deriva de la similitud de su objetivo con el del golf convencional , donde los participantes buscan lograr la puntuación más baja posible, en lugar de la más alta, como es el estándar en la mayoría de los sistemas de puntuación de deportes y juegos. Mientras que los jugadores de golf convencionales intentan minimizar el número de golpes de palo necesarios para completar el campo, los golfistas de código se esfuerzan por reducir el número de golpes de tecla necesarios para escribir el programa.

Se han creado varios lenguajes nuevos específicamente con el código de golf en mente. Los ejemplos incluyen GolfScript, Flogscript y Vyxal, que son lenguajes completos de Turing que proporcionan construcciones para expresar ideas de manera concisa en el código. Debido a que los lenguajes de golf compiten por la brevedad extrema, su diseño sacrifica la legibilidad, que es importante para los entornos de producción prácticos y, por lo tanto, a menudo son esotéricos . A veces, sin embargo, un lenguaje está diseñado para un propósito práctico, pero resulta ser adecuado para el golf de código.

Los sitios web de Code Golf incluyen nuevos lenguajes de golf creados por los usuarios para ganar desafíos de Code Golf. Otros lenguajes populares incluyen 05AB1E, Husk, Pyth, CJam y Jelly.