Как стать автором
Обновить
582.82
OTUS
Цифровые навыки от ведущих экспертов

Мартин Одерски и Ли Хаои: Эволюция Scala

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров989
Автор оригинала: Martin Odersky и Haoyi Li

Дискуссии о будущем языка Scala не утихают. Как быстро он должен развиваться? Что необходимо улучшить? Должен ли он вообще претерпеть какие‑либо изменения? В этой статье мы обсудим, как Scala должен эволюционировать в дальнейшем, почему эта эволюция необходима и в каких направлениях мы ее ожидаем в первую очередь. Мы надеемся, что сможем ответить на многие часто задаваемые вопросы о будущем языка и поможем сообществу понять, в каком направлении будет развиваться Scala в ближайшие месяцы и годы.

Аннотация

Хотя сегодня Scala уже не вызывает такой же ажиотаж, как в середине 2010-х, согласно большинству опросов, он удерживает свою позицию в списке наиболее популярных языков. С технической точки зрения, базовый язык и экосистема Scala значительно улучшились за последнее десятилетие. Во многих отношениях Scala сегодня имеет куда более крепкий фундамент, чем 10 лет назад.

В свое время Scala был пионером в мире программирования. В обмен на чуть большую шероховатость и меньшую стабильность по сравнению с популярными языками, программисты получали языковые возможности грядущего десятилетия, за что и выбирали Scala. Ценность Scala всегда заключалась в уникальном сочетании безопасности и удобства, которые обеспечиваются возможностями этого языка. Кроме того, он объединяет идеи объектно‑ориентированного и функционального программирования, что позволяет элегантно использовать эти возможности.

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

Как обстоят дела сегодня?

Хоть шумиха и утихла, с точки зрения популярности Scala остается примерно на том же уровне, что и раньше: не совсем в мейнстриме, но он на порядок популярнее многих других нишевых языков. Например, в языковом рейтинге RedMonk Scala занимал 14-м месте в 2014 году и все еще на 14-м месте 10 лет спустя, в 2024 году. За эти годы ландшафт программирования значительно изменился: Swift заменил Objective C, появились Go и Kotlin, Dart и Rust, а CoffeeScript и Perl утратили свою популярность. Языки приходят и уходят, но Scala, похоже, крепко держится на плаву благодаря большому сообществу энтузиастов.

С технической точки зрения, сегодня Scala стоит на более прочном фундаменте, чем 10 лет назад. Экосистема языка стала более зрелой, а различные вариации реактивных и чисто функциональных стилей программирования нашли свою аудиторию. Теперь также доступны альтернативные стили, такие как Scala Toolkit и платформа com.lihaoyi. Появились новые инструменты сборки — Scala‑CLI и Mill, также широко используются инструменты разработки, такие как Scalafmt и Scalafix. IDE все еще остаются проблемой, но мы ожидаем, что в течение 2025 года ситуация станет значительно лучше. К счастью, интенсивное использование символьных операторов, которое было распространено ранее, постепенно выходит из моды.

Scala всегда был передовым языком, доказывая жизнеспособность таких языковых функций, как лямбды, записи и паттерн‑матчинг, которые были включены в Java, Python и другие популярные языки только спустя 10–15 лет. И нам еще предстоит увидеть, как текущие функции Scala будут интегрированы в другие языки через 10–15 лет.

В каком направлении движется Scala?

В этом разделе мы рассмотрим несколько направлений, на которых сосредоточат свои усилия ключевые разработчики Scala.

Безопасность и удобство: выберите два

Scala всегда был гибридным языком. Его сочетание объектно‑ориентированного и функционального стилей программирования всегда было на слуху. Однако, еще одно важное сочетание, которое делает Scala уникальным, — это баланс между безопасностью и удобством. Традиционно, «скриптовые» языки, такие как Python, были известны своей гибкостью, но не всегда обеспечивали безопасность. С другой стороны, «прикладные» языки, такие как Java, были более надежными, но менее удобными в использовании. Scala стал первым, кто доказал, что можно успешно сочетать оба этих аспекта в рамках одного языка. Более современные языки, такие как Swift и Kotlin, также продвинулись в этом направлении, но когда Scala только появился, эта идея была неслыханной.

Однако за последние два десятилетия мир программирования сильно изменился. То, что когда‑то было уникальным для Scala, теперь стало нормой для современных языков. Все они предлагают обобщения, выведение типа, лямбды, записи, паттерн‑матчинг и другие подобные функции. Чтобы продолжать привлекать пользователей, Scala должна постоянно развиваться в двух направлениях:

  1. Улучшение безопасности без ущерба для удобства: такие функции, как проверка захвата, явные null, безопасная инициализация, многовариантное равенство.

  2. Повышение удобства без ущерба для безопасности: такие функции, как перечисления, необязательные фигурные скобки, именованные кортежи. Дискуссия о литералах агрегированных данных вызвала большой интерес, хотя пока еще слишком рано говорить о том, что из этого получится.

Экосистема Scala охватывает множество различных сфер, но мы считаем, что две ее основные цели являются общими для всех. Независимо от того, создаете ли вы серверный сервис с применением акторов Akka в JVM, браузерные веб‑интерфейсы с помощью Scala.js или кастомные кремниевые чипы с Chisel, безопасность и удобство использования Scala являются основными причинами, по которым люди выбирают этот язык.

Другие языки также преследуют эти цели, но мы убеждены, что Scala превосходит большинство из них. Его система типов, паттерн‑матчинг, библиотека коллекций, система множественного наследования и многие другие функции являются лучшими в своем роде, даже если у других языков есть свои уникальные предложения. Благодаря архитектуре, которая не лепит эти функции друг к другу как попало, а объединяет чистым и систематическим образом, их можно эффективно комбинировать и выполнять лучше, чем это делают другие языки.

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

Полировка шероховатостей

Scala уже не является новым языком. Два десятилетия назад многие вещи казались хорошими идеями, но не все эти решения оказались эффективными. Хотя опытные Scala‑разработчики, возможно, уже привыкли к некоторым особенностям языка, сам Scala как язык постоянно нуждается в улучшении.

  1. Ряд функций, таких как scala‑actors, scala‑parser‑combinators, и scala‑xml, были удалены. Теперь они доступны в виде отдельных библиотек, и вы можете использовать их по своему усмотрению, но они больше не являются неотъемлемой частью языка или стандартной библиотеки. Среди других подобных очисток можно выделить полную переработку коллекций в Scala 2.13.

  2. В то же время, продолжаются работы над устранением других проблем. Например, @unroll — экспериментальная функция, призванная решить проблемы с бинарной совместимостью дефолтных параметров и case‑классов (SIP-61), и превью улучшений for‑генераторов (SIP-62), должны помочь максимально раскрыть эти функции языка Scala.

  3. Некоторые другие давние проблемы еще предстоит решить, но они активно обсуждаются: гибкие varargs, распаковка, другие проблемы, связанные с синтаксисом, и т. д.

За последние 20 лет программирование претерпело значительные изменения. Такие языки, как Swift, Kotlin, Java, C# и Python, развиваются очень быстро. Иногда они предлагают новые подходы, а иногда сходятся к аналогичным решениям для распространенных задач. Несмотря на то, что в 2005 году Scala приняла архитектурное решение, с которым мы живем уже 20 лет, это не значит, что оно остается оптимальным в 2025 году. Иногда мы можем и должны идти дальше.

Ядром Scala всегда было сочетание объектно‑ориентированного и функционального подходов, а также безопасность и удобство. Однако все остальное подлежит обсуждению. Например, Scala прошел через циклы замены трех библиотек коллекций, чтобы достичь того, что мы имеем сегодня, и благодаря этому язык стал лучше, несмотря на некоторое сопротивление сообщества. Какие давние проблемы мы можем устранить сегодня, за что будем благодарны через 5–10 лет? Какие функции и практики мы можем перенять из других языков, вместо того чтобы заново изобретать велосипед в нашей неповторимой манере?

Снижение порога вхождения

Мы убеждены, что Scala можно сделать более доступным для новичков. Все опытные пользователи когда‑то были новичками. Все крупные проекты, о которых вы слышали сегодня, начинались командами новичков, будь то:

  • Студенты, которые пробуют язык для своего исследовательского проекта

  • Специалисты по Python/Ruby, которые ищут возможности улучшить стабильность своих производственных систем

  • Ветераны Java, которые стремятся к большей гибкости, мощности и скорости разработки

Мы уделяем особое внимание поддержке опытных пользователей и продвинутых фреймворков. Однако, как правило, опытные пользователи способны самостоятельно решать свои проблемы, писать собственные документы и предлагать изменения в языке. Опытные пользователи Scala всегда были активными участниками процесса разработки, предлагая свои собственные идеи и улучшения. Например, scala.concurrent.Future пришло из Akka, частичная унификация, универсальные кортежи и kind‑projector пришли из мира pure‑FP (чистого функционального программирования). Мы надеемся, что они и дальше будут активно участвовать в развитии языка. С другой стороны, обеспечение успешного опыта работы с языком для новичков лежит на плечах основных мейнтейнеров Scala.

Практически это означает:

  1. Приоритетность поддержки кода и документации для более простых библиотек, таких как Scala Toolkit и платформа com.lihaoyi.

  2. Согласование синтаксиса Scala с другими языками, где он расходится без какой‑либо особой необходимости. Импорт подстановочных символов через import foo.* и соединения vararg через foo* уже реализованы (последнее заменяет старый оператор foo@_*).

Следующие крупные проекты в Scala, вероятно, будут основаны новичками, осваивающими язык для решения задач, о которых раньше никто даже задумывался. Эти люди будут талантливы, но они не будут экспертами, раздвигающими границы языка Scala, и они не будут использовать самые сложные языковые функции или паттерны. Они будут знать Java, Python или JavaScript, потому что это то, чему их учили. Наша задача — сделать так, чтобы Scala стал для них простым в изучении.

Рассмотренные альтернативы

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

Почему бы не сосредоточиться на фреймворке X?

Одна из распространенных идей, которую часто высказывают в сообществе, заключается в том, что нам следует сосредоточиться на определенном фреймворке или наборе инструментов. Например:

  1. Полностью развернуть Scala в сторону чисто функционального программирования

  2. Полностью сосредоточится на IO‑монадах для структурирования приложений

Эти идеи заслуживают внимания, ведь все части сообщества Scala, которые используют его для чистого функционального программирования с IO‑монадами, до сих пор очень активны и многочисленны. Однако при более глубоком рассмотрении этого подхода можно заметить некоторые проблемы:

  1. Scala — это язык, который сочетает в себе гибкость и выразительность. Его история свидетельствует о том, что он способен к инновациям. Десять лет назад популярными фреймворками были Akka и Scalaz. Однако со временем Scalaz уступил место более современным функциональным библиотекам, таким как ZIO, Cats‑Effect, Monix и FS2. Kyo выглядит многообещающе, но он все еще слишком молод. Язык Scala должен быть достаточно универсальным, чтобы поддерживать эту естественную эволюцию. Он не должен быть привязан к конкретным фреймворкам, которые появляются и исчезают с течением времени.

  2. Ключевые разработчики Scala не являются экспертами по фреймворкам. Например, они не были экспертами по модели акторов, когда Akka была популярна, и они не являются экспертами по IO‑монадам сегодня. Поэтому нам необходимо, чтобы опытные пользователи в этих сообществах активно высказывали свои мнения и способствовали улучшениям языка, в которых они нуждаются.

Поэтому Scala должен оставаться универсальным языком, предлагая функции, которые могут быть полезны для любых фреймворков и библиотек. Мы призываем разработчиков фреймворков предлагать улучшения языка Scala. Хотя не все идеи могут быть реализованы, обратная связь способствует изменениям, которые приносят пользу всем фреймворкам.

Почему бы не приостановить разработку новых функций?

Иногда люди, которые недовольны поддержкой инструментов, рынком труда или другими аспектами, предлагают прекратить разработку новых функций в Scala. Эти настроения понятны, но остановка разработки новых функций может привести к гибели языка Scala.

Scala всегда был менее отполированным и стабильным языком, чем, например, Java. Но взамен он предлагал языковые возможности будущего, которых не было у других языков (они начали появляться только через 10–15 лет):

  • В 2014 году Apache Spark выбрала Scala как язык с лямбдами и паттерн‑матчингом на JVM.

  • Akka выбрала Scala, потому что это был компактный и производительный язык с поддержкой легкого параллелизма с фьючерсами и акторами.

  • Scalaz и Cats также остановили свой выбор на Scala, так как он представляет собой лаконичный язык с богатой системой типов.

Использование этих функций в других языках побуждает Scala к дальнейшему развитию и инновациям. В 2025 году почти каждый язык из топ-20 RedMonk реализовал лямбды, паттерн‑матчинг, легкий параллелизм и системы типов! Так почему же какому‑либо проекту стоит выбрать Scala?

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

Открытые проблемы в экосистеме Scala

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

Инструментарий: IDE

«Инструментарий» был самой большой областью для улучшения, отмеченной в последнем обзоре Scala от VirtusLab. Это относится прежде всего к IDE (IntelliJ и VS Code) и инструментам сборки (sbt), с которыми должны взаимодействовать все, кто пишет на Scala.

Два основных IDE, используемых в сообществе Scala, — это IntelliJ и VS Code. В упомянутом опросе примерно 80% респондентов использовали IntelliJ и около 50% — VS Code (некоторые использовали обе эти IDE).

Best Practice по Scala, подходам функционального программирования и самым мощным Scala‑библиотекам можно изучить на онлайн‑курсе «Scala‑разработчик».

IntelliJ

Поддержка Scala 3 в IntelliJ все еще не соответствует тому уровню качества, который она традиционно обеспечивала для Scala 2. Тем не менее, наблюдается стабильный прогресс, и недавние улучшения демонстрируют достаточно высокий тем:

  1. Недавно в Scala 3 появилась концепция «превью» функций. Это функции, которые уже стали стабильными и не считаются экспериментальными, но пока не получили поддержки в IDE и других частях экосистемы. Такая система была введена, чтобы дать IntelliJ и другим IDE время на адаптацию и не отставать от развития языка.

  2. Теперь JetBrains является членом консультативного совета Scala Center. Это сотрудничество уже улучшило взаимодействие между JetBrains и подразделением компилятора Scala и помогло избежать проблем, которые возникали в прошлом, когда IntelliJ не успевали за изменениями в языке.

  3. Недавние языковые изменения относительно быстро внедряются в IntelliJ: SIP-64 с улучшениями синтаксиса и именованные кортежи SIP-58 уже работают с IntelliJ 2024.3, в то время как улучшения for‑генераторов SIP-62 будут доступны в в версии 2025.1.

Мы осознаем, что предстоит сделать еще очень много. Команда IntelliJ активно работает над улучшением поддержки Scala 3, и в ближайшие месяцы вас ждут новые усовершенствования.

Metals — языковой сервер Scala

Metals чаще всего используется с VSCode, но также поддерживает и другие редакторы. У Metals несколько иные проблемы, чем у IntelliJ: он всегда использует оригинальный компилятор Scala для анализа кода, и поэтому он всегда синхронизирован с актуальным состоянием языка. Но у него были проблемы со стабильностью (например, #6478), некоторые из которых связаны со сложностью его многопроцессорной архитектуры, а другие — с более новыми интеграциями со Scala 3 (например, #6628). В настоящее время разработчики Metals сосредоточены на решении наиболее заметных проблем. Если вам известны какие‑либо проблемы в вашей кодовой базе, пожалуйста, сообщите о них тут. Команда VirtusLab будет рада взглянуть на них (и даже подписать NDA, если это необходимо).

Разработчики компилятора Scala 3 активно используют как IntelliJ, так и Metals, и мы осведомлены о проблемах, с которыми сталкиваются разработчики, использующие обе эти IDE. Мы продолжим сообщать о проблемах по мере их обнаружения, а также сотрудничать с мейнтейнерами IntelliJ и Metals над улучшением интеграции компилятора с этими IDE. Однако для решения этих проблем нам необходимо активное участие сообщества в освещении проблем, чтобы разработчики IDE могли их исследовать и исправлять.

Инструменты для сборки

Сложность инструмента сборки sbt была постоянной проблемой в сообществе Scala на протяжении последних десяти лет или даже больше. Однако мы думаем, что просвет все‑таки есть:

  1. Scala‑CLI обрел популярность. Теперь это дефолтный лаунчер Scala (начиная с версии Scala 3.5.0). В последнем опросе по Scala от VirtusLab 35% пользователей отметили, что им нравится использовать Scala‑CLI, а еще 35% выразили желание освоить его. Scala‑CLI не подходит для больших многомодульных проектов, но в нем есть практически все необходимое практически для любого одномодульного проекта. Это также отличный инструмент для исследовательского программирования в небольших проектах и экспериментах.

  2. Существуют и альтернативные варианты, такие как Mill. Опрос показал, что 10% разработчиков Scala используют Mill, но почти 50% хотели бы освоить его. Такие фундаментальные проекты, как Scala‑CLI и Coursier, были созданы на основе Mill. Мы считаем, что Mill предоставляет более крупным проектам отличную альтернативу sbt. Bleep, хоть и является молодым проектом, предлагает другой подход к инструментам сборки, который также выглядит многообещающе.

  3. С течением времени сам sbt претерпел значительные улучшения. За последние несколько лет были реализованы такие важные нововведения, как унифицированный синтаксис косой черты, sbt Project‑Matrix, а также запланирован выпуск sbt 2.0, который будет включать запросы на сборку, удаленное кэширование и другие полезные функции. Хотя опыт использования sbt в 2025 году все еще не идеален, он значительно улучшился по сравнению с тем, что было десять лет назад.

  4. Также можно использовать Maven и Gradle. Эти инструменты сборки уже давно пользуются популярностью и хорошо известны в мире Java. Хотя они не так широко распространены в опенсорсном сообществе, мы видим, что они используются во многих коммерческих кодовых базах Scala.

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

Сложность освоения экосистемы

Третья по значимости проблема, с которой мы сталкиваемся в языке Scala, — это сложность освоения экосистемы.

  1. В экосистеме Scala всегда были фреймворки, предназначенные для опытных пользователей: Akka, Cats‑Effect, ZIO и т. д. Однако ей не хватало платформы для менее искушенных пользователей. Например, она не подходила для студенческих курсовых, кодовых баз для начинающих стартапов, DevOps или скриптов анализа данных, поддерживаемых не инженерами. Это области, для которых не подошли фреймворки Scala, но сам язык Scala мог бы подойти.

  2. Документация в экосистеме Scala также традиционно была проблемой. Это только усугубляет уже существующую сложность: освоение мощного фреймворка или библиотеки и так непростое дело, а плохая документация делает его еще более трудным.

Традиционно, хотя кому‑то может нравиться язык Scala, когда дело доходит до простых задач, таких как «отправка HTTP‑запросов» или «запуск сервера», они натыкаются на стену, где им внезапно приходится изучать акторы, IO‑монады или другие продвинутые темы при недостаточном количестве документации или учебных материалов.

Однако есть повод для оптимизма:

  1. Scala Toolkit и платформа com‑lihaoyi, которые во многом пересекаются и включают множество одинаковых библиотек. Они предоставляют почти полную и удобную платформу, подходящую для новичков. Хотя они не имеет всех возможностей более сложных фреймворков, их вполне достаточно для многих производственных развертываний, и при необходимости можно легко перейти к более сложным платформам.

  2. Недавнее партнерство Scala Center с Rock the JVM открывает новые горизонты для улучшения обучения в области Scala. Даниэль Чочирлан (Daniel Ciocîrlan) из Rock the JVM всегда был превосходным педагогом, создающим высококачественные учебные материалы. Мы верим, что это сотрудничество расширит аудиторию Rock the JVM и позволит начинающим Scala‑разработчикам открыть для себя его превосходные видео и курсы и извлечь из них пользу.

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

Как вы можете помочь

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

Финансовая поддержка

Если вы хотите поддержать Scala финансово, у вас есть два основных варианта:

Scala Center

Scala Center занимается двумя важными задачами:

  1. Разработка базового языка Scala и компилятора: исследование, прототипирование, внедрение, сопровождение и отладка.

  2. Поддержка сообщества Scala. Сюда входят конференция Scala Days, программа Scala Ambassador и инструментальные саммиты.

Вы можете оказать финансовую поддержку Scala Center двумя способами:

  • Сделать пожертвование индивидуально или попросите вашу компанию сделать пожертвование Scala Center.

  • Вы можете предложить своей компании присоединиться к консультативному совету Scala Center, чтобы финансировать его на постоянной основе.

Если вы хотите поддержать развитие базового языка Scala и его сообщества, пожалуйста, сделайте пожертвование в пользу Scala Center. Большая часть их работы не бросается в глаза, но она играет ключевую роль в обеспечении постоянного функционирования экосистемы Scala.

VirtusLab

VirtusLab занимается разработкой многих инструментов Scala:

  • Metals и VSCode‑плагин Metals

  • Scala‑CLI

  • Scala 3 LTS, процесс выпуска и общее управление проектами для Scala

  • Инструменты в организации Scalameta

Если у вас возникли проблемы с Metals или Scala‑CLI и вы хотите внести свой вклад в их улучшение, пожалуйста, напишите VirtusLab по адресу scala@virtuslab.com.

Код

Большая часть экосистемы Scala имеет открытый исходный код. Это означает, что вы можете напрямую участвовать в разработке, вносить исправления и улучшения, которые считаете необходимыми:

  • Вы можете самостоятельно исправлять баги в Scala3, IntelliJ, и Metals. Хотя эти кодовые базы довольно большие, ничто не мешает вам погрузиться в работу и внести необходимые изменения, соответствующие вашим конкретным потребностям.

  • Каждые три недели мы проводим Compiler Spree и Tooling Spree. Это дистанционные сессии программирования, где вы можете сотрудничать с разработчиками базового языка Scala и инструментария над устранением небольших багов. Кроме того, вы получите ценные навыки и знания, которые помогут вам решать более сложные задачи.

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

Разработка языка

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

Если вы считаете, что основные участники не уделяют достаточно внимания вашим пожеланиям, вы всегда можете самостоятельно предложить улучшения языка. В конце концов, вы лучше всех знаете свои потребности и можете предложить наиболее эффективные решения!

SIP не так уж и просто внести в язык. Не каждый SIP будет принят, и даже тем, которые проходят, может потребоваться несколько месяцев или даже год, чтобы пройти все этапы проверки, внедрения и экспериментов и, наконец, оказаться в релизе Scala. С другой стороны, даже идеи, которые изначально были отвергнуты, могут найти применение позже, возможно, после нескольких лет дополнительных экспериментов и улучшений. Но нам нужно больше участников, предлагающих изменения, а не один только Мартин Одерски и ребята из EPFL.

Если у вас есть предложения, но вам нужна помощь в их реализации и вы готовы заплатить за эту помощь, пожалуйста, напишите нам по адресу scala.center@epfl.ch. Мы поможем вам найти специалистов, с которыми можно заключить контракт.

Заключение

Разработка языка — это сложный процесс. Команда Scala не может самостоятельно создать следующую большую историю успеха, и это не произойдет в одночасье. Однако мы можем улучшить взаимодействие со Scala во всех аспектах: в языке, инструментах и сообществе, и надеемся, что кто‑то в какой‑то момент выберет Scala для нового проекта, который станет «следующей сенсацией».

Мы считаем, что главная привлекательность языка Scala заключается в сочетании безопасности и удобства. Надежная система типов и компилятор защищают от ошибок и обеспечивают отличную производительность во время выполнения. Лаконичный синтаксис и вывод типов делают его таким же гибким и выразительным, как любой скриптовый язык. Другие языки, безусловно, стремятся достичь тех же целей, но мы верим, что Scala с ее уникальной гибридной функционально‑объектно‑ориентированной архитектурой может сделать это лучше, привлекая и удерживая пользователей.

Однако детали языка и экосистемы Scala будут развиваться со временем, и нам не стоит зацикливаться на случайных сложностях, которые нас окружают. Как это было в версии 2.13, где коллекции Scala были значительно упрощены, а в Scala 3 гимнастика типов была заменена более простыми универсальными кортежами и другими функциями системы типов, мы ожидаем, что и дальше будем находить области для улучшения Scala. Конечно, всегда будут проблемы с обратной совместимостью, миграцией и обучением, но тем не менее, Scala необходимо постоянно и критически оценивать себя, используя то, что другие языки узнали за последние два десятилетия, чтобы сделать опыт разработчиков более приятным.

Scala всегда была проектом сообщества. Чтобы продолжать его развитие, нам необходима поддержка и помощь с его стороны. Это может выражаться в финансовой поддержке, пулл‑реквестах или участии в разработке языка. Мы надеемся, что каждый член сообщества найдет свой способ внести свой вклад и способствовать дальнейшему совершенствованию языка.


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

15 апреля 18:30Эффективная работа с Future в Scala: асинхронное программирование на практике
24 апреля 20:00Функциональное программирование в Scala

Теги:
Хабы:
+9
Комментарии1

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS

Истории