Код гольф - Code golf

Кодовый гольф - это разновидность соревнований по развлекательному программированию, в которых участники стремятся получить как можно более короткий исходный код , реализующий определенный алгоритм . Игра в кодовый гольф известна как «скриптинг игры в гольф». Задачи и турниры по игре в гольф также могут быть названы в соответствии с используемым языком программирования (например, Perl golf ).

История

Длина самой короткой программы, которая производит данный результат (на любом фиксированном языке программирования), известна как колмогоровская сложность вывода, и ее математическое исследование датируется работой Андрея Колмогорова в 1963 году. Код гольф, однако, может быть более общий, чем это, поскольку он часто определяет общее преобразование ввода-вывода, которое должно быть выполнено, а не запрашивать один вывод без ввода.

Хотя термин «кодовый гольф», по-видимому, впервые был использован в 1999 году с Perl , а затем популяризирован благодаря использованию Perl для написания программы, выполняющей шифрование RSA , аналогичные неформальные соревнования, как известно, были популярны среди ранних хакеров APL . Сложный характер агрессивной оптимизации для размера программы давно признан, например, в руководстве по кодированию для компьютера GIER компании Regnecentralen 1962 года отмечается, что «кодирование с наименьшим возможным количеством инструкций - занятие, требующее много времени», и не рекомендуется использовать это для практическое программирование. Сегодня этот термин расширился до самых разных языков, что даже привело к созданию специальных языков для игры в гольф.

Этимология

Термин «кодовый гольф» происходит от схожести его цели с целью обычного гольфа , когда участники стремятся набрать как можно более низкий балл, а не наивысший, как это принято в большинстве спортивных систем и систем подсчета очков. В то время как обычные игроки в гольф стараются свести к минимуму количество ударов клюшкой, необходимых для завершения поля, программисты в гольф стремятся уменьшить количество нажатий клавиш, необходимых для написания программы.

Выделенные языки игры в гольф

Специально для игры в гольф было создано несколько новых языков. Примеры включают GolfScript, Flogscript и Vyxal, которые являются полными по Тьюрингу языками, которые предоставляют конструкции для лаконичного выражения идей в коде. Поскольку языки игры в гольф конкурируют за крайнюю краткость, их дизайн жертвует удобочитаемостью, что важно для практических производственных сред, и поэтому они часто являются эзотерическими . Иногда, однако, язык предназначен для практических целей, но оказывается, что он подходит для кодового гольфа.

Пример кода GolfScript для печати 1000 цифр числа Пи :

;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;

Это напечатает строку, начинающуюся с «3141592653», за которой следует еще 990 цифр числа «пи».

На сайтах Code Golf пользователи постоянно создают новые уникальные языки игры в гольф, чтобы выиграть соревнования по гольфу. Другие популярные языки включают 05AB1E и Jelly.


Виды кодового гольфа

Некоторые вопросы по программированию, например те, которые задаются на сайтах общего программирования, могут не требовать реализации на конкретном языке программирования . Однако это ограничивает стиль задач, которые могут создавать разработчики задач (например, ограничивая использование определенных языковых функций). Вдобавок создание таких «открытых» вопросов привело к разработке кодовых диалектов языка программирования для гольфа, таких как REBMU (диалект REBOL ). Как онлайн, так и живые соревнования также могут включать временные ограничения.

Смотрите также

использованная литература

внешние ссылки