Статьи

10 причин изучать язык программирования Scala

Один из вопросов, которые мой читатель часто задает мне, будет ли я изучать Scala? У Scala лучшее будущее, чем у Java, или почему Java-разработчик должен изучать Scala и так далее. Ну, может быть много причин для изучения Scala, например, вы вынуждены учиться, потому что он использовался в новой компании, к которой вы присоединились, или ваш архитектор решений решил использовать его, но это другая история. Здесь мы поговорим о причинах, которые побуждают разработчиков Java изучать Scala. Scala стала одной из самых мощных альтернатив Java в последнее время. Это был язык выбора JVM, оставляя
Groovy и Clojure далеко позади, и предпочитают в качестве языка, на котором люди хотят писать больше всего кода.

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

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

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

10 причин изучать язык программирования Scala

Вот некоторые из причин, по которым я думаю, что Java-программисты или, по-любому, любой программист должен изучать Scala:

1) Мультипарадигмальный язык

Scala немного отличается от Java, поскольку поддерживает две парадигмы программирования: объектно-ориентированное программирование (ООП) и функциональное программирование (ФП). Для развития навыков программирования полезно выучить хотя бы один язык из разных парадигм, например, императивный, логический, функциональный и ООП, а Scala дает вам возможность изучить как функциональный, так и ООП вместе.

Книга Pragmatic Programmer также советует вам изучать новый язык программирования каждый год. Scala позволяет вам определять типы, связанные как с атрибутами данных (с классами, ведущими себя как классы C ++ / Java), так и с атрибутами поведения (с признаками, соответствующими интерфейсам Java).

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

Эта комбинация функций позволяет писать программы Scala, которые являются довольно лаконичными и элегантными. Многопарадигма — одна из самых сильных сторон продаж Scala, которую Java 8 также попыталась представить лямбда-выражениями (см. Новые возможности Java SE 8 ), но она все еще на пару шагов позади. Я думаю, что Scala всегда будет более функциональной, чем Java, но это тема другой дискуссии.

2) Взаимодействие с Java

По моему мнению, выбор Scala взаимодействия с Java — лучшее, что может случиться со Scala. Scala работает на виртуальной машине Java (JVM) и может прекрасно взаимодействовать с кодом Java. Это означает, что разработчик Scala может использовать библиотеки Java непосредственно из кода Scala.

Учитывая, что многие Java-разработчики превращаются в Scala, это идеальный способ использовать свой многолетний опыт в программировании в реальном мире. Также можно вызывать код Scala из Java, и вы можете легко написать часть своей программы на Scala, а остальную часть — на Java.

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

3) Встроенный язык Best Practices и Patterns

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

Некоторые из лучших практик и шаблонов встроены в сам язык, например, val объявляет неизменность верхнего уровня, что намного лучше, чем перегруженный финал в Java, или const / только для чтения в C # со странными правилами, связанными с ним.

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

4) Выразительность языка

Когда вы сравниваете Scala с Java, как я делал в моем предыдущем посте о разнице между Scala и Java , Scala, безусловно, выигрывает у Java. Скала по своей сути очень выразительна. Кроме того, на Scala написано огромное количество действительно красивого и полезного кода. Это привлекает все больше разработчиков Java для изучения Scala, которым нравится такой красивый код.

Чтобы дать вам представление, вот программа подсчета слов, написанная как на Java, так и на Scala, вы можете увидеть разницу в выразительности языка самостоятельно. Всего за одну строчку Scala достигла того, что для Java потребовалось более 10 строк.

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

5) Товарный

Какой программист не хочет быть конкурентоспособным? Одной из причин изучения новой технологии или структуры всегда является лучшая работа и карьерный рост. Изучение Scala, безусловно, сделает вас более конкурентоспособным. В настоящее время многие компании используют или переходят на Scala, включая Twitter, LinkedIn, Foursquare и Quora.

Учитывая маркетинг Scala как Scalable Language, недалек тот день, когда крупные инвестиционные банки и финансовые организации начнут искать Scala для своих решений с малой задержкой. Подобно совету, приведенному в Effective Java , Twitter уже поделился лучшими практиками по разработке программ в Scala под названием Effective Scala.

Основатели Quora потратили пару месяцев на создание веб-фреймворка Scala для использования Scala. Мартин Одерски, человек, стоящий за Scala, теперь стоит за стартапом Typesafe для поддержки коммерческой разработки Scala. Все движется в правильном направлении, чтобы Scala стала первой альтернативой Java.

6) Статически типизированный язык

В целом, статически типизированный язык, такой как Java, не позволяет программистам совершать плохие поступки, в то время как с динамическим языком, таким как Python, вы узнаете о плохих вещах только при запуске программы.

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

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

8) Растущие рамки, например, Akka, Play и Spark

Одна вещь, о которой вы, возможно, знаете, что Scala растет и растет очень хорошо. Много хороших библиотек, фреймворки приходят. Компании, которые начали использовать Scala, также вносят свой вклад в недавний рост Scala как основного языка.

Есть несколько хороших веб-фреймворков Scala, включая Lift и Play. Akka, еще одна параллельная среда на основе Scala, уже зарекомендовала себя как инструментарий и среда выполнения для создания в JVM высококонкурентных, распределенных и отказоустойчивых событийно-ориентированных приложений.

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

7) Растущее сообщество

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

Все больше и больше IDE начинают поддерживать синтаксис Scala, гораздо лучшую поддержку в Eclipse и IntelliJ. Отличная поддержка инструментов сборки в SBT, Maven и Ant. Ну, отчасти это связано с тем, что Scala обладает способностью быть языком, который может кратко описывать столько динамических языков, как python, в то же время может предлагать такие функции, как статическая типизация, вывод типов, сочетание функционального программирования и объектно-ориентированного программирование.

В недавних опросах Scala также рекламируется как альтернатива номер один для Java. По моему мнению, для роста у Scala есть реальная альтернатива Java, поскольку Java 8 также имеет функциональную поддержку программирования, она должна привлекать все больше и больше разработчиков Java. Получение такой большой организации, как Twitter, для принятия Scala, безусловно, помогает сообществу, так как у него больше ресурсов и влияния.
9) Краткий синтаксис

Java уже давно подвергается критике за его многословный и шаблонный синтаксис. Хотя это делает Java более читабельным, как и английский, Scala установила новый эталон, будучи кратким и читаемым одновременно. Компилятор Scala, известный как scalac (помните, javac ), делает больше, чем вы ожидаете, он может генерировать toString () , equals () , hasCode () и другие вещи для вас. Рассмотрим два фрагмента кода одного и того же класса, написанных на Java и Scala, и сделайте свой выбор:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class Book {
    private final String name;
    private final double price;
    public Star(String name, double price) {
        this.name = name;
        this.price = price;
    }
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 23 * hash + Objects.hashCode(this.name);
        return hash;
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Test other = (Test) obj;
        if (!Objects.equals(this.name, other.name)) {
            return false;
        }
        if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) {
            return false;
        }
        return true;
    }
    @Override
    public String toString() {
        return "Test{" + "name=" + name + ", distance=" + distance + '}';
    }
   
}

Вы можете написать то же самое, используя класс case в Scala, как показано ниже:

1
case class Book(name: String, price: double)

Кстати, вы также можете использовать библиотеку Lombok, одну из основных библиотек для разработчиков Java , для удаления стандартного кода, связанного с getter, setter, equals, hashCode и toString. Он может автоматически генерировать их для вас.

10) Относительно Легко учиться

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

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

С растущим сообществом Scala на форумах StackOverflow, нетрудно найти ответ на любой вопрос Scala, который добавляет к вашему опыту обучения.

Это все о том, почему Java программист должен изучать Scala или какие-то практические Причины для изучения языка программирования Scala . Я уверен, что вы найдете много других причин, как только вы начнете исследовать его. Как только вы начнете изучать Scala, я уверен, что вы полюбите это. Он не только имеет более чистый ОО-код, но и функциональные возможности, он чувствует себя динамически (как Python), но также имеет статическую систему типов, которая может помешать вам делать плохие вещи. Если вы решите изучать Scala в 2018 году, вот несколько полезных ресурсов для дальнейшего изучения

Дальнейшее обучение

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

Смотрите оригинальную статью здесь: 10 причин изучать язык программирования Scala

Мнения, высказанные участниками Java Code Geeks, являются их собственными.