Go или Golang — компилируемый язык программирования от создателей таких шедевров как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Golang является краеугольным камнем стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного кастрирования.
Почему только в одной стране мира лучшие в мире не имеющие аналогов программисты додумались использовать язык консольных утилит для написания бизнес-логики?
>>3677874 потому что бизнес-логика это обычные КРУДы со структурами, а не ебаные фабрики фабрик и декораторы которые заебешься чинить когда индусы-вайбкодеры выкатят очередной релиз срыгбута
>>3678497 Типо на бекенде ничего не расчитывается, да? Скидочка тебе на фронте считается, прям в консоль.логе? А то, что эта скидка у всех разная, ты не знаешь даже
>>3678550 круды это все что работает с бд, в том числе произвольные расчеты и запись результатов расчетов в БД, а бизнес-логика это слишком широкое понятие, и есть везде, в том числе на фронте - определение цвета кнопочек и тд
>>3678808 >>3678847 >>3679013 Шизы, у вас язык изначально дизайнился под нормальное завершение и sigterm. И по туллингу языка это видно. Об этом я и говорил Если точить язык под cli, то у него максимально шизовая философия для етоггт
Ну что, goспода, пора на мороз. Авито, Туту и Skyeng начинают массовые сокращения гошников.
>Очередные сокращения в Туту, Авито, Альфа, Skyeng
>В компании Туту сейчас сокращения, об этом даже пишут публично сотрудники что меня удивило. >Сокращения действительно большие. Источник: тут
>Из моих источников, сейчас так же сокращения в Авито в разных департаментах, связано это со снижением инвестиций в новые продукты и закрытие убыточных.
>Альфа так же старается сократить расходы и увольняет людей, пытаясь переложить временные расходы на аутстафф.
>Так же знаю что сокращение в SkyEng, об планах я знал еще полгода назад.
>По некоторым моим источникам, скоро ожидается еще пару волн сокращений в различных больших компаниях.
>>3683560 > потому что пустой массив и нул - разные вещи, долбоеб почему этот аноньчик сначала говорит очевидные вещи а вслед за этим пытается оскорбить? > в пгх есть херовина чтоб с этим правильно работать, кури доку не знаю никакого пгх, да и я давно уже нашел pq.Array, то что было нужно
>>3686946 Потому что контекст нужен для утечек памяти, а не для завершения работы. Единственный способ завершить работу здесь и сейчас - это убить процесс.
>>>3687106 >Потому что контекст нужен для утечек памяти, а не для завершения работы. Лучше бы молчал. Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.
>>3687231 Додстер, нахуй ты мне линукс показываешь? Я тебе че написал? Если повезет с ОС - закроют твою ебучку. Го это не linux-only язык, ебанату Пайку было похуй приводить все ОС со всеми разными имплементациями IO к единому стандарту.
>>3688813 В чем смвсл вашего срача? Как будто ваши жсоноукладчики не в кубере крутятся и если это поделие как то ебанет ос в контейнере - придет ООМ и все почистит по красоте. Или вы embed на гошке писать собрались?
>>3693566 Я 20 лет в бекенде, на последней работе мы с коллегой плюсовиком вытащили из говна финтех стартап, который написали такие максимки тимлиды +33см. Го - хуйня. Максимум на что он годится - это консольные утилитки и только потому, что собирается в один бинарник. Язык ебаный, все через жопу, нет пути.
>>3693566 >на го все действительно так хорошо как пишет этот педрикс Этот чел инфоцыган. Разумеется у него все хорошо и прекрасно, так как надо курсы и менторство продавать. В реальности хуйня и работу не найти.
>>3694578 Да, ну и меня смущает, что везде она описывается как "де факто стандарт", "да бля буду скоро в стандартную библиотеку добавят", "база, каждый должен уметь пользоваться", при этом последняя версия самого пакета 0.20, то есть как будто хуитка в стадии беты
Сука, какая же ебанутая система модулей в го. Ну вот как можно вообще программу разделить на пакеты или просто на файлы? Почему нормально работает, только когда все в main.go? Просто блять как?????? Как мне сделать отдельный пакет с функциями чтобы я мог его импортировать, при этом не выкладывая ничего на github?
>>3695311 просто еще один пизданутый не осилил доку открыть и полез в гопоту, она такую хуйню про пакеты несет >>3695291 завязывай с разработкой, ты блядь сортер не вывезешь даже
>>3696104 >релиз чего блядь? там меньше 100 строк, что ты туда собрался насрать, поехавший? У тебя проблемы с головой? Не можешь два приложения прочесть? >го до сих пор 1.2*,и че? >Регулярно делать релизы не помешало бы, это дисциплинирует.
БЛЯТЬ БЛЯТЬ БЛЯТЬ ДА КАК В ЭТОМ GOВНИЩЕ ЕБАНОМ РАБОТАТЬ С ОШИБКАМИ ААААААА МОЯ ЖОПА Нет, ну серьезно, ребзя, это же просто какой-то пиздец. Вот как я привык в любом языкнейме с нормальными эксепшнами:
- валидирую формочку, формочка невалидна - плюнулся каким-нибудь условным new ClientException(418, "формочка невалидна, пашел нахуй отсюда"), на самом верху его поймал и вернул 418 с опциональной датой - база встала раком / ридер не ридит / врайтер не врайтит - плюнулся эксепшном, поймал наверху, пукнул в лог, вернул 500 - фейл авторизации - плюнулся AuthException, поймал, вернул 401
При этом есть стектрейсы из коробки, то есть при мало-мальском использовании мозга стектрейс уже должен предоставлять полный контекст ошибки без каких-либо лишних телодвижений.
А в goвне что? Стектрейса нет, изобретать его считается не тру говновей. Предлагается юзать тот факт, что ерроры приходится руками просирать наверх через все слои, и ручками же обмазывать их дополнительным контекстом, ну ок. В сети толковых примеров, как это делают достопочтенные goспода, хуй да маленько, зато тысячи мамкиных вебмастеров наперебой друг другу рассказывают, как охуенно удобно делать fmt.Errorf("baza puknula: %w", err), ебаный стыд блять, с такими еррорами ни о каком структурном логгировании говорить конечно не приходится, не говоря уже о том, что зачастую будет крайне хуевой идеей сирануть юзеру в ебало сырым еррор месседжем, а никакой дополнительный типа message/reason с этим Errorf не протащишь.
Но хорошо, допустим я накостылил какой-то свой ахуительный кастомный еррор с возможностью врапа с обмазыванием доп контекстом. Допустим, где-то в кишках бизнес логики у меня сидит функция, которая может вернуть еррор. Что там за еррор - одному богу известно с точки зрения вызывающего кода, может форма не провалидировалась, может база пукнула, может еще что. Но если это форма не провалидировалась, то такой еррор надо пропустить наверх без изменений; если база пукнула, то надо его обмазать контекстом/каким-то трейсом и пропустить наверх; если еще что-то, то обернуть в свой кастомный накостыленный еррор и пропустить наверх; то есть это надо писать какой-то громоздкий, кривой, уродливый switch. И писать его придется, как я понял, абсолютно в каждом ебаном месте, где вызываемый код может вернуть ошибку. И как жить с таким говном?
>>3696814 >кишках бизнес логики Ты понимаешь, что долбоёб тут ты? GOвно не предназначено для бизнес логики. Это язык консольных утилит и небольших IO приложений для обработки сетевых запросов. Всё. Юзать GOвно для бизнес логики может прийти в голову только ебанутому. То что аналоговнетные ру программисты додумались протащить его в бигтех - это тупой каргокульт в виду скудоумия. Анальники буквально как папуасы решили, что если они будут писать на языке из гугла, то станут гуглом.
>>3696814 Го не язык для веб макак с кпи в заднице, для макак дали джаваскрипт с подливой. Го - это си со сборкой мусора и писать надо вдумчиво и неспешно, как диды на мейнфреймах. В голанге ошибки сделаны хорошо. С ексепшенами ты ловишь нул референс где-то на самом верху и ебись, как хочешь. С err != nil ты на каждом шаге добавляешь осмысленную информацию через errorf и получаешь внятный трейс.
>>3696814 errors.As/Is ты не осилил? Если тебе надо преобразовать ошибку - протаскивай до хендлера и там мапь на что то юзерочитаемое. А вообще, в нормальном продекшене, отдаешь клиенту код ошибки а он уже на тексты справочников маппит.
>>3696814 >Допустим, где-то в кишках бизнес логики у меня сидит функция, которая может вернуть еррор. Что там за еррор - одному богу известно с точки зрения вызывающего кода Не понимаю, как это. Функция же делает одну вещь какую-то, соответственно, ошибка может быть связана только с этой одной вещью.
>>3696867 Прохладная история, братан. >>3696874 Сука у меня PANIC блять с тебя. Я же написал в посте про Errorf, что это поебота для школоподелок. Как ты будешь структурные логи делать со своим Errorf? Как ты будешь коды ошибок и request ID протаскивать? >>3696953 Так errors.As/Is это один хуй тот же свитч по типу еррора, и писать эту хуйню в каждом if err != nil - это полный пиздец. Вместо одного catch (MoyaEbuchayaOshibkaException e) {} надо переебываться с errors.As
>>3697016 >в каждом if err != nil Ты прикалываешься? На уровне хендлера ловишь ошибку - кидаешь в функцию враппер. Которая уже Через As/Is приводит удобоваримый для клиента вид. Пиздец блять....
>>3697227 И как много их? Я только пару книжек знаю, типа cloud native go и 100 mistakes, а какие еще полезные есть? Вот чтобы прям по бекенду было.
А так анон прав, в Европе вакансий на Го хуй да нихуяшеньки. Неиронично plata и nebius наверное два крупнейших голанк работодателя в гейропке. Ну и еще гугл, тесла и убер на го местами пишут, но туда еще попробуй попади.
>>3697063 Он наверное имел ввиду что глядя на функцию не видно что конкретно за ошибки она выбрасывает и чтобы это понять нужно идти и читать код, который ты вызываешь
>>3697363 Я считаю это мейнстримные практики, популяризированные легаси парашами, настоящий хайлоад инженер всегда готов к тому, что что-то пойдет не так, наиболее лаконичный способ выразить это в коде это оборачивать все запросы в 500 с данными или ошибкой в теле
>>3697336 Мне похуй. Поднятся по цепочке вызовов и посмотреть где варится ошибка - возможно. Если у него там цирк с конями и ошибки оборачивается без нормального %w - пусть хуй сосёт
>>3697339 И это все можно спокойно захендлить и зампапить в одной точке. А логгировать можешь как хочешь, хоть стринги реверсить
>>3697346 Кложу, пожалуйста, сюда вообще не затягивай. Невероятно грамотный язык в ебейшей экосистеме. Жаль работу хуй найдёшь к самураям не пойду, там релокацию просят
>>3697265 Да похуй чё там в европе, ты из треда в тред это пишешь. Если в мире существует бэк на го значит го пригоден для бэка. Точка. А мнение своё можешь в очко себе засунуть, никому оно не интересно.
>>3697727 Ну европа это один из немногих рынков труда помимо рф, где ты в теории можешь хоть какую-то работу найти. Поэтому мне не похуй. Я обратно из go в jvm ушел как раз по причине отсутствия вакух на го в ЕС.
А писать бек можно на чем угодно, хоть на эликсире, но как это коррелирует с реальным рынком труда?
Посоны, как вам такой план: учу Python и C (хочу научиться писать аналоги GoodbyeDPI), дальше вкатываюсь в Golang и пробую искать работу. Если не получится, то переключусь на Java. Помимо бэкенда интересна Android-разработка для реализации своих идей, поэтому Java и Kotlin имеет смысл изучить в любом случае.
>>3697751 Я скептически отношусь к таким заявлениям. IT зависит от экономики. Экономика когда-нибудь да выкарабкается. Тогда начнут нанимать как не в себя. Новые разработчики по любому будут нужны.
>>3697016 >Реквест айди Реквест айди шьётся в контекст через интерсептор, логгер конструируется через контекст. > Структурные логи Настройки логгера. >>3697336 В языках с эксепшнами ещё лучше - непонятно, что функция вообще может ошибку бросить, лол. И там и там публичный апи ошибок/эксепшенов смотреть надо.
>>3698034 ИИ в целом уже сейчас может писать код любой сложности для любого проекта. От круд поделки до движка распределенной СУБД. CockroachDB например сейчас целиком нейронками пишется.
В ближайшие годы никакого найма не будет - будут только сокращения. Сокращения будут идти нонстопом следующие 10-20 лет, пока нейронки не выведут на качественно новый уровень и тогда работники совсем станут не нужны.
>>3697741 >пробую искать работу Работы больше нет в этой индустрии, сынок. Иди учи что-нибудь другое, сантехнику, сварку, как плитку ложить, на врача вон пойди отучись - работа всегда будет. Айти умерло вне зависимости от стеков технологий. Можешь хоть семи пядей во лбу быть - работу уже никогда не найдешь. Даже если ты выпускник физтеха, мехмата, факультета компьютерных наук - один хер работу не найдешь. Кончилась наша индустрия.
>>3697752 >Экономика когда-нибудь да выкарабкается Это случится когда тебе будет 50+ лет, сынок. А я уже к тому времени походу в гробу буду лежать. Не дождемся мы этих времен.
Есть какой-то устоявшийся подход для возвращения из функции множества ошибок? Мой кейс: функция processSingleFile() получает содержимое файла, обрабатывает его. В случае ошибки возвращает ее. Эту функцию вызывает processFiles() которая в цикле вызывает первую. Сейчас чтобы не валить обработку пачки внутри processSingleFile() ошибки просто логгируются, я хочу логгировать всю хуйню уровнем выше, поэтому думаю завести в processFiles слайс ошибок и просто туда аппендить все что вернет processSingleFile. Со стороны кажется что это лютый говнокод, но в 90% случаях когда мне так казалось старшие коллеги говорили тип это ок, в го так принято. Погуглив нашел две либы для мультиэррора: от убер и хашикорп, но тащить либу чтобы собрать ошибки в одном месте кажется ебланством. В стандартной библиотеке есть errors.Join, но конкретно мне он не подходит тк ебаный zerolog игнорирует \n которые подставит в конец каждой ошибки джоин и просто высрет все одной строкой. Как быть?
>>3699337 В самом Го подход следующий: в сигнатуре метода возвращается error, на деле там некий MyErrorType который, или алиас для слайса MyOtherError, или структура со слайсом MyOtherError.
>>3699346 Нет в случае error рекомендуется именно error https://go.dev/doc/effective_go#errors >Library routines must often return some sort of error indication to the caller. As mentioned, Go's return values make it easy to return a detailed error description alongside the normal return value. It is good style to use the built-in interface type error for this purpose.
>>3699558 долбоеб, если у тебя проблемы с причинно-следственными связями, то поясню: документация - первый шажок к тому, чтобы стать нормальным инженером
>>3699586 я не отвечаю на вопросы долбоебов, которые ты сам себе придумал и считаешь важными, но они не имеют отношения к дискуссии, потому что логика, тупое ты уебище твой вопрос из анека про стаса михайлова ебущего детей
>>3699445 >Уебанство, я должен в голове держать что нужно скастить эррор именно к моему типу Потому что часто это не один вызов метода, а цепочка и где-то в середине может быть return nil, fmt.Errorf("zalupa %s failed: %w", id, err) Поэтому и рекомендуется возвращать error, а если надо получить детали ошибки errors.As() который работает и с wrapped errors.
>>3699675 По поводу сигнатуры я уяснил, тут без вопросов. Мне видится что возвращать обертку не сильно лучше чем слайс ошибок. Вообще я бы пользовался errors.Join но ебаный зиролог против этого
Просто структуру проще расширять в будущем. Если у тебя приватное API, то это не особо нужно. А вот если публичное то стоит подумать, не захочешь ли ты что-то добавить потом.
>>3699884 В публичных API принято такое писать в документации.
>>3699885 В приватном API делай как удобно, если что зарефачишь.
В целом нет какого-то идеального решения на все случаи жизни, каждый случай особенный. Просто читай что пишут, примеряй к своей ситуации, и решай надо оно или нет.
>>3699613 Дискуссии голосов в твоей шизоидной головушке? Изначальный тезис был, что каст ошибок в рантайме - говнокод. Тут появляется мелкобуквенное больное животное и высирается про какую-то документацию, хуйню, малафью. Когда ему указывают, что его трижды в рот ебаная документация никак не заставит говнокод лучше пахнуть - оно визжит как ему похуй на первоначальный тезис Иди ты нахуй, тупой агрессивный пидор. Убейся блядь об стену, говно. мимо
>>3700162 Каст wrapped-ошибки в рантайме это ок. У тебя для этого даже ok есть, который скажет скастилось или нет. Так что можешь вполне сделать свою структуру, которая для зеролога вернет ошибку как тебе надо, а для бизнес логики вытащишь массив.
Если ты совсем еблан и тебе не хочется кастовать - опиши свою структуру и возвращай там список всех ошибок в слайсе. И еще мета информацию, если надо. Но этот способ по сути первый, только менее привычный.
>>3700318 Ты не мне отвечаешь, а зиролог просто \n игнорирует и выводит все одной строкой, я думаю потрачу время чтобы это починить, тогда можно будет делать джоин и сигнатура будет валидная, обычный эррор без слайса и обертки
>>3711042 Потому что они у них всегда открыты. Это могут быть фейковые вакухи. Сейчас на хх.ру в айти где-то 60-70 процентов вакансий это просто фейковые. Они открытые в основном просто чтобы HR могли собирать базу кандидатов. Ну и дополнительно к этому еще хх.ру ставит большой ценник если компания долгое время не открывала вакухи, а потом решила внезапно открыть. Дешевле их всегда открытыми держать. Плюс для всяких там инвесторов надо показывать что компания жива, нанимает людей и как-то барахтается. Возможно для всяких льгот от государства тоже эти вакухи нужны.
При этом однозначно доказать что эта вакансия - фейк, нельзя. Поэтому компании держат эти фейковые вакансии месяцами, иногда меняя описание, иногда закрывая старые и открывая новые, но факт остается фактом.
>>3710992 >>3711042 Это не для тебя открыто. Большинство вакансий от крупных контор на хх это наебки и на самом деле никто никого не ищет. Цели у этого могут быть разные от сбора данных до понтов перед инвесторами. На них вообще нет смысла откликаться, а уже тем более читать описание и писать сопроводительное.
>>3711048 Конечно, а ты как думал? И выручка, и прибыль, и долги компании, и количество работников, и сам продукт который они делают. Акционеры это владельцы доли компании и их интересует буквально все. Мажоритарные инвесторы могут буквально на коды внутри компании смотреть которые обычно под NDA находятся.
>>3713519 >Попробовал го, не понял прикола писать велосипеды. Потому что велосипеды Го: - просты и понятны, тут нет магии аннотаций и постпроцессинга бинов, тут всё явно - оптимизированы под твою конкретную задачу, тут нет убер фреймворка который решает всё, тут только маленькие библиотеки, которые решают локальные проблемы Люди устали от энтерпрайза, люди хотят простоты и понятности. Да приходится писать больше кода, но потом этот код легче читать и разбираться в нём
>>3713676 >Все равно приходится тащить отдельно логгер, роутер, sqlc, pq, middleware чтобы облегчить себе жизнь Ты не понимешь.
В го ты берешь то, что тебе нужно логгер, роутер и т.п. и собираешь из этого свой набор, под твою задачу. Сам, кодом.
Тут нет как в Спринге - мы работаем с JPA, Jackson и т.д. Другое можно подключить, но придется поебаться с конфигами и написать парочку BeanZalupaProcessorFactoryBean.
>>3713684 я тоже так раньше думал, но потом понял что даже в го есть стандартные/популярные либы которые есть в каждом го проекте, зоопарка роутеров и логгеров уже нет, многие старые проекты просто сдохли и по сути в экосистеме везде есть по 1-2 либы на каждую задачу, вот и все. прям как в спринге и джава экосистеме.
алсо в жабе есть кваркус и javalin и еще с пяток менее известных но используемых в проде фреймворков, поэтому все не так однозначно.
>>3713672 >Люди устали от энтерпрайза, люди хотят простоты и понятности. Да приходится писать больше кода, но потом этот код легче читать и разбираться в нём
первое время после перехода jvm -> go у меня в бигкеке так и было. потом понял что это все хуйня. каждая команда в итоге свой собственный кривой-косой набор велосипедов писала, у каждой команды есть папочка utils или commons куда складываются их местные микровелосипеды, все это как правило с багами и хуево протестированное. не говоря уже о том, что каждый даун считает своим долгом иметь собственное мнение на то как правильно писать круд на го и почему все другие способы по его мнению говно.
в итоге обратно вернулся в jvm экосистему на новой работе и не пожалел. что на го, что на jvm занимаюсь финтехом, имхо го крайне неудачный выбор для этого.
>>3713676 >Такими темпами колесо сансары даст оборот и на го все это унифицируют и получится тотже нест/срыгбут
ну у нас например в бигкеке в моем отделе был самописный DI фреймворк. самописный аналог спринга, только очень маленький и кривой. и еще нас заставляли писать с интрефейсами, паттернами, с DDD, с большим количеством слоев. короче прям как в стиле энтерпрайзной java только на Go. не понравилось.
>>3713672 >Да приходится писать больше кода, но потом этот код легче читать и разбираться в нём код сейчас уже особо не пишется и читается руками и глазами. поэтому в таком случае можно прям на расте брать и писать все что хочешь. так хотя бы денег на железе сэкономишь еще больше.
>>3713720 >имхо го крайне неудачный выбор для этого Го придумали, чтобы интерны в гугле писали какие-то мелочи по инфре и не наматывались на конкаренси. От студентов никто не ждет опыта, поэтому придумали каналы и горутины, проще уже некуда. Писать реверс прокси на го легко и приятно, в других местах го не используется и работы на нем нет. У нас же долбоебы-каргокультисты зачем-то притащили го в круды, для чего он совсем не предназначен. Теперь студенты с умственной отсталостью изобретают свой кривой спринг снова и снова, зато не джава.
>>3713721 > нас же долбоебы-каргокультисты зачем-то притащили го в круды, для чего он совсем не предназначен. Теперь студенты с умственной отсталостью изобретают свой кривой спринг снова и снова, зато не джава
Сейчас кстати в Авито найма нет. В командах тупо хедкаунт обрезали. Если из команды ушел человек и лид хочет нового нанять - то надо писать объяснительную почему ИИ не сможет справиться с задачами и почему надо человека нанимать. А еще там (и в Озоне тоже) анал-карнавал с перфоманс ревью прям как в Яшке и с регулярным поиском лоуперформеров и их высадкой на мороз. Короче найма на Го в бигтех российский теперь почти нет. Кажется только Ядро еще студентоту нанимает из топ вузиков и на этом все. Кончилась работа на гошечке.
>>3713721 >Го придумали, чтобы интерны в гугле писали какие-то мелочи по инфре и не наматывались на конкаренси. От студентов никто не ждет опыта, поэтому придумали каналы и горутины, проще уже некуда. Писать реверс прокси на го легко и приятно Это правда кстати. Но сейчас многие такие вещи на Rust переписываются. Или если начинают делать с нуля, то уже на Rust и там весь код написан ИИ. Руками коды уже почти не пишутся.
Так что даже аргумент про то, что Java/Spring долго читать или тяжело дебажить уже протух. Коды особо не читаются и не дебажатся разрабами, разрабы теперь промпты и спеки пишут и нейрослоп в прод деплоят (девопсов сократили много где - теперь эта работа легла на плечи разрабов).
>>3713722 >у нас Ага, ведь все gin'ы, файберы, gorm'ы и прочую залупу писали именно в снг, ага. Маня, оглянись, все го камунити пишет круды на го. Просто на западе бюрократия дохуя и у них с с пеездом сложнее. Имею кореша с гермашки. У них уже 7 лет не могут согласовать переезд на го потому что манагеры стопят. Хотя весь айтиблок только за.
>>3713765 >все го камунити пишет круды на го Ну в СНГ разве что.
За пределами РФ на западе я очень мало где вижу классический финтех/энтерпрайз/продуктовый бекенд на Go. Даже в относительно новых компаниях. Да, есть вакансии на Go, но это как правило только инфра и ничего кроме инфры.
Я поэтому и перешел обратно в JVM потому что вакансий на Go шаром покати - одна только Plata нанимает, да Nebius в свою инфру. И с моим опытом в Go крудах я банально на рынке не мог ни одного собеса получить.
>>3713935 Линкедин в основном. В меньшей степени Glassdoor и Indeed.
Если что смотрел рынок EU + Сербия. На Go за пределами РФ более-менее есть какие-то вакансии только в США, но и там их мало относительно других стеков.
>>3713721 >поэтому придумали каналы и горутины А до конкарент мапы додумались только спустя десяток лет. И спустя еще пяток до еррор группы. Еще лет через 5-10 додумаются добавить в группу канал, чтобы по завершению группа его сама закрывала.
>>3713720 >я тоже так раньше думал, но потом понял что даже в го есть стандартные/популярные либы которые есть в каждом го проекте, зоопарка роутеров и логгеров уже нет, многие старые проекты просто сдохли и по сути в экосистеме везде есть по 1-2 либы на каждую задачу, вот и все. прям как в спринге и джава экосистеме. Речь идет не о количестве фреймворков, а о том как они работают. В Го все более прямолинейное, тут не принято сильно уповать на рефлексию в рантайме. Чаще всего все пишется простым кодом и можно по коду отследить что откуда вызывается. Мешает только ебанутая работа с интерфейсами. Собака пайк!
А джава наоборот - спринг очень сильно наседает на рефлексию в рантайме. Сканирование всех классов, смотрит что за аннотации там навешаны, генерирование прокси в рантайме и т.д.
>>3714524 ну, дебажить сейчас спринг уже стало проще. в idea хороший дебаггер сделали, лучше чем стандартная связка vscode+dlv
но даже так - никто не заставляет тебя использовать спринг. многие пробуют quarkus в прод тащить. там тоже есть аннотации но они не в рантайме работают а на этапе компиляции. как итог у тебя продовый код вообще не использует тяжелую рефлексию в рантайме. при этом ты можешь как стандартную jvm использовать так и сделать нативный бинарь graalvm. и код не будет выглядеть как го-дрисня из велосипедов.
впрочем на это все похуй, языки программирования что го, что джава постепенно умирать будут. сейчас весь тренд это разработка на трех языках - rust, python, typescript. все вещи которые на го я бы делал раньше, сейчас буду делать на rust + LLM. вот кроме раста, питона и тайпскрипта языки программирования вообще не нужны больше.
>>3714531 >но даже так - никто не заставляет тебя использовать спринг. Ага не заставляют, пришел в команду которая пишет на Спринге и давай хучячить на Котлин нэйтив и Ктор. Ахуенный план!
>>3714685 Обычно когда запускают новый микросервис, то каждый раз думают на чем его писать. Можно в качестве эксперимента на кваркусе ебануть. Если у тебя монолит или вся команда один сервис пилит, то дело другое.
>>3714715 >Обычно когда запускают новый микросервис, то каждый раз думают на чем его писать. Можно в качестве эксперимента на кваркусе ебануть. Ты вкатун что ли? Кабанчик не сам кабанчик конечно, а техлид думает как ему это потом сапортить, резвится с технологиями и под каждый новый сервис выбирать новый стек никто не даст.
>>3714782 Если это кваркус вместо спринга - можно попробовать продать эту идею своему руководителю. Как средство сделать микросервис компилирующимся в бинарь и требующим меньше ресурсов чем обычный спринг. И как следствие будут меньше расходы на инфру. Если у тебя рукль не зашоренный шиз, то может дать отмашку. Тем более что с ллмкой теперь сильно проще вкатываться в новые фреймворки и писать на них код.
Вышестоящим кабанам уже похуй что там на чем написано. У нас по крайней мере сейчас так. Понятное дело что писать на zig и rust вместо jvm стека не дадут, но в пределах jvm экосистемы можно с одобрения рукля делать что хочешь.
Недавно узнал что gopher это буквально суслик с английского. Т.е. взрослые мужики на форумах называют себя сусликами, пиздец блять. >>3715316 Java-даун, ты прошлый раз говорил что го нигде не используется. Определись уже.