LINUX.ORG.RU

Go vs Kotlin

 , ,


1

4

Прошу помощи зрительного зала в оценке перспективности смены карьеры с Java Backend разработчика на Go или Kotlin Backend. Да, я знаю, что Kotlin - это больше Android, но вот прямо сейчас наклёвывается новая работа именно на Kotling и именно в Backend. Причём компания - вовсе не стартап переросток с тремя разрабами. Что бы вы выбрали?

  1. Отказались бы от Kotlin backend и продолжили искать Go backend
  2. Согласились бы на Kotlin backend
  3. Остались бы на теряющей популярность, но всё ещё жирной Java backend
  4. Попробовали бы что-то другое (в комментах укажите что)

И да, я считаю, что Java неуклонно движется в сторону COBOL номер два. Со временем популярность Java продолжит падать и дальше, вплоть до выхода из первой десятки популярных языков. По моим ощущениям на это понадобится не более десяти лет. При этом новых и интересных проектов на Java будет всё меньше и меньше, вплоть до полного исчезновения.

Недавно узнал, что Kotlin не привязан к JVM так сильно, как я до сих пор думал. Речь идёт о Kotlin Multiplatform.

В мире Go существует уникальная возможность перехода, которая закроется через 3 - 4 года. В подавляющем числе Go ориентированных компаний нет требования какого либо прошлого опыта разработки на Go и достаточно лишь опыта разработки на других ЯП, в числе которых обычно упоминают и Java. Если сейчас не запрыгнуть на этот поезд, можно опоздать и не запрыгнуть уже никогда. Уже сейчас начали появляться компании, где требуют хотя бы 2 - 3 года опыта на Go. Их пока мало, но будет больше. 2 - 3 года назад таких компаний не было вообще.



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

Переход на Go будет сложный - джависты часто страдают от того, что нет сахара и ООП. Подумай, надо ли оно тебе.

Их пока мало, но будет больше

Давно уже в вакансиях требуют от 2-3 лет гошки. Ты где-то не там смотришь.

Если есть возможность, я бы посоветовал свичнуться в Go - больше шансов найти работу будет кмк.

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

Я так понял что через 3-4 года в кордебалет не возьмут, потому что часики тикают.

Программисты отличаются от девушек с низкой социальной ответственностью?

Aber ★★★★★
()

Со временем популярность Java продолжит падать и дальше, вплоть до выхода из первой десятки популярных языков.

слишком хорошо, чтобы быть правдой

anonymous
()

Ну я не считаю, к примеру, что JVM куда-то там движется в сторону кобола. Забавно, что лет 10 назад я как раз так и думал. В Java тогда был реальный застой. Сейчас ситуация кардинально другая. Язык очень сильно меняется. Ещё лет 10 и его будет не узнать. Примерно в это же время ожидаю перестройки инфраструктуры. Maven, Gradle уйдут в легаси, Spring туда же и их место займут другие технологии, более оптимизированные под новую Java. Helidon, к примеру, хорош и от Oracle.

В Kotlin в общем и целом я слегка разочарован. Применять бы его не стал (кроме андроида). Я, кстати, его в продакшне применял ещё до того, как 1.0 зарелизили и с ним знаком неплохо, пишу не просто так. Но у них фокуса нет. Все эти мультиплатформы это минус, а не плюс. Они себя «ищут». На фоне Java 7 он был хорош, без вопросов. На фоне Java 22 - уже с вопросами.

Go - хз, интересно было бы попробовать, но у нас на нём не пишут. Есть у меня опасение, что гугл его прикроет в какой-то момент. Очень уж ненадёжные они. Но может это фобия.

Поэтому, имхо, оставаться в Java и держать нос по ветру. Всё будет ОК.

Я это говорю, как Java разработчик с опытом примерно 15 лет. В последние годы больше в сторону архитектуры и фулл-стека двигаюсь, но Java корни не забываю.

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

5. Остался бы на набирающем популярность java backend.

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

ya-betmen ★★★★★
()

2 или 3

И да, я считаю, что Java неуклонно движется в сторону COBOL номер два. Со временем популярность Java продолжит падать и дальше, вплоть до выхода из первой десятки популярных языков.

Зря так думаешь, популярность Java на рынке обеспечена довольно крупными игроками и она точно переживёт твою границу в 10 лет, это не PHP какой-нибудь. Да, возможно Kotlin внедрится глубже, но и Java в последние годы очень активно развиваться стала, как Oracle почувствовал что она может превратиться в COBOL.

EXL ★★★★★
()

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

Хотя приключе новизны и на JVM можно найти — например, попробовать найти работу на кложе %)

Nervous ★★★★★
()

Что бы вы выбрали?

2, потому что ни Java, ни Go как языки программирования мне не нравятся, а Kotlin выглядит ещё более-менее нормально (но я на нём ничего не писал).

theNamelessOne ★★★★★
()

папа бил не за то, что играл, а за то что отыгрывался. (с)

  • Kotlin это тупиковая ветвь.
  • Жаба живее всех живых, всех переживет, отлично развивается, кстати. (все кому не хватает сахара или еще чего - напишите, с примерами, обсудим)
  • Гошечка - не фанат, но скажу из общих соображений - если у тебя такое чувство, что надо бежать за уходящим поездом, то не надо бежать.
olelookoe ★★★
()

Если будешь с языка на язык скакать, то так нубом и останешься - вечный джун. Go вообще для паскальщиков, ну для студентов после вуза зайдет (повсеместно до сих пор изучают), чтобы сразу начать писать и нормально зарабатывать, не заморачиваясь чтением Мартина и других непризнанных «гениев»

rtxtxtrx
()

Java неуклонно движется в сторону COBOL номер два

Как будто это что-то плохое. Работа обеспечена даже на пенсии.

Если сейчас не запрыгнуть на этот поезд, можно опоздать и не запрыгнуть уже никогда

Для бэка это не так, тем более для голанга, который простой как полено. Специфический опыт актуален только для крестов, и может быть растишки.

наклёвывается новая работа именно на Kotlin и именно в Backend

Смотри лучше на ЗП и сам проект, на уровне архитектуры, а не вот эти фантики.

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

Для бэка это не так, тем более для голанга, который простой как полено.

Сам язык то да. Но вот чтобы писать вменяемый код на Go нужно осилить кучу его идиом, шаблонов и подходов ему подходящих. Так мне на нем сложней писать, чем на Java. На Java сервисов на Спринге нафигачил, связал Util-класами и готово. Никакого ООП — классическая Java.
Чуть менее чем весь код, что я видел в промышленных Go-проектах был похож на Java-лашпу — везде было написано как в Java/Spring, только Go языком. UserService, UserUtil и вот это вот все.

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

кучу его идиом, шаблонов и подходов ему подходящих

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

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

Каких таких идиом?

Например с io.{Reader,Writer} та своеобразный подход. NewFoo вместо конструктора. Использовать default value по максимум. Context. И т. п. Много их там достаточно.

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

Жаба живее всех живых, всех переживет, отлично развивается, кстати. (все кому не хватает сахара или еще чего - напишите, с примерами, обсудим)

Монад не хватает. Начинай.

hateyoufeel ★★★★★
()

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

Хотя, если тебе насрать что писать, и ты готов просто погроммировать отсюда и до обеда, вообще не приходя в сознание, то голанга сейчас вагоны и платят за него сравнительно неплохо, а осиливается он за пару недель, потому что сделан специально для дебилов (так Роб Пайк сказал!).

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

Если будешь с языка на язык скакать, то так нубом и останешься - вечный джун.

На Java с 2006 года, так что не джун.

Go вообще для паскальщиков, ну для студентов после вуза зайдет (повсеместно до сих пор изучают), чтобы сразу начать писать и нормально зарабатывать, не заморачиваясь чтением Мартина и других непризнанных «гениев»

Нет, Go - это просто Google заимствование из Plan9, вмести с одним из ключевых разработчиков Plan9, который помог им это развить до нынешнего Go: https://www.youtube.com/watch?v=ql-uncsqoAU

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

Например с io.{Reader,Writer} та своеобразный подход

Обычные потоки как везде.

NewFoo вместо конструктора

Привет жабаскрипт.

default value

Сахарок

Context

Обычный IoC.

Для любого бэкендера, кто в профессии лет 10 и прочитал хотя бы пару книжек по архитектуре, или тупо SICP, всё это не удивит.

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

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

Не хватает подробностей.

А kotlin это ж штука поверх джавы, наверно и перехода особо не будет.

Kotlin Multiplatform - уже не совсем поверх джавы.

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

Не хватает подробностей.

The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.
Rob Pike

Ну Java тоже про это же самое:

C++ without the guns, knives or clubs.
James Gosling

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

Как будто это что-то плохое. Работа обеспечена даже на пенсии.

Очень не хочется возиться с мохровым легаси и кучей чьих-то костылей.

Для бэка это не так, тем более для голанга, который простой как полено.

Язык может быть и простой, но с массой тонкостей и конвенций. Без опыта туда по-любому перестанут брать как только он достигнит популярности, ну например, JS в том же backend.

В индексе от TIOBE Go уже прыгнул на 8-е место с 13-го в прошлом году. Он уже в десятке популярных. А Java упала с 3-го на 4-е место за тот же год. Если так и дальше пойдёт, они встретятся года через 3 - 4. К тому времени гошников станет больше, а требования в вакансиях более Go-специфичными. Без опыта будут брать лишь джунов с соответствующей зарплатой. Даже если я соглашусь побыть немного джуном-переростком, меня всё равно не возьмут из-за over qualification.

https://www.tiobe.com/tiobe-index/

Смотри лучше на ЗП и сам проект, на уровне архитектуры, а не вот эти фантики.

ЗП на 5% выше, кое что другое лучше, кое что хуже (например расстояние). Сам проект архитектурно ещё не знаю, но он для внутреннего использования, не на продажу. Нынешнюю работу я сменю по-любому из-за существующего там бардака, самодурства и бесперспективности. Но это к моему вопросу слабо относится. Просто боюсь упустить шанс изменить карьеру в более перспективном и интересном направлении.

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

Сам язык то да. Но вот чтобы писать вменяемый код на Go нужно осилить кучу его идиом, шаблонов и подходов ему подходящих. Так мне на нем сложней писать, чем на Java. На Java сервисов на Спринге нафигачил, связал Util-класами и готово. Никакого ООП — классическая Java. Чуть менее чем весь код, что я видел в промышленных Go-проектах был похож на Java-лашпу — везде было написано как в Java/Spring, только Go языком. UserService, UserUtil и вот это вот все.

Вот вот. А теперь представим себе, что Go достиг некоего критического уровня популярности. Будут ли компании брать вот таких вот недо-Go разработчиков, которые имеют опыт лишь в Java? Полагаю, что не будут. Сейчас они это делают исключительно потому, что опытных гошников критически мало.

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

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

Идея Go, как и его реализация — прекрасны. На нём пишут бэкенды, утилиты, блокчейны, десктоп и мобильный софт, игры. Да много чего пишут. И это хорошо. Там, где Go подходит по требованиям, его стоит использовать. Компиляция, управление зависимостями, управление модулями — всё удобно сделано. Очень экономит время, в отличие от Java, Python, даже NodeJS — где с инструментами приходиться больше бороться, чем просто использовать. Статическая линковка — это тоже удобный подход.

И правильные многопоток с асинхронностью. После других яп вызывают восторг «ну наконец-то!».

Go под лицензией BSD, поддерживается и другими компиляторами (gcc), так что он вряд ли сдохнет — сообщество подхватит. Уже слишком много проектов, чтобы он мог быстро исчезнуть.

Но, конечно, лучше писать на том, что нравится. ТС: пиши на том, что нравится! Не будешь счастлив от процесса — сгоришь и уйдёшь из профессии. Зарплаты и перспективы всё равно примерно одни и те же. Если понадобиться, всегда можно свичнутся. Ты же будешь не джун после института, быстро вырастешь.

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

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

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

Это язык для джунов. Но есть области, которые сложны сами по себе, а не из-за выбранного языка. Посмотри на Cosmos SDK, мозг сломать можно.

Если ты хочешь как в Java — обломишься. Потому что Go это не Java и предметные области у них разные. Достаточно ли у тебя гибкое мышление, чтобы осилить новую парадигму?

Был тут один дед из мыла.сру, который из перла в питон никак не мог перейти, долго толксы смешил…

InterVi ★★★★
()

В плане бэка Kotlin как-то не впечатляет (собственно во всем окромя Андроид разработки), а Java потихоньку чистят от хаоса, добавляют фичи. Замечание с отвязкой от JVM хорошее, но в это время и Java на AoT нативку сильный упор сделала.

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

Переход на Go будет сложный - джависты часто страдают…

Мои наблюдения скорее:

You can write FORTRAN in any language.

Так и продолжают клепать всякие фактори с синглетонами, называть пакеты model и store, пихать всё в один гигантский интерфейс… в общем продолжают писать на Go, как на Java и не используют из языка совсем ничего. А потом ругаются на все интернеты, как в Go нет сахара и ООП.

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

Ага и что нет function overloading. А лично для меня слайсы выглядят немного странными, как недоделанные ArrayList. Но к этому можно привыкнуть.

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

Будут ли компании брать вот таких вот недо-Go разработчиков, которые имеют опыт лишь в Java?

Как будто опыт мешает писать говнокод. Если разработчик макака с квадратно-гнездовым мышлением, которая шлёпает формочки на фреймворке по инструкции, то с этим ничего не поделаешь.

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

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

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

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

Переход на Go будет сложный - джависты часто страдают от того, что нет сахара и ООП. Подумай, надо ли оно тебе.

В обратную сторону тоже работает…

Zhbert ★★★★★
()

Не вижу проблем в переходе с Ява на Котлин. Ты ж на бэке будешь использовать всё те же фреймворки. Тот же Спринг например или ещё что. Опять же бывает, что в одном проекте и старый код на Яве и новый на Котлине.

Другое дело, что мне Котлин местами не очень нравится, но то такое.

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

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

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

Например с io.{Reader,Writer} та своеобразный подход

Обычные потоки как везде.

Совсем не то. В той же Жабе, если ты хочешь позволить записывать свой объект куда-то можешь или сделать метод, возвращающий InputStream и пускай клиенты вручную перекладывают из одного потока в другой. Ну или ты можешь сделать метод writeTo(OutputStream), что уже ближе к тому что сделали в Го. Только а если у клиента Writer а не OutputStream? А если клиент вообще хочет в byte[] прочитать?
В Го совсем другая философия за этим стоит. И там раз реализовав io.Writer будет работать везде и для всех.

default value

Сахарок

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

Context

Обычный IoC.

И контейнера там никакого нет...

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

Еще добавлю. Не спора ради, просто впечатлениями делюсь. Мне кажется, ни в одном популярном императивном языке не уделяется столько внимания именно философии. В Го об этом кричали практически на каждом шагу. Этим Го сильно UNIX напоминает. Оно и не удивительно, так как корни и создатели из одной тусовки.

По Жабе, только Effective Java могу вспомнить из похожего.

urxvt ★★★★★
()

Мне серверное программирование более-менее понравилось на скале.

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

Скала 3 мне понравилась, хотя настоящего монадического сахара по-прежнему не хватает (вот, привязались к этому for-comprehension для коллекций!)

Не рассматривал этот язык?

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

Мне скала кажется более надежной и простой, чем котлин. Видимо, черты авторов передались…

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

В Го совсем другая философия за этим стоит. И там раз реализовав io.Writer будет работать везде и для всех.

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

чтобы они работали из коробки, не требуя конструктора или другой инициализации

Так это и есть сахарок.

И контейнера там никакого нет…

Конечно есть, вид сбоку.

уделяется столько внимания именно философии. В Го об этом кричали практически на каждом шагу

Да что там за философия? Банальные вещи, которые должен знать любой программист, неважно на чём он пишет. Которые были очевидны 50 лет назад во времена Паскаля, а сейчас почему-то нужно аж целый язык запиливать, чтобы народ не лепил совсем уж лютый говнокод. Добавь в Паскаль корутины он будет в 10 раз лучше голанга.

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

Про жабомонады на русском

Это говно а не монады. Не вижу там в статье код, который работал бы для любой монады вообще. То, что к Optional или List прикрутили .map или .and_then ещё не добавляет монады в язык.

hateyoufeel ★★★★★
()