코드 골프

코드 골프(code golf)는 레크리에이션 컴퓨터 프로그래밍 대회의 일종으로, 참여자들은 특정한 알고리즘을 구현하는 가장 짧은 잠재적 소스 코드를 달성하기 위해 고군분투한다. 코드 골프를 플레이하는 일을 "골프 스크립팅"(golf scripting)이라고 부른다. 코드 골프 대회들은 사용되는 프로그래밍 언어와 함께 이름이 붙을 수 있다. (예를 들어 펄 골프)

역사 
(고정 프로그래밍 언어에서) 주어진 출력을 제공하는 가장 짧은 잠재적 프로그램의 길이는 출력물의 콜모고로프 복잡도로 알려져 있으며 수학적 연구는 안드레이 콜모고로프의 노고가 있던 1963년으로 거슬러 올라간다. 그러나 코드 골프는 이보다 더 포괄적일 수 있는데, 입력 없는 단일 출력을 요청하는 것보다는, 꼭 수행되어야 하는 입출력 전송을 특정하는 경우가 종종 있기 때문이다.

코드 골프(code golf)라는 용어가 1999년 펄과 함께 처음 사용되었으며, 나중에 RSA 암호화를 수행하였던 프로그램 작성을 위해 펄을 사용하면서 널리 보급되었으나, 이와 유사한 비공식 대회가 초기 APL 해커들과 더불어 대중화된 것으로 알려져 있다. 오늘날 이 용어는 다양한 언어에 적용되도록 성장했으며 이로 인해 전용 골프 언어가 탄생하는 계기가 되었다.

용어 
"코드 골프"라는 용어는 전통적인 골프의 목표와의 유사성에서 기인한 것으로, 참여자들은 가장 높은 점수가 아닌 가장 낮은 잠재적 점수를 달성하는 것이 목적이고 이는 대부분의 스포츠와 게임 점수 체계에서 표준과 같다. 전통적인 골프 선수들이 코스를 완수하기 위해 필수적인 클럽 스트로크의 수를 최소화하려고 시도하지만 코드 골프 참가자들은 프로그램 작성에 필수적인 키 스트로크의 수를 줄이는 것을 목표로 한다.

전용 골프 언어 
수많은 새로운 언어들이 특히 코드 골프를 염두에 두고 만들어지고 있다. 그 예로서 골프스크립트(GolfScript)와 플로그스크립트(Flogscript)가 있으며 이 언어들은 둘 다 튜링 완전 언어로서 코드에 간결하게 표현되는 개념의 구조체를 제공한다. 골프 언어들이 극심한 간결성을 위해 완수되기 때문에 디자인은 실용적인 운영 환경에 중요한 가독성을 희생시키며, 이에 따라 난해한 프로그래밍 언어로 간주되기도 한다. 그러나 가끔은 실용적인 목적으로 설계되기도 하는데, 다시 말해 코드 골프에 적절하도록 설계됨을 의미한다.

1000개의 원주율 숫자를 출력하는 골프스크립트 코드의 예:
;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;

같이 보기 
 데이터 압축
 Perl pastimes

각주

외부 링크 
StackOverflow.com: Questions tagged with 'code-golf'
CodeGolf.StackExchange.com: Questions and answers on programming puzzles and code golf
regular expression golfing: a fun variant to code golf
ShortestWikiContest
List of dedicated golfing languages

프로그래밍 대회