LINUX.ORG.RU
ФорумTalks

Scala vs Go

 , , ,


1

4

Хотелось бы послушать лоровских аналитиков по поводу карьерных перспектив Scala и Go. Я пока думаю, что у Go перспектив больше. Причин несколько:

  • За Go стоит более серьёзная корпорация
  • Go самодостаточен, то есть он не привязан к виртуальной машине, разработку которой не контролирует
  • На Stackoverflow Go в разы популярнее, чем Scala
  • На сколько я могу судить, область применения Go гораздо шире

А вы что думаете?


А вы что думаете?

Я думаю надо знать и то, и другое если ты хочешь гробить своё здоровье до старости сидя на галере. И да, оставь место в голове для ещё пары языков, которые станут популярны лет через 7 (не раст, он не станет популярным никогда).

dnb ★★★★
()
Ответ на: комментарий от dnb

Речь вовсе не о галере. И да, место в голове для новых языков есть. Просто поступают предложения по обоим языкам, а мне кажется Go более перспективным, в то время как Scala более узконаправленным - big data и подобное. Захотелось сравнить свои ощущения с мнением лоровских аналитиков.

hummer
() автор топика

В Go порог вхождения намного проще, спрос будет больше. Scala - скорее что-то очень нишевое.

th3m3 ★★★★★
()

Довольно скучно обсуждать это по сотому разу, на обоих можно делать что-то полезное, но лично я go не очень жалую, какой-то он куцый, выглядит как шаг назад, такие вот мысли. А выбирайте то, на что есть спрос рядом с вашим местом обитания.

abcq ★★
()

Выбирай тот, который тебе больше нравится.

theNamelessOne ★★★★★
()

В целом согласен с твоими аргументами. Я будущего у Scala не вижу вообще никакого. Одно время Scala метила на должность better Java, но вообще говоря была для этого не слишком удачным выбором, уж больно академичен язык. А с появлением Kotlin выбор масс стал очевиден. А потом и Java рванула, так что я честно говоря уже и у Kotlin будущего не вижу за пределами андроида.

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

В целом я бы рекомендовал изучать Go любому, кто хочет связать своё будущее с бэкэндом.

Legioner ★★★★★
()

Странный выбор. К скале можно даже не приближаться если не знаешь жабку. А если ты знаешь жабку нафига тебе скала? Там работы на 100 лет вперёд хватит без всяких скал-скакал. Если в конторе используют скалу, ну ок выучишь за недельку.

Голанг конечно можно тыкать, но там начались какие-то движухи с дженериками, т.е. похороны языка. Кроме того ниша довольно узкая.

Go самодостаточен

Он совершенно несамодостаточен. В частности встроенные типы (тот же map) невозможно переписать на голанге. С дженериками будет можно, но это превращение в монстра а ля кресты. А зачем нужны ещё одни кресты? (Ну кому нужны могут взять D).

карьерных перспектив

Карьерные перспективы зарабатываются работой, т.е. опытом, а не надрачиванием очередного язычка.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от th3m3

На Scala можно писать всё то, что иначе бы писалось на Java.

rupert ★★★★★
()

А я думаю, что Scala ощутимо выразительнее.

BattleCoder ★★★★★
()
Ответ на: комментарий от no-such-file

Странный выбор. К скале можно даже не приближаться если не знаешь жабку. А если ты знаешь жабку нафига тебе скала? Там работы на 100 лет вперёд хватит без всяких скал-скакал.

Популярность Java падает и хотя она всё ещё выше, чем у обоих языков, о которых я спрашиваю, тенденция налицо. Как по мне, Java вырождается в помойку технологий (взять хотя бы модули), а почти повсеместное использование Spring Boot и его декларативного программирования через магию аннотаций лишь раздражает. Да, работа на Java будет всегда, но со временем рост зарплат начнёт отставать (скалистам и гошникам уже сейчас платят значительно больше) и новых проектов на Java будет всё меньше и меньше. Java неминуемо станет вторым коболом.

Карьерные перспективы зарабатываются работой, т.е. опытом, а не надрачиванием очередного язычка.

Разумеется. И вот именно сейчас есть окно возможностей в несколько лет, за которые ещё можно запрыгнуть на подножку уходящего поезда. Позже без опыта в Go синьёров брать туда перестанут, а вновь становится джуном и я не захочу и меня не возьмут из-за overqualified.

hummer
() автор топика
Ответ на: комментарий от no-such-file

Он совершенно несамодостаточен. В частности встроенные типы (тот же map) невозможно переписать на голанге.

разверни плиз мысль, что именно не позволяет быть самодостаточным голэнгу? разве не возможности языка + богатая стандартная библиотека обеспечивают самодостаточность? я уже не говорю про встроенные возможности профилировщика.

встроенные типы (тот же map) невозможно переписать на голанге.

ничего не понял. зачем его переписывать, если это встроенный тип?

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 1)

Я пока думаю, что у Go перспектив больше.

вот с этой мыслью отбрось оставшиеся сомнения и садись за го. если уже есть опыт с другими языками, то через неделю-две уже будешь писать вполне рабочий код. даже быстрый, каким бы корявым он ни был. но вместе с его очень низким порогом вхождения не стоит думать, что через пару недель ты будешь знать его целиком. это самое частое заблуждение, которое я встречаю. если внезапно почувствовал что изучил язык, начни с проверки себя вот по этому списку http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/ . Если и тут вопросов не возникло, можешь пойти дальше в части профайлинга, например вот такое https://teivah.medium.com/go-and-cpu-caches-af5d32cc5592

еще вот этого чувака рекомендую почитывать https://dave.cheney.net

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 2)
Ответ на: комментарий от Legioner

Одно время Scala метила на должность better Java, но вообще говоря была для этого не слишком удачным выбором, уж больно академичен язык. А с появлением Kotlin выбор масс стал очевиден.

И Scala и Kotlin не имеют своих виртуальных машин, кормятся на поляне JVM и очень зависят от Оракла. Уже этого достаточно, чтобы засомневаться в их будущем. По факту это узконишевые языки. Kotlin так и не смог завоевать backend и получил более-менее приличное распространение лишь в Андроиде. Кому будет интересен Kotlin после того, как Google забросит Андроид и сосредоточится на Фуксии? В любом случае мобильными приложениями я не занимаюсь (в своё время хватило J2ME), поэтому для меня Kotlin не актуален уже сейчас.

А потом и Java рванула, так что я честно говоря уже и у Kotlin будущего не вижу за пределами андроида.

Да ну, куда Java рванула? Туда просто начали добавлять всё подряд, подчас недоделанное или мало кому нужное (обычно по причине недоделанности). Язык, из простого и элегантного, превратился в какое-то нагромождение. Ну вот взять, например, модули, которые так и не стали маинстримом. Ещё и старые недоделки исправлять не хотят, например дженерики с их type erasure, которые являются лишь синтаксическим сахаром вокруг преобразования типов, а не ожидаемым подобием нормальных темплейтов из C++. Новые JEP-ы выходят как из рога изобилия, а народ даже переменные по-новому объявлять не переучился.

hummer
() автор топика
Ответ на: комментарий от upcFrost

А что не говно, то моча? Что сейчас не говно?

hummer
() автор топика
Ответ на: комментарий от hummer

И Scala и Kotlin не имеют своих виртуальных машин, кормятся на поляне JVM и очень зависят от Оракла.

Ничем они от оракла не зависят. В жаве свято блюдут обратную совместимость, ты можешь на 17 жаве запускать байткод от 1.4 и он будет работать. То бишь что бы оракл не придумывал, можно это вообще игнорировать и ничего плохого не будет. В остальном - примерно согласен.

Да ну, куда Java рванула? Туда просто начали добавлять всё подряд, подчас недоделанное или мало кому нужное (обычно по причине недоделанности).

Добавляют туда всё нужное. Ну кроме модулей. С ними да, вопросы имеются. Но они условно отключаются и скорей всего будут отключаться всегда.

Новые JEP-ы выходят как из рога изобилия, а народ даже переменные по-новому объявлять не переучился.

Кто-то и генерики пользовать не научился. Что там за народ у тебя такой.

Legioner ★★★★★
()

Зависит от твоих целей. Скала весьма сложная, не С++ или Раст конечно, но такое. Ты можешь вызубрить Скалу и чувствовать себя мужиком. Нет. МУЖИКОМ! Вызубрить Го гораздо проще. Да что там вызубрить, ты буквально в первый же час изучения можешь с легкостью написать какой-нибудь сервис или тул, потому что Го не удивляет, он просто… очевидный? Более того, ты можешь с легкостью читать большинство Го-кода вообще не изучая язык. В этом и плюс, и минус языка. Если твоя натура хочет чалладжей, то Го — сплошное разочарование.

filosofia
()

VPN ток включи, шоб в гугле не забанили, а так однозначно го.

massimus ★★★
()
Ответ на: комментарий от hummer

Вот, так точно. Джава будет вторым коболом, а скала четвёртым в лучшем случае. Если надо будет по работе, выучишь. А так не надо.

massimus ★★★
()
Ответ на: комментарий от filosofia

буквально в своем предыдущем комментарии описал именно этот кейс - низкий порог вхождения вводит как раз в такое заблуждение…

Более того, ты можешь с легкостью читать большинство Го-кода вообще не изучая язык. В этом и плюс, и минус языка. Если твоя натура хочет чалладжей, то Го — сплошное разочарование.

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

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 3)

Ты сам ответил на свой вопрос. Скала гниет, го цветет и пахнет.

umren ★★★★★
()

Их области применения мало пересекаются.

Go для того чтобы утилизировать прослойку программисотов мало способных к CS.
Поэтому Go будет популярнее

Scala для того чтобы дать программисту больше возможностей.

grim ★★☆☆
()
Ответ на: комментарий от ergo

Ты уходишь в дебри Effective Go, это другое. Возьми C++. Там сложность с порога, с самого синтаксиса. Даже синтаксис можно условно поделить на две части: базовый С с классами и Advanced на Тьюринг-полных шаблонах. И ты не можешь просто с наскока разобраться в этом, тебе нужны месяцы и годы, чтобы начать круто писать на шаблонах. И это все не отменяет тех же семантических штук, что в Го, вроде массивов с view/range, указателей и отчасти даже гц.

Го же — это типичный хуяк-хуяк и в продакшен.

Имея бэкграунд в С++ и Эрланге я читал и патчил Го-код (докер и кубернетес) вообще не глядя в мануал по языку. Потом открыл мануал и сходу смог написать тулу для мелкой автоматизации. Потом стал писать большинство сетевых сервисов на Го.

filosofia
()
Ответ на: комментарий от filosofia

Вот. Если умеешь программировать, ты уже знаешь го. Там всё сходу понятно.
Ради чего и придумывали, чтоб любой пришедший в гугла мог на нём писать, независимо от бэкграунда.

massimus ★★★
()
Последнее исправление: massimus (всего исправлений: 1)
Ответ на: комментарий от Legioner

Ничем они от оракла не зависят. В жаве свято блюдут обратную совместимость, ты можешь на 17 жаве запускать байткод от 1.4 и он будет работать. То бишь что бы оракл не придумывал, можно это вообще игнорировать и ничего плохого не будет.

А потом может выясниться, что оракловский JIT недостаточно хорошо оптимизирует байткод от Scala или Kotlin. Или, что он некорректно создаёт стек вызовов в исключениях. Или ещё какая-то хрень, например в стандартной библиотеке. Oracle пишет свой JVM прежде всего для Java.

Кто-то и генерики пользовать не научился. Что там за народ у тебя такой.

Почему ты так решил?

hummer
() автор топика
Ответ на: комментарий от grim

Go для того чтобы утилизировать прослойку программисотов мало способных к CS.

Это ещё почему и какой язык подходит для способных к CS?

hummer
() автор топика
Ответ на: комментарий от hummer

И Scala и Kotlin не имеют своих виртуальных машин, кормятся на поляне JVM и очень зависят от Оракла

  • У Kotlin есть Kotlin Native как минимум
  • OpenJDK пилит не Oracle в одно лицо, а целый консорциум
Ford_Focus ★★★★★
()
Ответ на: комментарий от hummer

Это ещё почему и

Вы хоть спеки почитайте.
Java кстати тоже создавали с той-же целью, утилизировать неспособных в C/C++.

какой язык подходит для способных к CS?

Любой

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от filosofia

И ты не можешь просто с наскока разобраться в этом, тебе нужны месяцы и годы, чтобы начать круто писать на шаблонах.

По-вашему, это достоинство?

pr849
()
Ответ на: комментарий от grim

Go для того чтобы утилизировать прослойку программисотов мало способных к CS.

lolz. Комплексность языка и способность к CS никак не связаны, я бы даже сказал что в целом даже мешает т.к. чем сложней сам язык тем меньше времени у тебя на проявление способностей к CS.

Комплексные языки куда сбагрили кучу всякого мусора чаще создают проблемы, а не решают их.

Ритуалистика, да и только.

umren ★★★★★
()
Последнее исправление: umren (всего исправлений: 1)
Ответ на: комментарий от filosofia

На мой взгляд все перечисленное относится именно к порогу входа и он действительно невероятно низкий. Но ведь это не значит, что он весь такой простой и без «Челленджей». Именно об этом я говорил - их там достаточно. Не сравнимо с плюсами, конечно )

ergo ★★★
()
Ответ на: комментарий от grim

Java кстати тоже создавали с той-же целью, утилизировать неспособных в C/C++.

Си создавали для утилизации неосиляторов асма :). Это эволюция, а не что-то плохое.

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 1)
Ответ на: комментарий от umren

lolz. Комплексность языка и способность к CS никак не связаны, я бы даже сказал что в целом даже мешает т.к. чем сложней сам язык тем меньше времени у тебя на проявление способностей к CS.

Точняк. Поэтому настоящие программисты пишут на Scheme. Реально проще языка нет.

hateyoufeel ★★★★★
()
Ответ на: комментарий от umren

Комплексность языка и способность к CS никак не связаны, я бы даже сказал что в целом даже мешает

Танцор, яйца, мешать.

bread
()
Ответ на: комментарий от ergo

низкий порог вхождения вводит как раз в такое заблуждение

Это теперь вместо похапе? Перешагиваешь через низенький порожек и выходишь на минное поле?

bread
()
Ответ на: комментарий от grim

Вы хоть спеки почитайте.

Причём тут спеки?

Java кстати тоже создавали с той-же целью, утилизировать неспособных в C/C++.

Неверно.

Любой

Тогда и к Go не должно быть никаких претензий в области CS.

hummer
() автор топика
Ответ на: комментарий от Ford_Focus

У Kotlin есть Kotlin Native как минимум

Где и как часто этот Kotlin Native применяется, ну скажем в мире backend?

OpenJDK пилит не Oracle в одно лицо, а целый консорциум

Лишь Oracle определяет что есть Java и JVM. Вспомните историю про Apache Harmony и почему этот проект закрылся.

hummer
() автор топика
Ответ на: комментарий от Legioner

ты можешь на 17 жаве запускать байткод от 1.4 и он будет работать

Это в общем смысле верно, но со скалой немного сложнее, из-за отсутствия обратной совместимости между версиями самой скалы, сложной таблицы совместимости версий скалы и версий жвм а так же окончанием сапорта как самих версий скалы так и переезда библиотек на новые версии и отсутствие фиксов в старых.

ya-betmen ★★★★★
()
Ответ на: комментарий от Legioner

Ничем они от оракла не зависят. В жаве свято блюдут обратную совместимость, ты можешь на 17 жаве запускать байткод от 1.4 и он будет работать. То бишь что бы оракл не придумывал, можно это вообще игнорировать и ничего плохого не будет. В остальном - примерно согласен.

Надо сказать что это на практике это не совсем так. При каждом major обновлении Java что-то до отваливается и нужно обновлять зависимости. Можно долго рассказывать что это от того что разработчики этих зависимостей чудаки, но необходимость что-то делать при обновлении это не отменяет.

maxcom ★★★★★
()
Ответ на: комментарий от hummer

Смотри как минимум на предметную область, в которой хочешь работать. Если, конечно, твоя цель – не писать лопатой CRUD отсюда и до обеда. Иначе, конечно, роляет только язык.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Смотри как минимум на предметную область, в которой хочешь работать

Судя по вакансиям, то кроме мобилок и веба ничего не существует

CryNet ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.