Перейти к содержанию

Программирование на языке Scala/Обзор языка

Материал из Викиверситета

Scala означает «масштабируемый язык» (от англ. scalable language). Это название он получил, поскольку был спроектирован так, чтобы расти вместе с запросами своих пользователей. Есть гарантия, что вы не сможете перерасти язык или отказаться от него без жесткого насилия. ))

В данном описании кратко приведены характеристики языка программирования Scala. Некоторые понятия будут более подробно рассмотрены в дальнейшем.

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

Язык программирования Scala - это промышленный язык программирования, т.е. на нем пишут реальные высоконагруженные, сложные и надежные проекты, которые работают во всех отраслях промышленности. Язык существует уже относительно давно (создание 2004 г.) и на нем написано много проектов.

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

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

С другой стороны, он не является "абсолютно строгим", не ограничит вас в написании сильно нужного в данный момент "говно-кода" или маленьких вспомогательных "скриптов". Таким образом, разумный выбор элементов языка возложен на разработчика. Это делает язык универсальным и практичным, но требует программной дисциплины и проектных договоренностей при разработке.

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

Scala — объектно-­ориентированный язык в чистом виде: каждое значение является объектом и каждая операция — вызовом метода. Забудьте про нестыковки в объектной модели из других языков. Но нет, некоторые еще остались из за совместимости с JVM. Объектно-­ориентированный подход - является неотъемлемой частью современного программирования. При разумном использовании, он органично переплетается с другими стилями. Основной смысл объектно-ориентированного подхода - это контейнеризация кода и придание контейнерам определенной гибкости. Это очень полезный подход в больших программах.

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

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

Scala - JVM совместимый язык. JVM, или Java Virtual Machine (Виртуальная машина Java), представляет собой виртуальные машины для разных операционных систем и платформ, выполняющие стандартный байт-код, подготовленный на разных языках программирования. При создании программ, в этом случае, нет необходимости учитывать особенности конкретной платформы. Таким образом программа разрабатываемая на Scala может работать на всех современных платформах, начиная от умных часов, до облочных технологий или супер-компьютеров. Scala может использовать существующие Java-библиотеки, которых создано очень много, и взаимодействовать с другими языками, такими как Java, Kotlin и Groovy, также работающими на JVM.

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

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