Рубріки: Новости

Спустя 8 лет и 28 000 коммитов вышла новая версия языка программирования Scala: что в ней нового

Богдан Мирченко

После 8 лет работы, 28 000 коммитов, 7 400 пулл-реквестов и 4 100 закрытых вопросов вышла новая версия мультипарадигмального языка программирования Scala 3. В проект внесли свой вклад более 100 человек. Сборка включает в себя последние исследования в области теории типов и отраслевой опыт предыдущей версии, а основным изменением и объектом для изучения по сравнению со Scala 2 стали макросы. 

С чего начать

Чтобы узнать об особенностях новой сборки и миграции с предыдущей версии, разработчики Scala советуют:

Что нового

Синтаксис

  • Новый синтаксис управления для структур if, while и for;
  • Ключевое слово new теперь необязательно;
  • Опциональные скобы, которые поддерживают стиль программирования без отвлекающих факторов и с учетом отступов;
  • Переработаны имплициты и их синтаксис.

 Контекстные абстракции 

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

  • Абстрагирование из контекстной информации. По сравнению с имплицитами Scala 2, using-предложения Scala 3 можно указывать по типу, освобождая сигнатуры функций от имен переменных терминов, которые никогда не упоминаются явно;
  • Предоставление экземпляров Type-class. Они позволяют разработчикам определять каноническое значения определенного типа. Это упрощает программирование помощью type-class без утечки деталей реализации;
  • Ретроактивно расширяемые классы. В Scala 2 методы расширения нужно было кодировать с помощью неявных преобразований или неявных классов. В новой версии метод расширения встроены в язык, что приводит к улучшению сообщений об ошибках и улучшенному выводу типов;
  • Рассмотрение одного типа как другого. Неявные преобразования были переработаны с нуля как экземпляры type-class conversion

Улучшенная система ввода

Система типов Scala 3 оснащена множеством новых функций и предоставляет мощные инструменты для статического выражения инвариантов в типах. Вот некоторые из них: 

  • Перечисления. Были переработаны, чтобы хорошо сочетать с case-классами и сформировать новый стандарт для выражения алгебраических типов данных;
  • Зависимые типы функций. В Scala 2 типы возвращенных данных могут зависеть от аргументов (значений). В новой сборке можно абстрагироваться от этого паттерна и выражать типы зависимых функций;
  • Лямбда-выражения. То, что в Scala 2 нужно было выражать с помощью подключаемого модуля, в Scala 3 является первоклассной функцией. Лямбда-выражения — это функции уровня типа, которые можно передавать как аргументы типа (более высокого порядка), не требуя определения вспомогательного типа;
  • Match-типы. Вместо кодирования вычислений на уровне типов с использованием неявного разрешения, в Scala 3 есть прямая поддержка сопоставления типов. Интеграция вычислений на уровне типов в средство проверки типов позволяет улучшить сообщения об ошибках и устраняет необходимость в сложных кодировках.

Метапрограммирование

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

  • В качество базовой точки встроенная функция позволяет сокращать значения и методы во время компиляции;
  • Пакет scala.compiletime содержит дополнительные функции, которые можно использовать для реализации встроенных методов;
  • В Scala 3 появилась функция квазицитирования кода, которая предоставляет удобный высокоуровневый интерфейс для создания и анализа кода.

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

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024