Scala head.jpg

Что нужно знать Scala-разработчику?

29 ноября 2019

iTechArt продолжает технологический цикл материалов. Сегодня расскажем, где можно применить Scala и какие технологии нужно знать, чтобы стать Scala-разработчиком.

Scala как язык программирования

У Scala лаконичный синтаксис, позволяющий четко выразить мысль. Несмотря на статическую типизацию, в большинстве случаев указывать тип переменной не нужно – поможет компилятор. Если имя переменной не важно, либо понятно из контекста – его можно не указывать. Вот пример.

case class User(firstName:String, lastName:String)
Seq(12.2, 32.43, 233.2).filter(_ < 100).reduce(_ + _) // 44.63

У SDK огромное количество функций Out-of-the box

Многие базовые операции, которые в других языках пришлось бы реализовывать в каждом проекте с нуля, есть в SDK. Например, у объекта String доступно 100 + методов.

Что нужно знать Scala-разработчику

Простые и мощные средства для параллельных, асинхронных и ленивых вычислений, встроенные в сам язык и готовые к использованию.

(1 to 1000000000000).view.filter(_ % 2 != 0).take(50).toList // Из-за "ленивости" не вызовет OutOfMemoryError

Широкое использование принципов функционального программирования.

type ErrorDto = String
def tryParse(input:String) = Try(input.toDouble).map(Right(_)).getOrElse(Left(s"Make sure $input is a number"))
lazy val result: Either[ErrorDto, Double] = tryParse(“23.23”)

Где можно применить Scala?

Scala на уровне языка поддерживает ленивые, параллельные и асинхронные вычисления, поэтому популярна при разработке приложений по распределенной обработке данных. Это один из четырех языков Big Data вместе с Java, Python и R. Big Data продукты, такие как Apache Spark, Apache Flink и Apache Kafka написаны на Scala и используют многие ее концепции. Apache Spark работает до 10 раз быстрее со Scala, чем с Python.

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

Что нужно знать Scala-разработчику - фото 2

Scala в мире Java-разработки

Scala – один из JVM языков. Следовательно, знания Java и Kotlin помогут быстрее изучить Scala. Обратное также справедливо. Многие возможности, которые постепенно добавляются в Java начиная с 8-ой версии, были доступны в Scala раньше. Это касается Stream API, REPL, Interfaces with Implementation и var. Не все укоренились на Java-проектах.
В Scala похожий функционал шире и органичнее смотрится в коде. Сегодня многие возможности Scala только снятся Java разработчикам. Однажды попробовав Scala, немногие Java-разработчики возвращаются обратно.

Что нужно знать Scala-разработчику?

Scala – объектно-ориентированный язык и тесно связан с Java. Знания ООП и паттернов программирования очень важны.
Scala – функциональный язык, и в этой парадигме многие его преимущества. Хороший Scala-разработчик каждый день пишет приложения с неизменяемыми структурами данных, без переменных, с использованием функций высших порядков, монад и функторов. Нужно понимать многопоточность и связанные с ней издержки. Многие приложения строят многопоточность на модели акторов, реализованной в библиотеке Akka. Хороший код на Scala всегда конкурентный, без блокировок и зачастую выполняется параллельно. Также нужно знать и уметь работать с хранилищами данных: PostgreSQL, Apache Cassandra и MongoDB.

Scala будет актуальна в 2020 году?

В области распределенных вычислений и высоконагруженных приложенийя Scala на острие IT. Рост объемов обрабатываемой информации будет требовать применения подобных решений еще сильнее. Scala используют в динамично развивающихся проектах в комбинации с Python и Java. Функциональные подходы Scala к написанию кода так же помогут быстрее разобраться с Kotlin, Haskell, Elixir или Closure.

Где можно изучить Scala?

iTechArt приглашает студентов профильных специальностей на двухмесячную стажировку Scala в Students Lab. Мы проводим лекции и практические занятия по реляционным и нереляционным базам данных, архитектуре web-приложений и созданию RESTful сервисов. В конце стажировки студенты разработают RESTful сервис, моделирующий предметную область с помощью актуального стэка технологий.

Вот, что узнают участники Students Lab:

Основы синтаксиса Scala и функционального программирования.
Play 2 – один из самых популярных Web-фрэймворков на Scala и Java.
Akka – мощное средство для построения высоконагруженных приложений.
Slick – одна из самых популярных библиотек типа ORM/FRM для работы с базами данных в экосистеме Scala.
PostgreSQL – топовая реляционная база данных.
Docker – средство контейнеризации приложений.

Что нужно знать Scala-разработчику - фото 1

Чтобы пройти отбор в Scala Students Lab, покликайте на ссылки ниже. Вместе со Scala-разработчиками из iTechArt собрали гайды по изучению Scala. Сохраняйте материал в закладки, мы будем обновлять библиотеку полезных ссылок.

  • Введение в модель конкурентных вычислений, построенную на акторах: https://doc.akka.io/docs/akka/current/typed/guide/actors-intro.html
  • Модель акторов: https://www.brianstorti.com/the-actor-model/
  • Обзор преимуществ модели акторов, по сравнению со стандартными подходами: https://doc.akka.io/docs/akka/current/typed/guide/actors-motivation.html

 

499
Стань частью нашей команды