LINUX.ORG.RU

Scala 2.12

 ,


3

7

Выпущена новая версия языка программирования Scala.

Основной темой релиза стала интеграция с платформой Java 8 и использование полезных возможностей этой JVM.

В частности:

  • Трейты теперь компилируются в Java-интерфейсы. В первую очередь это полезно авторам библиотек, так как позволяет вносить больше изменений, не жертвуя бинарной совместимостью. Также это позволяет создавать трейты, которые могут быть расширены в коде на Java.
  • Функции Scala теперь могут использоваться там, где требуются функциональные интерфейсы Java 8. И наоборот, код на Java может реализовывать функции Scala с использованием обычного синтаксиса лямбда-функций.
  • При создании замыканий генератор кода теперь создает байт-код, аналогичный Java 8, избегая создания анонимных классов, что позволяет уменьшить размер jar-файлов.

Также в выпуск вошли новый оптимизирующий компилятор, правосторонний Either, улучшенный Future API, новый вид Scaladoc и другие улучшения.

Релиз совместим с исходными текстами на предыдущей версии языка, за исключением экспериментальных функций (макросов и т. п.). Существует ряд особых случаев, при которых может потребоваться модификация исходного кода или использование специального ключа компиляции -Xsource:2.11 для включения дополнительного режима совместимости. Бинарная совместимость традиционно поддерживается только между минорными версиями.

>>> Подробности

★★★★★

Последнее исправление: maxcom (всего исправлений: 10)

Ответ на: комментарий от Reedych

для чего он?

для программирования!

anonymous
()

Пробовал как-то. Не очень впечатлило. Функциональные возможности всё же недостаточны, без объектов никуда. При этом всё же достаточно многословен. Многие библиотеки нужно брать из-под Явы.

В общем, не срослось. Как урниверсальный язык Питон куда лучше. Как числодробилка Фортран лучше на порядок. Как функциональный --- лучше Окамл.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

Здесь дело привычки и поставленных задач. Моим работодателям хватает.

anonymous
()
Ответ на: комментарий от Reedych

Scala удачно объединяет возможности объектно-ориентированного и функционального подхода в разработке.

Выполняется поверх JVM, поэтому можно брать многое не только из экосистемы Scala, но и в полном объеме пользоваться экосистемой Java.

На Scala написаны такие вещи, как:

  • Play — фреймворк для веб-разработки
  • Kafka — распределённый брокер очередей
  • Akka — акторный фреймворк для высоконагруженных распределённых приложений

Scala любят и за неё хорошо платят

VladimirMalyk ★★★★★
()
Ответ на: комментарий от hateyoufeel

SBT под 2.12-то будет? Под 2.11 не было нифига.

0.13 не будет, так как тянут бинарную совместимость с плагинами которые по большей части собраны только под 2.10.

maxcom ★★★★★
() автор топика

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

Zenom ★★★
()

Golang!

Остальное не нужно!

anonymous
()
Ответ на: комментарий от BattleCoder

Сегодня читал в чятике typelevel, что 1.0 пока на горизонте не видно. Хотя перед этим говорили, что видно.

cdshines ★★★★★
()

Больше всего понравилось, как все бросились релизить свои библиотеки по 2.12.0 и в конце-концов весь скала-уголок гитхаба оказался забит ссылками в стиле «блочимся на скалатест».

maxcom, можешь добавить в новость еще ссылку на 2.12.0 typelevel scala? https://github.com/typelevel/scala

cdshines ★★★★★
()
Последнее исправление: cdshines (всего исправлений: 1)

Также в выпуск вошли новый оптимизирующий компилятор, правосторонний Either

Напоминает «по улице шли студенты и дождь»

anonymous
()
Ответ на: комментарий от anonymous

Напоминает «по улице шли студенты и дождь»

«Под зонтом стояло трое: он, она и у него».

bitfroster ★★
()

наконец-то, джва года ждал! (два с половиной, на самом деле)

devnullopers
()
Ответ на: комментарий от hateyoufeel

SBT под 2.12-то будет? Под 2.11 не было нифига.

В бранче 1.0.х используется 2.11 сейчас :) Возможно к релизу и на 2.12 перепозлут, хотя хз какая у них политика

anonymous
()
Ответ на: комментарий от hateyoufeel

А новый? Или, если я сам соберу SBT 0.13 под новую скалу, оно будет работать?

Попробуй. Наверняка sbt входит в community build и должно собираться на 2.12. На 2.11 оно точно собирается.

maxcom ★★★★★
() автор топика
Ответ на: комментарий от cdshines

Больше всего понравилось, как все бросились релизить свои библиотеки по 2.12.0 и в конце-концов весь скала-уголок гитхаба оказался забит ссылками в стиле «блочимся на скалатест».

scalatest вчера уже был

maxcom ★★★★★
() автор топика
Ответ на: комментарий от maxcom

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

cdshines ★★★★★
()

Джава не нуждается в этих костылях.

AVL2 ★★★★★
()

Вот и славненько!

ymn ★★★★★
()

поздно пить боржоми

kotlin уделал scala - т.к. проще быстрее и меньше размер бинарей

anonymous
()
Ответ на: комментарий от h31

Он действительно проще, но Скала заняла нишу раньше и больше распиарена. К тому же под Котлин своих библиотек почти нет, а использование ява-библиотек ведёт очень уродскому коду --- теряются и простота, и понятность, и быстрота написания.

Vudod ★★★★★
()
Ответ на: комментарий от h31

Когда выкатите shapeless на котлине, тогда и продолжим.

cdshines ★★★★★
()
Ответ на: комментарий от anonymous

сомнительно, что можно эффективно писать на скале, не зная джаву

Можно. Лично знаю чувака, который, не зная джавы, херачит на Scala + Scala.js веб-приложуху.

migesok
()
Ответ на: комментарий от Vudod

под Котлин своих библиотек почти нет, а использование ява-библиотек ведёт очень уродскому коду

Хоть я фанат скалы, но подход к Java-интеропу мне больше нравится всё-таки котлиновский, что все входы-выходы из Java считает nullable со всеми вытекающими. В Scala это всё на откуп программиста, и ошибки с этим связанные часто протекают в чистый Scala-код.

migesok
()
Ответ на: комментарий от Reedych

Для мимикрирования под жабу+питон+поцкаль:

 object Main {
   def main(args: Array[String]) {
     try {
       val elems = args map Integer.parseInt
       println("Сумма аргументов: " + elems.foldRight(0) (_ + _))
     } catch {
       case e: NumberFormatException =>
         println("Ошибка в аргументах. Использовать следует так: scala Main <число1> <число2> ... ")
     }
   }
 }

vs

public class Main {

    public static void main(String[] args) {
        try {
            System.out.println("Сумма аргументов: " + Arrays.stream(args).mapToInt(Integer::parseInt).sum());
        } catch (NumberFormatException e) { 
            System.out.println("Ошибка в аргументах. Использовать следует так: java Main <число1> <число2> ... ");
        }
    }
}

(спасибо википузии)

Ненужно короче.

awesomebuntu
()
Ответ на: комментарий от awesomebuntu
object Main extends App {
  try {
    println(s"Сумма аргументов: ${args.map(_.toInt).sum}")
  } catch {
    case _: NumberFormatException =>
      Console.err.println("Ошибка в аргументах. Использовать следует так: scala Main <число1> <число2> ... ")
  }
}
GoodPerson
()
Ответ на: комментарий от awesomebuntu

245, 273 и 207 символов соответственно.
Но ты можешь думать, что так только хуже, окей.

GoodPerson
()
Ответ на: комментарий от awesomebuntu

Пример лажа. Ты бы ещё public static void Борщ написал.

migesok
()
Ответ на: комментарий от awesomebuntu
args.map(_.toInt).sum

всё короче и чище чем

Arrays.stream(args).mapToInt(Integer::parseInt).sum()

VladimirMalyk ★★★★★
()
Ответ на: комментарий от cdshines

typelevel scala? https://github.com/typelevel/scala

А можешь в двух словах объяснить что-то это такое для тех кто далёк от джава и скала мира? По ссылкам ходил, но зачем оно нужно в виде отдельного форка не понятно.

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Не знаю, что там непонятного, если ты ходил по ссылкам. Если есть багфиксы, которые уже готовы и запулреквещены в лайтбенд скалу, но их долго не принимают и они важны, ест шанс, что в ТЛС они будут уже приняты. Особое внимание уделяется багам, связанным с системой типов, т.к. Тайплевел - организация, построенная именно вокруг разработки/поддержки проектов/библиотек, которые иногда доходят до предела возможностей этой самой системы типов.

Кроме того, на днях один из отцов-основателей предложил бекпороировать в 2.10 некоторые фиксы, не ломающие бинарную совместимость, но существенные. Такой инициативы я не видел даже от авторов ЛБС.

cdshines ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.