從 2006 年開始,每次的 International Conference on Functional Programming (ICFP) 回顧十年前發表的論文,看看哪篇最經得起歲月的考驗,在十年中發揮了最大的影響力。ICFP 2010 剛在上個月底落幕,而這是 ICFP 2000 的論文列表。如果您是評審,會頒獎給誰呢?
2010 年 ICFP 議程委員的選擇是…
Koen Claessen 和 John Hughes 的 Quickcheck: a lightweight tool for random testing of Haskell programs!
本文提出了一套相當簡單但有力的 Haskell 程式測試系統,為 Haskell 程式實務上的除錯帶來了重大的衝擊。本文描述了一個利用 type classes 和單子 (monads) 自動產生亂數測試資料的聰明技巧。此後 QuickCheck 成了極受歡迎、廣被程式員使用的 Haskell 函式庫,也被許多大學 Haskell 課程採用。本文描述的技巧引發了整套關於測試條件產生的後續研究,也被移植到其他語言上,包括為 Erlang 和 C 製作的商業版本。
— Most Influential ICFP Paper Award.
John Hughes 在代表致詞時說,當時他正在忙另一個「很重要、很重要,可是我現在已經記不得了」的計畫。稍作歇息之時,Koen Claessen 提到了這個用 type class 產生測試資料的點子。他們覺得可用閒暇時間做做看。結果 QuickCheck 成了使用率最高的 Haskell 函式庫之一,不僅徹底改變了 Haskell 程式員的工作模式,還出了 Erlang 和 C 的版本。
「以一篇被 ESOP reject 的論文來說,還算不錯吧?」
ICFP 最具影響力論文獎自 2006 年起的歷屆得獎名單:
- 1996: Optimality and inefficiency: what isn’t a cost model of the lambda calculus? Julia L. Lawall and Harry G. Mairson.
- 1997: Functional Reactive Animation, Conal Elliott and Paul Hudak.
- 1998: Cayenne — a language with dependent types, Lennart Augustsson.
- 1999: Haskell and XML: Generic combinators or type-based translation? Malcolm Wallace and Colin Runciman.
什么,这篇paper还被ESOP拒了?
Paper 會不會上也是有運氣成份的囉。如果是在競爭激烈,採用 champion 制度的會議中,剛好那三個評審對你的 paper 都沒什麼興趣,這篇 paper 就連被討論的機會都沒有了。這時候只能說是沒緣份吧。(我是不知道當時 ESOP 用什麼制度啦。)
有一說是 conference 比較會跟著流行走,作熱門話題就比較吃香;journal 審稿則較嚴謹。但這種事也沒有一定的。Robin Milner 今年三月逝世,ICFP 也請 Mike Gordon 給了一個紀念他的演講。Gordon 整理文獻時發現 An algebraic definition of simulation between programs 這篇 paper 的稿子上方手寫著「投稿給 JACM, 1971 年九月」。不過這篇論文一直都是技術報告(後來才有了 conference 版)。難道 JACM 把它退件了嗎?這篇 paper 裡 Milner 提出了 “simulation” 的觀念,後來演變成現在的 simulation 和 bisimulation.
Gordon 寫信給 JACM, 確認這篇論文確實沒在 JACM 出版過。然後 Gordon 寫信給 JACM 當時的編輯,三個都說什麼都不記得了….