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

Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Релизы

Собрали последние обновления популярных и полезных библиотек за пару месяцев:

Tinkoff Scala meetup & open-source

Рубрика для митапов, релизов библиотек и фреймворков, рожденных в недрах scala-комьюнити Тинькофф.

На канале «IT и т. д.» вышел заключительный ролик проекта про особенности Sсala-разработки Scala in Tinkoff. Наши разработчики, лиды и руководители проектов рассказали о деталях работы и жизни Scala-команд: какие задачи решаются, какой стек технологий и библиотек используется, какие особенности встречаются у проектов. Есть инсайты про милые отличительные черточки команд, привычки и забавные кулстори из жизни.
Ролики пятиминутные, динамичные, с прикольной анимацией-рисовкой. Обязательно зацените :) И посмотрите предыдущие ролики, если не сделали этого раньше!

Статьи

В этом разделе делимся свежими статьями, репозиториями и исследованиями, которые нам показались интересными. В отдельный блок вынесли ресурсы, где авторы используют Scala 3. Enjoy:

  • Turning actors inside-out — в статье разбираются особенности акторной модели программирования. Асинхронная по своей природе модель, обработка ошибок с помощью supervisor, сложность дебага и так далее. Стоит ознакомиться, чтобы узнать чуть больше о железе акторов под капотом. А еще в тексте полно ссылочек на другие материалы по акторной модели.

  • In Defence of Mocks — «This is my Mocks. There are many like it, but this one is mine. My Mocks are my best friend. It is my life. I must master it as I must master my life. Without me, my Mocks are useless. Without my Mocks, I am useless. I must test my Mocks true». Возможно, именно так и думал автор ↂ_ↂ

  • Why on earth a ZIO IO monad for Scala? — добротное и грамотное объяснение основ функциональной парадигмы. ZIO присутствует.

  • Why I Find Scala so Amazing — бывший адепт PHP восхищен возможностями функционального строготипизированного языка с эмблемой в виде красного шарфика и его комфортного синтаксиса.

  • concurrent-cancellation-kotlin-vs-scala — Alex Nedelcu написал gist-заметку на тему прерывания IO-вычислений на Scala и Kotlin и почему в JVM 21 это уже не так важно.

  • Fusing Transformations of Strict Scala Collections with Views — разбирается интересная тема .view-метода на коллекциях. Слайды содержательные, много ссылок на книги по Scala. Жаль, что нет записи оригинального доклада, если такой существует.

  • Tagless Final Encoding — еще слайды от автора выше в формате диалога с Gabriel Volpe о tagless final.

  • How to create Durations in Scala — мини-заметка о том, что можно писать 2.minutes вместо Duration(2, TimeUnit.MINUTES).

Видео и доклады

Собрали ссылки как на уже известные и популярные, так и на ноунейм-каналы и видео про Scala.

На канале Scala Days Conferences выложили записи докладов и выступлений с прошедшей конференции Scala Days 2023 в Мадриде. Приглашаем посмотреть, а более подробный ретеллинг отдельных докладов будет от нас в следующем месяце  (⊃。•́‿•̀。)⊃━☆゚.*・。゚

  • M2_TECH Scala Meetup — три рассказа о Scala. Первый доклад — презентация библиотеки calypso, помогающей корректно перегонять сложные модели в BSON и обратно, в частности для хранения в MongoDB. Второй — о Saga-паттерне и Transactional Outbox и их разнице на конкретном примере сервиса бронирования в путешествиях. Заключительный доклад делится подробностями работы с подходом Vertical slice в Scala.

  • Scala Meetup Lisbon Hub 2023 — Part 1 — shift-left-подход в разработке на практике. О том, как реализовать Dual Tests Tactic, заручившись поддержкой distage / distage-testkit.

  • Scala Meetup Lisbon Hub 2023 — Part 2 — 7mind пилят свой build tool с мультимодульными проектами и изолированными билдами. Пока на стадии research, поэтому потыкать нельзя, но интересно послушать о концепциях, на которых базируется проект. Есть небольшая сводка о существующих build tool, поддерживающих сборки на Scala, и чем они не соответствуют хотелкам сегодняшнего дня.

  • Cellular Automata for video games — совсем не про video games. Кусочек теории о клеточных автоматах и о том, куда их можно приложить. В частности, к моделированию реальных процессов. Лайк за расслабляющий тон повествования и капельку самоиронии.

  • Schema management with Scalameta by Lars Albertsson — сложный доклад о Big Data, в котором переплетаются пайплайны инженеров данных с макросами Scala. Слушать тяжеловато, но где мы еще такое увидим.

  • Microservices and gRPC in Scala with FS2 and Scalapb — хорошее введение в grpc через fs2. Компилируем модельки, создаем сервер и клиент. Приятно, что в процессе подсвечиваются неочевидные для новичков моменты.

  • Zymposium — ZIO Q&A — Adam Fraser, недавно назначенный на пост CTO Ziverge, устроил еще одну сессию вопросов и ответов. Помимо прочего объяснил, в чем разница между zio-quill, zio-sql и zio-jdbc.

  • flatmappers 010 — ребята поговорили про K8s, снова вспомнили copilot и прочие ai для написания кода, помянули добрым словом Li Haoyi. Вадим поделился чит-кодами, как стать мейнтейнером Mill.

  • flatmappers 011 — обсудили KIP о двухфазном коммите в Kafka. Вспомнили, где можно почитать новости о жизни Scala (。•̀ᴗ-)✧ Подробно разобрали magnum, о которой мы писали в прошлом выпуске. В следующем выпуске можно услышать, как поет Юра, нужно только оставить ???? ребятам под постом.

Highlights

В этом блоке не всегда свежие, но зацепившие наш взгляд ресурсы под флагом «очумелые ручки». Авторы творят что-то интересное, необычное, но не обязательно полезное:

Tooling

Кусочек дайджеста, где мы рассказываем о появлении новых и улучшении существующих инструментов для разработки:

  • stryker4s — приходил ли вам в голову когда-либо вопрос, сколько unit-тестов сломается, если мы перепишем наш код? Авторы этого проекта делают попытку отследить качество покрытия тестами, вставляя произвольные баги в source-код и прогоняя на модифицированном коде тесты. Хотя бы из интереса потыкаете в их playground.

  • Integration testing the Typelevel toolkit — мейнтейнеры typelevel-toolkit проводят мультиплатформенное тестирование того, как scala-cli обращается с их toolkit. Почитайте, чтобы проникнуться мозговыносящими техниками тестирования, которые не увидишь в обычном enterprise-коде.

  • ifdef macro in Scala — Eugene Yokota имплементировал фичу, позволяющую писать тесты в src/main/. Зачем это надо — вопрос дискуссионный. Сама концепция кода, который понимает, в какой среде запускается, звучит интригующе. Статья из двух частей: в первой реализация через макроаннотации, во второй — через плагин компилятора.

Комьюнити-движ

Раздел курьезных и любопытных событий в мире scala-общества, и мы хотели бы видеть его объемным и живым. Если что-то пропустили или у вас есть предложения — ждем вас в комментариях:

  • The Story of AI Graphics at JetBrains — если вам, как и редакции дайджеста, нравятся заставки продуктов JetBrains, то не пропустите этот лонгрид. Рассматриваются две сетки генерации картин Stable Diffusion и CPPN и рассказывается, как подтюнивали базовый алгоритм для себя. «Приходишь к дизайнерам JetBrains посмотреть, как они лого рисуют, а там нейронки в нарды играют» (с) Карина

  • 2023 Q3 Activity Report — отчет Scala Center за Q3. Подробно и прозрачно. Описаны интересные темы про передачу sbt от Yugene Yokota, sbt-плагин по автомиграции на Scala 3, а еще про попытки сделать процесс контрибьюта в компилятор более понятным.

  • Work-in-Progress Scala 3 Specification — продолжают делать документацию более user-friendly для новичков и не только, а именно допиливают полноценную спецификацию всех фич в Scala 3.

  • Tell us which errors bug you the most — уникальный шанс подсветить, какие ошибки вас бесят в Scala 3.

До встречи через месяц! ♡\( ̄▽ ̄)/♡

Предыдущие выпуски:

Над дайджестом работали @Melkaya_150cm, @Ivoya, @tcarina. Ваши идеи, предложения, обратную связь с удовольствием ждем в комментариях! <( ̄︶ ̄)>

Комментарии (7)


  1. Algrinn
    01.11.2023 11:34
    -2

    Scala пытается делать вид, что она жива. :^). Язык не быстрый. Если сравнивать с C/C++, Rust. Язык не читабельный. Если сравнивать с Java/C#/Python/Kotlin. Kotlin лучше пиарьте и продвигайте, чем этот хлам. Это хотя бы наполовину российская разработка и её взял на вооружение Google.

    P.S. Это не относится к Kafka. Да, на Scala можно написать хороший продукт. И на Erlang-e тоже можно написать хороший продукт. WhatsApp подтверждает. Да, акторы могут быть силой. Но тем не менее и Erlang-y и Elixir-y и Scala им всем не место в топ 20 языков мира и пора на покой.


    1. Ivoya Автор
      01.11.2023 11:34
      +2

      Вижу откровенно холиварный наброс. Отвечу в общих чертах и продолжать не буду.

      Каждому языку своя ниша. Текущая ниша Scala (без учета Spark) - приложения с повышенными требованиями к надежности. Мощная система типов и отлов ошибок на compile time этому способствуют. Сюда же идет сложившиеся подход программирования без null-ов (Option-ы вместо них) и фунциональная парадигма с иммутабельными данными и referential transparency. Оба этих качества отлично себя показывают в многопоточной среде.

      Также прогретая JVM c JIT вполне может сравниться с компилируемыми AOT-языками. А акторная модель уже лет 5 как отступила и сейчас последнее слово за IO-монадой и системами эффектов (zio, cats-effect).


      1. mike_aksarin
        01.11.2023 11:34
        +1

        Очень давно задумываюсь, какая ниша сейчас у скалы. И даже больше, какая киллерфича могла бы ей помочь с популярностью. (Без спарка)

        Мне еще нравится стремление Мартина как можно сильнее упростить скалу для входа и прикладного программиста, чтобы получилось не сложнее питона

        (Рад, что наконец под вашими прекрасными дайджестами стало появляться хоть какое-то их обсуждение)


        1. Algrinn
          01.11.2023 11:34
          -1

          У монады-хламидомонады есть своя ниша, если она сумеет придумать по-настоящему что-то полезное, то корпорация Oracle добавит это в новые версии языка Java, корпорация Microsoft добавит в C#, а Google с JetBrains добавят в Kotlin. О фиче, у неё есть своя киллер-фича - Play Framework. :^). Для популяризации желательно поучаствовать им в гонках - Web Framework Benchmark-e. Ну и наконец, песня про монаду-хламидомонаду от нейросети ChatGPT:

          Песня о монаде

          В мире монад, волшебство творится, Хламидомонада вечно цветет. Символ высший, где жизни сюжеты, Сквозь таинство, она светит.

          Монада, души глубокий отраженье, В мире истины, ты свой путь нашел. Хламидомонада, пусть будешь с нами, Вечный символ, в сердце своем хранишь.

          От мгновенья к мгновенью, мир меняется, Но монада вечна, как звезды в небесах. Хламидомонада, в душе нашей живешь, Свети навсегда, вечно ты с нами.

          Тайны мира в монаде засекречены, В её хламиде, вечной тайне тысячи вопросов. Хламидомонада, в мире монад сверкаешь, Твоя сущность, как песня, нам снова и снова.

          В мире монад, где суть истины скрыта, Мы ищем ответы, как звезды на небе высоко. Монада, хламидомонада, вечно с тобой, В мире монад, ты наш светлый проводник света.


        1. Ivoya Автор
          01.11.2023 11:34

          Спасибо, ценим!

          Недавно на F[Scala] как раз Вадим Челышов выступал с обзором того, что сейчас творится в экосистеме. Буквально доклад называется "Шансы на мэйнстрим". Если возможности посетить не представилось - спойлерить не буду, но лично мне понравилась позиция Вадима. Как раз затрагивалась тема про "скалу не сложнее питона" и проект Caprese, которым сейчас Мартин занимается


        1. Dgolubetd
          01.11.2023 11:34

          Скале не нужна киллерфича. Достаточно чтобы:

          1. Мартин больше ее не ломал (как макросы в Scala 3.. ещё было бы неплохо оживить Scalamock..)

          2. ZIO и Cats Effect должны сыграть в русскую рулетку. При всём моем уважении к обоим библиотекам, но 2 экосистемы - это не очень хорошо ( даже несмотря на то что Cats либы используют Tagless Final - их всё равно не так удобно использовать с ZIO, а в обратку ещё хуже).

          В остальном, Scala остается самым выразительным языком, из статически типизированных по крайней мере. Rust, конечно тоже хорош, ттх на выходе - блестящие. Kotlin+Arrow ещё допустим (не пробовал, но по докам выглядит удобоваримо). Но не могу себе представить, как в 2023 на Java писать. А от Python начинается нервный тик..

          Я думаю сейчас Scala 3 устаканится и пойдет очень медленный рост обратно к популярности года этак 2015. Но это все-равно нишево будет, относительно той же Java. С другой стороны нам же лучше: писать приятно, а платят больше.


    1. programmerjava
      01.11.2023 11:34

      Простите. Не могу удержаться. Окончите первый курс университета, пожалуйста, а потом учите других