пятница, 16 октября 2009 г.

[comp.prog] Небольшой рассказ об опыте применения Scala в реальной жизни

На сайте языка Scala появилась информация о презентации некого Lee Momtahan про опыт использования Scala в Électricité de France Trading. Там же даны ссылки на слайды доклада, и на видеозапись доклада. Желающие могут ознакомиться с этими материалами самостоятельно, для остальных я расскажу вкратце своими словами.

Итак, Lee Momtahan со товарищи занимается разработкой приложения для моделирования методом Монте-Карло различных трейдинговых ситуаций. Оно производит вычисления на гриде из нескольких сотен компьютеров, плюс содержит GUI и специализированный внешний DSL для того, чтобы эксперты могли задавать различные условия моделирования.

Приложение разрабатывается в течении семи лет, командой из шести человек. Объем приложения – более 300K строк. До декабря 2008 года приложение разрабатывалось на Java, но затем команда решила попробовать Scala. И ей это понравилось. В основном за счет компактного синтаксиса, инфиксных операторов, паттерн-матчинга и замыканий. Все это позволяло разработчикам записывать сложные математические конструкции гораздо проще, чем на Java.

Очень важным, по словам Lee Momtahan, фактором является работа на платформе JVM и отличная интероперабельность с уже существующими Java-библиотеками. Он даже подчеркнул, что использование Java библиотек из Scala оказывается гораздо более простым делом, чем использование Java библиотек из Java.

Похоже, что транслятор их собственного DSL написан полностью на Scala, т.к. подчеркивается что с помощью отличной библиотеки комбинаторных парсеров (parser combinator library) в Scala исходный текст парсера был очень похож на BNF-грамматику. Часть транслятора была сделана в чисто функциональном стиле, но при добавлении поддержки макросов использовался императивный стиль (т.к. с его помощью получалось более простое решение).

Скорость работы всего приложения их устраивает. Мол, благодаря библиотеке Colt из CERN, они достигли производительности, сравнимой с C++.

В общем, им понравилось. И они считают Scala вполне пригодным языком для создания приложений, от которых зависят серьезные суммы денег (ну а чего не сказать, они же не самим трейдингом занимаются, а его моделированием – прим.eao197).

Добавлю так же, что по словам докладчика часть людей из проектной команды ранее уже была знакома с функциональным программированием. Сам докладчик сказал, что его производительность на Scala составила порядка 2KLoC за 6 месяцев. И что Scala позволяет писать в несколько раз меньше кода, чем Java.

Теперь пару слов без протокола :) Во-первых, эта история мне понравилась тем, что по-моему внедрение Scala сейчас именно так и должно происходить – был старый Java проект, который изрядно задолбал разработчиков. Захотелось более современного инструмента и пожалуйста – берется Scala. И старый код переиспользуется, и новый удобно писать.

Во-вторых, что-то я в последнее время фигею от производительсности западных программистов. То на SPARK-е за 9 месяцев работы написали 10KLoC, теперь вот здесь 2KLoC за 6 месяцев, а до этого 300KLoC за 7-мь лет вшестером. Я тут с мая месяца уже почти 30KLoC C++ кода наклепал… Может я что-то не так делаю? ;)

Отправить комментарий