Яке місце займає мова Scala в ІТ-індустрії



Мова програмування Scala є «симбіозом» Java і C#. Це не перший мову, комбінує ООП з функціональним підходом, але він почав набирати обертів в той момент, коли розвиток Java сповільнилося. Більш того, творці Scala вирішили, що мова повинна працювати на віртуальній машині JVM і надавати доступ до Java-бібліотек.

Мартін Одерски почав розробляти Scala на початку 2000-х в стінах Лабораторії методів програмування EPFL. Він же раніше займався розробкою Generic Java і компілятора Java фірми Sun.

Внутрішній реліз Scala з'явився в 2003 році. Перший публічний реліз вийшов на початку 2004 року на Java-платформі, а в червні того ж року – на .NET Framework (правда, з 2012 року ця платформа не підтримується). Scala 2.0 побачила світ у 2006 році. Його компілятори та бібліотеки поширюються під ліцензією BSD.
Ліцензія BSD (Berkeley Software Distribution license — Програмна ліцензія університету Берклі) — це ліцензійна угода, вперше застосоване для розповсюдження UNIX-подібних операційних систем BSD.
17 січня 2011 року команда розробників мови виграла грант на дослідження строком на п'ять років. Європейська дослідницька рада виділила їм близько €2,3 мільйона. У травні 2011-го учасники спільноти Scala на чолі з Одерским заснували компанію Typesafe Inc. (у лютому 2016 року перейменована в Lightbend Inc.). Створена компанія повинна була здійснювати фінансову підтримку розробників, створювати сервіси для Scala. Заробляти Typesafe мала на Scala-бібліотеках. В 2011 році фірма отримала $3 млн інвестицій від Greylock Partners.


Мартін Одерски — творець Scala

Що «під капотом»
Мова Scala об'єднує три речі: статичну типізацію, об'єктно-орієнтований і функціональний підхід. Як вже говорилося, Scala працює на віртуальній машині Java. Сумісність («вільний змішування») цієї мови Java дає можливість писати Scala Android-додатки. Крім того, можливість компіляції JavaScript дозволяє створювати веб-додатки на Scala.

Незважаючи на деяку схожість і навіть родинний зв'язок цієї мови Java, цілих 10 років після появи Scala його «старший брат» зберігав вірність об'єктно-орієнтованої парадигми. І тільки в 2014 році в Java 8 були включені елементи функціонального підходу – лямбда-вирази.

Крім згаданих вище Java і C#, на Scala вплинули інші мови і технології. Спосіб вираження властивостей багато в чому запозичений з Sather. З Smalltalk перекочувала концепція уніфікованої об'єктної моделі. Beta поділився ідеєю про вкладеності все підряд, включаючи класи. Абстрактні типи Scala нагадують абстрактні типи сигнатур у SML і OCaml, узагальнені в контексті повноцінних компонентів.

Крім того, Scala перейняв особливості таких функціональних мов, як Scheme, Standard ML і Haskell.

Цільова аудиторія
Переваги Scala оцінили багато великих компаній – Twitter, LinkedIn, Foursquare, Novell, Siemens, GridGain. Проте в академічних колах це мова поки популярний більше.

Користувач @platoff в статті досить докладно виклав свій погляд щодо цільової аудиторії мови.
Я прекрасно розумію, чим Scala приваблює недосвідчену молодь (а вона в основному і хоче Scala):

• Ореолом елітності: дійсно прогрес в Scala роблять розумні хлопці, типу, дурні на Scala не пишуть, і якщо ти пишеш на Scala, то ти розумний. Оп, хлопці, програмування — це не навчання в університеті, ти не будеш більш «розумним» програмістом, чим складніше заморочку ти вирішиш.

• Складністю: напевно багато хто з Scala-фанатів і любителів не усвідомлюють, так і не здатні сформулювати, що їх приваблює в складності. Підсвідомо хтось думає, що складність == потужність. Типу чим складніше, тим потужніше.

Дуже складну задачу можна вирішити, переиспользуя складні рішення. У нашому випадку компілятор повинен брати на себе якомога більше складності, спрощуючи рішення. Компілятор Scala безумовно складний, але є проблема — мова, в якій ця складність виражається. Користуватися такою мовою шалено складно.
Ngoc Dao, творець Xitrum Scala web framework, Ngoc-Dao дивиться на ситуацію з точки зору функціонального підходу:
Говорячи про функціональному підході в принципі, безвідносно Scala, на думку зазвичай приходить Haskell. Однак, розмірковуючи з практичної точки зору, краще вивчити Erlang. Не дарма все-таки Facebook витратив $19 мільярдів на купівлю WhatsApp, який написаний якраз на ньому.

Erlang зрушить ваше мислення в бік функціонального підходу сильніше, ніж Scala. Крім того, Erlang набагато простіше і швидше вчити. Ви можете освоїти його за тиждень і заощадити свій час.
Так що, думка на рахунок універсальності Scala може бути і скептичним – ні два, ні півтора: функціональна парадигма реалізована непросто, так і в плані «объектноориентированности» він теж дуже складний.

Однак, якщо «пересісти» на цю мову з бекграундом Java-розробника, складнощів буде менше.

Рейтинги та індекси
Індекс TIOBE за підсумками жовтня 2016 року показує, що Java є найбільш популярною мовою програмування. Він впевнено лідирує вже 15 років поспіль і був на другому місці тільки в 2001 році.



Між Java і Scala в цьому рейтингу спостерігається великий розрив. Втім, останній поступається також мовам Lua, Fortran, Lisp, Transact-SQL, Ada і F#, розташувавшись на 33 місці. Однак в рейтингу 50 місць, і Scala все-таки зумів обійти функціонально-логічні мови Haskell і Prologue.



В іншому рейтингу у Scala справи не такі погані. Згідно даними IEEE Spectrum за 2016 рік, він займає 15 місце. Java теж знаходиться в лідерах, але на цей раз на почесному другому місці. Укладачі рейтингу зазначають, що область застосування Scala у них обмежена тільки веб — і мобільного розробкою. Розробка для ПК до уваги не приймається. У той час як Java вони сприймають як мова розробки для всіх трьох платформ.



даними опитування Github на початок 2016 року, у Scala справи йдуть ще краще: він займає 11 місце. Java знову очолює рейтинг. Причому, тут він йде з великим відривом від C#.



Дослідники також розрахували індекс задоволеності мовою програмування. Він показує, хотіли б програмісти, що використовують ту або іншу мову, писати наступний проект на цьому ж мовою:



У першій групі ми бачимо Swift і Scala, які ділять між собою звання «ідеальної мови»; ще можна відзначити досить високу оцінку Go. Java тут займає лише четверту сходинку. Це перший показник, за яким Scala зміг обійти своїх родичів – C# і Java.

Перспективи
Свою думку про майбутнє Scala вже висловлював Барух Садогурський — Developer advocate в компанії JFrog:
Мене дещо лякає те, що зараз відбувається зі Scala, тому що є тренд відходу від нього: наприклад, компанія TypeSafe, яка намагалася заробляти гроші на бібліотеках, пов'язаних зі Scala. Деякий час тому було оголошено про відхід TypeSafe з сильного акценту на Scala на набагато більший акцент на Java, тому що велика частина enterprise-розробки на Java, де, власне, знаходяться гроші. Тому вони найняли багато нових людей, які підтягують якісь Java-інтерфейси, яких раніше у них не було.

Ми також бачимо інші бібліотеки, які були дуже орієнтовані на Scala. Наприклад, Spark, де у новому релізі Java API підтягнуті до рівня Scala, і, схоже на те, що далі вони будуть розвиватися не гірше API Scala, якщо навіть не краще. Я б сказав, що в глобальній картині ми бачимо певний розворот у бік Java.

І я абсолютно не здивований цим, тому що Scala, як академічний мову, абсолютно прекрасне творіння, але для Enterprise-хардкору, щоб гнати код в продакшн, він не підходить, тому що складний для розробників, які вирішують реальні бізнес-проблеми, яким потрібний потужний, але, в теж час, не дуже складний інструмент, у яких в житті є речі важливіші, ніж розбиратися в системі типів Scala.

Саме тому я ніколи не був великим фанатом Scala, і тенденція відходу від Scala мене не дивує. Безумовно Scala нікуди не дінеться і продовжить розвиватися, але в набагато більш нішевий форматі.
Набагато оптимістичніше смотрит на це Ashesh Ambasta, Lead backend engineer в CentralApp:
Я вірю, що у Scala все-таки хороші перпективи. Недарма багато великі компанії вибрали його. Незважаючи на те, що шлях, що поєднує ООП і ФП може здатися небезпечним і збити з пантелику «пуритан», при акуратному використанні, програмування на Scala може доставляти задоволення.

Я не згоден з тим, що Scala в освоєнні важче інших мов програмування. Є, звичайно, певний «бар'єр», пов'язаний з необхідністю думати одночасно в різних парадигмах. Хоча на більшості форумів ця мова чомусь обговорюють в контексті функціонального програмування.

Мені доводилося чути висловлювання типу: «Scala більше підходить для великомасштабних систем, а не якихось там Твиттеров». Але буде помилкою вважати, що він створений тільки для цього. Я не думаю, що реалізувати MVP (Minimum Viable Product) на Scala складніше, ніж на якомусь іншому мовою.

Я ніколи не був особливо захоплений об'єктно-орієнтованим програмуванням. З тих пір, як познайомився з Erlang, я до нього не повертався. Потім я вибрав Scala для бекенда-розробки в новій компанії і отримав позитивні відгуки. Це вселило в мене впевненість, що я зробив правильний вибір.


Куди піти вчитися?


Для тих, хто замислюється про зміну спеціалізації або ще тільки починає кар'єру програміста, наведу кілька реплік з «Тостера».

HaruAtari:

Багато років пишу на php, набридло. Зараз переучиваюсь на Scala-розробника. Поки все йде добре, мова чудовий. Плюс сумісність з Java-бібліотеками.

Але сьогодні зайшов на hh.ru і з цікавості подивився кількість вакансій для Java/Scala-розробників. Scala – 47, Java — 705. Після цього кілька задумався. А я взагалі зможу знайти роботу на цій мові? Чи є якісь перспективи у вивченні Scala як основного мови зараз. Чи є перспективи в такому вкладенні сил? Або тільки java?

jkotkot:

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

opium:

Для Росії Scala в найближчі роки — мертвий ринок, треба дивитися на зарубіжний фріланс, або на вакансії за кордоном.

gurinderu:

Що ви так сильно засмутилися? Scala-розробників в рази менше, ніж Java, тому і такий розкид. Буде вона затребувана однозначно. Приміром, Tinkoff-банк використовує Scala.

mrRontgen:

Відсутність 100500 вакансій на hh – це не привід для паніки. Мова молодий, але він дуже стрімко набирає обертів. Наскільки я знаю, Huawei починають пиляти інтеграційні рішення в Росії на Scala (замість оракловских продуктів). Так що все не так погано.

У Одерского і компанії дуже великі перспективи і амбіції. Так що, на мою думку, Scala (або її «апдейти») ще здивують програмістів!
Джерело: Хабрахабр

0 коментарів

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