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

22.08.2018     

Современные разработчики хотят от новых языков программирования краткости, понятности и типобезопасности. Именно таким был создан 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; kadild; 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. kadild 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; kadild; +2 1 Ответить
9. Gureev 22.08.18 16:38 Сейчас в теме
(8)
а вдруг завтра война. Схрон с тушенкой готов, ружье припрятано?

А то!
TreeDogNight; Kochergov; +2 Ответить
16. Evil Beaver 7135 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 7135 28.08.18 18:47 Сейчас в теме
(27) Зачем? Веб-движок переведен, ради докеров-шмокеров, а основной консольный для чего?
29. пользователь 14.04.20 06:33
Сообщение было скрыто модератором.
...
12. kadild 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. kadild 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 127 22.08.18 15:16 Сейчас в теме
в свете последних статей ....
Просто не дождусь в новостях обзор языка GO.
myjob1c; Kochergov; +2 Ответить
10. Gureev 22.08.18 16:39 Сейчас в теме
(7) скорее clojure
Silverbulleters; Kochergov; dimisa; +3 Ответить
11. dimisa 127 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 135 22.08.18 18:39 Сейчас в теме
Что по мне, так c++ лучше нет. А если делать нечего будет (:-)), то на ассемблере буду писать. На Tasm + Ideal режим.
myjob1c; TreeDogNight; evn-zorin; Kochergov; +4 Ответить
21. Идальго 197 22.08.18 21:23 Сейчас в теме
Scala – считают академичным языком, писать на котором смогут немногие. Бытует мнение, что на Scala пишут «умники», а те, кто любит попроще, выбирают Python, Haskell или Erlang.

Вот ну очень спорное мнение. Всё в кучу одним словом )))
Kochergov; +1 Ответить
23. silberRus 69 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 65 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

Про Эрланг ничего не скажу, но что простого в Хаскеле? :)
Оставьте свое сообщение

См. также

Microsoft предложила установить финальную версию Windows 11 на неделю раньше

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

Официальная дата релиза Windows 11 – 5 октября 2021 года. Однако Microsoft открыла доступ к обновлению ОС уже сейчас через канал тестирования Release Preview.

вчера в 12:29    2766    VKuser24342747    3       

JetBrains открыла ранний доступ к новой IDE для Data Science

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

7 сентября JetBrains разместила в своем блоге статью с информацией о том, что новая IDE DataSpell, которая с марта 2021 года находилась в закрытом тестировании по программе раннего доступа (EAP), становится доступной для всех желающих.

24.09.2021    7200    capitan    4       

Microsoft предлагает отказаться от паролей в пользу сервиса Authentication

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

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

24.09.2021    1897    VKuser24342747    3       

Правительство утвердило разработку российского аналога GitHub

Новость ИТ-новость Цифровая экономика

Премьер-министр Михаил Мишустин на форуме Kazan Digital Week анонсировал создание отечественного репозитория, аналогичного GitHub. Проект реализуется в рамках второго пакета поддержки ИТ.

22.09.2021    6280    VKuser24342747    20       

Microsoft присоединилась к Open Infrastructure Foundation для развития облаков

Новость ИТ-новость Новости компаний Облачные технологии

Microsoft стала платиновым членом организации Open Infrastructure Foundation. Компания будет представлять интересы своих телекоммуникационных клиентов в OpenStack.

15.09.2021    4140    VKuser24342747    0       

Microsoft разрешит устанавливать Windows 11 на старые компьютеры

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

Microsoft пересмотрела правила установки Windows 11, которые не позволяли использовать ОС на компьютерах, не соответствующих системным требованиям. Для инсталляции придется создать загрузочный диск.

14.09.2021    3117    VKuser24342747    0       

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

Новость Искусственный интеллект ИТ-новость Цифровая экономика

В столичном метрополитене внедряют систему FacePay. С 15 октября оплатить проезд можно будет, не доставая смартфон, карту или жетоны из кармана.

14.09.2021    3115    user1015646    2       

«Яндекс» представил технологию автоматического перевода любых видео на русский язык

Новость ИТ-новость Яндекс

«Яндекс» сделал функцию автоматического закадрового перевода иностранных роликов доступной для почти любых видео в интернете. Функция встроена в фирменный браузер компании.

13.09.2021    2764    VKuser24342747    4       

Исследователи синтезировали выразительную устную речь

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

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

10.09.2021    9687    user1015646    0       

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

Новость GitHub Автоматизация Интернет ИТ-новость

Начинающим программистам часто сложно настроить среду разработки и установить весь необходимый софт. Для них, а также для специалистов, которые работают в распределенных командах, GitHub запустил новый сервис github.dev.

10.09.2021    5835    user1015646    0       

Раскрыта дата релиза Windows 11

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

Microsoft официально объявила, когда станет доступна новая версия самой популярной десктопной ОС. Обновиться с Windows 10 до Windows 11 можно будет уже 5 октября 2021 года.

09.09.2021    10270    user1015646    0       

В Google научились увеличивать изображения в 16 раз с восстановлением деталей

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

Раньше увеличить видео с камер наблюдения в десятки раз получалось только у героев фильмов. Но теперь такая возможность существует и в реальной жизни – инженеры Google разработали прорывную технологию масштабирования изображений.

09.09.2021    4559    user1015646    3       

Эксперты подготовили рекомендации по использованию кириллицы в доменах и почте

Новость Интернет ИТ-новость

Рабочая группа представила стандарты внедрения, обработки, хранения, валидации и адаптации кириллических символов для программ, поддерживающих доменные имена и email-адреса.

07.09.2021    3031    VKuser24342747    0       

Госструктуры перейдут на российские системы видеоконференций

Новость Импортозамещение ИТ-новость Облачные технологии

Российских чиновников переводят на использование отечественного сервиса видеоконференций. Будут внедрять систему TrueConf на базе ОС Astra Linux и процессоров Baikal-M от «Байкал Электроникс».

03.09.2021    3475    user1015646    0       

Минэкономики раскритиковало требования к обновлению оборудования для суверенного Рунета

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

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

03.09.2021    2816    VKuser24342747    0       

Разработчики назвали любимые языки программирования

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

Крупнейший форум для разработчиков Stack Overflow составил рейтинг любимых языков программирования. Первую строчку списка занял молодой, но перспективный Rust.

02.09.2021    5448    user1015646    3       

Петербургские ученые обучили нейросеть находить вредоносных ботов в соцсетях

Новость Безопасность Искусственный интеллект ИТ-новость Соцсети

Сотрудники Санкт-Петербургского федерального исследовательского центра Российской академии наук (СПб ФИЦ РАН) создали решение для поиска ботов, размещающих спам и дезинформацию на любом языке.

02.09.2021    2615    VKuser24342747    1       

Windows Server исключается из эксперимента по поставке обновлений Microsoft WaaS

Новость Windows ИТ-новость Новости компаний Облачные технологии

По результатам четырехлетнего эксперимента Windows as a Service Microsoft решила, что больше не будет обновлять Windows Server несколько раз в год. Для серверной ОС было решено вернуться к практике обновления каждые 2-3 года.

01.09.2021    5751    SKravchenko    0       

Microsoft добавила в Power BI инструменты аналитики для Angular-приложений

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

Microsoft представила новый компонент для создания веб-сервисов аналитики данных. Он позволит интегрировать функции Power BI в Angular-приложения.

31.08.2021    3540    user1015646    0       

Windows 11 лишится нескольких функций предыдущей версии системы

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

Microsoft в бета-версии Windows 11 изменила привычные функции. Из ОС исчезло отображение секунд на часах и возможность быстро добавлять события в календарь, а кнопка «Пуск» переместилась в центр панели задач.

31.08.2021    5108    VKuser24342747    6       

GitHub в версии утилиты CLI 2.0 добавил поддержку расширений

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

Разработчики GitHub представили вторую версию утилиты для управления проектами при помощи командной строки CLI. Приложение поддерживает несколько стандартных расширений и создание собственных.

27.08.2021    6635    VKuser24342747    0       

Круглая дата: ядру Linux исполнилось 30 лет

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

Ядро Linux отмечает юбилей. О создании новой ОС 21-летний Линус Торвальдс объявил 25 августа 1991 года.

27.08.2021    6403    user1015646    2       

Искусственный интеллект научился распознавать изображения лучше человека

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

Алгоритм компьютерного зрения впервые превзошел человека. В экспериментах людям и системе искусственного интеллекта предлагали определить, что изображено на фото, и ответить на вопросы. Результат ИИ оказался выше, чем у человека.

26.08.2021    3864    user1015646    5       

Facebook представил криптобиблиотеку для разработчиков – Winterfell

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

Специалисты Facebook выпустили новую библиотеку Winterfell. Проект с открытым исходным кодом может генерировать доказательство вычислительной целостности STARK.

24.08.2021    5567    user1015646    3       

В GitHub добавлена поддержка цитирования из репозиториев

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

GitHub позволил использовать файл CITATION.cff, в котором можно указать, как правильно ссылаться на содержимое репозитория при написании академических публикаций.

24.08.2021    6036    VKuser24342747    0