### Литература
- 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. Применение
Мультипарадигмальный язык общего назначения
Высоконагруженные системы, сложные системы
Используется для обработки больших данных и веб-сервисов
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`.