International Obfuscated C Code Contest (국제 난독화된 C 코드 컨테스트). 말 그대로 C 코드를 얼마나 창의적으로 이상하게 만들 수 있는가를 겨루는 온라인 프로그래밍대회. 그 시초는 무려 유즈넷 시절인 1984년으로 거슬러 올라가며, 가장 최근에 4년간(2007~2010) 대회가 안 열린 적도 있지만 어쨌든 온라인 상에서 현재까지 유지되고 있는 가장 오래된 프로그래밍 대회로 자리잡고 있다. 가장 최근의 21회차 IOCCC는 2012년 8월~9월 사이에 열렸다.
딱히 어느 코드가 더 창의적으로 이상한가를 정량적으로 나타낼 수는 없는 관계로, 모든 심사는 심사위원들이 코드들을 리뷰해 가면서 순차적으로 덜 이상하거나 창의적이지 않은 코드들을 제거해 가며 이루어진다. 이런 주관성 때문인지는 몰라도 IOCCC에서 수상한다고 딱히 상품이 있는 건 아니다. 그냥 수상해서 웹사이트에 올라가는 걸로 끝이다(…). 하지만 IOCCC에서 수상하는 것 자체가 보통 쉬운 일이 아니기 때문에 일부러라도 이름을 올리기 위해서 참가하는 사람들은 꽤 많다. 전통적으로 참가자 수나 몇 차례 리뷰를 거치는지는 공개하지 않으나1) 매해 수백건을 넘는다는 건 기정사실화된 것 같다. 코드에는 참가자의 설명(이 역시 전통적으로 "힌트" 파일이라고 불려 왔다)이 붙을 수 있으며, 수상자가 발표된 이후에도 코드를 약간 수정하거나 설명을 변경하거나 하는 과정을 거치기 때문에 실제 코드 발표는 좀 더 늦게 이루어진다. 코드는 리뷰 과정에서는 익명으로 리뷰하기 때문에 한 사람이 여러 코드를 내서 모조리 수상하는 것도 가능하다.2)
첫 해, 즉 1984년 수상작은 좀 황당하기는 해도 생각보다 어렵진 않았다. 그러나 시간이 지날수록 사람들의 잉여력은 폭발하여, 시간이 지날수록 말도 안 되는 것들이 수상하는 진풍경이 벌어지고 만다. 이 중 주목할 만한 것들 몇 개를 소개한다. 참고로 IOCCC 수상작은 보통 연도와 파일 이름을 합쳐서 2012/senokay
같은 식으로 부른다. 어라… 어째 눈에 익은 것 같은데
main
함수는 함수가 아니라 VAX/PDP-11에서 동시에 돌아가는 포터블한 기계어 코드를 담은 배열로 구현되었다. 첫 해 출품작이자 규정 변경으로 이런 코드가 더 이상 나올 수 없다는 점에서 IOCCC 심사위원들은 이 코드를 지금까지의 참가작 중에서 최고로 뽑는 것 같다.2011/akari
)가 등장해서 문화 충격을 줬을 정도.sh
)과 텍스트편집기(vi
)까지 약소하게나마 들어 있다.2005/sykes
)가 나오더니 갈 데까지 갔다. 참고로 이 코드의 제작자는 그 이전 해와 같은 해에 체스 관련 코드를 내서 둘 다 입상시킨 전력이 있으며, 2011년에 체스가 아닌 다른 게임으로 또 수상하자 "Best non-chess game"이라는 이름을 부여받았다(2011/toledo
).