Хабрахабр

По следам русского Scala-движа. Часть 1

Эта серия интервью приурочена к ScalaConf — к первой настоящей конференции в России, полностью посвященной Scala, которая пройдет 26 ноября. Перед этим событием я взял интервью у 6 свидетелей и «апостолов» зарождения движения Scala в России. Здесь не будет обсуждения Free, Tagless Final, Monix, IO или ZIO, и «попинывания» Future. Моя цель — обсудить Scala в историческом контексте. Я записал все бородатые байки, сгонял в прошлое на 10 лет назад и собрал неактуальные, но интересные истории о языке.

Я собирался найти тех, кто когда-либо организовывал митапы в России, собрать у них информацию о всем важном и интересном, отсортировать и расставить по годам. Серия задумывалась в формате «Намедни» Парфенова — события, люди, явления. Но, интервью получились не такими как я ожидал и резать их в формате «Намедни» рука не поднялась. Каждое интервью начинал с того, что просил максимально точно установить год повествования. Как все было, в какой очередности, как выходил на людей, и что я о них знал до интервью. Поэтому серия будет рассказывать истории в формате личного расследования. Под катом — допросы и протоколы, первые проекты на Scala, первые митапы и зарождение движения.

Чего ожидать от расследования?

Много историй лично-технологического формата, которые как-либо связаны со Scala. Большая часть из них касается 2011-2015 годов, но хоть и на чуть-чуть все-таки удалось вернуть чей-то 2007 2008. Первые проекты и причины выбора языка. Про неудачные проекты тоже есть! Библиотеки, экосистема, IDE, первые митапы в Москве и Питере и вот это вот все. В общем — много всего, даже без Kotlin не обошлось.

Для формирования более целостных ожиданий, далее список людей с которыми удалось пообщаться: Роман Гребенников, Роман Тимушев, Александр Подхалюзин, Владимир Успенский, Роман Елизаров, Алексей Фомкин и Николай Татаринов.

Сегодня расскажу, о чем говорили с Романом Гребенниковым и Романом Тимушевым.

Роман Гребенников — 2011. Воронежский бомонд и C++ vs Erlang vs Scala

Итак, первым подозреваемым, к кому я пошел, был Роман. Я не очень много знал о нем, но все улики указывали на то, что в теме Scala он крутится достаточно давно. Когда ходить на Java-конференции для меня было еще не совсем уж скучно, я был на его докладе. В нем одновременно фигурировали и Scala, и Clojure, но с достаточной осторожностью, чтобы не шокировать аудиторию. Еще я натыкался на слайды cо слоупоками с доклада «Scala performance для сомневающихся». Доклад, наверное, до сих пор единственный на русском языке касается этой крутой perfomance-темы.

Примерно описав концепт статьи, я зашел к Роману, чтобы он рассказал за старый Scala-движ.

У нас в Воронеже в 2014 был чатик со всем бомондом — 4 человека на весь город, кто умел в Scala. Роман Гребенников: Если честно, я никогда не пытался следить за Scala-движухой именно в России, ибо она была чересчур маленькой, по сравнению с иностранной. Что было в Москве и в других городах, я даже без понятия 🙂

По классике жанра, в интервью я должен спросить о первых проектах и знакомстве с языком. — Информативно.

Стартап занимался кредитным скорингом на основе публичных данных из соцсетей. Роман Гребенников: Где-то в 2011 я с друзьями пилил стартап, который, на удивление, жив и прибылен до сих пор. До этого я писал диссер с кодом на С++ и параллельно работал в небольшом хедж-фонде — делал всякие стратегии и алготрейдинг на голом С++. Неудивительно, но первый прототип системы сбора данных тоже был написан на С++.

В один прекрасный момент отладки 20 ГБ coredump’а, после очередного падения нашего веб-паука, в голову закралась идея выбрать инструмент, более подходящий под нашу задачу, и не пинать уже мертвую лошадь. Тогда выяснилось, что С++ не идеальный язык для задач с асинхронщиной и распределенщиной. Написали на коленке три прототипа, чтобы заранее набить максимальное число шишек. Мы рассмотрели трех кандидатов на замену: Erlang, Java и Scala.

На каждый чих надо велосипедить новую библиотеку для базовых вещей, которые почти везде есть из коробки. В Erlang не понравилась очень маленькая стандартная библиотека и экосистема вокруг. В Java 2011 года разлива не понравилось гигантское количество бойлерплейта, который надо писать для асинхронных приложений. Проблемы с производительностью тоже мешали жить. Тогда уже вышла Akka 2. А вот в Scala, кроме непонятных монад и инопланетного scalaz, в целом устроило всё. Удивительно, но куски того кода работают по сей день, хотя в 2019 я бы не стал хвалиться качеством того кода. 0, на которой мы всё и переписали.

Ради фана мы иногда устраивали небольшие митапы и рассказывали друг другу всякие странные вещи. В районе тех лет я не был единственным, кто в Воронеже писал на Scala. Тогда же был небольшой чатик в скайпе для обсуждения насущных вопросов и набрасывания на вентилятор. Митапы были открытые, и на них обычно приходила куча джавистов, которые кряхтели и охали при виде какого-нибудь ада типа parser combinators. Сейчас он совсем издох, потому что в Telegram есть @scala_ru.

Роман Тимушев — 2012. Первая Akka, sbt-updates, и рождение московских митапов.

Я ни разу не был на московских Scala-митапах, но слышал о них по чатам и подкастам. Активность около них проявлял только один человек — Алексей Фомкин. Поэтому я даже не задумывался, что кто-то еще мог их проводить. Только случайно я выяснил, что были еще люди, когда искал информацию о первом митапе и листал страницу на meetup.com. Один из них — Роман Тимушев, автор sbt-updates.

Я из Нижнего Новгорода, жил в Москве, сейчас переехал в Мюнхен. Роман Тимушев: Давай по порядку. 9 и только первая Akka. В Scala зашёл в 2012 году, когда ещё существовала версия 2. Работал в компании Grid Dynamics, где мы занимались распределенными системами, кэшами, в основном на JVM.

Это стартап внутри компании по управлению распределенными системами, деплойменту, обновлению — для всего, что сейчас называется DevOps. Возникла идея создать новый продукт. NET, Python. Люди собрались с совершенно разным бэкграундом: JVM, .

Попробовали Python, Scala и какой-то третий язык. И вот мы сидели, думали, на чём писать новый продукт. Поэтому решили писать на нем и так я попал в Scala. Разработали прототипы, и Scala понравился больше, особенно после Java, — статическая типизация, все дела.

Большой части экосистемы не было, которая есть сейчас. В 2012 в Scala было всё сложно с библиотеками. Был Twitter-стек, но он был обособленный, со своими особенностями.

— Кажется, он до сих пор таким и остался.

Потом были всякие библиотеки для HTTP: unfiltered, spray, scalaz. Роман Тимушев: В то время там было всё полностью своё, а сейчас они как-то пытаются унифицировать больше частей с остальной экосистемой. Вот в комьюнити всё было хорошо. Никаких cats не было и в помине.

— Никто не ругался?

Мы посмотрели и подумали, что Akka хорошо ложится на нашу будущую систему. Роман Тимушев: Может быть, и ругались, но это не вылезало на поверхность.
Тогда была тогда еще только первая Akka и Play. Вроде клево, никаких локов, всё будет быстро, надежно, давайте писать на Akka и выбрали Play.

До сих пор помню Future из первой Akka, когда в них был жестко зашит таймаут. Какое-то время помучились с первой Akka — было больно. Любой комбинатор, который ты вызываешь, создает новый future с этим таймаутом. По умолчанию таймаут длился 5 секунд. Это было больно, мы долго боролись, но потом мы запустили вторую Akka, в Scala появились future и жить стало легче. Если хочется сделать что-то, что занимает больше 5 секунд, то всё — финита ля комедия.

Тогда akka-cluster не было? — У вас была распределенка?

Но когда он появился, мы его затянули и огребли проблем со всякого рода split-brain. Роман Тимушев: Мне кажется, когда мы начинали, кластера ещё не было. Написали свой split-brain-resolver, который как-то резолвил через нашу базу.

Кажется, что тогда по умолчанию Eclipse был официальной Scala IDE. В те времена многие еще пользовались Eclipse. Несмотря на это, продукт вышел успешный. Мы разрабатывали свой проект и поймали все возможные ошибки новичков, которые первый раз увидели Akka, Scala и вот это вот всё. От Scala остались только положительные впечатления.

— На Eclipse было вообще норм писать?

Роман Тимушев: Как-то да, нормально было.

— Там же свой плагин был?

Я не помню, как тогда работал IDEA-плагин, но не уверен, что он был лучше. Роман Тимушев: Да был официальный плагин, который хорошо работал. Eclipse всегда был какой-то странный: то ли живой, то ли не очень.

Приходилось работать с Maven, Gradle. До того, как я перешел на Scala, я в основном писал на Java. Для Scala подобного не было, поэтому пришлось написать свой и пользоваться им. Везде были плагины, чтобы обновлять зависимости или хотя бы смотреть. Он до сих пор жив, люди им пользуются — все довольны.

Он показывает обновления зависимостей. Sbt-updates можно использовать как отдельный плагин. Под капотом у него тот самый плагин, который я когда-то написал. Сейчас Франк Томас активно продвигает scala-steward. Конечно, кроме этого плагина там ещё много магии по поводу того, как в зоопарке файлов обновлять зависимости.

С другой — когда прихожу в компанию, а тут уже на GitHub зависимость на мой проект, это как-то забавно. С одной стороны, я не понимаю, как люди могут без него жить.

— Приятно?

Sbt-updates надо настраивать локально, так же как и dependency graph и т.д. Роман Тимушев: Да, и кстати, его не надо добавлять в проекты.

— А что тогда было с движухой?

В компании, где я работал, были распространены командировки в США. Роман Тимушев: Движухи сначала было мало, по крайней мере, в России. Несколько раз в неделю обязательно проходил какой-нибудь Scala-митап. И вот там, в Долине, было много движухи: мероприятия, митапы, конференции и всё на свете. Я подумал как это исправить, и завел страничку на meetup.com для Scala Moscow. Приезжаешь туда, там постоянно что-то происходит, возвращаешься — пусто.

Первые митапы организовывал Влад. Примерно в то же время или даже раньше, Влад Успенский создал в Facebook группу о Scala в Москве. Судя по фото, там было человек 25. Как-то они прошли мимо всего сообщества и на meetup появились постфактум.

Зарегистрировалось 50 человек, были какие-то интересные доклады. А потом был следующий, уже настоящий митап в офисе Тинькофф, который тоже организовывал Влад.

Я не помню, почему НИИ «Восход» делал что-то на Scala, но они были заинтересованы в развитии сообщества и организовывали митапы. Позже, благодаря Мише, появилась вторая площадка — НИИ «Восход».

В Facebook или был какой-то чатик? — А где проходило все общение?

Периодически там постили информацию о митапах, шли небольшие обсуждения. Роман Тимушев: Да, была группа в Facebook. но не очень активная. Telegram еще не было. Еще была группа в Skype — там постоянно были какие-то холивары.

Потом Влад уехал в США, я в Германию, и всё почти загнулось. Встречи были не очень регулярными — у всех работа, командировки, дела. Поэтому я очень рад, что сейчас появляется новая движуха, что вы организуете конференцию по Scala.

— Как тебе в Германии?

Проекты мы тоже пишем на Scala. Роман Тимушев: Я в Мюнхене, здесь хорошо и довольно много Scala. У меня есть pet-project на Haskell, но на работе в основном Scala.

Не собираешься ли ты по хаскалатору добираться до конца? — Ты почти 10 лет пишешь на Scala.

Довольно долго я обходил Haskell стороной, но сейчас он мне нравится как язык. Роман Тимушев: Одно другому не мешает. Но в Scala тоже есть то, что в Haskell делать сложнее. В нем есть какие-то вещи, которых мне начинает не хватать в Scala. Это хорошо, когда есть выбор, и каждый находит то, что лучше подходит для его бизнеса.

Как ты смотришь на Scala 3, опасаешься? — Получается, ты до сих пор удовлетворен языком?

Когда я пришёл в Scala, меня очень впечатлило то, как очень небольшим количеством концепций удалось сделать столько разных крутых фич. Роман Тимушев: У меня смешанные чувства. Мне казалось, что это круто, и жаль, что в третьей Scala это уходит. Мне казалось, что Scala хороший пример, как тремя базовыми концепциями возможно реализовать почти всё многообразие: type-классы, extension-методы.

Возможно, появится больше единообразия написания на Scala, и это тоже плюс. С практической стороны, будет проще обучать людей, входить в язык тоже будет легче. Уверен, что разработчики Scala думали об этом и выдали это не просто так. Поживем — увидим.

В Тинькофф тогда уже была скалка или еще нет? — Еще хотел спросить.

Не могу сказать за весь Тинькофф, но разработчиков, которые пишут на Scala, было довольно много. Роман Тимушев: В Тинькове уже тогда была Scala. Поговори об этом с Владом — он сможет рассказать куда больше, поскольку он там работал.

Детективная история на этом не закончилась. Это первая часть «расследования» о русском Scala-движении. Следите за публикациями, чтобы ничего не пропустить. В следующей серии: знакомство с Владом и новый неожиданный подозреваемый, интервью с которым будет на всю следующую статью.

До дедлайна подачи — 29 дней. Если хотите добавить новые грани в историю Scala-движения или поделиться опытом использования — подавайте доклады. До следующего дедлайна повышения цен 6 дней — бронируйте билеты.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть