Scala - объектно-ориентированный и в то же время функциональный язык, представляющий собой, по сути, улучшенную версию Java. Для трансляции кода на устройства с различными ОС Скала применяет интерпретатор Java Virtual Machine.
История развития
Scala создан группой ученых из Лозаннского политехнического университета в Швейцарии в 2003 году. Перед разработчиками стояла задача сделать полностью масштабируемый язык, программы на котором можно было бы расширять и сокращать, контролируя уровень нагрузки на систему. При исполнении задумки акцент был сделан на двух вещах. Во-первых, на сочетании объектно-ориентированной и функциональной парадигм программирования. Во-вторых, на расширении инструментов абстракции и агрегации в коде. Кроме того, в Скала была применена статическая типизация, что не характерно для языков с несколькими стилями разработки.
Плюсы и минусы языка
Преимущества Scala вытекают из его изначальной концепции.
- Работа на разных платформах.
Совместимость с любыми устройствами достигается через Java Virtual Machine. Виртуальная машина переводит код, написанный на Scala, в промежуточный байт-код. Обработанную программу способен считать любой гаджет, на котором установлена JVM, и ему для этого не понадобятся драйвера или другие инструменты. Это касается даже умных вещей, работающих в связке IoT (Internet of Things). - Интегрируемость с Java.
Scala полностью совместим с Java и может применяться совместно с ним для разработки единой системы. Программы на Джава могут быть значительно доработаны и оптимизированы с помощью функций Скала. - Высокая масштабируемость.
Абстрагирование позволяет менять архитектуру программы в большую или меньшую сторону, не перегружая систему. Планирование разработки за счет этого становится более гибким. - Продвинутый параллелизм.
Для распределения параллельных потоков в Scala применяются акторы. Они ускоряют обработку данных и устраняют зависания программы. - Широкие возможности для ООП.
Скала - это объектно-ориентированное программирование в чистом виде. Любая программа на этом языке - сама по себе объект, содержащий внутри все описываемые методы.
Есть у языка и ряд недостатков.
- Усложненный подход.
В сравнении с Java код на Scala выглядит менее интуитивным, и в целом архитектура построения программ на этих языках заметно отличается, хоть во многих моментах они и схожи. - Медленный компилятор.
Скорость трансляции программы в машинный код у Scala ниже, чем у большинства других языков. Из-за этого тестирование и отладка проектов, особенно крупных, растягивается во времени. - Относительно низкая распространенность.
Да, Scala - не самый популярный язык. Во многом из-за того, что функционала того же Java, либо C++ и Python, обычно хватает для решения распространенных практических задач программирования. Но иногда, например, при построении высоконагруженных веб-систем, Скала проявляет себя значительно лучше.
Где применяется Scala
Скала - универсальный язык без узкой специализации. На нем пишется программное обеспечение для разных устройств - от компьютеров до “умных” холодильников. Уже упоминавшаяся раньше JVM делает код кроссплатформенным.
Фреймворки Play и Lift сделали Scala удобным инструментом для разработки и поддержки крупных сайтов с высокой посещаемостью. Это язык, к примеру, используют Twitter, новостные ресурсы Guardian и New York Times. Скала обеспечивает им стабильную работу при постоянном росте нагрузки на сервера.
Главные отличия от Java
Можно выделить несколько черт, разделяющих два рассматриваемых родственных языка.
- Синтаксис.
Scala менее “придирчив” к форматированию кода. Компилятор без проблем поймет код без разделяющих точек с запятой, а в некоторых случаях и без фигурных скобок. - Новые структуры.
В Java нет case-классов, программирования в DSL стиле и некоторых других возможностей, добавленных в Scala. - Фреймворки и библиотеки.
Java гораздо старше Scala, и поэтому в его арсенале накопилось больше инструментов разработки. Но ситуация постепенно меняется, и у Скала появляются достаточно мощные расширения, как, например, веб-фреймворки. - Скорость компиляции.
Java сам по себе не самый быстрокомпилирующийся язык, и Scala немного обыгрывает его в этом вопросе. В веб-среде тем не менее это не имеет принципиального значения.
Примеры кода
Элементарный вывод надписи на экран в своей краткой версии занимает две строки.
object HelloWorld extends App {
println("Hello, World!")
}
Рассмотрим также пример простой функции, выполняющей сложение двух чисел.
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
Как заметно, программа всегда начинается с объявления объекта.
Заключение
Scala - мультипарадигмальный язык программирования, направленный на разработку сложных систем с переменной нагрузкой. Прародителем Скала можно назвать Java. У этих платформ действительно есть много общего, хотя присутствуют и различия. Среди преимуществ Scala - быстрая масштабируемость, кроссплатформенность и статическая типизация. Для владельца It-продукта разработка на Scala означает стабильность системы и возможность ее быстрого расширения.