Язык программирования Scala: скала, которую стоит покорить

22.08.2018      25900

Современные разработчики хотят от новых языков программирования краткости, понятности и типобезопасности. Именно таким был создан Scala. Впрочем, называть его новым не совсем верно – разработка Scala ведется уже 15 лет.

В июльском рейтинге RedMonk язык Scala занял 12 позицию. И это повод присмотреться к нему подробнее.

Общая информация

Scala – мультипарадигмальный язык программирования, который унаследовал изобразительные возможности от нескольких языков. Например, он напоминает и Java, и C#, но с гораздо большими возможностями.

Разработала Scala команда из Федеральной политехнической школы Лозанны под руководством Мартина Одерски. Он также занимался созданием Generic Java и компилятора Java фирмы Sun. В 2001 году Одерски решил создать типобезопасный язык для решения научных задач и улучшить языковую поддержку компонентного программного обеспечения.

В 2003 году создатели выпустили первый внутренний релиз, в январе 2004 года представили первую версию для общего пользования на платформе JVM (Java Virtual Machine – виртуальной машины Java). В 2006 году появилась Scala 2.0. В июне 2004 года Scala вышел на платформе .NET. С 2012 года поддержка этой платформы прекращена. Полноценный нативный LLVM-компилятор (Scala Native) был представлен лишь в 2016 году.

Разработчики преследовали две основные цели:

  • Масштабируемость языка: с помощью одних и тех же концепций можно было бы описывать и мелкие, и крупные части.

  • Масшабируемая поддержка компонентов: унификация и обобщение функционального и объектно-ориентированного программирования.

Scala реализован для платформ Java и JavaScript. Разработчики верят, что он станет преемником Java, обеспечив возможность быстрого создания компонентного программного обеспечения благодаря типобезопасности, лаконичности и высокой мощности.

Компиляторы и библиотеки Scala распространяются под лицензией BSD (Berkeley Software Distribution license – программная лицензия университета Беркли).

Особенности

В Scala используется единообразная объектная модель: значение представляет собой объект, а операция – вызов метода. При этом функции являются полноправными значениями – так реализуется парадигма функционального программирования. И каждая конструкция языка возвращает значение.

Но, в отличие от Java, в Scala объявляется не класс объекта, а сразу экземпляр объекта. Это естественная реализация шаблона проектирования Singleton («одиночка») – класса с единственным экземпляром.

Язык поддерживает абстракции типов и значений. К примеру, здесь есть гибкие симметричные конструкции примесей для композиции классов и типажей. Кроме того, доступны представления для внешних расширений компонентов (views) и поддержка обобщенных функций (generics), в частности, дженериков высшего типажа (generics of a higher kind). Views – очень мощный инструмент, полезный для интеграции. Он позволяет расширять класс новыми членами и типажами. Лаконичность кода на Scala можно продемонстрировать так:
 

 

Применение

На Scala созданы два крупных веб-фреймворка: Play и Lift. Play задействует платформы Coursera и Gilt, а самым популярным проектом на Lift является Foursquare. Кроме того, LinkedIn использует микрофреймворк Scalatra для поддержки своего Signal API.

Рывок популярности Scala обусловило и объявление Twitter в 2009 году: сервис микроблогов перевел с Ruby на Scala значительную часть серверного кода и продолжил работу в этом направлении. В 2011 году онлайн-версия газеты The Guardian была переписана с Java на Scala. Разработку на этом языке ведут Novell, Siemens, GridGain. Средство автоматической сборки Sbt, которое является одной из ключевых составляющих инфраструктуры разработки языка, также написано на Scala.

Так как Scala поддерживает «свободное смешивание» с Java, на нем можно писать Android-приложения. А возможность компиляции в JavaScript позволяет разрабатывать веб-приложения.

Почему Scala – выбор молодых и современных

Scala – считают академичным языком, писать на котором смогут немногие. Бытует мнение, что на Scala пишут «умники», а те, кто любит попроще, выбирают Python, Haskell или Erlang. Scala – достаточно сложный язык, но эта сложность позволяет реализовать высокую производительность и нестандартные решения на стыке функционального и объектно-ориентированного программирования.

На Scala будет просто перейти Java-разработчикам. Это прекрасный выбор и в качестве второго языка. 12 место в рейтинге RedMonk – отличный показатель популярности Scala. По сравнению с предыдущим кварталом 2018 года этот язык программирования улучшил свои позиции, поднявшись с 14 места. В других рейтингах позиции Scala не столь высоки: например, в списке TIOBE в мае 2018 года этот язык программирования оказался только 20-м месте. Правда, критерием для присвоения индекса служит количество поисковых запросов, содержащих название языка.

Еще один интересный показатель – «индекс предпочтения» GitHub, относительное количество пользователей языка, которые для следующего проекта в своей области выберут его же. Разочаровавшихся в Scala меньше, чем в Java или С++:



Количество пользователей, которые выберут Scala для работы над следующим проектом

 

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


Автор:
Обозреватель


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. zarucheisky 22.08.18 13:48 Сейчас в теме
Странная как бы новость. Зачем одинеснику скала...
papche; zabaluev; van_za; kild; ccserg; user774630; +6 3 Ответить
2. Gureev 22.08.18 14:46 Сейчас в теме
(1) 1Cникам давно пора расширять свои горизонты.
manuel; maxopik2; spezc; ELInfinito; user597616_i.d.kravchenko; olegtymko; roman.ch; KEV8383; dimisa; CyberCerber; neikist; Kochergov; +12 Ответить
3. kild 89 22.08.18 14:58 Сейчас в теме
(2) Ага, рандомный язык который на 12 месте и по которому мало литературы и работы. Или только 1сники настолько безумны и бездельники, что нечем больше заняться?)
portwein; Radkt; user597354_OSporysh; stanislav1esnik; evn-zorin; +5 1 Ответить
5. Gureev 22.08.18 15:05 Сейчас в теме
(3) А вдруг выстрелит. Сегодня на 12, а через 2 года на 1?
Kochergov; +1 Ответить
8. user774630 22.08.18 16:13 Сейчас в теме
(5) а вдруг завтра война. Схрон с тушенкой готов, ружье припрятано?
protexprotex; kild; +2 1 Ответить
9. Gureev 22.08.18 16:38 Сейчас в теме
(8)
а вдруг завтра война. Схрон с тушенкой готов, ружье припрятано?

А то!
TreeDogNight; Kochergov; +2 Ответить
16. Evil Beaver 8108 22.08.18 18:17 Сейчас в теме
(8) Надо пилить 1Scala наравне с 1Script, тогда, глядишь и поедет.
user597354_OSporysh; JohnyDeath; TreeDogNight; Silverbulleters; amon_ra; +5 Ответить
27. zarucheisky 28.08.18 12:30 Сейчас в теме
(16) Надо 1Script на .NET Core 2.0 переводить
Evil Beaver; +1 Ответить
28. Evil Beaver 8108 28.08.18 18:47 Сейчас в теме
(27) Зачем? Веб-движок переведен, ради докеров-шмокеров, а основной консольный для чего?
29. пользователь 14.04.20 06:33
Сообщение было скрыто модератором.
...
12. kild 89 22.08.18 17:14 Сейчас в теме
(5) А вдруг через год вообще про него забудут, а вдруг... Глупейшая логика.

Программист, который бессмысленно тратит свое время с такими приоритетами "а вдруг" и играет в слепую лотерею, точно никому не нужен.
Radkt; user774630; papche; stanislav1esnik; ccserg; +5 1 Ответить
18. ТыжПрограммист 22.08.18 18:28 Сейчас в теме
(12)
Программист, который бессмысленно тратит свое время с такими приоритетами "а вдруг" и играет в слепую лотерею, точно никому не нужен.

"Знал бы прикуп, жил бы в Сочи"
Kochergov; +1 Ответить
6. neikist 22.08.18 15:06 Сейчас в теме
(3) Язык конечно рандомный, но для расширения сознания судя по тому что я слышал довольно годный. К тому же если смотреть на график последний в статье - из первой пятерки он точно наиболее сильно сознание расширит.
Kochergov; maxPromC; +2 Ответить
14. kild 89 22.08.18 17:24 Сейчас в теме
(6) И чем же, пример?
Ну если для вас язык не инструмент, а психотропный препарат - BrainFuck вам в помощь. Или Haskell.
Radkt; nyam-nyam; +2 1 Ответить
15. neikist 22.08.18 18:01 Сейчас в теме
(14) В первую очередь программирование для меня это средство получения удовольствия. Но даже если рассматривать как инструменты - в скала реализовано очень много возможностей. По мнению некоторых - даже слишком много. Сам я с ним не работал, но насколько помню как минимум там и функциональная парадигма поддерживается, и ООП. Хотя специально я им не интересовался. И хочу поинтересоваться, чем это хаскель плох?
maxopik2; Kochergov; +2 Ответить
17. пользователь 22.08.18 18:18
Сообщение было скрыто модератором.
...
19. пользователь 22.08.18 18:29
Сообщение было скрыто модератором.
...
4. пользователь 22.08.18 15:02
Сообщение было скрыто модератором.
...
7. dimisa 135 22.08.18 15:16 Сейчас в теме
в свете последних статей ....
Просто не дождусь в новостях обзор языка GO.
myjob1c; Kochergov; +2 Ответить
10. Gureev 22.08.18 16:39 Сейчас в теме
(7) скорее clojure
Silverbulleters; Kochergov; dimisa; +3 Ответить
11. dimisa 135 22.08.18 16:51 Сейчас в теме
(10)
clojure

Рич Хикки разработал Clojure как современный Лисп для функционального программирования с интеграцией в Java-платформу, спроектированный для поддержки параллелизма.[5]


О, мисье знает толк в современных извращениях ;)
Kochergov; +1 Ответить
22. Silverbulleters 23.08.18 05:31 Сейчас в теме
(11) clojure крут, clojurescript+react еще круче https://reagent-project.github.io/

(defn timer-component []
  (let [seconds-elapsed (r/atom 0)]
    (fn []
      (js/setTimeout #(swap! seconds-elapsed inc) 1000)
      [:div
       "Seconds Elapsed: " @seconds-elapsed])))


ну ведь песня ;-)
13. пользователь 22.08.18 17:16
Сообщение было скрыто модератором.
...
20. protexprotex 113 22.08.18 18:39 Сейчас в теме
Что по мне, так c++ лучше нет. А если делать нечего будет (:-)), то на ассемблере буду писать. На Tasm + Ideal режим.
myjob1c; TreeDogNight; evn-zorin; Kochergov; +4 Ответить
21. Идальго 226 22.08.18 21:23 Сейчас в теме
Scala – считают академичным языком, писать на котором смогут немногие. Бытует мнение, что на Scala пишут «умники», а те, кто любит попроще, выбирают Python, Haskell или Erlang.

Вот ну очень спорное мнение. Всё в кучу одним словом )))
Kochergov; +1 Ответить
23. silberRus 72 23.08.18 09:43 Сейчас в теме
Неудачная картинка сравнения,

Во первых, там ошибка в инициализации переменной в цикле order, переменная коллекции и коллекция имеет одно название.

Во вторых, там неизвестно откуда появился order,

В третьих, есть стандартные методы коллекций, где код копирования в примере можно вызвать 1 методом, если без стандартных методов тогда в две строки с лямбда выражением:

List<Product> p = new ArrayList<>();
orders.forEach(o -> p.addAll(o));
Kochergov; +1 Ответить
24. Vovan1975 13 23.08.18 12:29 Сейчас в теме
Уважаемый автор не осветил самый важный вопрос - для чего Скала - лучший? Что она может лучше других? На каких задачах она лучше других?
Sиlьver; +1 1 Ответить
25. kolya_tlt 86 23.08.18 14:09 Сейчас в теме
какая-то устаревшая инфа по рейтингу языков
https://redmonk.com/sogrady/2018/08/10/language-rankings-6-18/
Kochergov; +1 Ответить
26. MikhailMKZ 23.08.18 18:43 Сейчас в теме
те, кто любит попроще, выбирают Python, Haskell или Erlang

Про Эрланг ничего не скажу, но что простого в Хаскеле? :)
30. ignor 235 13.02.22 06:41 Сейчас в теме
Присмотреться то это для бывалых пустяк вопрос, но вот есть у меня по нему пару книжек хороших, но вот начав их читать, читать про так называемое конкурентное программирование, я задумался а что собственно я на нём писать. какие задачи под него есть? Под Scala я имею ввиду. Погуглил вакансии с Scala в качестве требований. Пишут что писать поиск, то есть люди хотят замутить свой узконаправленный поисковик. Ну поиск это да. Ну на мысли сразу где поиск приходит идея о написании систем атаки серверов с помощью конкурентного программирования. А что ещё можно? Что можно наваять на нём полезного не имея больших вычислительных мощностей в своём арсенале и чтобы не сесть
Оставьте свое сообщение

См. также

В программу подготовки спортивных программистов вошли бег и скорость печати

Новость ИТ-Новость

Пятничное: в России вступил в силу стандарт подготовки по дисциплине «спортивное программирование». В стандарт вошли требования к физическим показателям спортсменов и скорости набора текста.

16.02.2024    645    VKuser24342747    2       

1

Росстандарт утвердил протокол LoRaWAN для интернета вещей

Новость ИТ-Новость

Федеральное агентство по техническому регулированию и метрологии (Росстандарт) утвердило национальный стандарт протокола LoRaWAN RU, таким образом он получил официальный статус. Технология используется для беспроводной передачи данных между устройствами интернета вещей.

19.01.2024    428    VKuser24342747    0       

2

Новый закон откладывает на год вступление в силу изменений в порядок регистрации на сайтах

Новость Законодательство ИТ-Новость

12 декабря вступил в силу Федеральный закон, меняющий срок, к которому все владельцы сайтов должны внести изменения в порядок авторизации пользователей на сайте. Закон вводит переходный период до 1 января 2025 года.

20.12.2023    608    VKuser24342747    2       

1

Вышло крупное обновление для Android Studio

Новость Мобильные приложения ИТ-Новость

Новая версия Android Studio под номером 2023.1 получила имя Hedgehog. Появились возможности контролировать производительность приложений и управлять подключенными устройствами.

07.12.2023    723    VKuser24342747    2       

3

GitHub опубликовал результаты ежегодного исследования проектов с открытым исходным кодом

Новость GitHub ИТ-Новость

GitHub собрал данные об Open Source проектах в рамках ежегодного исследования Octoverse. Компания изучила географию репозиториев, используемые языки программирования и нейросети, а также активность сообщества.

15.11.2023    489    VKuser24342747    1       

2

Некоммерческие проекты смогут получить бесплатный доступ к GigaChat API

Новость ИТ-компания ИТ-Новость

Компания «Сбер» заявила, что будет бесплатно предоставлять доступ к API нейросети для генерации текста GigaChat для некоммерческих проектов. Однако для них будет ограничено число доступных токенов.

01.11.2023    606    VKuser24342747    2       

3

Состоялся релиз свободной среды разработки Geany 2.0

Новость ИТ-Новость Программист

Вышла новая версия Geany 2.0. Обновление затронуло внешний вид программы, расширило поддержку файлов и сторонних проектов, добавило новые способы работы с кодом.

25.10.2023    692    VKuser24342747    0       

1

Минцифры подготовило критерии по выбору оператора реестра провайдеров хостинга

Новость Минцифры ИТ-Новость Роскомнадзор

Минцифры подготовило проект постановления, которое утверждает требования к организации, претендующей на статус оператора реестра провайдеров хостинга.

25.10.2023    359    VKuser24342747    0       

1

Минцифры составило алгоритм действий для компаний, у которых не работает VPN

Новость Минцифры ИТ-Новость

Минцифры подготовило разъяснения для российских организаций, у которых возникли перебои в работе VPN-сервисов для клиентов и сотрудников из-за блокировки запрещенных ресурсов Роскомнадзором.

24.10.2023    613    VKuser24342747    0       

0

«Сбер» объявила о доступности SberLinux OS Server для российских компаний

Новость Импортозамещение ИТ-Новость

«СберТех», дочерняя компания «Сбера», объявила о предоставлении доступа к собственной серверной операционной системе SberLinux OS Server российским компаниям. ОС включена в реестр отечественного ПО.

20.10.2023    833    VKuser24342747    0       

2

Минцифры внесло изменения в проект правил идентификации клиентов веб-хостингов

Новость Минцифры ИТ-Новость Роскомнадзор

Минцифры подготовило изменения в пакет документов, которые устанавливают новые требования для провайдеров хостинга. Ведомство расширило перечень допустимых методов идентификации клиентов.

18.10.2023    457    VKuser24342747    0       

1

Google выпустила финальную версию Android 14

Новость Android Google ИТ-Новость

Google выпустила новую версию мобильной ОС Android 14. Изменения затронули настройки внешнего вида и безопасности. Были расширены возможности камеры и инструментов для хранения данных.

12.10.2023    673    VKuser24342747    0       

1

Яндекс объявил об открытии исходного кода DataLens

Новость Аналитика ИТ-Новость Яндекс

BI-система Yandex DataLens теперь развивается в опенсорс. Код продукта выложен для всех на GitHub. Любой желающий сможет развернуть DataLens на своем железе и доработать его под свои сценарии применения.

03.10.2023    1372    ЕленаЧерепнева    1       

6

Роскомнадзор создаст реестр хостинг-провайдеров

Новость Минцифры ИТ-Новость Роскомнадзор

Минцифры подготовило несколько проектов постановлений, которые утверждают правила ведения реестра поставщиков хостинг-услуг, а также новые требования к провайдерам.

02.10.2023    562    VKuser24342747    0       

1

«СберТех» представил репозиторий GitVerse с ИИ-помощником для написания кода

Новость Импортозамещение ИТ-Новость Программист

«СберТех» начал прием заявок на тестирование веб-сервиса для публикации ИТ-проектов GitVerse. Платформа подходит для разработки программ с открытым и закрытым кодом.

26.09.2023    771    VKuser24342747    2       

1

ИП и юрлица смогут использовать смартфон для создания и замены электронной подписи

Новость ИТ-Новость ФНС Цифровая подпись

ФНС внесла изменения в правила оформления электронной подписи руководителя организации и ИП. Станет возможным продлевать ее и записывать при помощи мобильного устройства.

18.09.2023    416    VKuser24342747    1       

1

Журнал IEEE Spectrum опубликовал рейтинг популярности языков программирования

Новость ИТ-Новость Языки программирования

Журнал Института инженеров электротехники и электроники IEEE Spectrum подготовил рейтинг самых популярных языков программирования в 2023 году. Статистика разделена на три категории.

01.09.2023    1263    VKuser24342747    4       

2

В бета-версии Microsoft 365 появилась поддержка языка Python для Excel

Новость ИТ-Новость Языки программирования

С помощью библиотек и средств визуализации Python можно будет манипулировать данными Excel, а затем использовать полученные результаты в формулах, диаграммах и сводных таблицах.

28.08.2023    644    VKuser24342747    0       

2

Специалисты Калифорнийского университета установили, что боты справляются с CAPTCHA лучше, чем люди

Новость ИТ-Новость

Международная группа исследователей изучила эффективность тестов CAPTCHA. Ученые пришли к выводу, что технология больше мешает людям, потому что боты научились с ней справляться.

24.08.2023    1144    VKuser24342747    23       

2

Google Chrome начнет поддерживать квантово-устойчивые алгоритмы шифрования

Новость Google Безопасность ИТ-Новость

В версии Google Chrome 116 появится поддержка алгоритмов шифрования, устойчивых к попыткам дешифрации при помощи квантовых вычислений. Технология объединяет преимущества классической и инновационной криптографии.

24.08.2023    467    VKuser24342747    0       

1

В реестр российского ПО включен первый комплекс обработки больших данных

Новость Импортозамещение Минцифры ИТ-Новость Реестр ПО

Минцифры внесло в реестр отечественного ПО программно-аппаратный комплекс «Скала-Р», предназначенный для обработки больших данных. Это первый комплекс с таким функционалом, включенный в перечень.

22.08.2023    454    VKuser24342747    0       

1

Microsoft внедрила новые функции в GitHub Copilot и анонсировала Windows Copilot

Новость GitHub Искусственный интеллект

ИИ-помощник для разработчиков GitHub Copilot теперь не только в реальном времени анализирует код, предлагает варианты для его улучшения и помогает найти решение проблем в разработке, но и  показывает ссылки на репозитории, из которых взят код. 

17.08.2023    1140    VKuser24342747    0       

1

В JetBrains разработали ИИ-помощника для аналитиков данных

Новость Аналитика Искусственный интеллект

JetBrains представила нейросеть Ask AI для онлайн-блокнота Datalore. Виртуальный ассистент способен генерировать код на нескольких языках, предлагать доработки и упрощать процесс аналитики данных. 

16.08.2023    653    VKuser24342747    0       

1

Исследование: ChatGPT дает неправильный ответ на половину вопросов о программировании

Новость Искусственный интеллект ИТ-Новость

Чат-бот OpenAI ошибается в 52% случаев, когда отвечает на вопросы по программированию. Однако делает это так убедительно, что пользователи не замечают ошибки. 

14.08.2023    989    VKuser24342747    5       

3

Минцифры проведет эксперимент по цифровизации «жизненного цикла» госслужащего

Новость Минцифры ИТ-Новость

Минцифры подготовило постановление о проведении эксперимента по внедрению ИТ в управление «жизненным циклом» госслужащего. Ведомство намерено автоматизировать все этапы работы сотрудников госструктур.

04.08.2023    550    VKuser24342747    0       

2