Отсутствие практического понимания использования Play + Scala против JavaScript

1

Мы (моя команда) начинаем с облачного веб-приложения. Мы начали Scala + Play в качестве веб-приложения на стороне сервера. Поскольку никто не знал Scala в моей команде (предыдущий опыт работы с Java/Java Script/Python/C++), все мы испытываем крутую кривую обучения. Проведя несколько недель по основам обучения Scala, мы начали с примера игры-scala-starter в качестве основы. Потребовалось несколько дней для члена команды, чтобы создать обработчик API-прототипа GET + POST для доступа к базе данных mysql. Учитывая значительные усилия и время, потраченное на Scala, член команды ради сравнения построил те же самые прототипы с использованием node.js всего за полдня (4-5 часов). Это было откровением для всех нас. Чтобы добавить к этому, Интернет изобилует историями успеха node.js, используемыми в приложениях корпоративного уровня (обратите внимание, что для front-end в любом случае мы будем использовать JS-основу, например, Angular, React и т.д.). Теперь в качестве команды мы обсуждаем следующий подход - play + scala или node.js. Мы не хотим принимать решение, основанное на краткосрочных выгодах или избегать первоначальной борьбы в наращивании. Вот почему вы ставите здесь этот вопрос, чтобы получить представление о реальном мире. Если это неправильное место, чтобы задать такие вопросы, пожалуйста, предложите соответствующий. Скорее всего, этот вопрос будет закрыт, как и тип обсуждения. ПРИМЕЧАНИЕ. Этот пост не должен критиковать ни один из подходов. Так что извиняйтесь заранее.

2 ответа

2

Это то, что вам следует ожидать, когда вы "быстро взглянете на Scala и построите прототип". Scala - это долгосрочная инвестиция. Если вы хотите получить все преимущества своей системы типов, выразительности и функционального программирования, это займет гораздо больше, чем через несколько недель (я делаю это уже почти три года и до сих пор все время учусь).

Я работаю над успешным запуском, который начинался с его бэкэнда, написанного в NodeJS, из-за того же рассуждения, что и вы описали, но теперь они делают все свои новые вещи в Scala (не Play, но больше FP-ориентированной среды Finch, однако Я работал с Play на моих предыдущих двух работах, и это определенно, если не самый распространенный веб-фреймворк Scala, а затем определенно там наверху). Так что не волнуйтесь, это действительно сильно используется в производстве. Например, мой любимый шахматный портал полностью выполнен в Play Stack. Было много других три года назад, и список, безусловно, намного больше к настоящему времени (и, конечно же, это только самые популярные, также обратите внимание, что это список для тех, кто специально объявил, что использует платформу Play, потому что список для Scala в целом будут задействованы многие другие гиганты, такие как Twitter, Coursera, Soundcloud, Spotify, Foursquare, Netflix, AirBnB, Quora, Tumblr, eBay и т.д.).

Когда все сделано правильно, функциональное программирование (о да, кстати, я даже не рассматриваю Scala), дает вам много безопасности и безопасности. Вы знаете это старое высказывание: "Раньше я чувствовал себя экспертом в JS, и ничего не работало. Теперь я чувствую себя любителем в Haskell, но все работает". Но, по сравнению с Haskell, я чувствую, что у Scala гораздо больше тяги. Я понимаю ваши заботы, когда вы google что-то связано с NodeJS, а затем то же самое для Scala, но поверьте мне, как только вы пойдете, вы поймете, что у Scala есть большое сообщество, много материала на разных блогах/форумах/stackoverflow и огромные экосистемы.

Что касается самого NodeJS, вы заметите много общего с Play, оба из которых являются асинхронными фреймворками, управляемыми событиями. Но, говоря о JS как о языке, если вы вкладываете время в Scala, чтобы стать достаточно опытным с ним, вы будете спрашивать себя, как бы вы жили без определенных аспектов, особенно в своей системе типов (TypeScript sucks btw).

Я знаю, что я субъективен, но это вопрос, основанный на мнениях. Он должен (и, вероятно, будет) отмечен как слишком широкий/неконструктивный/не по теме/нечеткий, но вместо того, чтобы просто пометить его, я решил попытаться побудить вас, ребята, принять хорошее долгосрочное решение. Найдите дополнительное время, пройдите через хорошую вступительную книгу, зайдите на курс Coursera (начатый вчера), и на этот раз в следующем месяце вы будете чувствовать себя намного увереннее в этом. Конечно, один месяц - это долгое время, если вам нужен прототип завтра, но если время действительно критично, я бы всегда советовал пойти с технологией, с которой вам больше всего нравится, и оставить эксперименты для более расслабленного проекта. В противном случае вы не только будете разочарованы, но и получите плохой продукт.

  • 0
    slouc: вы ответили на мои основные вопросы сразу. Я согласен, что Scala - это не то, что нужно учитывать для краткосрочного прототипирования. Да, как всегда, есть давление, чтобы доставить с сегодняшнего дня. Тем не менее, мы как команда решили использовать Scala, поскольку она предлагает долгосрочные преимущества по сравнению с Node. Java мы избегали намеренно из-за слишком большого количества стандартного кода и ограничений масштабируемости (Java8 может решить некоторые из этих проблем). Главным образом две вещи замедлили нас: 1. Обширность самого языка Scala 2. В большинстве случаев Google не возвращает предложения, как в случае с Node или Java. Спасибо за подробности.
  • 0
    @NKM Scala - действительно довольно обширный язык. Ресурсы, которые я перечислил (книга и курс курса), созданы самим создателем Scala, и они проведут вас по пути, который наиболее логичен, делая процесс обучения максимально приятным. Если вы посвятите следующие шесть недель изучению Scala с помощью этих ресурсов, вы окажетесь за бортом. И как только вы закончите с этим, вы будете полностью компетентны в написании качественных веб-сервисов в Play. По мере продвижения вы будете находить все более и более продвинутые концепции, но просто принимайте их по одному, и это будет увлекательный и полезный процесс.
Показать ещё 7 комментариев
0

В общем, если вы новичок в языке: EXpect time. Поэтому я не удивлен, что выполнение прототипа в Node.js происходит быстрее.

Мой совет: Придерживайтесь Java в этом случае. Это проще, если вы пришли из C++/Java/JS.

Я не буду рекомендовать nodejs с технической точки зрения: он имеет проблемы с масштабируемостью, а Play построен на Akka, поэтому вы получаете все бесплатные аккские актеры. Сделать это правильно на другом языке сложно. Как и в: Действительно трудно.

Вкратце: Начните с Play Java и перейдите к Scala позже.

  • 0
    Мы бы придерживались Java, кроме как по причинам, указанным выше в моем комментарии.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню