강좌 & 팁
프로그래머를 위한 경진대회 중에 IOCCC에 대한 소개를 하려한다.
IOCCC는 오래전(1984)부터 존재하였으며, 한동안 안하다가 근래에 다시 재개된 듯 하다.
IOCCC는 International Obfuscated C Code Contest의 약자로서
혹자는 C언어로 재미있는 그림(?)을 그리는 대회라고 말하기도 하는 데,
IOCCC의 한 단면일 수 있지만, 'C언어 디자인의 side-effect에 대한 탐구' 또는 'C언어 디자인에 대한 Hacking'이라고 말하고 싶다.
모든 대회에는 룰이라는 것이 있는데, 이 대회의 룰 중에는
a) 코드량의 제한: 대개 한 페이지에 들어 온다.
b) 실행되어야 한다: 코드가독성을 최대한 낮추기 위해 만들다보니, 유용한 실행결과를 만들기 어렵다.
룰은 해마다 달라지며, 참가자들을 위한 가이드라인이 배포된다.
"Hacking the contest rules is a tradition" --- Landon Curt Noll, 2011
한 예를 소개 해 보기로 하자. 2013년 수상작 중에 birken(첨부파일에 있음)이다.
IOCCC2013_birken$ ls
Makefile birken.c examples.tbz2 hint.text images.tbz2
examples/ hint.html images/
hint.html에는 이 프로그램에 대한 설명이 있다.
'examples'에는 여러개의 그림을 위한 (입력)데이타파일이 있다.
make를 실행시키면, birken이라는 실행파일이 나온다.
birken 테트리스에 관련된 것으로서 입력파일로부터 읽어 들인 그림을
(VGA칼라를 이용해서) console에 보여주는 실행파일이다.
한번 실행해 보면 다음과 같다.
IOCCC2013_birken$ ./birken < examples/format .txt
birken의 소스코드를 보면 다음과 같다.
소스코드를 보면 뭐하는 프로그램인지를 한 눈에 알 수 있는 것 같다. ㅋ
관심있는 사람을 위한 시작페이지는 다음과 같다.
http://www.ioccc.org/
http://en.wikipedia.org/wiki/IOCCC
http://en.wikipedia.org/wiki/Obfuscated_Perl_Contest : Perl