Рубрики
Без рубрики

Почему Java-программист должен изучать Scala и функциональное программирование?

Мои 2 цента о том, почему программист должен изучать Scala и функциональное программирование. С тегами scala, java, программирование, карьера.

Раскрытие информации: Этот пост содержит партнерские ссылки; Я могу получить компенсацию, если вы приобретете товары или услуги по различным ссылкам, предоставленным в этой статье.

Один из вопросов, которые часто задают мне мои читатели, звучит так: “Должны ли разработчики Java учиться Scala ? Есть ли у Scala лучшее будущее, чем Java ? Почему разработчики Java должны изучать Scala” и так далее?

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

Здесь мы поговорим о некоторых практических причинах , которые должны побудить разработчиков Java изучать Scala.

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

У Scala есть много сильных сторон, самая сильная из которых заключается в том, что это многопарадигмальный язык .

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

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

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

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

10 Причин изучать Scala в 2021 году

Без лишних слов, вот мой список из 10 причин, по которым программист должен изучать Scala 2021:

1. Многопарадигмальный язык

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

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

Книга Прагматичный программист также советует вам каждый год изучать новый язык программирования.

Прагматичная книга для программистов

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

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

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

2. Совместимость С Java

На мой взгляд, выбор Scala в пользу совместимости с Java – это лучшее, что может случиться с Scala. Scala работает на виртуальной машине Java ( JVM ) и может хорошо взаимодействовать с кодом Java.

Это также означает, что разработчики Scala могут использовать библиотеки Java непосредственно из кода Scala.

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

Также можно вызвать код Scala из Java, и вы можете легко написать часть своей программы на Scala, а остальную часть – на Java.

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

3. Лучшие практики и шаблоны, встроенные в язык

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

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

Он также получил case classes , что упрощает создание неизменяемых классов в Scala.

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

4. Выразительность

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

Scala по своей сути очень выразительна. Там также есть тонны и тонны действительно красивого и полезного кода, написанного в Scala .

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

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

Scala всего за одну строку достигла того, на что Java потребовалось более 10 строк.

Код Scala более понятен и лаконичен

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

5. Пригодный для продажи

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

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

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

Аналогично совету, приведенному в Effective Java , Twitter уже поделился лучшими практиками разработки программ на Scala как эффективной Scala.

Основатели Quora потратили пару месяцев на создание Масштабируемого веб-фреймворка для использования Scala.

Мартин Одерский , , ,

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

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

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

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

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

7. Растущие Рамки

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

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

Есть несколько хороших веб-фреймворков Scala/|, включая Lift и Play.

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

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

Кстати, если вас интересует Spark, то вы также можете взглянуть на Learn Apache Spark с нуля курс по Udemy.

8. Растущее сообщество

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

Появляется все больше и больше идей для поддержки синтаксиса Scala, и в гораздо лучшая поддержка Eclipse и IntelliJ . В SBT, Maven и Ant также есть отличная поддержка инструментов сборки.

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

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

9. Краткий синтаксис

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

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

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 + ", price=" + price + '}';
}

}

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

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

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

10. Легче учиться по сравнению с Haskell, другие функциональные языки программирования

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

Другими словами, [Scala] ( относительно прост в освоении благодаря своей функциональности ООП.

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

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

Вывод

Как только вы начнете изучать Scala, я уверен, что вам ЭТО ПОНРАВИТСЯ. У него не только более чистый OO-код, но и функциональные возможности, он выглядит динамичным (как Python ), но у него также есть система статических типов, которая может помешать вам делать плохие вещи. Если вы решите изучать Scala сейчас, вот несколько полезных ресурсов для дальнейшего изучения.

  1. Начало Программирования на Scala
  2. Scala: Начало работы Джастина Пихони
  3. Scala для разработчиков Java От Тоби Уэстона
  4. Скала для нетерпеливых
  5. Функциональное программирование в Scala

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

Если вам понравилась эта статья, пожалуйста, поделитесь ею со своими друзьями и коллегами и не забудьте подписаться на javin paul в Twitter и javinpaul в Medium!

P.S. — Если вам нужны БЕСПЛАТНЫЕ ресурсы, вы можете посетить Мини-учебный лагерь по программированию на Scala для начинающих – Бесплатный курс #, чтобы начать свое путешествие по Scala.

Оригинал: “https://dev.to/javinpaul/why-java-programmer-should-learn-scala-and-functional-programming-5hej”