Раскрытие информации: Этот пост содержит партнерские ссылки; Я могу получить компенсацию, если вы приобретете товары или услуги по различным ссылкам, предоставленным в этой статье.
Один из вопросов, которые часто задают мне мои читатели, звучит так: “Должны ли разработчики 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 сейчас, вот несколько полезных ресурсов для дальнейшего изучения.
- Начало Программирования на Scala
- Scala: Начало работы Джастина Пихони
- Scala для разработчиков Java От Тоби Уэстона
- Скала для нетерпеливых
- Функциональное программирование в 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”