September 27th, 2010

Using Functional Programming within an Industrial Product Group

Using Functional Programming within an Industrial Product Group: Perspectives and Perceptions


David Scott et al., 2010

http://www.google.com/search?q=Using+Functional+Programming+within+an+Industrial+Product+Group:+Perspectives+and+Perceptions

Товарищи из Citrix анализируют использование OCaml для управления гипервизором Xen в продукте Citrix. Говорят о том, что Citrix купил компанию XenSource, в которой уже использовался OCaml. Но при разработке в XenSource были высказаны следующие потенциальные проблемы с OCaml:
  • Сложно будет нанять сотрудников;
  • Сложно будет продаться, так как вместо мейнстрима технология базируется на FP;
  • Другие команды, которые не работают с OCaml, не смогут работать с частью проекта, которая планировалась быть разработанной на OCaml;
  • OCaml мог оказаться недостаточно индустриально-продвинутым, чтобы поддержать разработку сложной системы.

В процессе работы никакие из этих рисков не материализовались. Команда наняла ещё 12 сотрудников на OCaml с удивительной лёгкостью (причём, только 2 из этих 12 знали OCaml до этого); компания продалась Citrix за 500 миллионов долларов (причём, Citrix'у было известно о том, что они применяют OCaml, из due dilligence); метрики проекта показали, что параллельные команды, не работающие напрямую с подпроектом на OCaml, делали исправления и модификации в окамловом коде.

Точно так же, как Jane Street Capital (перевод: http://lionet.livejournal.com/37311.html), XenSource практически не использовала объектную систему OCaml'а. Им оказалось достаточно использовать модули, функторы (над модулями) и полиморфные варианты.

Среди проблем разработки на окамле замечают проблемы с generic pretty-printing'ом и отсутствием широкого набора библиотек для распространённых задач. Ещё с SSL имели проблемы.

Код MTT Citrix доступен в открытых исходниках: http://xenbits.xen.org/XCP/

[...] engineers believe that OCaml has enabled them to be more productive than they would have been had they adopted one of the mainstream languages that would have met the requirements of the project (e.g. C++ or Python).