Обзор Scala

Кафедра ИВТ и ПМ. Ветров С. В.

2024


### Литература - Scala для нетерпеливых / пер. с англ. А. Н. Киселева – 2-е изд., 2017 – 414 с.: ил. - Scala Programming for Big Data Analytics: Get Started With Big Data Analytics Using Apache Spark, Irfan Elahi, 2019 - Курс [stepik.org/course/16243/promo](https://stepik.org/course/16243/promo) - [Scala 3 Book](https://docs.scala-lang.org/scala3/book/introduction.html) - Шпаргалка: [github.com/ivtipm/BigDataLanguages/blob/main/Scala/Readme.md](https://github.com/ivtipm/BigDataLanguages/blob/main/Scala/Readme.md)
- Подлодка. Scala. [music.yandex.ru/album/7570122/track/59138633](https://music.yandex.ru/album/7570122/track/59138633)

Литература

Scala

  • SCALA = SCalable LAnguage
  • Появился в 2003 г
  • Версия 3.0 – 2021 г.
  • Последняя версия 3.4.1 (апрель 2024)
  • Параллельно существует Scala 2.x

  • ООП и функциональное программирование
    • код строится из комбинации функций
    • выражения вместо операций (expressions instead of statements)
  • Компилируется в байт-код JVM
    Можно использовать библиотеки на Java
  • Меньше boilerplate кода по сравнению c Java
  • Ориентирован на высокую производительность
  • Основной язык для BigData
Майкл Одерски — создатель языка

Scala. Применение

  • Мультипарадигмальный язык общего назначения
  • Высоконагруженные системы, сложные системы
  • Используется для обработки больших данных и веб-сервисов
  • Может использоваться совместно с Java
The State of Developer Ecosystem 2023: Scala

jetbrains.com/ru-ru/lp/devecosystem-2022/scala – результаты опроса JetBrains об раных сторонах использования Scala StackShare: Scala

Класс на Java



public class Person {
  private final String name;
  private final double age;

  public Person(String name, double providedAge) {
    this.name = name;
    this.age = providedAge;}
  
  @Override
  public int hashCode() {
     int hash = 10;
     hash = 23 * hash + Objects.hashCode(this.name);
     return hash; 	}

  @Override
  public boolean equals(Object obj) { … }

  @Override
  public String toString() {
    return "Test{" + "name=" + name + ", age=" + age + '}'; }

}

Класс на Scala


		case class Person(name: String, age: double)
	
Приведён специальный вид класса. Из конструктора автоматически создаются поля.
## Установка 1. Установить Oracle JDK [oracle.com/cis/java/technologies/downloads](https://oracle.com/cis/java/technologies/downloads) 2. [scala-lang.org/download](https://www.scala-lang.org/download/) #
#### альтернатива - Попробовать онлайн: scastie.scala-lang.org - Консольная программа scala исполняет код, может работать как интерактивная оболочка
## HelloWorld.scala ```scala @main def main() = println("Hello, World!") ``` **Компиляция:** ```bash scalac HelloWorld.scala ``` **Запуск:** ```bash scala HelloWorld ```
## Hello, World! Scala 2 (устаревшая версия) ```scala object hello { def main(args: Array[String]) = { println("Hello, World!") } } ```
## Scala 2 vs Scala 3 - Отличия тут: [docs.scala-lang.org/scala3/guides/migration/incompatibility-table.html](https://docs.scala-lang.org/scala3/guides/migration/incompatibility-table.html) - В Scala 3 упрощён синтаксис - отступы как в Python

IDE: InteliJ IDEA > Интерактивный режим в файле

Онлайн-интерпретатор

scastie.scala-lang.org
Продолжение: Основы Scala
This slide is visible in the source, but hidden when the presentation is viewed. You can show all hidden slides by setting the `showHiddenSlides` config option to `true`.
This slide is visible in the source, but hidden when the presentation is viewed. You can show all hidden slides by setting the `showHiddenSlides` config option to `true`.