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

в 11:03, , рубрики: java, scala, scalaconf, Блог компании Конференции Олега Бунина (Онтико), интервью, конференции, функциональное программирование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

— Приятно?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: dos65

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js