З Java у Scala: 7 причин для вивчення нової мови

Багато вільного часу тільки у студентів. Якщо ви не студент, то повинні з'явитися дуже вагомі причини для того, щоб почати вивчати нову мову програмування. Особливо це стосується Java-програмістів, тому що ця мова є лідером в своєму сегменті. Тим не менш причини для вивчення нової мови є.

Причина перша: досвід показує, що назад не повертаються. Свого часу я писав на C/C++ більше програм, ніж на будь-якому іншому мовою. Потім я дізнався про Java, і переді мною стояв точно такий-же питання: «Навіщо?» Що найцікавіше, я не вивчав Java навіщо-то, це було просто цікавість, а потім я зрозумів що піти назад не вийде. За своє життя я не бачив ні одного програміста C++, вивчила Java, а потім заявив «Ні, мені не подобається мова, C++ краще». Тепер у мене якесь дежавю: я не бачу жодного Java-програміста, вивчила Scala і відмовився від цієї мови. Думаю це достатній показник якості.

Причина друга: Scala сучасніше. Не більш модна, а технічно більш досконала. В Scala враховано багато помилки, допущені при проектуванні Java. Візьмемо в якості прикладу оператор еквівалентності
==
. Як часто ви користуєтеся їм в Java? Можете не думати, відповім за вас: ви їм взагалі не користуєтеся. Чому? Тому що він марний. У мові, мета якого звільнити розробника від прямої роботи з пам'яттю, оператор порівняння покажчиків не має сенсу. І що ще гірше, цей оператор можна перевантажити. А що зробив Одерски з цим оператором в Scala? Правильно, він прирівняв оператор
==
на
equals()
. Думаю нікому не треба пояснювати наскільки перше витонченіше другого:

object1 == object2
object1.equals(object2)

До речі, я зовсім не вважаю, що з оператором
==
при проектуванні Java була допущена помилка. У часи засилля C++ це було правильним рішенням, але з часом ситуація змінилася.

Причина третя: декларативність. Так-так, те саме функціональне програмування. Зараз в мою адресу посиплеться купа лайливих слів, але я не буду сильно сперечатися. Аргумент у мене дуже проста: я бачив достатньо людей не осиливших функціональне програмування і ругающих його, але я не бачив жодного осилившего і відмовився. Втім наведу ще один аргумент: якби функціональне програмування було якоюсь нісенітницею, воно не стало з'являтися в нашій улюбленій Java (ви ж в курсі про лямбды і стріми?) Тут хтось неодмінно заперечить: раз це є в Java, навіщо нам Scala? Відповідь: якщо ви вивчіть Scala і подивіться на функціональність Java з тієї дзвіниці, то відкрився вид цілком може викликати у вас посмішку. Просто спробуйте!

Причина четверта: менше коду. Хтось заявив, що код Scala в загальному випадку в 2-3 рази менше коду Java. Сам я не рахував, але запевняю, що схоже на правду. Наприклад, напевно багато хто знайомі з давнім суперечкою про те, чи варто використовувати final для локальних змінних:

String mama = "Jane";
final String papa = "John";

Друга рядок незмінна, що гарантує її недоторканність, що зменшує ймовірність помилок, бла-бла-бла… Але є проблема: ця друга рядок на 28% більше першої, що означає загальне розростання коду, що збільшує ймовірність помилок і т. д. А тепер дивимося сюди:

var mama = "Jane"
val papa = "John"

Цей код Scala ідентичний попередньому кодом Java. Чи треба щось казати?

Ось ще більш вражаючий приклад. Java:

public class Child {
final String mama;
final String papa;
public Child(String mama, String papa) {
this.mama = mama;
this.papa = papa;
}
}

Тепер те ж саме на Scala:

class Child(val mama: String, val papa: String)

Всі! Навіть жодної фігурної дужки не знадобилося! А тепер уявіть наскільки такі ось фішки (а їх ще багато, повірте!) зменшують код великого проекту і згадайте про те, що чим коротше код, тим:

  • менше багів
  • швидше написання
  • простіше читання
  • та й взагалі це красиво!
Причина п'ята: це дуже легко. Scala оригінальний мову в тому плані, що він настільки ж императивен, наскільки декларативний. І між іншим він навіть ще більше об'єктно орієнтований, ніж Java. Як Java-програміст ви можете почати з вивчення імперативною частини, розглядаючи Scala як «Java на стероїдах», а потім у процесі вивчення функціональної частини все більше використовувати останню. Напевно ні один функціональний мова програмування не забезпечує такої гнучкості і легкості. У мене навіть склалося враження, що Scala написана спеціально, щоб відвести Java-програмістів (жарт).

Причина шоста: нові горизонти. Вивчення мови програмування дуже схоже на вивчення лінгвістичного мови в тому плані, що це дозволяє відкрити масу нового (за умови, що мова програмування зовсім інший, а не «yet another boring language»). Інша мова відкриває доступ до іншої культури, іншого мислення. Гарантую, що вивчення Scala, особливо його функціональної частини, дуже сильно змінить те, як ви пишете код на Java. Зрозуміло на краще.

Причина сьома: це цікаво. Ну тут мені більше сказати нічого. Цікавість властиве всім живим організмам, що володіє хоча-б самим маленьким мозком, чого вже говорити про людину. Правда багато людей з віком втрачають цікавість, але впевнений, що серед читачів таких немає. Тому моя рекомендація: знайдіть час і поиграйтесь зі Scala. Запевняю, що ви відчуєте масу приємних відчуттів!

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.