Код-гольф (англ. Code golf, «код-гольфинг», «гольф-скриптинг») — вид развлекательного соревнования в программировании, в котором участники стараются написать кратчайший исходный код, реализующий некоторый алгоритм. Отдельные виды код-гольфа могут быть названы по используемому в нём языку программирования (например, Perl-гольф).
Длина кратчайшей программы, порождающий некоторый заданный вывод (в заранее заданном языке программирования) задаёт колмогоровскую сложность этого вывода, которой были посвящены работы Андрея Николаевича Колмогорова в 1963 году. Код-гольф, впрочем, может трактоваться более широко, так как в нём зачастую требуется не вывести заданное слово, а описать некоторое преобразование ввода в вывод.
Хотя термин "код-гольф", вероятно, был впервые использован в 1999 году относительно программ на Perl[1] и был популяризирован программами на Perl, реализующими RSA[2], похожие неформальные соревнования были распространены среди ранних программистов на APL. Сегодня термин может быть использован по отношению к широкому семейству языков программирования, более того, существуют языки программирования, разработанные специально для код-гольфа.
Термин "код-гольф" получен по аналогии с тем, как в обыкновенном гольфе необходимо набрать наименьшее возможное количество очков, а не наибольшее, как в большинстве видов спорта. В то время, как игроки обычного гольфа стремятся минимизировать количество ударов клюшкой, необходимых для прохождения поля, код-гольферы стремятся минимизировать количество ударов по клавиатуре, необходимых для того, чтобы написать программу.
Некоторые языки программирования были разработаны специально для код-гольфинга. Примерами таких языков являются GolfScript и Flogscript, которые, будучи Тюринг-полными, при этом позволяют лаконично выражать идеи в коде. Так как перед языками для гольфинга стоит задача минимизации длин программ, написанных на них, при их разработке обычно приходится жертвовать читаемостью кода, более важной в индустриальном программировании, поэтому эти языки часто являются эзотерическими. Например, программа на GolfScript, выводящая первые 1000 цифр числа пи выглядит так:
;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;
Другими популярными языками для гольфинга являются 05AB1E и Jelly.
![]() | На эту статью не ссылаются другие статьи Википедии. |