이 컨테스트는 함수형 언어 국제 컨퍼런스(International Conference On Functional Programming)의 부속행사로 며칠에 걸쳐 진행되며 문제는 하나만 주어지지만 대회 진행 중 요구사항이 추가 변경되기도 하는 등 상당한 난이도로 이름이 높습니다.
사실 이 대회는 함수형 언어 주창자들이 자기네 언어의 우수성을 자랑하기 위해 만든 경진대회입니다. 자기들 입으로 "함수형 언어가 최고요!"하고 외쳤다가는 별 신빙성이 없을까봐 대회를 만들었습니다. 각종 언어들 중 함수형 언어가 두각을 나타낼 것이다 하고 기대하는 것이죠. 때문에, 이름에 함수형이라고 붙기는 하지만 참가시 사용언어에 제약이 없습니다. 물론 학생들만 참가할 수 있는 것도 아니며 자격제한이 없습니다 -- 예를 들어 컴퓨터계의 노벨상이라는 튜링상을 수상한 영웅도 이 대회에 참가하기도 했습니다.
총 4개의 상이 주어지는데, 1, 2, 3등과 심사위원상이 그것입니다. 시상식 때에 주최측은 각 수상팀에 대해 어떤 공표를 하도록 되어 있습니다.
- 1등 : The judges are happy to proclaim that ______ is the programming tool of choice for discriminating hackers.
- 2등 : The judges are happy to proclaim that ______ is a fine programming tool for many applications.
- 3등 : The judges are happy to proclaim that ______ is also not too shabby.
- 심사위원상 : The judges are happy to proclaim that the ______ are an extremely cool bunch of hackers.
1,2,3 등은 밑줄 위치에 그 팀이 사용한 프로그래밍 언어가 들어가고, 심사위원상은 그 팀의 이름이 들어갑니다.
주최측의 기대는 앞서 말했다시피, 당연코 함수형 언어가 1,2,3 등을 장악해서, 자랑스럽게 (예컨대) "Haskell이 뛰어난 해커를 위한 최고의 프로그래밍 도구이다"라고 말하는 것이죠 -- Haskell은 함수형 언어의 일종입니다. 예상대로, 1998년부터 매년 이 대회 시상식에서는 함수형 언어의 이름이 불려진 경우가 많았습니다. 하지만 2003년은 심사위원들이 자존심을 구기고 C++(함수형 언어라고 하기는 어렵습니다)이 최고라는 발표를 하기도 했죠.
어쨋거나 함수형 언어가 수상을 많이 했다는 사실에는 변함이 없습니다. 이런 사실 때문에 타 언어 사용자들이 작정하고 도전하는 경우도 많습니다. 우리 XXX언어가 뛰어나다는 사실을 널리 알리고 싶다, 이거죠. 해당 언어 창안자가 직접 참가하는 경우도 있는데(예를 들어 Erlang의 창안자가 참가한 적도 있음) 사실 이게 쉬운 결정이 아닙니다. 참가했다가 아무 상도 못타면 국제적으로 언어 망신 시키는 일이니까요(혹은 지리한 변명을 해야겠죠).
쉽게 지나칠 수 없는 것은 왜 이제껏 역대 대회에서 함수형 언어 사용팀이 고득점을 했는가 하는 것입니다(역대 수상 언어, 분석). 심사위원이 편애했다? 점수는 컴퓨터가 매기기 때문에 불가능합니다. 문제가 함수형 언어에 적합한 문제다? 그럴 수는 있겠습니다. 문제가 일반적인 비즈니스 애플리케이션은 아니며, 알고리즘 중심적이고 복잡합니다. 그렇다면 역으로, 함수형 언어는 복잡하고 어려운 문제를 푸는 데에 도움이 된다는 말을 할 수도 있을까요? 왜 함수형 언어가 이 대회에서 수상을 많이 했는지는 중요하고 탐구해볼만한 질문입니다.
개발자들은 올해는 무슨 언어가 수상을 했을까 하고 결과 발표를 무척 기다립니다 -- 혹시나 내가 쓰고 있는 언어가 수상하진 않을까 기대하기도 하고요. 발표가 되고 나면 또 한바탕 이야기가 오고갑니다. 역시 이 언어가 최고야 어쩌구 저쩌구. 언어 논쟁만큼 개발자들이 하기 좋아하는 논쟁이 없는데, 그 논쟁에서 우위를 차지할 말을 할 수 있기 때문입니다. "너희 언어는 ICFP 프로그래밍 대회에서 상 타봤어?"
올해 ICFP 2006 결과가 나왔습니다. 시상식도 했지만 아직 웹페이지에 공식발표되진 않았습니다. 다음은 시상식 동영상입니다.