Apeiron
RU UA EN

IT технологии: Scala

3 янв. 2023 г., 14:16:10

Содержание статьи:

История создания Scala

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

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

Martin Odersky - creator of Scala


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

За основу разработки языка были взяты две идеи:

  1. Язык программирования компонентного ПО должен быть масштабируемым в том смысле, что должна быть возможность с помощью одних и тех же концепций описать как маленькие, так и большие части. Поэтому внимание было сконцентрировано на механизмах абстракции, композиции и декомпозиции вместо введения большого количества примитивов, которые могут быть полезными только на каком-то одном уровне масштабирования.
  2. Масштабируемая поддержка компонентов может быть предоставлена языком программирования, унифицирующим и обобщающим объектно-ориентированное и функциональное программирование. Некоторые из основных технических новшеств Scala — это концепции, представляющие собой сплав этих парадигм программирования. В статически типизированных языках, к которым относится Scala, эти парадигмы до сих пор были почти полностью разделены.

На дизайн языка оказали влияние многие языки и исследовательские работы.

Прежде всего, язык впитал значительное число концепций и синтаксических соглашений Java и C#. Способ выражения свойств во многом заимствован из Sather. Из Smalltalk взята концепция унифицированной объектной модели. Из BETA пришла идея, что всё, включая классы, должно допускать вложенность. Абстрактные типы в Scala очень похожи на абстрактные типы сигнатур в SML и OCaml, обобщённые в контексте полноценных компонентов.

В некотором смысле Scala — это продолжение работы Pizza. Как и Pizza, Scala компилируется под Java VM, добавляя функции высшего порядка, сопоставление с образцом, конструкции, которые исходно были созданы в сообществе функционального программирования. В то время как Pizza обратно совместима с Java, цель Scala — всего лишь возможность взаимодействия, так что у неё больше степеней свободы в дизайне. Ещё одна цель Scala — предоставить расширенные конструкции для абстракции и композиции компонентов — общая с несколькими недавними исследовательскими разработками.

Scala


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

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

Особенности Скала

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

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

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

scala vs java


Scala в основном используется в качестве enterprise языка (для разработки корпоративных приложений).Это подтверждают сервисы использующие его, например: Twitter, LinkedIn, Foursquare, Novell, Siemens, GridGain и другие.

Scala - язык программирования, реализованный для платформы Java. Используется для создания серверной части приложения. Кто пишет на Scala? Не будет преувеличением сказать, что большинство разработчиков Scala пришли из Java. Java — очень похожий язык с точки зрения синтаксиса и задач, которые он реализует.

Для чего используют язык Scala?

Давайте ответим на вопрос: Что можно разработать на языке Scala?

  • Веб-разработка веб-интерфейса с ScalaJS
  • Разработка мобильных приложений под Android и IOS — с Scala Native
  • Интернет вещей
  • Разработка игр
  • НЛП — обработка естественного языка с использованием набора библиотек ScalaNLP
  • Тестирование передовых методов программирования, таких как функциональное программирование и объектно-ориентированное программирование

Умный компилятор Scala

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

Scala — это единственный язык, где можно писать код, и он сразу работает без серьезной отладки. Конечно, так происходит не всегда, но с Java, Javascript, C, Pascal и BASIC так не происходило никогда. Принято говорить, что Java — это язык для компилятора, а Scala — это язык для программиста.

Статическая типизация Scala

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

Именно по этой причине не стоит начинать обучение с Ruby, JavaScript, C и C++. Динамическая типизация — это верный способ начать со сложностей в освоении программирования.

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

ООП и Скала

ООП (Объектно-ориентированное программирование) — это самая популярная парадигма, без которой не обходится ни один современный язык программирования.

В Scala эта парадигма изначально присуща языку, в отличии от Python, C/C++ и в каком-то смысле JavaScript. Разумеется, на текущий момент у этих языков с ООП полный порядок.

Функциональное программирование

Функциональное программирование — это многообещающая тенденция. В Scala она присуща в не меньшей степени чем ООП, и они обогащают друг друга благодаря этому языку. Scala — первый язык промышленного уровня с такими свойствами. Сейчас за ним подтягивается Kotlin и другие новые языки программирования.

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

Расширяемость Scala

Как известно, название языка изначально появилось как аббревиатура Scalable Language. Особенности языка позволяют писать гибкие и красивые Предметно-ориентированные (DSL) библиотеки и простые скрипты.

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

 характеристики scala


Зачем учить Скала?

Вот основные причины изучения Scala:

  • Scala легко изучить для объектно-ориентированных программистов, разработчиков Java. Это становится одним из популярных языков в последние годы.
  • Scala предлагает первоклассные функции для пользователей
  • Scala может выполняться на JVM, что открывает путь к взаимодействию с другими языками.
  • Он предназначен для приложений, которые работают одновременно, распределены и устойчивы к сообщениям. Это один из самых требовательных языков этого десятилетия.
  • Это сжатый, мощный язык и может быстро расти в соответствии с потребностями своих пользователей.
  • Он является объектно-ориентированным и обладает множеством функций программирования, которые предоставляют разработчикам большую гибкость при написании кода.
  • Он имеет меньший шаблон, если вы перешли с Java
  • Фреймворки Lift и Play, написанные на Scala, находятся на кривой роста популярности.

Начало работы со Scala

Scala — очень совместимый язык, поэтому его очень легко установить в операционных системах Windows и Unix. Scala легко программировать и изучать, потому что синтаксически он похож на другие широко используемые языки. Программы Scala можно писать в любом текстовом редакторе, таком как блокнот или notepad ++. Можно также использовать онлайновую IDE для написания кодов Scala или даже установить ее в своей системе, чтобы сделать эти коды более удобными для написания, потому что IDE предоставляют множество функций, таких как интуитивно понятный редактор кода, отладчик, компилятор и т. Д. Для начала, написание кодов Scala и выполнение различных операций, необходимо установить Scala в своей системе. Это можно сделать, следуя пошаговым инструкциям, приведенным на ресурсе:Инсталлятор Scala

как установить Scala


В чем преимущество Scala?

Давайте рассмотрим плюсы и минусы Scala

Scala, как и Java, работает под JVM — виртуальной машиной Java (Java Virtual Machine). JVM — это такая прослойка между программой и железом. Благодаря этой прослойке один и тот же код можно исполнить на чём угодно. Для этого JVM есть и на компьютере, и на терминале оплаты, и на умном холодильнике. Не нужно каждый раз думать: «А какие там экранные драйверы?» или «С какой скоростью работает сетевой шлюз?» — всё это берёт на себя JVM, а мы пишем только логику и интерфейс.

Что это нам даёт.

  • Scala совместим с Java-командами, поэтому если вы знаете Java, то сможете перейти и на Scala.
  • Scala может работать с любым кодом на Java, независимо от его сложности.
  • Чистейшая, незамутнённая объектно-ориентированность: даже сама программа — это один большой объект.
  • Сильные механизмы абстракции позволяют одинаково просто программировать большие и маленькие системы и легко масштабировать их.
  • Объединены объектно-ориентированный и функциональный подходы — в теории это должно способствовать распространению языка.

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

  • писать на Scala сложнее, чем на Java, потому что из-за влияния объектно-ориентированного подхода многое приходится делать через объекты, а это не всегда удобно;
  • читать Scala-код сложнее, чем ту же самую программу на Java;
  • медленная компиляция — критичное место для больших проектов, когда постоянно нужно тестировать новые версии;
  • Scala-программирование требует совершенно другого подхода к архитектуре и логике построения кода, но не все хотят тратить на это время, если можно взять уже готовое Java-решение.

Scala 3

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

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

Но некоторые решения, принятые более 15 лет назад, были ошибочными, что приводило к запутанному или избыточному коду. И сейчас создатели языка действительно его улучшают. После этих изменений у Scala значительно больше шансов стать первым языком программирования.

Scala 3.0


Долгожданное событие - выпуск Scala 3.0. состоялось в 2021 году.

Рейтинги и индексы Scala

Индекс TIOBE по итогам декабря 2022 года показывает, что Java является одним из самых популярных языков программирования. Он уверенно входит уже 20 лет в пятерку самых популярных языков программирования, а в течении пятнадцати лет начиная с 2001 занимал первые строчки рейтингов.

рейтинг Java


Между Java и Scala в этом рейтинге наблюдается большой разрыв. Впрочем, Scala уступает также языкам Lua, Fortran, Lisp, Ada и Cobol, расположившись на 32 месте. Однако в рейтинге 50 мест, и Scala все-таки сумел обойти функционально-логические языки Prolog и Haskell.

Tiobe рейтинг Scala


В этом рейтинге у Scala дела не так плохи. Согласно данным IEEE Spectrum за 2022 год, он занимает 15 место. Java тоже находится в лидерах, но на этот раз на 5 месте. Составители рейтинга указывают, что область применения Scala у них ограничена только веб- и мобильной разработкой. Разработка для ПК во внимание не принимается.

IEEE Spectrum рейтинг Scala


По данным опроса Github на начало 2022 года, Scala занимает 14 место. Java занимает 3 место.

Вакансии Scala

Если вы планируете начать свою карьеру как Scala разработчик - вам будет интересно ознакомиться с вакансиями Junior Scala developer. На сайте Apeirondb.com выберите вакансии с технологией: Scala. А также, очень легко осуществить поиск при помощи телеграм бота HIRE:bot(t.me/hireIT_bot) @hireIT_bot, который при правильной настройке, будет отправлять вам только вакансии Scala developer.

Полезные ссылки

  • твиттер Мартина Одерски
  • Dependent Object Types
  • теоретические основы языка Scala 3
  • Вот сжатый рассказ Мартина Одерски про новую версию языка: Countdown to Scala 3 by Martin Odersky. Для опытных разработчиков — интересная статья Annoying things in Scala 2 that’ll be (mostly) gone in Scala 3