[Программирование, Scala] Scala мертва?
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Disclaimer:
Это не маркетинговая статья и не наброс на вентилятор. Это размышления на тему того, что происходит на рынке Scala-разработки от инженера, который долгое время пытался перейти именно на Scala. Ни в коем случае не претендую на истинность. это сугубо личное мнение. Будьте внимательны, в этих размышлениях имеется очень сильная региональная специфика, в других регионах нашей планеты ситуация может быть совсем иной.
Предыстория:
мой основной бэкграунд - Java бэкенд. В какой-то момент стала интересна Scala. Я поработал около года в маленьком стартапе, где мы переписывали бэкенд с Python на Scala. Затем через некоторое время я начал искать варианты с переездом в цивилизованные страны и получил 4-5 офферов на Scala в нескольких Европейских странах и 1 оффер на Java… Так я оказался в Австралии. И без Scala. Сложно сказать, почему я сделал такой выбор, но естественно через некоторое время я задумался, а не стоит ли попытаться воплотить свою мечту и все же найти компанию, которая бы использовала Scala не только для Data-Science, но и для разработки бэкенда.В общем, открыл я LinkedIn в надежде посмотреть и повыбирать вакансии, и был просто шокирован, когда увидел ровно 3 вакансии на весь материк, причем 2 из них от одной и той же компании :(Здесь нужно сделать ремарку о том, что же из себя представляет рынок разработки в Австралии: здесь есть офисы нескольких крупных компаний типа Google, Amazon, Microsoft, есть Atlassian, который пытается быть на них похож, есть несколько заскорузлых монструозных банков (как везде) и огромная куча мелких (и не очень) стартапов. Как вы можете себе представить, почти никто из них не использует Scala вне контекста Data Science. Компании можно разделить на 2 большие категории: устоявшиеся компании (в основном Java и, что меня очень сильно удивляет, dotNet, видимо это следствие как раз наличия офиса Microsoft и работы его маркетологов) и хипстерские стартапы с GoLang или NodeJS на бэкенде. Надо сказать, что здесь довольно сильно развито движение FullStack разработки, поэтому NodeJS очень популярен, так как позволяет фронтендерам писать бэкенд :)На удивление, есть даже несколько (больше 1) компаний, пишущих на Clojure и Elixir. Kotlin тоже немного присутствует, но только совместно с Java.В общем, я задумался, почему так происходит.
Scala (как и любой JVM язык) во многом похож на Java. Java стала популярна прежде всего благодаря нескольким вещам: удобстве при работе с большой кодовой базой, а также очень продвинутому рантайму.Моя версия заключается в том, что популярность всех JVM-based языков находится под угрозой благодаря популярности микросервисов и сопутствующих технологий.Вроде бы пока звучит не очень логично, но попробую объяснить:
Итак, если мы считаем, что основными движущими факторами популярности Java были продвинутый рантайм и удобство при работе с больной кодовой базой, то сегодня при использовании микросервисного подхода это становится не таким важным. Работать с большой кодовой базой больше не нужно: микросервисы в разных репозиториях, у стартапов просто нет большой кодовой базы. Те же, кому нужно работать с большой кодовой базой, продолжают сидеть на Java, как крупные банки.Навороченный рантайм вытеснен Docker и Kubernetes, которые благодаря легкому автоскейлингу позволяют теоретически писать приложения даже без сборки мусора, просто перезапуская приложение каждые N минут. Вместо этого важными становятся: малый размер бинарника (здравствуй, GoLang), простота и предсказуемость (даже примитивность рантайма), интероперабельность с другими частями системы (здравствуй TypeScript и Swift на бэкенде).В общем, к моему большому сожалению, похоже из всех JVM-based языков причины использовать на бэкенде остались только у Java, благодаря необходимости поддерживать огромное легаси и наличию большого количества разработчиков на рынке, ну и возможно Kotlin, благодаря Android (хотя как это связано с бэкендом я не придумал).А теперь давайте сыграем в небольшую игру.Представьте себя CTO стартапа, который выбирает, на каком языке ему стоит писать бэкенд. Что бы вы выбрали?Раунд 1: Go vs JavaБезоговорочно Go. Даже при условии, что мой опыт с ним составляет всего пару месяцев. Он настолько простой, что найти людей, могущих и умеющих на нем писать, не составит труда, уровень тулинга и поддержки крайне высок, наличие инструментов и библиотек практически на уровне Java. Так что в этой паре единогласно побеждает Go.Раунд 2: Go vs ScalaВот это сложный выбор лично для меня. Чисто с точки зрения именно языка (а не платформы) Go мне совсем не нравится. Он заставляет тебя делать некоторые довольно неприятные вещи, он многословен и коряв (личное мнение). Но за счет таких фич, как малый размер бинарника, кросс-компиляция, потребление памяти и т.д. в долгосрочной перспективе он выглядит более выигрышным.К сожалению, я должен признать, что в такой постановке вопроса на сегодняшний день я бы выбрал Go. Раунд 3: Java vs ScalaЯ, конечно, не задумываясь выбрал бы Scala, а потом бы пожалел, когда мне пришлось бы нанимать толпу разработчиков, и я бы осознал, что их просто нет на рынке. И поэтому переписал бы все на Go.Раунд 4: Java vs KotlinНу тут вообще без вопросов, конечно Kotlin. Нет ни одной причины, начиная новый проект, писать его на "голой" Java.Раунд 5: Kotlin vs ScalaСм. Раунд 3.Раунд 6: Scala/Java/Kotlin vs TypeScriptЕсли бы у меня был бэкграунд фронтендера, я бы, возможно, выбрал TypeScript. Ну и если бы я верил в то, что система, написанная FullStack-разработчиками может в принципе работать :)Раунд 7: Go vs TypeScriptНу тут просто супер очевидно, даже вообще без вариантов.А что выбрали бы вы?В качестве заключения.В общем, резюмируя сказанное выше, повторю, что у меня складывается стойкое мнение, что микросервисы и Kubernetes постепенно убивают Java и другие языки на базе JVM. Понятно, что Java будет жить вечно, как Cobol, Kotlin будет жить в Android, а вот Scala, похоже, в Data Science. Благодаря современным технологиям становится совсем не важно, на чем написан твой бэкенд, если его можно быстро запускать/перезапускать/автоскейлить.Прошу прощения, если для кого-то данная мысль оказалась слишком очевидной. В любом случае, ставьте лайки, шеры, репосты. Пишите в комментариях, если вы не согласны. Это всего лишь частное мнение, еще и выработавшееся под воздействием особенностей отдельно взятого региона.
===========
Источник:
habr.com
===========
Похожие новости:
- [Julia, Высокая производительность, Исследования и прогнозы в IT, Программирование, Промышленное программирование] Julia готова для прода (перевод)
- [JavaScript, Разработка веб-сайтов] Проверяем формы по стандартам с Validation API
- [JavaScript, ReactJS, Программирование] Почему это антипаттерн? (перевод)
- [IT-компании, IT-стандарты, Информационная безопасность, Программирование] Тонкости авторизации: обзор технологии OAuth 2.0
- [Разработка веб-сайтов, JavaScript, VueJS] Вышел Vue.js 3.0 «One piece» (перевод)
- [Высокая производительность, Программирование] Как не сгореть на проекте
- [JavaScript, Программирование, Разработка веб-сайтов] Server-Sent Events: пример использования
- [Программирование, Изучение языков] Hi Programming Language
- [JavaScript, PostgreSQL, Программирование, Алгоритмы] Immutable Trie: найди то, не знаю что, но быстро, и не мусори
- Выпуск Vue.js 3.0.0, фреймворка для создания пользовательских интерфейсов
Теги для поиска: #_programmirovanie (Программирование), #_scala, #_scala, #_golang, #_java, #_kotlin, #_programmirovanie (
Программирование
), #_scala
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 11:57
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Disclaimer:
Это не маркетинговая статья и не наброс на вентилятор. Это размышления на тему того, что происходит на рынке Scala-разработки от инженера, который долгое время пытался перейти именно на Scala. Ни в коем случае не претендую на истинность. это сугубо личное мнение. Будьте внимательны, в этих размышлениях имеется очень сильная региональная специфика, в других регионах нашей планеты ситуация может быть совсем иной. мой основной бэкграунд - Java бэкенд. В какой-то момент стала интересна Scala. Я поработал около года в маленьком стартапе, где мы переписывали бэкенд с Python на Scala. Затем через некоторое время я начал искать варианты с переездом в цивилизованные страны и получил 4-5 офферов на Scala в нескольких Европейских странах и 1 оффер на Java… Так я оказался в Австралии. И без Scala. Сложно сказать, почему я сделал такой выбор, но естественно через некоторое время я задумался, а не стоит ли попытаться воплотить свою мечту и все же найти компанию, которая бы использовала Scala не только для Data-Science, но и для разработки бэкенда.В общем, открыл я LinkedIn в надежде посмотреть и повыбирать вакансии, и был просто шокирован, когда увидел ровно 3 вакансии на весь материк, причем 2 из них от одной и той же компании :(Здесь нужно сделать ремарку о том, что же из себя представляет рынок разработки в Австралии: здесь есть офисы нескольких крупных компаний типа Google, Amazon, Microsoft, есть Atlassian, который пытается быть на них похож, есть несколько заскорузлых монструозных банков (как везде) и огромная куча мелких (и не очень) стартапов. Как вы можете себе представить, почти никто из них не использует Scala вне контекста Data Science. Компании можно разделить на 2 большие категории: устоявшиеся компании (в основном Java и, что меня очень сильно удивляет, dotNet, видимо это следствие как раз наличия офиса Microsoft и работы его маркетологов) и хипстерские стартапы с GoLang или NodeJS на бэкенде. Надо сказать, что здесь довольно сильно развито движение FullStack разработки, поэтому NodeJS очень популярен, так как позволяет фронтендерам писать бэкенд :)На удивление, есть даже несколько (больше 1) компаний, пишущих на Clojure и Elixir. Kotlin тоже немного присутствует, но только совместно с Java.В общем, я задумался, почему так происходит. Scala (как и любой JVM язык) во многом похож на Java. Java стала популярна прежде всего благодаря нескольким вещам: удобстве при работе с большой кодовой базой, а также очень продвинутому рантайму.Моя версия заключается в том, что популярность всех JVM-based языков находится под угрозой благодаря популярности микросервисов и сопутствующих технологий.Вроде бы пока звучит не очень логично, но попробую объяснить: Итак, если мы считаем, что основными движущими факторами популярности Java были продвинутый рантайм и удобство при работе с больной кодовой базой, то сегодня при использовании микросервисного подхода это становится не таким важным. Работать с большой кодовой базой больше не нужно: микросервисы в разных репозиториях, у стартапов просто нет большой кодовой базы. Те же, кому нужно работать с большой кодовой базой, продолжают сидеть на Java, как крупные банки.Навороченный рантайм вытеснен Docker и Kubernetes, которые благодаря легкому автоскейлингу позволяют теоретически писать приложения даже без сборки мусора, просто перезапуская приложение каждые N минут. Вместо этого важными становятся: малый размер бинарника (здравствуй, GoLang), простота и предсказуемость (даже примитивность рантайма), интероперабельность с другими частями системы (здравствуй TypeScript и Swift на бэкенде).В общем, к моему большому сожалению, похоже из всех JVM-based языков причины использовать на бэкенде остались только у Java, благодаря необходимости поддерживать огромное легаси и наличию большого количества разработчиков на рынке, ну и возможно Kotlin, благодаря Android (хотя как это связано с бэкендом я не придумал).А теперь давайте сыграем в небольшую игру.Представьте себя CTO стартапа, который выбирает, на каком языке ему стоит писать бэкенд. Что бы вы выбрали?Раунд 1: Go vs JavaБезоговорочно Go. Даже при условии, что мой опыт с ним составляет всего пару месяцев. Он настолько простой, что найти людей, могущих и умеющих на нем писать, не составит труда, уровень тулинга и поддержки крайне высок, наличие инструментов и библиотек практически на уровне Java. Так что в этой паре единогласно побеждает Go.Раунд 2: Go vs ScalaВот это сложный выбор лично для меня. Чисто с точки зрения именно языка (а не платформы) Go мне совсем не нравится. Он заставляет тебя делать некоторые довольно неприятные вещи, он многословен и коряв (личное мнение). Но за счет таких фич, как малый размер бинарника, кросс-компиляция, потребление памяти и т.д. в долгосрочной перспективе он выглядит более выигрышным.К сожалению, я должен признать, что в такой постановке вопроса на сегодняшний день я бы выбрал Go. Раунд 3: Java vs ScalaЯ, конечно, не задумываясь выбрал бы Scala, а потом бы пожалел, когда мне пришлось бы нанимать толпу разработчиков, и я бы осознал, что их просто нет на рынке. И поэтому переписал бы все на Go.Раунд 4: Java vs KotlinНу тут вообще без вопросов, конечно Kotlin. Нет ни одной причины, начиная новый проект, писать его на "голой" Java.Раунд 5: Kotlin vs ScalaСм. Раунд 3.Раунд 6: Scala/Java/Kotlin vs TypeScriptЕсли бы у меня был бэкграунд фронтендера, я бы, возможно, выбрал TypeScript. Ну и если бы я верил в то, что система, написанная FullStack-разработчиками может в принципе работать :)Раунд 7: Go vs TypeScriptНу тут просто супер очевидно, даже вообще без вариантов.А что выбрали бы вы?В качестве заключения.В общем, резюмируя сказанное выше, повторю, что у меня складывается стойкое мнение, что микросервисы и Kubernetes постепенно убивают Java и другие языки на базе JVM. Понятно, что Java будет жить вечно, как Cobol, Kotlin будет жить в Android, а вот Scala, похоже, в Data Science. Благодаря современным технологиям становится совсем не важно, на чем написан твой бэкенд, если его можно быстро запускать/перезапускать/автоскейлить.Прошу прощения, если для кого-то данная мысль оказалась слишком очевидной. В любом случае, ставьте лайки, шеры, репосты. Пишите в комментариях, если вы не согласны. Это всего лишь частное мнение, еще и выработавшееся под воздействием особенностей отдельно взятого региона. =========== Источник: habr.com =========== Похожие новости:
Программирование ), #_scala |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 11:57
Часовой пояс: UTC + 5