Какой язык программирования выбрать? Часть 2. Scala

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Продолжаем серию статей об особенностях, применении, плюсах и минусах языков, которые используются в «Криптоните». Опытом разработки на Scala поделится Олег Булатов, старший программист направления серверной разработки.

1. Особенности

У Scala полно «экзотических» особенностей. Сначала обучаться этому языку и вырабатывать навыки в программировании на нём довольно непросто. В Scala есть смысл вкладываться с расчётом на долгосрочную перспективу: если вы освоили этот язык, то будете легко разбираться в сложных проектах (чего не скажешь, например, о Java). Плюс, если вы делаете проект, который можно сделать на Java или Scala — лучше выбирать Scala, так как его инструментарий намного интереснее.

Конечно, Scala можно использовать исключительно в рамках парадигмы ООП (объектно-ориентированного программирования), однако если вас интересует и функциональное программирование, Scala выступит «трамплином» и даст возможность вырасти от нуля до профи.

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

Разработчики языка выделяют универсализм Scala за счёт своей экосистемы. Например, его можно запускать на разных платформах за счёт использования JVM или в браузерах с помощью компиляции в JavaScript. На данный момент доступна даже компиляция в нативные приложения при помощи Scala Native.

2. Где используется

На Scala в основном пишут сервисы для backend, которые обрабатывают и сохраняют информацию в базах данных, осуществляют интеграцию с внешними сервисами, перекладывают файлы в распределённых хранилищах, создают отчеты. Пример типичного backend-сервиса — расчёт скидки на товар по карте лояльности в интернет-магазине. Судя по вакансиям, Scala также популярна для разработки стриминговых сервисов, которые передают, хранят и обрабатывают видео. 

Первый проект, который я делал на Scala — это чат-сервер. Его особенность — возможность обмениваться сообщениями между разными социальными сетями (ВКонтакте, Одноклассники и т.д.) с помощью официального API. Этот продукт затем использовался в контакт-центрах для обслуживания клиентов банков и интернет-провайдеров. Для удобства им нужен был такой чат-сервер, где были собраны все сообщения одного клиента, отправленные через мессенджер или социальные сети.

В «Криптоните» я занимаюсь конструктором запросов для анализа большого количества данных. У нас в компании все продукты разрабатываются в рамках единой экосистемы, поэтому необходим сервис, который может их связывать. Конечная цель этого сервиса — возможность выстраивать компоненты для анализа различного типа данных (текст, изображение, аудио) в единую цепочку для их обработки. Коллеги из лаборатории больших данных и статистики приносят нам готовые ML-модели, а мы пишем на Scala сервис для конструктора запросов, который склеивает всё это в единый продукт.

3. Плюсы и минусы

Scala играет на одной площадке с Java, поэтому легче всего перечислить плюсы и минусы относительно него.

Плюсы:

1. Scala можно использовать вместо Java, например, если в legacy project библиотека написана на Java.

2. Легче разобраться в сложном коде, написанном на Scala, чем на Java. Элементы функционального программирования позволяют писать модульные программы, которые легко компонуются друг с другом. Таким образом можно писать программу по кусочкам и избегать определённого класса ошибок.

3. Scala community призывает изучать эффективные практики для разработки программного продукта. Достаточно прочитать несколько статей, чтобы узнать, как тот или иной функционал делается проще, современнее и полезнее. Это ценно для разработчиков и при желании позволяет многому научиться. Например, разобраться, как устроен веб-сервер или библиотека для сериализации и десериализации данных.

4. На Scala, в силу возраста, меньшее количество legacy projects. Например, на Java есть проекты, которые давно работают в продуктовых системах. Но разработка для них уже не ведётся, осуществляется только поддержка: оптимизация и поиск багов. На Scala же сейчас активно развиваются новые проекты.

Минусы:

1. На данный моменты на Scala в основном пишут программы, если собираются запускать их на JVM, доля Scala.js и Scala Native очень невелика. В результате возникает ограничение: Scala можно использовать только там, где можно использовать Java.

2. Многие не спешат переходить с Java на Scala.

Первый предполагает стабильность. На Java уже написано столько legacy software, что работы по его поддержке хватит на десятилетия.

Переход же на Scala подразумевает некоторый риск, который не всем нравится, — опасение, что язык не будет так популярен лет через 10. Поэтому у всех Scala-разработчиков есть дух авантюризма

Источник: https://habr.com/ru/companies/kryptonite/articles/717150/


Интересные статьи

Интересные статьи

Привет, друзья! Представляю вашему вниманию третью (заключительную) часть перевода этой замечательной книги по WebRTC. Первая часть. Вторая часть. Если вам это интересно, прошу под кат. ...
Технологические гиганты при помощи денег инвестиционных фондов контролируют всё большую часть новых разработчиков и продуктов, перекрывая тем самым путь для новых програм...
Меня часто спрашивают, почему я в своем игровом движке PointJS, построенном на технологии HTML5, перерисовываю весь CAVAS заново, а не обновляю только ту часть, на которо...
Привет Хабр!Как вы все уже знаете, в области безопасности приложений без статических анализаторов исходного кода (SAST) совсем никуда. SAST-сканеры занимаются тем, что пр...
«Привет! Добро пожаловать! Спасибо, что приняла наш оффер. Пойдем знакомиться с твоей командой. У них как раз сейчас дейли. Ты вышла под конец спринта, поэтому пока работы для тебя не запланирова...