Пока оно компилируется - Крис Маршалл

«Пока оно компилируется» - это новый цикл интервью с экспертами и практиками широкого спектра современных технологий, эксклюзивно для Skills Matter. Перевод подготовлен по материалам блога Skills Matter, где публикуются все интервью из цикла.

Сегодня, мы встретились с Крисом Маршаллом, одним из 22 лидеров рейтинга StackOverflow. Он занимается коммерческим программированием на протяжении 14 лет, немного на FORTRAN и Smalltalk, затем на Java (с 1999 года) и на Scala (с конца 2008 года) после того, как его терпение окончательно лопнуло. С более чем 12-летним опытом работы с финансовыми IT, у него была работа его мечты в GSA, маленьком технологически-ориентированном хедже начиная с 2006, которой предшествовало 6 лет работы в JPMorgan созданном для букмекерского бизнеса.

В свободное время он разгадывает “Суть шаблона Итератор”, с которым он сталкивался 500 раз.

1. Что привлекает Вас в функциональных языках в первую очередь?

Изначально я был привлечен Scala, как “улучшенной Java” (перед добавлением лямбд, когда включение замыканий в Java, казалось недостижимым). Имея большое количество библиотек на Java, Scala выработала ряд ключевых требований, а именно безшовную интеграцию с Java (которая, насколько я понимаю, вылилась в палку с двумя концами, и соглашаюсь с мнением Брайна МакКенны, что Java должна быть скрыта за внешними функциональными интерфейсами, но что-то я увлекся). Она выглядела “знакомой” (т.е. она не была похожа на Clojure), и имела свою “родословную” (Мартин и EPFL).
Начало использования Scala поставило меня на путь открытий типов данных и открыло для меня сообщество, которое показало мне новый (я бы сказал, лучший) способ ведений дел.

2. Над чем вы сейчас работаете?

В данное время, я не могу уделять много времени разработке, мы имеем большую команду разработчиков - но моим главным проектом в этом году будет битемпоральное API представляющее “бизнес объекты” в рамках GSA (торговые книги, бизнес-единицы, фонды и т.д.). Мы обнаружили, за последние несколько лет, что не иметь его это очень больно. Помимо этого, есть много усовершенствований для нашей существующей кодовой базы, которые исчисляются тысячами.

3. Вы работаете только с функциональными языками, или же в вашем проекте имеется некоторый ООП/Процедурный код? Если да, то как они уживаются вместе?

Нет - у нас есть много систем на Java, как унаследованных так и нет. Я до сих пор осторожно предоставляю Scala API для внешних команд (потому, что множество наших API нацелены на не специалистов, которые работают в таких языках как Matlab, поэтому ошибки с бинарной совместимостью могут привести к недовольству), поэтому, если бы мы нуждались в чем-то из этого, я бы, наверное предпочел Java.
Я тоже пишу чисто функциональный код - множество наших систем работают в режиме реального времени, или 24x5, так что, я могу написать маленькие участки функционального кода, которые в конечном итоге будут запущены на не-функциональных системах (например, на основе акторов).

4. Какой бы совет вы могли дать новым программистам?

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

5. О чем бы вы хотели спросить сообщество?

Может кто-то пожалуйста продемонстрировать код функциональной системы на Scala работающей в “реальном времени”? Под “реальным временем” я подразумеваю постоянно запущенную и обрабатывающую данные, в отличие от единственного вычисления с определенным концом и результатом.

Оригинал