Встречали в вакансиях позицию разработчика на Scala? Это редкий зверь, но платят нормально. Разберёмся, что это такое и зачем нужно.
Разработчик языка рассчитывал, что Scala станет преемником Java: он наследует многое хорошее из Java, работает по схожим принципам и добавляет что-то своё. И хотя Scala не стал таким же распространённым, всё равно стоит понять, из чего он сделан.
Плюсы Scala
Scala, как и Java, работает под JVM — виртуальной машиной Java (Java Virtual Machine). JVM — это такая прослойка между программой и железом. Благодаря этой прослойке один и тот же код можно исполнить на чём угодно, для чего есть JVM: и на компьютере, и на терминале оплаты, и на умном холодильнике. Не нужно каждый раз думать: «А какие там драйверы экрана?» или «С какой скоростью работает сетевой шлюз?» — всё это берёт на себя JVM, а мы пишем только логику и интерфейс.
Что это нам даёт.
- Scala совместим с Java-командами, поэтому если вы знаете Java, то сможете перейти и на Scala.
- Scala может работать с любым кодом на Java, независимо от его сложности.
- Чистейшая, незамутнённая объектно-ориентированность: даже сама программа — это один большой объект.
- Сильные механизмы абстракции позволяют одинаково просто программировать большие и маленькие системы и легко масштабировать их.
- Объединены объектно-ориентированный и функциональный подходы — в теории это должно способствовать распространению языка.
Минусы Scala
Но если всё было бы так просто, про Java все давно бы забыли, но этого не произошло. Более того, сейчас не так много Scala-вакансий на рынке, чтобы говорить о популярности этого языка. На это есть несколько причин:
1. Обзор языка Scala (Уроки программирования на Scala)
- писать на Scala сложнее, чем на Java, потому что из-за влияния объектно-ориентированного подхода многое приходится делать через объекты, а это не всегда удобно;
- читать Scala-код сложнее, чем ту же самую программу на Java;
- медленная компиляция — критичное место для больших проектов, когда постоянно нужно тестировать новые версии;
- Scala-программирование требует совершенно другого подхода к архитектуре и логике построения кода, но не все хотят тратить на это время, если можно взять уже готовое Java-решение.
Синтаксис
С точки зрения кода в Scala всё то же самое, что и в Java-языках, кроме некоторых ООП-особенностей, поэтому начнём с привычных деталей, а потом перейдём к отличиям.
Основы . Каждая команда заканчивается точкой с запятой, а присваивание и математические операторы такие же, как в Java и JavaScript.
Типов данных — много, как в любом типизированном языке. Как и в Ruby, каждый тип — это объект, который можно менять, добавлять в него новые методы.
Переменные. Объявляются с помощью служебных слов val и var, но разница между ними в Scala настолько размытая и непрозрачная, что иногда даже опытным разработчикам сложно понять, какое слово будет уместнее в каждой ситуации.
СИЛА Функционального Программирования / Всё о Scala / Интервью со Scala Developer Олегом Нижниковым
Условные операторы и циклы. Всё привычно — for, while и do-while, но с одним отличием: в цикле for применяется упрощённая запись для организации переменной цикла. Обратите внимание на код ниже — сколько танцев с бубном ради одного цикла, который сам занимает три строки (не считая комментария):
// создаём объект, потому что это Scala
object ForLoopDemo // определяем функцию main
def main(args: Array[String]) // делаем цикл от нуля до 5 включительно, переменная цикла — counter
for (counter <- 0 to 5)// выводим переменную цикла на экран
println(counter);
>
>
Кто и для чего использует Scala
У Scala нет явно выраженной области применения, как у некоторых других языков. С другой стороны, из-за объединения ООП и функционального программирования этот язык прижился в тех командах, которым нужно совмещать в работе оба подхода.
Второе преимущество — возможность запустить код в любом JVM-окружении, поэтому Scala выбирают те, кому нравится объектный подход, но не нравится то, как это сделано в Java.
Основные популярные фреймворки — Play и Lift, и их используют в основном СМИ и новостные сайты:
- BBC,
- Coursera,
- Guardian,
- The Huffington Post,
- LinkedIn,
- The New York Times,
- Foursquare.
С чего начать
Если хотите изучить основы Scala и попробовать свои силы в объектно-ориентированном программировании в мире Java, то вот с чего можно начать.
Большая статья в RSDN Magazine — « Обзор языка программирования Scala ». Хороший и понятный материал, но подан в сухом академическом стиле.
« Scala в примерах » в Викиучебнике — написано попроще, но без введения для новичков.
« Руководство по Scala » в Записках задумчивого программиста — просто, понятно, но иногда автор не даёт подробных объяснений тому, что происходит в коде.
Источник: dzen.ru
Язык программирования Scala
Scala — язык программирования, совмещающий объектно-ориентированную и функциональную парадигмы. “Внутри” Скала во многом базируется на синтаксисе и принципах Java. Он даже использует Java Virtual Machine для запуска одного кода на различных платформах.
История языка
Scala разработан в 2003 году сотрудниками политехнического университета Лозанны в Швейцарии. Главной задачей разработчиков было создание языка с максимальной масштабируемостью, то есть способностью справляться с возрастающим уровнем нагрузки при расширении компонентов. Основное внимание уделялось проработке абстрагирования и агрегирования составляющих языка.
В платформе также было решено объединить две парадигмы программирования — функциональную и объектную. Кроме мультипарадигмальности, важной особенностью Scala стала статическая типизация. Предыдущие статичные языки обычно придерживались только одной парадигмы.
Преимущества и недостатки Scala
К плюсам языка можно отнести несколько моментов.
- Кроссплатформенность.
Благодаря использованию JVM код на Скала запускается на любом устройстве, где установлена эта виртуальная машина. В том числе и на “умной технике” — от чайника до холодильника. Программисту при этом не приходится думать о драйверах и других аспектах совместимости. - Продвинутая масштабируемость.
При проектировании системы на Scala ее в любой момент можно расширить или “ужать” за счет абстрактных конструкций. Это упрощает планирование разработки. - Совместимость с Java.
У Scala и Java 100% интегрируемость. Оба языка без труда считывают код друг друга и уживаются в одной программе. Это позволяет строить сложные, многоуровневые системы и дорабатывать уже существующие проекты на Java с применением функционала Scala. - Параллелизм.
В Scala при помощи акторов удобно настраивается параллельное выполнение нескольких операций для ускорения работы программы. Такая модель параллелизма отличается от той, что применяется в большинстве других языков. - Полное погружение в ООП.
Код на Scala чаще всего пишут по объектно-ориентированному принципу. Сама программа на этом языке является одним большим объектом, что уже говорит о многом.
Есть у Scala и свои минусы.
- Усложненность в сравнении с Java.
Языки хоть и похожи, но не идентичны. На освоение Скала понадобиться время, даже при изначальном знании принципов Java. К тому же синтаксис Scala уже не настолько интуитивен и читабелен. - Долгая компиляция.
Сборка программы в исполняемый код на компиляторе Scala происходит довольно медленно. На больших проектах это может значительно замедлять разработку. - Малая популярность.
В распространенности Scala уступает не только своему “прародителю” Java, но и другим языкам. Многие программисты считают, что существующих возможностей привычных платформ вполне хватает для предметной разработки и переход на Scala, со значительно отличающейся архитектурой, не оправдывает себя. Но, как минимум на западе тенденция начинает меняться. Scala в свои продукты внедряют Twitter и другие крупные корпорации.
Основные отличия от Java
В целом код на Scala лаконичнее, чем на Java. При использовании функционального стиля решение задачи на Скала занимает в разы меньше строк. Синтаксис в Scala заметно упрощен — точки запятой в конце строки необязательны, как иногда и фигурные скобки.
Второй важный момент — отсутствие в Java ряда структур, добавленных в Scala. Например, case-классов и поддержки DSL.
Для Java, исключительно из-за его более длительного существования, написано больше фреймворков и в целом доступно больше инструментов разработки. Но Скала со временем также обрастает полезными дополнениями.
Хоть Джава и Скала оба используют байт-код для компиляции программы и ее перевода в машинный код, второй язык справляется с этим немного быстрее. Правда, при работе с сетевыми ресурсами разница становится уже малозначимой.
Основные сферы применения
Скала считается языком программирования общего назначения, и в теории подходит для решения любого рода задач — от создания десктопных программ до написания серверных приложений. При этом чаще всего язык применяется для разработки в веб-среде, особенно когда дело касается объемных, нагруженных проектов вроде социальных сетей, многостраничных информационных порталов и т.п. В этом помогают популярные фреймворки Scala — Lift и Play. Их на своих сайтах задействуют такие новостные гиганты, как BBC и New York Times.
Второе распространенное использование языка — разработка кроссплатформенного ПО. Программировать для большого числа устройств и операционных систем на Скала удобно за счет уже упоминавшейся Java Virtual Machine.
Примеры кода
Простой вывод надписи в консоли на Scala выглядит так.
object HelloWorld extends App
Элементарную функцию по добавлению к переменной определенного числа можно написать в две строки.
def addFive(a: Int) = a + 5 addOne(1)
Результатом выполнения будет 6.
Заключение
Scala во многом представляет из себя улучшенную версию Java с расширенными возможностями для программирования в функциональном стиле. Чаще всего Скала применяется для работы с веб-проектами и для создания кроссплатформенных приложений. Выбрав Scala в качестве основного языка разработки, можно сократить время на реализацию продукта и расширить возможности его применения.
Источник: appfox.ru
Зачем нужен Scala?
Встречали в вакансиях позицию разработчика на Scala? Это редкий зверь, но платят нормально. Разберёмся, что это такое и зачем нужно.
Разработчик языка рассчитывал, что Scala станет преемником Java: он наследует многое хорошее из Java, работает по схожим принципам и добавляет что-то своё. И хотя Scala не стал таким же распространённым, всё равно стоит понять, из чего он сделан.
Плюсы Scala
Scala, как и Java, работает под JVM — виртуальной машиной Java (Java Virtual Machine). JVM — это такая прослойка между программой и железом. Благодаря этой прослойке один и тот же код можно исполнить на чём угодно, для чего есть JVM: и на компьютере, и на терминале оплаты, и на умном холодильнике. Не нужно каждый раз думать: «А какие там драйверы экрана?» или «С какой скоростью работает сетевой шлюз?» — всё это берёт на себя JVM, а мы пишем только логику и интерфейс.
Что это нам даёт.
- Scala совместим с Java-командами, поэтому если вы знаете Java, то сможете перейти и на Scala.
- Scala может работать с любым кодом на Java, независимо от его сложности.
- Чистейшая, незамутнённая объектно-ориентированность: даже сама программа — это один большой объект.
- Сильные механизмы абстракции позволяют одинаково просто программировать большие и маленькие системы и легко масштабировать их.
- Объединены объектно-ориентированный и функциональный подходы — в теории это должно способствовать распространению языка.
Минусы Scala
Но если всё было бы так просто, про Java все давно бы забыли, но этого не произошло. Более того, сейчас не так много Scala-вакансий на рынке, чтобы говорить о популярности этого языка. На это есть несколько причин:
- писать на Scala сложнее, чем на Java, потому что из-за влияния объектно-ориентированного подхода многое приходится делать через объекты, а это не всегда удобно;
- читать Scala-код сложнее, чем ту же самую программу на Java;
- медленная компиляция — критичное место для больших проектов, когда постоянно нужно тестировать новые версии;
- Scala-программирование требует совершенно другого подхода к архитектуре и логике построения кода, но не все хотят тратить на это время, если можно взять уже готовое Java-решение.
Синтаксис
С точки зрения кода в Scala всё то же самое, что и в Java-языках, кроме некоторых ООП-особенностей, поэтому начнём с привычных деталей, а потом перейдём к отличиям.
Основы. Каждая команда заканчивается точкой с запятой, а присваивание и математические операторы такие же, как в Java и JavaScript.
Типов данных — много, как в любом типизированном языке. Как и в Ruby, каждый тип — это объект, который можно менять, добавлять в него новые методы.
Переменные. Объявляются с помощью служебных слов val и var, но разница между ними в Scala настолько размытая и непрозрачная, что иногда даже опытным разработчикам сложно понять, какое слово будет уместнее в каждой ситуации.
Условные операторы и циклы. Всё привычно — for, while и do-while, но с одним отличием: в цикле for применяется упрощённая запись для организации переменной цикла. Обратите внимание на код ниже — сколько танцев с бубном ради одного цикла, который сам занимает три строки (не считая комментария):
// создаём объект, потому что это Scala object ForLoopDemo < // определяем функцию main def main(args: Array[String]) < // делаем цикл от нуля до 5 включительно, переменная цикла — counter for (counter >
Кто и для чего использует Scala
У Scala нет явно выраженной области применения, как у некоторых других языков. С другой стороны, из-за объединения ООП и функционального программирования этот язык прижился в тех командах, которым нужно совмещать в работе оба подхода.
Второе преимущество — возможность запустить код в любом JVM-окружении, поэтому Scala выбирают те, кому нравится объектный подход, но не нравится то, как это сделано в Java.
Основные популярные фреймворки — Play и Lift, и их используют в основном СМИ и новостные сайты:
- BBC,
- Coursera,
- Guardian,
- The Huffington Post,
- LinkedIn,
- The New York Times,
- Foursquare.
С чего начать
Если хотите изучить основы Scala и попробовать свои силы в объектно-ориентированном программировании в мире Java, то вот с чего можно начать.
Большая статья в RSDN Magazine — «Обзор языка программирования Scala». Хороший и понятный материал, но подан в сухом академическом стиле.
«Scala в примерах» в Викиучебнике — написано попроще, но без введения для новичков.
«Руководство по Scala» в Записках задумчивого программиста — просто, понятно, но иногда автор не даёт подробных объяснений тому, что происходит в коде.
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Источник: thecode.media