プログラム http://www.cs.ucsd.edu/popl/08/program.html



招待講演その3

話者：Cornellの分散コンピューティングLab出身。ポスドクのときのpart time jobからfull timeになった。

Jane Street Capital (proprietary trading company)でのOCaml利用事例。社員150人、うちOCamlプログラマ20人。OCamlは「窓際」ではなく中心。取り引きシステムからGUIまで、ほとんどのプログラムをOCamlで開発している。

技術的要求

Correctness: 金額がでかい:-)ので重要 C#で書いてみたらコードが冗長になってプログラム理解の妨げ 動的機能もプログラム理解の障害 (!)。例：オブジェクトのメソッド呼び出しが、実際にどのコードを呼び出すのかローカルに特定できない

Agility: 変化（特に、新しいideaや新興市場）への対応が中心なので重要 十数年前(?)の株価暴落のとき、NASDAQの売買インターフェースが「人」で電話に出ないので取り引きが麻痺した

Performance: 開発でも運用でも 速度が重要 単純な最適化で十分な性能（予測可能性が重要） JavaのHotSpotの性能挙動は予測困難 OCamlのGC速い(fast minor GC, incremental major GC, etc.) 負荷が低いときにGCする FFI（他言語ライブラリとのインターフェース）も悪くない JavaやC#よりマシ!



OCamlの改善可能性

Usability (Cf. Python) 言語自体は遥かに良いが

ライブラリ(Cf. Java)

"We're hiring"

Javaで募集すると有象無象が来るが、OCamlで募集してもsmart peopleしか来ない:-)

"These languages are not academic toys"

"Functional languages give real values to people and companies"

[Q] Who can make decision to go to OCaml? [A] "It was sort of my fault.":-) Management cares correctness.

[Q] Hiring functional programmers (other than OCaml)? [A] We are hiring smart people.:-) Functional programmers are smart in general.

[Q] Any feature of OCaml you avoid? [A] Objects.:-) We use almost no objects. "Hard relationship" with polymorphic variants (sometimes great, but subtyping hard). Also, be aware of cost of higher-order functions and functors (cf. MLton).

[Q] Missing feature of OCaml? [A] Generic programming e.g. printing values (cf. Haskell's "deriving")

[Q] What was the worst mistake losing dollars? [A] Nothing big; "loop that sold something at near 0 dollar many times"

[Q] legacy codeからの当初移行？ [A] わりとスムーズ（3ヶ月）。ExcelやVBなどから、ちょっとずつ移植。

[Q] 3rd partyライブラリやコンパイラのバグ? [A] コアな部分には3rd partyライブラリはない。コンパイラのバグは問題になったことはない。

[Q] External tool to verify correctness? [A] 考えたが使ったことはない。