TrogWarZ
@TrogWarZ
web developer

С чего начать в Scala (?) разработчику из PHP мира?

Доброго времени!

Что уже есть? Есть опыт разработки (в т.ч. коммерческой) на php/js/python, слегка (только для себя) писал на java.

Почему? Словил себя на мысли, что стараюсь писать ООП-код исходя из некоторых принципов функционального программирования (неизменяемость данных, более чистые функции, использование передача методов как функций/лямбд и т.п.), а так же много контрактов и не особо успешных попыток прикрутить строгую типизацию. PHP здесь уже больше мешает, чем помогает писать код. Плюс, конечно, расширение кругозора.

Зачем? Писать предполагается серверные части для веба (апи, в основном) как полная замена PHP в будущих проектах. Соответственно, в рамках обучения,предполагается взять один из моих существующих небольших проектов и переписать его на новом языке (скорее всего, для опыта и в стол.. или найти заказчика, согласного на такое).

Пока присмотрелся к Scala. Опыта ноль. Подкупают лаконичность, строгая статическая типизация и функциональный стиль.
Исходя из вышесказанного, вопроса два:
1. Scala – адекватный инструмент? Какие могут быть альтернативы/подводные камни?
2. Посоветуйте, пожалуйста, статьи/туториалы/курсы (годные книги с упором на практику тоже подойдут) по Scala (или другому языку, если ответ на №1 – "нет").

Спасибо.
  • Вопрос задан
  • 1817 просмотров
Пригласить эксперта
Ответы на вопрос 5
@wing_pin
Люблю сгущенку и функциональное программирование
1) Да, вполне годный инструмент. Сам я пришел к Java и Scala после Ruby и Node.js
2) Есть хорошая книга "Scala для нетерпеливых"
Ответ написан
У твиттера был годный проект по изучению Scala - twitter.github.io/scala_school/ru
PlayFramework 2 мне лично понравился в свое время (писал диплом на нем), но там я правда больше на Java писал, чем на Scala.
А так соглашусь с unabl4 - для простых и не очень апи это точно будет перебор, так как потом в один прекрасный момент получится так, что поддерживать все это дело сможет только 1 человек, который все это и понаписал.
Ответ написан
@unabl4
ruby on rails web dev
1) Лично на мой скромный взгляд, скала для всяких web API - overkill.
Для таких вещей не нужна функциональщина, монады, функции высших порядков и т.д и т.п.
Т.е, как академический язык - он превосходен, на этом языке можно "мыслить".
Но, как мне кажется, лучше писать максимально просто (то, что, например, пропагандирует язык Go).
2) Курс на coursera, конечно же. Сам его проходил - остался очень доволен.
Ответ написан
Комментировать
Чтобы эффективно писать на Scala нужно сначала изучить Java SE. Scala все свои высокие абстракции так или иначе транслирует в концепции Java. А чтобы всё это дело ещё лучше понимать надо разбираться в принципах работы JVM. Обычно всё это используется для создания более менее глобальных, высоконагруженных, распределённых приложений. Вакансий по Scala со временем появляется всё больше и больше. Но язык не без своих проблем, стоит только взглянуть на багтрекер и выступления Paul Phillips. Тем не менее он активно развивается, растёт комьюнити. Запущен проект Dotty, в котором компилятор перепишут чтобы он был проще и большее количество людей смогло разобраться в нём чтобы контрибьютить.

PHP отлично подходит для большинства веб-проектов. Пересаживаться на Scala стоит только если вы хотите разрабатывать что-то более глобальное и сложное с большой базой кода.
Ответ написан
Комментировать
@mpolk
1) Для веб-разработки Скала в ее текущем состоянии, боюсь, не очень подходит (пока?). Сама Скала - вполне зрелый и годный для практического применения язык. Но общепринятый для веб-разработки на Скале PlayFramework по уровню (качество, полнота охвата типовых задач), на мой взгляд, не дотягивает ни до самой Скалы, ни до ПХП-овых фреймворков. Лично я, при попытке перейти с ZendFramework-а на Play, ощутил очень заметную скованность. Естественное желание построить результирующий html, как композицию результатов работы нескольких относительно независимых модулей, столкнулось с техническими трудностями и с необходимостью городить костыли. Правда, PlayFramework активно развивается (я мучался с версией 2.2), и возможно, вскоре его доведут до пристойного уровня.

В то же время я с немалым успехом и удовольствием использую Скалу для написания демонов, мониторящих и обслуживающих нашу сеть (работаю в ISP-компании).

2) Я читал первоисточник, Martin Odersky "Programming Scala", и добивал для актуальности статьями на scala-lang.org (книга описывает не самую свежую версию языка, 2.8). Премного доволен и всячески рекомендую.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы