코드 골프

Code golf

코드골프는 레크리에이션 컴퓨터 프로그래밍 대회의 일종으로 참가자들은 특정 문제를 해결하는 가능한 가장 짧은 소스 코드를 얻기 위해 노력한다.[1] 코드 골프 도전과 토너먼트도 사용되는 프로그래밍 언어로 명명될 수 있다(: Perl 골프).

역사

(어떤 고정 프로그래밍 언어로든) 주어진 출력을 생산하는 최단 시간 가능한 프로그램의 길이는 출력의 콜모고로프 복잡성으로 알려져 있으며, 그 수학적 연구는 1963년 안드레이 콜모고로프의 작업에 기인한다. 그러나 코드 골프는 입력이 없는 단일 출력을 요구하는 것보다 반드시 수행해야 하는 일반적인 입출력 변환을 규정하는 경우가 많기 때문에 이보다 더 일반적일 수 있다.

1999년 Perl과 함께 처음 사용된 코드 골프라는 용어가 나중에 [2]Perl을 사용하여 RSA 암호화를 수행하는 프로그램을 작성함으로써 대중화된 반면,[3] 유사한 비공식 대회가 이전의 APL 해커들에게 인기가 있었던 것으로 알려져 있다. 를 들어 Regnecentralen의 GIER 컴퓨터에 대한 1962년 코딩 매뉴얼은 "최소한의 명령어로 코딩하는 것은 시간 소모적인 스포츠"라고 언급하고 실제 프로그래밍을 위해 그것에 반대할 것을 권고하는 등 프로그램 크기에 대한 공격적 최적화의 도전적 성격 자체는 오랫동안 인정되어 왔다.[4] 오늘날 이 용어는 매우 다양한 언어를 포괄할 수 있게 되었고, 이것은 심지어 전용 골프 언어의 창조를 촉발시켰다.

어원

코드골프라는 용어는 대부분의 스포츠·게임 채점시스템에서 표준처럼 참가자가 최고점보다는 최저점수 달성을 추구하는 기존 골프와 목표의 유사성에서 유래했다. 기존 골프 선수들이 코스 완성에 필요한 클럽 스트로크 수를 최소화하려는 반면, 코드 골퍼들은 프로그램 작성에 필요한 키 스트로크 수를 줄이기 위해 노력하고 있다.

전용 골프 언어

특히 코드 골프를 염두에 두고 몇 가지 새로운 언어가 만들어졌다. 예를 들어 아이디어를 코드로 간결하게 표현하기 위한 구조를 제공하는 튜링 완성 언어인 골프스크립트, 플로그스크립트, 빅살 등이 있다. 골프 언어는 극도의 간결성을 위해 경쟁하기 때문에, 그들의 디자인은 실용적인 생산 환경에 중요한 가독성을 희생시키고, 따라서 난해한 경우가 많다. 그러나 때때로 언어는 실용적인 목적을 위해 고안되었지만, 코드 골프에 적합한 것으로 판명된다.

1000자리 pi를 인쇄하는 GolfScript 코드의 예:

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

이것은 "3141592653"부터 시작하여 990자리의 파이를 더 인쇄한다.

코드 골프 웹사이트에는 코드 골프 도전을 따내기 위해 사용자들이 만든 참신한 골프 언어가 포함되어 있다. 다른 인기 언어로는 05AB1E, Husk, Phin, CJam, Jelly 등이 있다.

코드 골프의 종류

일반 프로그래밍 사이트에서 제기되는 것과 같은 일부 코드 골프 질문은 특정 프로그래밍 언어로 구현을 요구하지 않을 수 있다. 그러나 이는 문제 설계자가 제기할 수 있는 문제의 스타일을 제한한다(예를 들어, 특정 언어 기능의 사용을 제한함). 또한 이러한 '열린' 질문이 만들어지면서 REBMU(REBOL의 방언)와 같은 코드 골프 특정 프로그래밍 언어 사투리가 설계되는 결과를 낳았다. 온라인과 라이브 경기 모두 시간 제한을 포함할 수 있다.

참고 항목

참조

  1. ^ 코드 골프 스택 교환. 코드골프에 대해서. 2021-12-21 검색됨
  2. ^ Greg Bacon (1999-05-28). "Re: Incrementing a value in a slice". Newsgroup: comp.lang.perl.misc. Usenet: 7imnti$mjh$1@info2.uah.edu. Retrieved 2011-07-12.
  3. ^ Back, Adam. "RSA in 5 lines of perl". Retrieved 2011-01-10.
  4. ^ Andersen, Christian; Gram, Christian (1962). Lærebog i Kodning for GIER (PDF). 1 (3 ed.). Copenhagen: Regnecentralen. p. 104. Retrieved 2020-05-16.

외부 링크