17032004167570-dvach-pr-2972146.png24 Кб, 1024x385
Go тред №27 /go/ 3052664 В конец треда | Веб
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

С чего начать:
- В обязательном порядке проходим Go Tour:
https://go.dev/tour/welcome/1
- Читаем документацию прямо по порядку (пункт "Learning Go"): https://go.dev/doc/
- Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/Alikhll/golang-developer-roadmap (постоянно обновляется сообществом)

Литература:
- Донован, Керниган "Язык программирования Go"
- Также хорошие книги для начала: https://www.golang-book.com/ и https://www.practical-go-lessons.com/ (веб-версия - бесплатная и хорошо подходит для новичков в программировании)
- Книги из списка https://github.com/dariubs/GoBooks

Полезные ресурсы:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
- Обновляемый список с пакетами: https://github.com/avelino/awesome-go

Прошлый тред:
>>2996967 (OP)
2 3052721
Кто-нибудь пробовал связку templ + htmx, или хотя бы просто htmx? Как оно получается, проще чем например реакт + апи?
3 3052735
>>052721

>htmx


Зумеры придумали ajax.
4 3052737
>>052664 (OP)

>или хотя бы просто htmx?


Пробовал, короче для туду листа охуенная вещь, как только нужно как-то обрабатывать ответы, например те же ошибки более детально, то тут и начинается жопа. Для какой-нибудь внутренней админки подойдет, как раз там примитивная верстка и жиквери от которого можно отказаться. Но если для продакшна с пользователями, то проще на реакте накидать фронт и не ебаться с этим говном.
5 3052743
>>052735
Так и есть, только с разницей в том что нужно добавить всего пару атрибутов вместо лапши на js
6 3052811
>>052743
Зумеры открыли jquery
7 3053317
>>052811
Не совсем, но смысл тот же
next.js вообще php переизобретает
8 3054011
>>052664 (OP)

> Go поддерживает типобезопасность


4.2
image.png1007 Кб, 1200x1200
9 3054557
10 3054745
есть смысл вкатиться в Go после неудачного вката во front(react)? заебался искать работу на реакте - не получается никак. го вроде несложный и синтаксис приятный. я думаю мне не сложно будет освоить
11 3054796
>>054745
если ты на жээсе работу не нашел братан...
12 3054804
>>054796
я не смог не потому что лоускилл, а потому что вакансий нету и конкуренция ебанутая
13 3054820
>>054804
На жс и во фронте вакансий примерно на порядок больше, чем на го
14 3054834
>>054804
на гоу требуется больше скилла чем на жээсе, где в основном кнопочки накатывать с фигмы и обработчики вешать. Иди качайся и глупых вопросов не задавай. Вообще сам факт постановки такого вопроса как бы намекает что ты не тем занимаешься хуйнёй страдаешь
15 3055017
>>054834
извини, возможно вопрос был несколько неопределенный. Меня интересует только будет ли вкат свободнее и проще в плане что не будет 900 откликов на вакансию. Возможно мне нужно отредактировать резюме. Только я не ебу как хакнуть эту систему, чтобы выбрали именно меня, а не рэндомного ванька. Знаю только что херки смотрят больше в топе,а чтобы в топ попасть нужно ставить опыт и чтобы ключевые навыки совпадали 100%. У меня год опыта стоит
16 3055022
>>055017
Универ + стажировки от него помогают
17 3055061
>>055017
Никак не хакнуть. Научись что-то представлять из себя. И откликайся. Чем больше откликов, чем больше знаний - тем выше шанс получить офер. Даже я синьор помидор десять лет стажа порой сильно лажаю на интервью, потому что это отдельный скилл, который надо качать. То есть чаще интервьюироваться.
q1tws5345ki71.webp.png208 Кб, 1125x572
18 3055290
Пытаюсь понять, что такое контекст, для чего он нужен и где создается.
Пока что не получается.
Складывается ощущение, что это просто кей-валью, который прокидывается откуда-то сверху, но это явно не так.
19 3055476
>>055290
Это буквально кей-вэлью коллекция. Используется для передачи глобальных переменных.
Если мы хотим покрыть код тестами, от глобальных переменных придется отказаться - их хуй замокаешь. Глобальные переменные можно передать двумя способами. Допустим, нам надо имя текущего пользователя. Можно передать через DI, как в сишарпе, мы просто добавляем какой-нибудь интерфейс IUserContext со свойством UserName, присваиваем значение на входе в наш контроллер и дальше инжектим этот интерфейс, где надо. Просто и элегантно, это не говей. Можно взять словарь, добавить юзернейм туда и тупо прокидывать этот словарь через все методы. Таков путь.
20 3057098
>>055476

>Используется для передачи глобальных переменных.


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

>Если мы хотим покрыть код тестами, от глобальных переменных придется отказаться - их хуй замокаешь


глобальные переменные как раз можно использовать для моков - например, вместо time.Now() объявить глобальную переменную-функцию, которая в тестах будет вместо текущего времени возвращать фиксированное значение. или за счет того, что это локальная переменная, а не константа, переопределить в тестах какие-нибудь таймауты до приемлемого значения, чтобы ускорить прохождение.
то, что это замена передачи словаря - да.
21 3057116
>>055290
Это linkedlist из keyvalue, на который накрутили возможность трекать лайфтайм и отменять контекст. Сейчас контексты используются преимущественно для отмены вывполнения дринной операции, результат которой уже не нужен и контект которой отменили.
22 3058488
>>055476
>>057116
Спасибо. Стало понятнее. Очередной инкремент на курсах таки сдал.
Надо будет попрактиковаться еще немного, потому что хоть и пробросил, но не понимаю, как это все-таки на практике работает.
Когда инициализирую БД, то тут понятно. Сам задал контекст, не успел по таймауту, вылетел.
Но вот есть хендлер, я из запроса беру контекст и кидаю по стеку вниз.
А откуда там этот контекст берется? Генерируется сервером?
23 3058713
>>058488

> А откуда там этот контекст берется? Генерируется сервером?


да. ну как пример ты на сервере можешь настроить ReadTimeout/ReadHeaderTimeout, чтобы твой сервис не ддосили нищуки с медленным интернетом. таймаут кончается, и контекст отменяется.
аналогично клиенты могут тебе передать какой-нибудь x-deadline хедер, чтобы мидлвара поставила кастомный таймаут на запрос.
можно BaseContext при создании сервера указать, чтобы контексты в реквестах от него шли.
24 3059357
>>054557
Чел... погугли как определять тип полученный из пустого интерфейса
25 3060064
Здаров, скиньте если есть годный курс по алгосам и структурам данных для гуланга, который помог бы перестать сосать бибу на контестах.
26 3060078
>>060064
Курс Седжвика на курсере.
27 3062272
>>052664 (OP)
Нужна доза копиума, поделитесь успешными историями вашего вката в го. Только без пхп синьоров, а прям с нуля.
28 3062417
>>062272
Успешно задрочил вопросы собесов и накрутил 2 года опыта. Приняли на работу в хорошую компанию на 240к. Через 3 недели мне устроили экзамен по голангу и вебу, который я завалил будучи волчарой. Сейчас охочусь на следующего кабана.
29 3062473
>>062272
Начал изучать го, потом дропнул его, потому что уже в каждой перделке есть свой асинк/авейт и незачем писать в процедурном стиле 70х годов, теребя каждую ошибку.
30 3063043
>>055290
Не соглашусь, что контекст для прокидывания глобальных переменных. Это про прокидывание переменных, которые должны пропагироваться по всей цепочке взаимодействия.
Самый простой пример это реализация дистрибьютед трейсинга:
прилетает http-запрос с request-id, хендлер запроса идет во внешний сервис за обогащением и затем сохраняет что-то в БД.
Чтобы связать все эти запросы в логах/трейсах тебе нужно передавать далее по цепочке этот request-id, который уместно хранить в контексте - тут да, контекст можно рассматривать как key-value.
Второй кейс с контекстом - когда тебе нужно прервать цепочку вызовов. Это делается через отмену контекста - отменяешь родительский контекст и все остальные по цепоче тоже отменяются (при условии, что код пикладной код слушает отмену). Таким образом удается избегать ситуаций, когда клиент уже отвалился по таймауту, хендлер держит коннекты, ожидая ответа от другого сервиса/БД
31 3063188
>>063043
Как сделать контекст с отменой, который ещё и значения в себя принимать будет?
33 3063301
>>062272
С нуля стажерами охотно берут во всякие мейл ру, яндекс и озон. Ну если ты студент конечно.

А так у меня история такова, что я пошел будучи нулевым на проект, где мне обещали микросервисы на котлине и гоуленге. В итоге это все наебаловом оказалось, проект - старая дрисня в виде копролита на питухоне 3.5, и только лишь один мертвый сервис на го, разработчик которого уволился в другое место, а сервис закопали, так как он недоделанный оказался.
Сейчас по вечерам пытаюсь учить го, где-то осенью буду пытаться сваливать с парашного проекта в другое место, где будут исключительно го и микросервисы, а не древние копролиты.
34 3063617
>>063301

>С нуля стажерами охотно берут во всякие мейл ру, яндекс и озон. Ну если ты студент конечно.


Там же конкуренция уровня 500 человек на место и берут только йоба-олимпиадников. Заебись ты копиума выдал...
35 3063750
>>063617
У озона в специальной олимпиаде для мидлов в нынешнем потоке было зарегистрировано 512 человек. Для отсева там проводится контест за 5 часов нужно решить 9 задач, человек 80 выполнило все задания из них оставляют где-то не больше 30, остальным отправили письма счастья с пожеланием хорошего дня. В приоритете люди из городов в которых есть офисы озона и кто будет работать в стойле. Для джунов боюсь представить что там происходит.
Задачка про Ваню забавная
36 3063774
>>063301

>древние копролиты


Почему-то на микропенисы дрочат ньюфаги, которые с ними никогда не работали. Маркетологи промыли пориджей, мое почтение. Ты еще будешь с тоской вспоминать монолит, который можно просто открыть на компе, просто расставить брекпоинты и посмотреть, как все работает.
37 3063814
>>063774

>Маркетологи


Эти маркетологи с тобой в одной комнате?
38 3063825
>>063774

> монолит, который можно просто открыть на компе, просто расставить брекпоинты и посмотреть, как все работает


это после скачивания 20ГБ кода и ебли с зависимостями? я 5 микросервисов подниму и расставлю брейкпоинты за время когда это всё качается
39 3063827
>>063617
ну ты же понимаешь что 99% людей тупые с айкю как у хлебушка? из 500 человек там штук 5 которые могут лампочку вкрутить
40 3063834
>>063827
Ты конечно же не из тех 99% да?
41 3063836
>>063825
Да это похоже один шиз пишет, который в растотреде всех заебал, он похоже студент, нихуя не работавший и постоянно про каких-то маркетологов пиздел.
42 3063892
>>063750
лолшто? мидлов теперь отбирают по принципу голодных игр?
IMG5664.HEIC.jpg2,5 Мб, 4032x3024
43 3063934
>>063617
Ну давай проверим.
Это за тест сойдет или тест не тест?
44 3063936
>>063934
блядь, не тот тред. Ебать я снайпер.
Правильно ли я понимаю, что возможность удалять свои посты так и не завезли?
45 3064103
>>063269
Хуясе чёрная магия. Благодарю.
46 3064123
>>063936

>Правильно ли я понимаю, что возможность удалять свои посты так и не завезли?


После регистрации, можно удалять и редактировать. Регистрация доступна через госуслуги.
47 3064127
>>055061
Я другой анон и вопрос немного оффтопный и вопрос не конкретно к тебе, но...

Как преподнести интервьюеру что сначала я 2-3 года нормально работал, а когда война началась я 2 года ебланил? В прошлый раз на собесе сказал правду и почувствовал какое-то напряжение из-за этого ответа, вроде бы.

Еще мне как-то один знакомый сказал, что в яндексе есть БД в которую складывают результаты собесов чуть ли не вместе со стенограммой и не с досье на человека. Звучит сомнительно, но с тех пор я еще сильнее боюсь собеседоваться. Какая-то параноидальная мысль стоит в голове, что все они как-то отслеживают нас. И что если ходить на все собесы на которые меня приглашают, то рано или поздно не останется работодателей, которые не знают, что я долбаеб. Рано или поздно работодатели кончатся! А вдруг крупные компании типа яндекса и, хз, VK, например, уже давно обмениваются инфой? Чтобы не тратить время на мусорные собесы? И Яндекс даже не прислал письмо мне с отказом именно по этой причине? Потому что когда-то я плохо проходил собес у VK? Знаю, что этот абзац, скорее, полностью бред, но иногда меня накрывает такая шиза, что хочется к какому-то специализированному на hr психологу сходить. Но потом отпускает и я не иду.
48 3064135
>>063892
В сбере и для сенек голодные игры уже сделали. Человек 80 всегда участвуют. Только там отсев по трудовой, чтобы джентльмены удачи не доёбывали.
49 3064148
>>063892
Это для перекатывающихся из других языков
50 3064159
>>064123
Я просто к форчану привык
51 3064176
>>063825

>это после скачивания 20ГБ кода и ебли с зависимостями? я 5 микросервисов подниму и расставлю брейкпоинты за время когда это всё качается


Зависимости надо скачать один раз, а ебаться с поиском проебанного реквеста каждый день. Или выяснять какого хуя простой запрос отрабатывать за 5 минут, какой из 20 микропенисов тормозит.
52 3064294
>>064127
В раше скоро так и будет, по паспорту, трудовой и обязательной гос-сертификации.
53 3064302
>>064176

>, какой из 20 микропенисов тормозит


Это уебанская архитектура, у тебя не микросервисы, а распределенный монолит. В большинстве случаев сервис должен жить сам по себе и нигде не запрашивать данные, а другим сервисам отправлять запросы в очередь. Ты еще скажи что у вас эти 20 сервисов по rest api общаются
54 3064344
>>064302

>Это уебанская архитектура, у тебя не микросервисы, а распределенный монолит.


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

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


Один совет ахуительнее другого. А клиент тоже должен очередь слушать, на предмет когда его запрос запроцессится?
55 3064387
>>064127
я являюсь рекрутером в IT
Большинство компаний использую CRM, куда сохраняются твои резюме. То есть если я тебя нашел 2 года назад и сохрнил твой профиль, где у тебя одни компании, а сегодня нашел снова твой hh и снова добавил тебя в crm, а у тебя там совсем другие работодатели, нежели которые были 2 года назад, то она соединит твое резюме и я пойму что где то ты врешь)
56 3064408
>>064387
в жопу ты пойдешь

я своё резюме раз 5 переписывал, потому что работодатели менял имена компаний, потому что добавлял или уточнял детали и сроки, удалял старый опыт когда у тебя больше 5 айтемов в резюме его никто не будет читать до конца
хуёвый ты эйчар, хуй будешь?
57 3064410
>>064302
Какой забавный джуник.

>другим сервисам отправлять запросы в очередь


Классика. Ты даже не представляешь, как ты ОХУЕЕШЬ через пару лет отлаживать такую архитектуру.
58 3064426
>>064344

> Сеньки то знают


А ты что знаешь?

>А клиент тоже должен очередь слушать, на предмет когда его запрос запроцессится?


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

Помню мы ебались с микрописечной архитектурой, в итоге объеденили 3 сервиса в один над которыми я работал один лол, они были очень сильно связаны между собой. Добавили 2 таблицы данные для которых брали из другого, а все телодвижения с другими сервисами убрали в очередь. Пришлось ПМке и дизайнеру объяснять что нужно добавить на фронт промежуточный статус для некоторых действий, плюс фронту немного помог с оптимизацией, он много лишних запросов делал. И о чудо вместо 10-15 секунд у меня все выплевывалось на фронт за милисекунды. В ТП вообще обрадовались, до этого постоянно заебывали что всё тормозит.
Сделали практически тоже что этот мужик рассказывал https://www.youtube.com/watch?v=FF-GZ7iipwc
59 3064450
>>064426
Веселая у вас галера. Джун на фронте не понимает, как работает сеть, про апи гейтвей тоже ничего не слышал. Джун на бэке пытается изобрести ивент сорсинг, но делает это через жопу. Микросервисы пишутся одним человеком, каргокульт такой каргокульт.
60 3064459
>>064450
Чего сказать-то хотел?
61 3064755
>>064426

>Во первых не нужно разбивать совсем на микрописьки, а исходить как раз таки из бизнеслогики. Если клиенту нужно мгновенно получать какие-то данные, но их нет в этом сервисе, значит их нужно дублировать в этом сервисе в рамках разумного конечно же, при этом в случаи коллизий приоритетным должен быть тот сервис которому эти данные принадлежат.


И через пару итераций получим монолит, так стоило-ли сопротивляться?

>Все запросы на мутацию/добавление данных отправлять в очередь, а на клиент отправлять статус "делается".


Пользователь изменил настройки, нажал кнопку сохранить, а ты ему такой: "сохраняем, пожалуйста подождите". Ю - юзабилити!
62 3064796
>>064755
Двачаю. Пихать всё в кролика это шиза ебаная. Есть функционал, где надо/можно дать ответ сразу, там RPC. Есть функционал, где невозможен/не нужен немедленный ответ, там брокеры.
63 3064823
>>064408
Может быть огромное количество причин, почему ты не узнал, что это спалили, начиная от того, что просто ранее тебя это компания не видела и не добавляла в crm и заканчивая, что рекрутеру просто на это всё равно.
Но ты - обезьяна этого не понимаешь, тебе бы лишь бы хуйню написать. Лучше бы так собесы проходил, как на двачике пытался самоутвердиться. А то процентов 80% разрабов при первом общении отлетает по софтам:)
64 3064857
>>064755

>И через пару итераций получим монолит, так стоило-ли сопротивляться?


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

>Пользователь изменил настройки, нажал кнопку сохранить, а ты ему такой: "сохраняем, пожалуйста подождите". Ю - юзабилити!


Не совсем так, допустим одно из действий:
Надо было подключать услугу на устройствах, у меня в БД все что нужно было добавилось и дальше надо в сторонний сервис чтобы эта хуйня включалась на устройствах. Раньше приходилось ждать пока они все подключатся иногда падало по таймауту, пользователь сидел тупил и иногда у него не получалось, он шёл в ТП, ТП к ПМ, ПМ ко мне. Я хуй его знает чего делать у меня в логах по таймауту все упало, дальше по цепочке оно там все сделалось как надо, в ЛК у пользователя нет нихуя.
Короче сделали что все взаимодействие со сторонними сервисами было в очереди, а на фронте появлялось сообщение что ХХХ в процессе подключения, дизайнер еще проработала разные сценарии, там по красоте было понятно, плюс в основном этим сервисом пользовались инженеры. То есть пользователь нажал и увидел что что-то делается, а не ждет ошибку и в течении пару минут все подключается. Как только они там запердолились мне приходил ответ и я у себя в БД менял статус на "подключено", соответственно когда фронт делал потом запрос, было видно что все подключено. Юзабилити наоборот стало лучше, обращения по поводу этой хуйни в ТП закончились. И еще пару фич на такую логику перепилили.
Те же формирования отчетов для отдела продаж сделали также, они нажимают на кнопку, оно пишет что отчет делается, как сделается у них появлялась ссылка на скачивание эксельки, до этого постоянно ебались и по много раз тыкались.
65 3064867
>>064796

>Двачаю. Пихать всё в кролика это шиза ебаная. Есть функционал, где надо/можно дать ответ сразу, там RPC. Есть функционал, где невозможен/не нужен немедленный ответ, там брокеры.


Так и сделано было, мы не прям всё убрали в кролика, кое что всё же оставили, но большинство взаимодействий таки убрали
66 3064871
>>064867
Это я видос того умника посмотрел. Они вообще всё вокруг брокера строят.
67 3064880
>>064871
Ну я как пример показать, когда смотрел видос я удивился что мы примерно к тому же пришли. У них там да, прямо все вокруг брокера и на событиях
68 3064968
>>064294
>>064387
Жесть. Нафига вы подливаете масло в огонь, пацаны? Я за пол года поиска работы пересилел себя только один рай пойти на собес. Теперь, наверное, вообще не пойду, пиздос.

А всем компаниям, которые хранят у себя мои персональные данные без моего разрешения, я желаю банкротсва и пойти нахуй! Хотя я, нав, уже галочку в hh где-то поставил, хз. Возможно, можно как-то галочку отозвать, бтв.
69 3064977
>>064968
Да и по идее я только hh разрешал данные собирать, разве не?
70 3064982
>>064387
Блядь, да даже досье на человека по его данным из соцсетей нельзя собирать! Хотя там челидодики сами все напоказ выставялют и даже разрешают поисковикав индексировать их странички
71 3064986
>>059357
Чел, типобезопасность это Хинди-Мильнер, это ADT ,это exhausive паттерн-матчинг, а не эта погремушка, когда передаёшь всё что угодно в interface{} и компилятору вообще похуй чего ты там "определяешь" из него.
72 3065000
>>064968
Чел, не парься. Компании уже давно всё о тебе знают. Буквально рейтинг тупизны. Если плохо отсобесился, то это нохаир везде и навсегда.
73 3065002
>>065000
И длину члена мою тоже знают?
74 3065014
>>064968
Пиздуй к нам в Озон Финтех пособеседоваться.
Сейчас много ставок открылось, активно нанимают. Попытка не пытка.
А местных больше слушай.
75 3065190
>>064986

> типобезопасность это Хинди-Мильнер


4.2
76 3065202
>>064127
Не забывай ещё про ЧЁРНЫЕ СПИСКИ у хрюшек.
77 3065266
>>064857
То что ты описал это и есть монолит, когда связанные функции группируют в одно приложение. Совсем не обязательно, чтобы весь функционал был в одном единственном приложении, их может быть несколько. Основная идея это как раз слабая связанность между собой, если другие сервисы недоступны, то базовый функционал все равно будет работать.
78 3065368
>>064986
Ебнутый что-ли, ты не можешь никак провзаимодействовать с пустым интерфейсом (передача в другой метод или принт не считаются по очевидным причинам), тебе необходимо явно установить тип перед тем как взаимодействовать с тем что скрывается под пустым интерфейсом. Чем не type safety?
79 3065474
>>065014

>Озон Финтех


>ехал литкод через литкод


>поверни эту строку, поверни ее снова


>спроектируй мне фейсбук за 5 минут


>в итоге взяли дебила, который не знает про idle in transaction и роняет прод в аккурат перед праздниками

80 3065642
>>064968
Волков бояться - в лес не ходить)))кринж,но как есть
Для рекрутера и бизнеса главное закрыть потребность и найти крутого чувака) Хоть 10 лет опыта накрути, но если ты нормальный по софтам и горишь своей специализацией, то ты пройдешь в любом случае)
81 3065652
>>065474
Ну значит хуёво он спроектировал фейсбук. На мороз и вкатуна и собеседующего.
82 3066162
>>063617

>Заебись ты копиума выдал


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

>>063617

>Там же конкуренция уровня 500 человек на место и берут только йоба-олимпиадников


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

>>063774

>Ты еще будешь с тоской вспоминать монолит, который можно просто открыть на компе, просто расставить брекпоинты и посмотреть, как все работает


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

И поверь, дебажить мелкие говнохуитки на гоуленге в десятки раз проще, чем десятилетний код на питоне с адовыми слоями декораторов и метаклассов.
83 3066166
>>064127

>в яндексе есть БД в которую складывают результаты собесов чуть ли не вместе со стенограммой и не с досье на человека


В любой крупной конторе (да и в любой мелкой тоже) такое есть уже много лет.
В яндексе после каждого собеса о тебе интервьюер пишет свой отзыв, который навечно сохраняется в базе у них. Ну и если ты спустя 10 лет снова в яндекс вернешься, то какой-нибудь собеседующий или потенциальный лид может покекать с того, что о тебе писали десять лет назад.
84 3066244
>>065474

> и роняет прод в аккурат перед праздниками


Перед праздниками везде фриз выкаток кода, и уж тем более в e-commerce, не пизди.
Максимум - шаблоны разметки, и то под ок бизнеса.
image.png222 Кб, 394x381
85 3066268
Как говноланг мог так взлететь? Я этого просто не пынямаю. Как язык, у которого нет эксепшенов и синтаксис выглядит как умственно отсталый брат си, сумел стать таким хайпанутым? В чем его секрет? Пиар гугла? То что быстрый? Этот вопрос сводит меня с ума уже месяц
86 3066272
>>066268

>Этот вопрос сводит меня с ума уже месяц


Не пизди, ты тут уже года три шитпостишь.
87 3066297
>>066272
Раньше я просто над этим долго размышлял, а сейчас уже шизею
88 3066353
>>066268
Бамп вопросу
89 3066464
>>063836
Ты по всем тредам ходишь и ищешь какого-то растера в тредах, понимаешь, что шизом выглядишь сейчас тут ты. Да, люди сидят не в одном треде, нафиг ты это пишешь? Чудо.
90 3066466
>>064123
Не издевайся, достаточно регистрации почты на мэйл.ру.
91 3066470
>>066297
>>066268

>Как говноланг мог так взлететь


Синтаксис у него может как у отсталого брата си, но при этом у него есть
1) GC
2) Горутины
3) Компилируемость в бинарь
4) Отличный тулинг
5) Простой синтаксис, который не позволяет писать хитровыебанный загадочный код

Вот и все. Ну и поддержка гугла, разумеется.
После джавы и питухона с их магией на рефлексии/метаклассах/декораторах говноланг это как глоток чистого воздуха.
92 3066474
>>066268
Как спец могу сказать
-Конкурентность, точнее зеленые функции.
-Один бинарь с рантаймом без VM, отсутствие траха с зависимостями
-Тогда еще могла удивить кросскомпиляция.

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

Без стектрейсов может быть тяжеловато конечно, но мы просто ошибки наверх через fmt.Errorf("info: %+v", err) выбрасываем, таким образом добавляя нужную инфу к ошибке слой за слоем. Сорт оф стектрейс.
94 3066517
>>066470

>4) Отличный тулинг


отличный от нормальных языков.

>>066476

>мы просто ошибки наверх через fmt.Errorf("info: %+v", err) выбрасываем, таким образом добавляя нужную инфу к ошибке слой за слоем. Сорт оф стектрейс.


Стектрейсы для бедных.
Ладно такая херня в Расте или Си еще понятна, у них цел нулевой оверхед, так что извольте поебстись. При том что стектрейсы то есть и их даже можно прицепить к ошибке, просто так не принято.
95 3066530
>>066517

>отличный от нормальных языков


Лучше чем в jvm тащем-то. Не говоря уже про всратый питон.
Чего только рейсдетектор стоит.

Стектрейсы в голанге так-то есть в голанге, да. Но зачем они нужны? Их всегда тяжело читать, а из полезной нагрузки всего лишь несколько строчек.
96 3066531
>>066476

>Ну, логи от языка не завсият.


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

>IoC тоже не языко-специфичная тема


Мне гоферы говорили ненужно, как и отладка, они на полном серьезе меня убеждали дебажить принтами.

>но мы просто ошибки наверх через fmt.Errorf("info: %+v", err) выбрасываем,


Человек-эксепшен.
В те года, я практически верил, что они сэкономили на компиляторе, чтобы оставить плацдарм для оптимизации. Но теперь я вижу, что они просто положили болт.
97 3066532
>>066530

>Их всегда тяжело читать, а из полезной нагрузки всего лишь несколько строчек.


Потому что ты ничего крупнее круда не нюхал. Когда функция foo крашится по четвергам, ты в логах видишь что упала foo, а то что она вызывается 1000 раз из 100 разных мест и по четвергам, говорит тебе о том, что ты будешь дебажить месяц.
это называется плавающая ошибка или heisenbug
98 3066557
>>066532
Ошибка из функции foo пройдет несколько этапов, в которых наслоятся друг на друга эррор месседжи, и ты будешь знать как минимум место где она вызвана, как максимум обстоятельства. Ну это в случае если все хорошо с кодстайлом на проекте, на моей первой го работе у челов на каждую эррору стоял лог в котором (к счастью автоматически) указывалась строка где лог был вызван, а там уже понятно куда копать. На бумаге хорошо, да вот только и так немалые методы вырастали на процентов 30 и переставали помещаться на один экран, и прочие проблемы с читабельностью
99 3066576
>>066557
Проброс ошибок, это другая проблема. В общем, опять вспоминая джаву, в ней есть checked исключения и время показало, что это не очень практично указывать исключения в сигнатуре метода, в котлине и шарпах от этого уже отказались.

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

Кстати, в расте я видел что обобщают ошибки до Box<dyn...>, а это, насколько я понимаю, аллокация памяти. Так что вот тебе и "зеро кост абстракшен".
100 3066586
>>066474

>язык не пригоден для промышленного кодинга


Какие подходют?
101 3066641
>>066532
Ну опять же - если паника необработанная, то будет тебе стектрейс.
Если обычная ошибка, обернутая сообщением, то тоже можно будет понять откуда она прилетела.

Возможно это не очень удобно, но жить с этим не так уж сложно.

>>066531

>Мне гоферы говорили ненужно, как и отладка, они на полном серьезе меня убеждали дебажить принтами


DI в Го это именно что в main функции создавать все нужные зависимости в виде логгеров, пул подключений к БД, подгрузку конфига, его валидацию - и все это запихивать через сорт оф конструктор в какую-нибудь структуру Application, у которой будет метод Run, где будут создаваться и прокидываться друг в друга репозитории, сервисы, контроллеры. Прям как в спринге, только вместо собачек с Component и Autowired у тебя будет ручное создание объектов и ручное прокидывание их в функции-конструкторы.
102 3066663
>>066641

>ручное прокидывание их в функции-конструкторы


Охуеть, вернули мой 2007. В сишарпе DI фреймворки давно умеют сами резолвить зависимости через рефлексию. Ты просто пишешь в конструкторе у MyController аргумент ISomeInterface, дальше оно само все находит и подставляет.
103 3066701
>>066641

>Если обычная ошибка, обернутая сообщением, то тоже можно будет понять откуда она прилетела.


Каким местом? Читай внимательно, что написали выше.
Да и понятно, что для мелко-круда можно хоть на баше писать.
104 3066724
Народ, я сейчас не стебаюсь, но дженерики добавили уже в го или нет. Я слышал что хотели.
106 3066767
>>066724
Нет, пока что не добавили
107 3066781
>>066767
— Дженерики есть?
— Дженериков нет.
— Есть дженерики в планах?
— Дженерики не планируем.
— Дженерики можно посмотреть, какие есть?
— Нет, Дженериков в голанге нет.
— Я бы хотел написать дженерик, когда они вообще?
— Извините, у нас нет в планах дженериков.
— Удобные инструменты есть? Мне дженерики нужны.
— Мы их никогда не планировали и не планируем.
И ведь этот гугловец, зараза, знает меня идеально в лицо, знает, что я спрошу и знает, что он мне ответит. Но ещё ни разу ни один из нас ни жестом, ни словом не показал, что каждый из нас знает сценарий. Бывает, зараза курит у входа, когда я захожу в офис Гугла, тогда я подсматриваю за ним сквозь стеклянные двери, он равнодушно докуривает, выбрасывает бычок и возвращается за ресепшен:
— Что вы хотели?
— Мне нужны дженерики.
— У нас нет.
— Жаль.
108 3066861
>>066530

>Лучше чем в jvm тащем-то. Не говоря уже про всратый питон.


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

>Чего только рейсдетектор стоит.


Вначале не добавили в язык конкарент коллекции, потом закостылили рейсдетектором.

>Стектрейсы в голанге так-то есть в голанге, да. Но зачем они нужны? Их всегда тяжело читать, а из полезной нагрузки всего лишь несколько строчек.


Внезапно! Ты и в говноланге делаешь стектрейс оборачивая ерр в новый ерр. Потому что колстэк важен почти всегда. Только в нормальном языке стектрейс стандартный и его можно легко парсисть: например Иде может перейти к коду. А в говноланге ты ручками ищешь по тексту сообщения об ошибке.

У тебя концепция кол стека есть не то что на уровне ОС, а даже на уровне процессора. Но нет, пришёл Роб Пайк и сказал что стектрейс не для гойев. себе, для panic, он стектрейс оставил
109 3066870
>>066861

> Не пизди, в JVM мире один из самых лучших тулингов


Лол

> Но нет, пришёл Роб Пайк и сказал что стектрейс не для гойев. себе, для panic, он стектрейс оставил


Ты можешь забрать стектрейс и паники и пробросить выше, но нахуя?
110 3066874
>>066663
Что находит и что подставляет? Все наелись этой хуйни и пилят теперь static di, потому что магия магией, а код вот он и по крайней мере не пиздит.
111 3066908
>>066870

>пук


Нормальных аргументов явно не стоило ждать.

>Ты можешь забрать стектрейс и паники и пробросить выше, но нахуя?


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

>мы просто ошибки наверх через fmt.Errorf("info: %+v", err) выбрасываем, таким образом добавляя нужную инфу к ошибке слой за слоем. Сорт оф стектрейс.


Хотя бы просто прокидывать наверх как есть.
112 3067115
>>066724
ПОясните, а нах они нужны, когда есть type any(interface{}) ими кто-то ерально пользуентся в проектах???
495bf44c-fd7b-4892-9f54-ca208ba53677.jpg37 Кб, 401x356
113 3067483
>>066730
Ты сам поиск смотрел? Там одни статьи о том когда будут дженерики.
Хотел с умничать, но снова оказался гофером.
114 3067493
>>067115
Зачем нам ловить ошибки еще на этапе компиляции, когда можно приводить всё к обобщенному типу и делать вид что пишем на языке без типизации? Ну хз, по приколу, наверное.
115 3067496
>>066861

>JVM мире один из самых лучших тулингов


@

>для джавы в 2024 до сих пор нет lsp

116 3067499
>>066861

>Вначале не добавили в язык конкарент коллекции, потом закостылили рейсдетектором



Чел, спокуха. Рейсдетектор нужен не только при работе с коллекциями.
Алсо когда их там в джаву-то добавили, все эти concurrent hash map или skiplist?
117 3067512
>>067496

>lsp


Ты хотел сказать - медленный кусок кала?
118 3067518
>>067512
Ой извини, медленный кусок глючного кала, в котом нет и доли возможностей тулинга IDE джавы.
119 3067530
>>067512
>>067518
Вообще gopls довольно шустрый, как понос.

А вот с lsp у джавы беда действительно. Они-то есть, но только лишь какие-то жутко всратые от эклипса и нетбинса.

>>067518

>в котом нет и доли возможностей тулинга IDE джавы


LSP имеет спецификацию. Там все возможности описаны. И что такое IDE джавы? Jetbrains, чьи лицензии больше не купить в РФ? А если через 5 лет jetbrains потонет к хуям что в целом можно ожидать, в конторе далеко не лучшие времена сейчас судя по отзывам знакомых, то где коды писать будешь?
120 3067537
>>067530

> то где коды писать будешь


Поэтому давайте прям сейчас писать в блокноте с куском говна прикрученным сверху вместо нормальной ide.
Когда потонет, тогда появится потребность и нишу кто-то заполнит. Возможно через lsp надеюсь что нет.
121 3067545
>>067530
А если завтра упадет метеорит?
Тулинг уже есть, то есть написан, даже через 10 лет это будет хороший тулинг.

LSP как раз и ограничен общей для всех спецификацией, опять ситуация сводящая к одному общему для всех. Так что это хрень для всяких кривых блокнотов на электроне, в которых хер даже сорцы по клику прочитаешь.
122 3067573
>>067499

>Рейсдетектор нужен не только при работе с коллекциями.


Но чаще всего именно в колекциях он и происходит.

Да и в целом это не тула первой необходимости. А вот билд система, это мастхев каждый день. B Мавен с Гредлом на голову выше гобилда.

>Алсо когда их там в джаву-то добавили, все эти concurrent hash map или skiplist?


В 2004, за 5 лет до релиза го.
image.png189 Кб, 2454x962
123 3067576
>>067496

>для джавы в 2024 до сих пор нет lsp


>Ни одного.

124 3067615
>>067512

>медленный кусок кала


Всё медленно если тебе надо в бэкграунде рабочую jvm держать.
125 3067616
>>067530

>в конторе далеко не лучшие времена


Поделись инсайдами. Сколько команды потеряли после релока? В чём проблемы если рост прибыли стабильный?
126 3067952
>>067616
Да хуета это всё. Даже эмбаркадеро до сих пор живы. А тут контора которая делает практически безальтернативные IDE для джавы, го, питона, с++, пыха, руби и прочая экзотика. Контора у которой многие годы основной бизнес на западе. Должна загнуться потому что

>лицензии больше не купить в РФ



Да сейчас не самые жирные годы, все АйТи компании ужимаются.
127 3068621
Насколько сложные собесы в ozon и авито нынче?
Если у меня опыт предыдущий в основном в виде питухона и монолитов, то как сложно будет найти себе команду, если технические секции будут пройдены хорошо?
Там же у вас наверняка алгоритмы + го + многопоточка на секциях?
128 3068658
>>066268
Лично мое мнение - канкаренси интуитивно понятнее прочих языков, изи ту лерн - хард ту мастер. Но писать что-то сложное на нем - больно, но можно
129 3068660
>>066474

>стек трейсы


есть же

>ioc


ну как бы есть контейнеры готовые, свой написать за пару вечеров
130 3068664
>>068621
изи-мид литкода
многопоточка уровня го тураладно, чуть сложнее,
131 3068698
>>066586
Джава
132 3068836
>>066724
>>067483
Добавили в версии 1.18 1,5 года назад
https://go.dev/blog/go1.18
Пытался поумничать, а в итоге не умеешь даже гуглить
лох
133 3068882
>>066586
Котлин/Джава, шарп.
Можно еще натянуть всякую динамикодресню типа жопоскрипта и петухона, если будешь типами покрывать (например jsdoc или тайпскрипт)
134 3068883
>>068836
Да я уже нашел, именно по первым статьями рассказывалось какие они будут, а есть или нет, не говорилось.
Можно было не петросянить и сразу сказать, ведь я упомянул что не стебаюсь. Какая-то травма у вас
135 3068899
>>068883
А я просто подумал что ты тупой, а ты просто с чувством юмора оказывается
136 3069435
Вкатывался в Java Spring, но вчера вышло видео Shifu о том, что Java - прошлый век и что уже не вкатиться.
Это так?

Правда что изучение Golang перспективнее в разы?
image.png45 Кб, 1223x767
137 3069453
>>069435
Походу инфоцыгание прощупали новую почву. Даешь 1000 соискателей на одном место как питоне.
138 3069454
>>069453
Ну так это правда?
Или и дальше Spring учить?
139 3069467
>>069454
Java - это 99% энтерпрайз, финтех +легаси какое-то
Проблем найти работу нет. Го - 99% это маркетплейсы, по крайней мере в российских реалиях. Проблем найти работу нет.
140 3069470
>>069467
А где джуну проще найти работу на удаленке?
141 3069572
>>069470
Учи голенг. Самый вкатунский язык. Вакансий для джунов и стажёров огромное количество.
142 3069610
>>069572

>Вакансий для джунов и стажёров огромное количество


Скок там, примерно 0?
143 3069616
>>069610
Ты настройки наверное неправильно выставил. Сейчас нулевых вкатунов на гошку хайрят и со старта 100к. А в треде всё врут про опыты и тд.
144 3069688
>>069572
>>069616
А какой фреймворк учить?
145 3069742
>>069688
django
146 3069751
>>069742
*djanGo
147 3069760
>>069688
Никакой. На голенге пока не изобрели нормального фреймворка. В каждой компании свой велосипед.
148 3069870
>>069688
стандартную либу и sqlx
можешь gin глянуть
149 3069898
>>069435
Ты можешь просто посмотреть сколько вакансий на джаву и на го
150 3070259
Наверное все-таки довкачусь в Java Spring.
Устал я прыгать с языка на язык.
151 3070277
>>070259
Чеееел. Давай в голанг. Ну он для вкатунов же.
152 3070477
>>070277
Ты шутишь - или на полном серьезе говоришь?
153 3070526
>>070277
А ты вкатился?
154 3070534
>>070477
Конечно серьёзно. Вот например наша компания ищет стажёров нулевых, лишь бы пришли учиться. Образование, возраст, опыт вообще похуй. Спасибо что пришёл, вот твои гроши. Так все бьются лбом в джаву, питон, сишорп, когда вот рядом дверь в голанг открыта. Компанию не скажу, ибо деанон. Боюсь, что к нам не залетите, так как сотни других кабанов пылесосят всех, кто желает учить голанг. Хаир очень ласковый, берут любого с улицы. Нужно просто захотеть.
155 3070536
>>070534
Shifu, если это правда то я куплю твой курс.
НО ТОЛЬКО ЕСЛИ ЭТО ПРАВДА!
156 3070538
>>070536
Бля буду, всё правда. А джаву со спрингом забрасывай. Это легаси и там только с опытом берут.
157 3070544
Имагине ебальники мудаков, которые потом будут участвовать в голодных играх за единственную вакуху гоуленк джуна.
158 3070550
помогите с идеями для проектов в портфолио, чтоб и реализовать было не пиздецки сложно и чтоб выглядело интересно (необычно). хочу на стажёра податься, уточнил на тот случай, если вдруг ещё какие-то полезные советы будут, оное очень приветствуется.
159 3070558
>>070550
В условиях высокой конкуренции много резюме. Твои проекты не посмотрит никто. Чтобы выделиться, надо накрутить опыт. Лучше работай в этом направлении. Подделай резюме, ходи по собеседованиям, запоминай вопросы.
160 3070567
>>070558
интересно, конечно, но разве такой обман не обнаруживается после вопроса "а что вы делали на предыдущем месте работы?" + пары дополнительных уточнений. Да и для себя наверняка полезно проекты реализовывать
161 3070573
>>070567
Поэтому гуляешь по собеседованиям и учишься убедительно обманывать. Посмотри как описывают опыт другие кандидаты, заучи наизусть, как будто сам всё делал.
162 3070697
>>070558

>Твои проекты не посмотрит никто.


Я всегда смотрю проекты если они есть в резюме. Просто не надо показывать хело ворлд по мануалу, а если это что-то более сложное то это только плюс. Можно посмотреть как человек пишет код, пишет ли тесты, какие технологии использует.
163 3070706
>>070697
на что особенно внимательно смотришь в резюме? Я сам на стажировку планирую устроиться, посоветуй, пожалуйста, как позитивно выделиться на фоне других неопытных претендентов?
164 3071498
>>070706
Во первых надо сказать, что последний раз я отбирал резюме 4 года назад. Сейчас я в большой корпрорации и у нас процесс так устроен что разбором резюме занимаются херки. А я только собеседую буду собеседовать когда найм откроют и пишу фидбек.

А когда я сам смотрел резюме, я смотрел на опыт и на технологии, насколько это релевантно тому что мы используем. И в целом пытался понять уровень кандидата. На тот момент мы 90% кандидатов звали на первое интервью по телефону. 30 минут поговорить про опыт, пара технических вопросов и пара вопросов от кандидата. Дальше если человек понравился звали на очное, если были сомнения могли дать тестовое, или отказ. Но мы джунов без опыта почти не брали.
165 3073386
>>055290
вот кстати вопрос, есть ли у контекста дроч на регистры поля структуры? чтоб они начинались не с маленькой а с заглавной буквы? а то пытался прописать прямо из модела поля структуры, в моделе пишет что они не юзаются когда как при выполнения запроса и вставки данных тот выдает ошибку что нихуя тебе не будет, хотя импорта и сами поля все в точь точь прописаны, обозначил поля заглавными все стал видеть
166 3073636
>>073386

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


Ты бы доки по языку почитал бы. Идентификатор написанный с заглавной буквы виден за пределами пакета. Подчеркивания не используются, Идентификатор принято называть camel case.
167 3073639
>>073386
чувак ты серьезно, это в любом курсе по гошке есть, что есть поля с большой буквы, то они доступны для экспорта в другие пакеты, если нет, то нет
168 3073655
>>073636
После написании ответа прочитал на счет этого, и оказалось да, это общепринятая вещь которое есть не только в Go. Я Go в частности по структурам на gobyexample гобайпример учил https://gobyexample.com/structs
169 3075370
>>073386
Может ты хотя бы Go Tour прочитаешь? Да-да, тот самый на который ты подумал что он для дебилов, но ты же слишком крут для него и пропустил
170 3075433
>>075370
Как то глупо полагать что человек при изучении чего-либо пользуется только одним ресурсом, вроде бы я не просто так указал что конкретно при знакомстве со структурами в Go, я использовал определенный материал который до этого уже указывал, и в примерах которых поля пишутся не с заглавной буквы.
171 3076554
>>075433
Go tour это базовая база, проходится за вечер под пару банок пива или за пару дней если с кодом из примеров играешься и ты бы уже не задавал подобных вопросов
172 3076589
>>076554
По правде сказать, вопрос не был направлен на разрешения какой либо проблемы, просто хотелось узнать мнение людей, а так за рекомендацию спасибо.
173 3076612
>>069453
да он там в конце загибается
174 3076863
>>076612
Это SO загибается.
175 3076873
>>076863
Копиум жабадебила.
Это относительное количество, а не абсолютное.
image.png122 Кб, 1247x601
176 3077283
>>076873
Как бы то не было, у джавы число вопросов уже на этапе заполненности и падает общее число у всех, а го за десят лет еще с оси х не вылез.

Если у жабы есть капитал кода и спрос, то го это язык микросервис, который заменяет за неделю, жопоскриптерами.
177 3077404
>>077283
Интересно зачем жабодебилы постоянно приходят позориться в готред? Тут одна половина это свичеры с джавы, а друга с пхп, тут люди прекрасно понимают как обстоят дела в индустрии
Стикер512x512
178 3077423
>>077404

>Тут одна половина это свичеры с джавы, а друга с пхп, тут люди прекрасно понимают как обстоят дела в индустрии


>Поработал в 1,5 говноконторах


>@


>Стал экспертом по индустрии

179 3077563
>>077423

ну справедливости ради я так могу сказать +- про все финтех проекты где работал, в банках все оче друг на друга похоже
IMG20240308142709792.jpg181 Кб, 1280x958
180 3077782
>>077563
Ну так весь финтех переманивает друг у друга сотрудников, потому что нам нужен сотрудник с опытом работы в финансовой сфере. Эти сотрудники приносят с собой подходы которые они выучили в другом финтехе. Вот и получается, что благодаря перекрестному опылению, схожие подходы воспроизводятся в разных компаниях.
181 3077818
Почему у голанга такой уебанский синтаксис? Читать невозможно. Какой долбоеб пизданул, что это легкий язык, что аж другие подхватили и схавали?
182 3077844
>>077818
Это лёгкий для чтения язык. Никакой магии, никакой скрытой логики - всё на виду.
183 3077850
>>077844
да нихуя.
184 3077871
>>077818
Потому что его надо называть голованг
185 3077877
>>077818
Например? Что именно не нравится
186 3077886
>>077877
Мне не нравится как надо добавлять что-то в список или в мапы. Выглядит жутко и неприятно.

Надо постоянно обрабатывать ошибки. Занимает, наверное, половину всего времени.

Ощущение, что нужно постоянно велосипедить.

В целом кажется, что это какой то недопитон, который создавали прокуренные шизы. Ну тут уже субъективщина. Вообще не пынямаю, за что его любят.
187 3077912
>>077886

> Мне не нравится как надо добавлять что-то в список или в мапы


Экхм, а тут-то что не нравится?

> Надо постоянно обрабатывать ошибки. Занимает, наверное, половину всего времени.


Это сишечка с горутинами. Не проверил errno - у тебя креш.

> что это какой то недопитон, который создавали прокуренные шизы


Даже близко нет.

> Вообще не пынямаю, за что его любят.


За простоту, быстрый вкат, относительно простую конкурентность и кроссплатформенность.
188 3078118
>>077818
Потому что его создавал чел из Белл лабз, это натурально заря эры ПК. При этом он мог себе позволить не оглядываться на комьюнити и гнуть свою линию спасибо деньгам гугла. Для человека который начинал кодить в машинных кодах, даже for range это неибаццо какой синтаксический сахар.
5dbd5105-30b2-445e-9497-7bcc5aa2fe07.jpg62 Кб, 679x513
189 3078179
>>077844
Ага, легкий для чтения.
190 3079994
какой то тухлый тред
191 3080171
>>067496
Просто напомню, что "лсп" (а точнее на порядок его более мощная версия) появился в лиспах ещё в 80-ых годах. Ну так, к слову о тулингах.
192 3080182
>>077912

>За простоту


Но го - сложный язык с кучей корнеркейсов, с уже огромным слоем легаси, да даже парсер у него теперь уже неоднозначный, прям как у дидов в си.
193 3080195
>>077844

>Никакой магии, никакой скрытой логики


func init() {...}
194 3080964
В общем. Пацаны.
Скачал я этот ваш го часа 3 назад, решил, что было бы неплохо освоить. Потому что пробовал раст и показался говниной какой-то
Ниче не читал, решил, что лучшим способом будет - сделать типа эхо-сервер.

В общем. Накидал https://pastebin.com/mfeq3y39

Собственно. У меня теперь вопросы.
1. Как тута код по разным файлам раскидать?
2. Как тута подождать завершения этих вот рутин? Создалось впечатление, будто это какое-то fire and forget, но это же не всегда ОК
3. Как классы делать? Я чет вообще не смог нагуглить классов. Ну, если классов нет, то можно ли как-то структуры расширять?
4. Какие тут есть аналоги блокирующих-конкурентных коллекций? Или надо мутексы и вот это вот все делать? Просто я хотел типа таблицу соединений намутить и не понял как это сделать при условии, что там же получается куча потоков и все такое? Или вся эта фигня с рутинами в одном потоке крутится?
5. Как DI организовать? Ну, типа, чтобы я сконфигурировал и нужному сервису нужные зависимости прокинулись.
6. Какие тута есть ОРМ?
7. Что есть для работы с json-файликами? Я просто хотел конфиг туда вынести, и чет тоже не нашел, а парсить руками было лень.
195 3081053
>>080964
В таких простых задачах горутины вообще не нужны, достаточно одного потока. Будет работать быстрее. И процессы убиваются через стандартное Ctrl+C оно же SIGINT, не надо крутить цикл как у тебя в main.
Горутины используются, когда ты делаешь запрос на другой сервер с таймаутом и долго ждешь ответ. Можно нафоркать условные 1000 процессов, можно сделать через горутины, производительность будет одинаковая.
196 3081066
>>069616
И где куча вкатунских вакансий?

Поискал в ДС, всё что нашёл

https://hh.ru/vacancy/88590475?query=golang+Junior&hhtmFrom=vacancy_search_list - нужен опыт работы 7 месяцев

https://hh.ru/vacancy/93069676?query=golang+Junior&hhtmFrom=vacancy_search_list - нужен опыт работы 2 года

https://hh.ru/vacancy/90024969?query=golang+Junior&hhtmFrom=vacancy_search_list - нужен опыт работы с СУБД

https://hh.ru/vacancy/92506075?query=golang+Junior&hhtmFrom=vacancy_search_list - нужен опыт работы с СУБД

https://hh.ru/vacancy/94218872?query=golang+Junior&hhtmFrom=vacancy_search_list - единственная вкатунская вакансия, где ищут раба забесплатно.
197 3081212
>>077844

>Всё на виду


a1 := make([]int, 0)
a2 := []int{}
a3 := *new([]int)
Это три разных способа создать пустой слайс. Зачем?
198 3081413
>>081066
найс последняя вакансия, 3 месяца рабства без выходных, без оплаты, еще и не факт, что в штат возьмут)
199 3081439
>>081212
Первые два варианта есть в любом языке, аллокация заданного размера и аллокация с инициализацией.
Третье просто универсальный синтаксис создания любых типов. Удивительно, что он и для слайсов работает, да?
200 3081510
Мнение?
https://gleam.run/
201 3081821
есть ребята, которые джуны+, готовящиеся к собесам? ищу таких, чтоб вместе готовиться, пишите тг
202 3082821
Подскажите, а для чего нужен defer, если кусок кода, который он выполняет, можно тупо в конец функции кинуть?
203 3082884
>>082821
Чтобы не ставить в конец кода.
Улучшает читаемость. Проще переносить блоки кода туда-сюда.
204 3082887
>>082821
очевидно чтобы не забыть его туда кинуть
205 3082961
>>082821
У тебя может быть сильно больше одной точек выхода из функции if err != nil.
Панику можно обработать только в defer.
206 3083660
>>080964

>Как DI организовать


Создаешь структуру App, где будет храниться указатель на логер, на пул соединений с бд, конфиг итд. И уже в NewApp функции создаешь все свои сервисы, после чего прокидываешь в них все нужные зависимости.
Как на жабе в спринге у тебя все автоматом подтягивается из spring-context хранилища объектов, так тут ты все ручками распихиваешь куда нужно.

>>080964

>Какие тута есть ОРМ


Есть Gorm. Но вообще орм не принято использовать. Да и в целом писать бизнес-логику с походами в базу на го это плохой выбор. Лучше котлин или жабу со спрингом для бизнес задач брать.

>>080964

>Что есть для работы с json-файликами


json.Marshal/Unmarshal
207 3083663
>>079994
Да как-то хайп на гоуленг сошел я вижу.
Год-полтора назад нанимали на гошечку гораздо активнее.
Видимо наелись.
208 3083756
>>083663
Наигрались и хватит, пора на джаву возвращаться.
>>083660

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


Что это за язык такой, что самый частый пример приложений не подходит ему?
209 3083779
>>083756
Ну ты же на С или С++ не будешь писать энтерпрайзные круды, верно?

А вот какой-нибудь видеостриминг, файлопомойку, свою реализацию S3 сервера, кубернетис операторы да и даже движки субд неплохо на го пишутся.
image.png28 Кб, 471x389
210 3083880
Почему авторы языка не запретили компиляцию во втором случае?
Понятно, что просто 0 возвращать было бы очень странно - хуй поймешь, сумели ли привести интерфейс к инту или нет, поэтому бросают панику. Но разве не проще ли было сделать, как в остальном языке, чтобы попытка приведения значения интерфейса к нужному типу обязательно возвращала value и err. Тогда бы второй вариант попросту бы не скопилировался и не было бы нужды бросать панику.

https://go.dev/play/p/FSD16nC8v1A
211 3083909
>>083660

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


Святая толстота
212 3083917
>>083660

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


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


Надо еще как-то разресолвить граф зависимостей и порядок инициализации, а так говно вопрос конечно.
213 3083929
>>083880
Потому что не стали делать настолько глубокий анализ, сказано что interface{} значит что может быть что угодно.
214 3083956
>>083929

>сказано что interface{} значит что может быть что угодно


Это понятно. У меня вопрос, почему сама операция приведения интерфейса к типу не возвращает два значения всегда. Чтобы нельзя было написать i := x.(int). Чтобы можно было написать только i, err := x.(int). Ну или i, _ := x.(int). Так куда более логично с точки зрения консистентности самого языка.
215 3084052
>>083956
Таков путь.
216 3084086
>>083880
а что если бы func x() (T, err) можно было вызывать как y := x() и при err != nil автоматом бросалась паника?
217 3084138
>>084086
Ты только что эксепшены. Это не говей. Говей - это придумать велосипед на квадратных колесах и всем рассказывать, что так даже лучше, когда ты едешь и сидушка постоянно бьет по заднице.
218 3084379
>>083956

>У меня вопрос, почему сама операция приведения интерфейса к типу не возвращает два значения всегда.


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

>>084086

>а что если бы func x() (T, err) можно было вызывать как y := x() и при err != nil автоматом бросалась паника?


Это провоцирует говнокод. Ошибки бывают разные, есть ошибки которые вызваны входными данными и там теоретически можно их избежать, а есть ошибки вызванные средой исполнения, например ошибки чтения по сети. И если разрешить их не обрабатывать то начнут писать говнокод который работает до первой сетевой или дисковой ошибки.
219 3084627
Сап гоферач. Вопрос о двух стульях.
Первый:
Дёргаем в main функцию из соседнего пакета, которая возвращает указатель на бд/логгер/говно и передаём этот указатель по всему калопроводу через аргументы до самых отдалённых унитазов.
Второй:
Дёргаем в main функцию из соседнего пакета, которая ничего не возвращает, а записывает указатель в импортируемую переменную того пакета. Появляется возможность сделать db := baza.Bazyuha только в самом далёком толчке без протаскиваний по калопроводам.

Почему в большинстве гайдов используют первый стул?
220 3084757
>>084627

>Почему в большинстве гайдов используют первый стул?


Потому что так больше писать надо, а это говей.

Так ты явно указываешь откуда берётся переменная, проще для понимания. Нет никаких волшебных знаний, что надо дёрнуть функцию А, а потом прочитать переменную Б, что пиздец как не очевидно.
221 3084789
>>084627
SOLID, так тесты проще писать
222 3085049
>>084757
>>084789
Понимаю. А как тогда в фреймворках сторонний логгер протянуть? Возьмём для примера Gin. В настройках можно задать, чтобы фреймворк плевал свои внутренние логи (типа инфо гет 200) в встраиваемый логгер. При этом сами обработчики находятся в другом пакете и вообще не знают "а чо там у х фреймворка с логами". Аргументы в них не пробрасываются ибо route.GET("/get", handlers.Pook)
223 3085063
>>085049

>как тогда в фреймворках сторонний логгер протянуть


Если интерфейса под это нет, то есть места куда можно просунуть логгер, то очевидно что никак.
224 3085073
>>085063
В этом случае допустимо сделать в самом начале каждого обработчика log := logger.Log и нарушить SOLID или за такое ебут?
225 3085321
>>085049
Если ты пишешь фреймворк и хочешь пользователям управлять логгированием, то я бы сделал так: создал интерфейс LogWriter, который бы умел писать конкретные сообщения:

> LogMessage(level Level, msg string, params ...any)


и метод SetLogWriter(). По дефолту инициализировал бы его системным LogWriter.

И методы

> myloger.Info(msg, ...params)


которые бы уже вызывали тот LogWriter который есть. Ну и всё это упаковать в отдельный от фреймворка пакет, с документацией.
sage 226 3086705
>>052664 (OP)
Хочу перекатиться в го из джавы есть в РФ работодатели которые берут опытных жавистов на проекты с го?

Язык +/- освоил, но нужна осмысленная практика с ревью, задачами и лучшими практиками которые нарабатываются только в работе.
227 3087092
залетайте, вкатунизды https://start.avito.ru/tech
228 3087761
>>086705
Откисай, скуф.
Жабадебилы не нужны
229 3087762
>>087092
Я бы залетел, но не учил гуланг пока. Насколько реально залететь куда-нибудь с гулангом без глубокого знания фреймворков всяких, во что компилируется язык и т.д. ?
230 3087782
>>087761
Двачаю, сначала пусть отучатся писать в enterprise edition стиле и потом уже приходят
231 3087786
>>062272
Поясните про пхп в го. Постоянно как речь не заходит про го, то сразу всплывает пыха и наоборот в пыхо сообществах го разраб это как новый этап в развитии пхп погромиста.

Также листал вакансии на хх и постоянно встречаю требования го+пыха

В чем связь? Почему эти два языка идут рука об руку? Почему не го+питон или го+джава или ещё чтото
sage 232 3087846
>>087761
? За что тебя сегодня мама наругала?
233 3088139
>>086705

>опытных жавистов


А кому вы нужны? Тем более ты скуфидон. Сколько не работал на гоулэнг проектах, везде команда из упругих зумеров до 25-27 лет. У нас даже лид на текущем проекте 25-летний парень. Это бигтех, если что. Да и твой "опыт" здесь не нужен. Мы в прошлом году уволили целый отдел таких скуфидонов, которые писали на гоулэнге как на жабе, лол
234 3088145
>>084789

>SOLID, так тесты проще писать


Вообще нет, лол. Просто пишешь рест контроллер, из него дергаешь сервисный класс, затем из сервиса дергаешь репозиторий и все. Это нормально, когда сервисный класс имеет 15-20 зависимостей и ты туда дописываешь нужную логику и добавляешь фитчи
sage 235 3088216
>>088139
А как на го надо писать?
236 3088236
>>088216
Код на го пишут стоя, сынок
237 3088278
>>088216
Лаконично
238 3088292
>>088236
Проиграл
239 3088345
>>087786
Авито многие свои сервисы с php, питона и джавы переписала на го. Но изначально основная кодовая база у них была на пхп.
Они постоянно проводили конференции, где рассказывали как круто было отказаться от пхп в пользу гоуленга.
Видимо остальные пхп конторы тоже начали их опыт повторять.
240 3088349
>>088345

>и джавы


Еще бы, лол
241 3088807
>>086705
А чего не так с Graal Native Image? Это же по сути и есть Go
242 3088878
>>088807

>А чего не так с Graal Native Image


В том, что его нигде не используют. Это мертвый проект, увы.
Причина - нет нормальной поддержки рефлексии.
А любая крупная либа в jvm мире это тонны рефлексии. Как там, spring native поживает? Go как раз умеет компилироваться в бинарь и при этом в нем есть поддержка рефлексии полноценная.
243 3088923
>>088145
Ты уверен что на тот пост ответил?
244 3089079
>>081212
Ты не понимаешь, это го-вей!
245 3090183
Скуфу сишнику-байтоёбу сложно перекатиться с C на Go?
Надоело сидеть за сотыгу в своём НИИ с дедами-пердунами.
246 3090780
>>052664 (OP)
Коллеги посоветуйте для кафки норм либу
247 3091004
>>090183
Технически в го ничего сложного нет, выучить не проблема. Разве что "сопутствующие" технологии - докер, кубер, рест, грпц и т.д. надо получить.

Тут скорее вопрос в том, сможешь ли ты себя продать. Убедить хрюшу позвать тебя на собеседование. Вот тут надо будет вылизать резюме и научиться красиво пиздеть про свой опыт. Сначала у тебя, почти наверняка, не получится, но со временем вполне реально.
248 3091590
>>090780
segmentio/kafka-go юзаю сейчас на проекте, гораздо лучше sarama, прямо на порядок более человечески сделано
249 3091662
Вечер в хату, вообщем такой вопрос, пишу мобилки на айос уже 10 лет, ситуация складывается так что скоро айос в рф нахуй никому не нужен будет, и еще заметил что ща вакансий на мобилки не так много вне рф, из этого вытекает вопрос, может вкатиться в го?
Меня не смущает то что я потеряю в зп первые пару лет, и придется нихуево попотеть, но на выходе если через пару лет стать мидлом то будут одни плюсы. Так как кнопки красить уже не могу, подташнивает.
Как вообще смотрят на таких вкатунов? Как на полный долбаебов? Я просто представляю если ко мне придет на собес бекендер с 10 лет опыта на позицию джуна. Мой первый вопрос будет ты че ебанутый?
250 3091696
>>091662
Челы с 10 летним опытом минимум на миддла+ должны идти в го, иначе они хуйней занимались все эти годы.
251 3091710
>>090183
Лучше пробовать, чем ничего не делать
252 3091770
>>086705

>Хочу перекатиться в го из джавы есть в РФ работодатели которые берут опытных жавистов на проекты с го?


Перекатился на го пока работал жаба-макакой в Сбере. Без потери в зп. Синтаксис и билд систему к тому моменту уже знал, но опыта работы с продакшн реди либами было мало.

Несколько нюансов, отличие от жабы:
Билд система непривычная, много нюансов особенно после грейдла/мавена, нужно изучить детально с самого нуля, причем это важнее даже чем знание самого языка.
Рантайм позволяет в быстрый TDD без пиздоебства: файл сохранил -> тесты пробежали за миллисекунды/секунды в худшем случае.
ГоЛанд объективно хуже идеи в поддержке языка, я пересел сначала на ВСКод, потом на вим (lunarvim + gopls).
Горутины ебейшая вешь, но очень легко выстрелить в ногу особенно в вебдеве.
Лично я дрочу на контейнеры FROM scratch. Получи контейнер с полностью функциональным рест апи размером в ~30мб.
Пока регулярно приходится изобретать велосипеды. В отличии от жабы, пока нет библиотек буквально на все случаи жизни.

P.s: Сейчас в Озоне, никто за джавизм не унижает и не ловит, ревью прохожу нормально. Большинство коллег перекатилось в Го.

>>088139
Такой хуйни пока не встречал. Адекваты везде приветствуются. Мифический стиль написания на го вырабатывается за месяц, если кроме жабы умеешь в другие языки. Может за 2 от силы, если закостенелый даун.
253 3091792
>>090183
Только ты за эту сотыгу с дедами-пердунами, наверное, нихуя не делаешь толком, а тут за две уже ебать плотно будут во все щели.
254 3091972
Здравствуй, двачик. Созрел вопрос интимного характера, на который не смогли ответить ни форумы, ни чатгпт. Тащемта, есть два стула два аккаунта с приватными репами. Один на гитлабе, другой на гитхабе. И жил не тужил, всё работало нормально, пока в один день не отъебнуло ключ. Точнее, ключи в порядке, потому что я могу пулить, пушить и всякое другое делать через командную строку с гитом, однако, при попытке юзать go get для импорта своих модулей в проект он высирает мне ошибку, мол, репы не существует или нет доступа. Я смотрю на это с ебалом лягушки, потому что, опять же, git pull/push/clone работают, значит ssh ключ в порядке. netrc файл тоже выглядит нормально, но ебучий go get не работает... Про GOPRIVATE находил, менял, но нихуя не помогало. Однако, если что-то знаешь, напиши и про него, может быть я там обосрался. Анон, выручай, уже сил моих нет, раз я прошу помощи здесь...
255 3092232
>>091972
продебаж go get с флагами -v или -x, хз какой из них.
а так в целом GONOPROXY, GONOSUMDB, GOPRIVATE, .netrc, .ssh/config это вроде все места где ты можешь проебаться
256 3092236
>>092232
а ну и через
GIT_SSH_COMMAND="ssh -vvv" go get ...
можешь посмотреть
257 3092574
>>091770
Перекатился с Явы на Go внутри Сбера, или в Сбере писал на Java, а в Озон пошёл собеседоваться на Go?
258 3092778
>>092574
Зачем идти в озон, если там жуткая потогонка за копейки? Сенька литерально получает 200к и там нет премий и бонусов как в сбере
259 3093214
>>092574
Перекатился с Явы на Go внутри Сбера, потом через ~6 мес прошел собес в озон.
>>092778

>Сенька литерально получает 200к и там нет премий и бонусов


Я миддл, 340к на руки, удаленка.
260 3093752
Гайз как это сделать, вообще не понимаю и в интернете нет нифига. Чето от List[T] в котором *List[T] вообще бошка взрывается
https://go.dev/tour/generics/2
261 3093822
>>093752
Гугли что такое связный список linked list
262 3093833
>>093752

> в интернете нет нифига


Плохо гуглил, там же написано что это linked list, инфы по теме море
https://go.dev/play/p/uOJaBOgN_ZM
263 3094126
>>092778
Нижняя граница мидла в озоне 230к насколько я слышал от Vlad K. Сам в озон хочу через полгодика попробовать вкотиться на две сотыжки...
264 3094475
Ну че, ради интереса не получился вкат в андроид поучу ваш гулэнг, т.к. на другие бэкенд языки вообще не тянет.
Вопросы:
1)Если гулэнг норм живет без виртуальной машины, то нахуя vm делали для джавы и шарпа? Кто из них долбоеб по итогу?
2)Горутины под капотом работают так же, как и kotlin корутины?
А то в kotlin я могу почитать его байткод на джаве, т.к. он типа сначала в жабу компилится.
Там suspend функции просто return-ом флаг кидают, чтоб функция не блочила выполнение, а на фоне уже операция работает, которая при получении результата возвращает результат в коллбэк, который в параметр функции передается, но кодер видит лишь suspend слово вместо колбэка.
Сама корутина с асинхронными операциями представляет из себя объект, у которого invoke вызывается время от времени, а внутри invoke стейт машина, которая в зависимости от состояния выполняет последовательно операции асинхронные, обять же не блокируя выполнение, т.к. return кидает флаг просто, а результаты если что в колбэк объект кидаются и вызывают invoke снова.
Я так понял слово go - это аналог suspend fun в котлине, но при этом не надо заранее красить асинхронные функции. Получается компилятор go тупа гигачад, который каким то хуем меняет поведение одной функции в разных местах, смотря на ключевое слово?
265 3094481
Забейте, я думал в гуланге можно не красить асинхронные функции, а вы оказывается просто channel передаете аргументом. В Kotlin колбэки прячутся под капотом с помощью слова suspend, тем самым позволяя писать асинхронный код в синхронном стиле, без явной передачи колбэков или всяких channel-ов.
266 3094483
>>094481
Прост когда увидел go someFunc() без всяких suspend и колбэков, перевозбудился по ошибке
267 3094502
Сколько в вашу хуйню вкатываться если у меня год опыта с тайпскриптом? Вот прям до уровня возможности проходить собесы на мидла. Всю общую бэкэндовскую хуйню знаю офк, интересует чисто время, требуемое чтобы начать писать калопроводы на ГО, имея жсовский бэкграунд
268 3094503
И что у вас на собесах с алгосами? Часто спрашивают?
269 3094509
>>094502
Зачем? Ты хочешь поменять удобный инструмент на творчество душевнобольных чтобы что? Вместо удобных асинков для людей будет ебаное месиво из горутин и каналов, в котором ты утонешь нахуй.
270 3094511
>>094475
Вот тут https://medium.com/@brucewangno1/implementation-details-of-goroutine-5286fc0e9651 хорошо написано про горутины.
271 3094520
>>094475

>Горутины под капотом работают так же, как и kotlin корутины


Предполагаю, что в целом нет. Корутины это стейт машина. Горутины это в первую очередь планировщик.

>>094481
Асинхронных функций тут нет. По сути горутину лучше воспринимать как Thread из мира джавы. И go func() означает, что функция будет запущена в новом треде. И чтобы выполнять коммуникацию между тредами используют блокирующие очереди - каналы. Просто так получить значение из функции, которая запустилась в отдельном треде, разумеется невозможно, так как считай, что у ее горутины стек другой.

Можно не использовать их, а просто через sharing memory по старинке с мьютексами выполнять общение потоков, но это считается плохим подходом.
272 3094531
>>094520

>функция будет запущена в новом треде


Не просто запущена, а поставлена в очередь и запущена потом когда-нибудь, когда освободится воркер. Твой же код продолжит выполнение со следующей строки, а не будет ждать как с async. Чтобы сделать как асинк, надо ебаться с каналами, это говей. Можно было скрыть каналы под капотом, как в других языках, но это не говей, ты должен заебаться.
273 3094533
>>094509

>Зачем?


На ноде практически нет вакансий, а те которые есть - мидлы+/сеньоры с 3+ годами опыта и ебанутой конкуренцией на место. Ну либо ИП Кабан Кабаныч и крипто-блокчейн параша. На ГОшке же куча вакух с годом опыта, конкуренция меньше, ЗПха больше.
274 3094537
>>094533
Что тебе мешает написать 3 года опыта? Что тебе мешает вкатиться в фулстек на ангуляре? Фулстек на удаленке - это вообще работа мечты, можно ненапряжно делать сайтики разным жлобам и жить на солнечном берегу в деревушке где-то в Болгарии, а не душится в офисе авито.
275 3094565
>>094537

>Что тебе мешает написать 3 года опыта?


Лучше крутить опыт на ГО, чем на Ноде. Ибо на ГО всё равно вакансий в 7-8 раз больше и конкуренция меньше. Я же не один умный такой опыт крутить буду

>фулстек


Ебал я рот фронтеда, в жизни к этом калу не прикоснусь
276 3094589
Не планирую крутить опыт вообще. Сейчас есть 1.5 года стажа, еще полгода посижу на текущем месте (бекенд на питухе), потом буду резюме рассылать.
277 3095213
>>094531
Так потребление из канала это и есть await по сути. Напрягает только то, что каналы перекидывать надо туда-сюда.
С одной стороны избавляемся от suspend слова, или от Task await как в шарпе, с другой стороны мы теперь должны каналы кидать везде параметрами. Шило на мыло короче, хз. Интересно можно было бы скрыть каналы по типу того, как suspend функции скрывают колбэк под капотом в Kotlin
278 3095332
>>095213

> с другой стороны мы теперь должны каналы кидать везде параметрами


Не должны. Например аналог await Promise.all в го выглядит так:
https://go.dev/play/p/C_5UOmjcE_c
А каналы это больше для ивентов/потоковой обработки
279 3095453
>>095332
Для получения результата из функции каналы использую, как я понял, так что их надо передавать, если функция не анонимная, как у тебя в примере.
280 3095510
>>095332
У тебя WaitGroup неявно передается в твои лямбды. Если ты сделаешь их именованными функциями, WaitGroup надо будет передавать через параметры.
281 3095512
>>095213

>избавляемся от suspend слова, или от Task await как в шарпе


Плохо зделоли тупо. В сишарпе await сразу бросается в глаза, ты пробегаешь по коду и видишь точки ожидания. В голанге эти ебучие стрелочки воспринимаются, как визуальный шум и мусор. Говей такой говей.
282 3095571
>>095512
Шарпомуха, не бузи)
283 3095831
Полный тред наркоманов. Гоферы которые не разбираются в каналах, шарпер который не понимает что такое async/await.
Куда я попал.
284 3096166
>>095831
Ну так поясни за свои каналы, умник епты. По поводу await-а хз что там не понимать, ты о чем вообще?
285 3096194
>>095831
Чел, каналы это полное говно. -30% производительности на ровном месте. С мьютексом такой хуйни нет.
286 3096616
>>096166
>>096194
Ликбез для самы маленьких и тупеньких channel это тупо блокирующая очередь, аналог BlockingQueue в Java, BlockingCollection в C#, producer(ы) пишет в очередь, consumer читает(ют). Если размер очереди ограничен, то на записи возможна блокировка. Если данных в очереди нет, то на чтении возможна блокировка. В зависимости от API можно читать и писать не блокируясь.

sync/await это вообще нихуя не про блокировки и межтредовое взаимодействие. sync/await это точки где код отдает управление пранировщику шарпорутин. В этих точках пранировщик шарпорутин получает управление и решает, что делать дальше: продолжить выполнение, или продолжить выполнение другой шарпорутины.

По поводу каналов
>>3095425 →

>Что касается каналов, то в прикладном коде они появляются, когда ты решаешь что-то распаралелить на несколько горутин. Ну так у тебя и в котлине будет тоже самое даже есть каналы https://kotlinlang.org/docs/coroutines-and-channels.html#channels помимо каналов есть и другие способы, но сути это не меняет В Java у тебя будет Structured Concurrency или старые добрые очереди.


Не в курсе что там в C#, но sync/await это точно, не про распаралеливание задач.
287 3096669
>>096616
Поридж, ты тупой.
Как работают каналы? На стрелочке горутина делает return и рантайм ставит ее в очередь канала. Когда в канале появятся данные, рантайм возьмет горутину и переставит в общую очередь, дальше ее подхватит воркер и продолжит выполнение.
Как работают асинки? Та точно так же, блять. В точке await метод делает return, рантайм ставит метод в очередь, когда у таски появится флаг ок, рантайм продолжит выполнение метода.
Технически и горутины и методы сделаны как конечные автоматы. И в го, и в дотнете используются очереди с блокировками. Потому что, внезапно, это многопоточность, без блокировок никак.
288 3096750
>>096616
Я знаю как работают каналы в голенге. Не понимаю, почему они так просаживают производительность. Условно, мне нужно асинхронно записать 10к элеменов в массив. Беру 10 потоков и начинаю писать данные с блокировкой мьютексом. Получаю среднюю производительность n. Тоже самое, но с небуферизированным каналом: n - ≈ 30%
289 3096805
>>096750
доказательства будут?
290 3096814
>>096669

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


>Как работают асинки? Та точно так же, блять. В точке await метод делает return, рантайм ставит метод в очередь, когда у таски появится флаг ок, рантайм продолжит выполнение метода.


>Технически и горутины и методы сделаны как конечные автоматы. И в го, и в дотнете используются очереди с блокировками. Потому что, внезапно, это многопоточность, без блокировок никак.


Мало того что тупой, так еще и гонору вагон.

Каналы в Го это просто очередь https://go.dev/src/runtime/chan.go максимум, что он может сделать это запарковать тред, и всё. Никаких конечных автоматов там нет и в помине. Треды в го снимаются и прикрепляются к тредам ОС планировщиком горутин, но само выполнение горутины это обычный код без всяких стейт машин. В этом то главная фишка го и состоит - он не красит методы, в отличии от C#.
291 3096820
>>096750

>Я знаю как работают каналы в голенге. Не понимаю, почему они так просаживают производительность. Условно, мне нужно асинхронно записать 10к элеменов в массив. Беру 10 потоков и начинаю писать данные с блокировкой мьютексом. Получаю среднюю производительность n. Тоже самое, но с небуферизированным каналом: n - ≈ 30%


30% это не такая уж и фатальная потеря производительности, канал более сложная структура чем мьютекс и потому работает медленнее. Он под капотом мьютекс и использует https://go.dev/src/runtime/chan.go с чего бы ему быть быстрее?
292 3096831
>>096814
Я думал, ты тролишь, а ты действительно тупой.
293 3096917
>>096831

>пук-серньк


По делу есть что сказать?
294 3097022
>>096820
В хайлоаде очень даже чувствительно. Зачем тогда вся эта пляска с каналами? В какой ситуации они являются киллерфичей по сравнению с мьютексом?
295 3097228
>>097022
1. В хайлоаде важнее всего масштабируемость, а не TPS/GHz.
2. Ты взял какой говнопример и пытаешься, на основе его что-то доказать. Для разнообразия можешь взять те же 10 горутин, но синхронизировать их не через мьютекс, а через атомик increment and get для получения индекса. А потом ещё добавить оптимизацию инкремент делать не на 1 а на N. И вуаля, мьютекс говно по перформансу.
296 3097345
>>097022
Теперь ты знаешь, что такое говей. На любую критику обязательно прибежит шиз и будет доказывать, что так даже лучше и только выиграли. Просто почитай этого ебанутого, он неиронично предлагает писать примитивы синхронизации и полгода выгребать баги на проде которые в нормальных языках идут из коробки.
297 3097476
Пиздец блядь. Один додит использует FIFO очередь, в качестве мьютекса. Другому додику мерещаться предложения писать свои примитивы синхронизации. Третий шиз вообще про стейт машину в Го рассказывает.

Надо было в Раст вкатываться, там тоже шизы, но они хотя бы образованные.
298 3097558
Попросил гопоту написать контроллер который по пост методу структуру принимает,выдала это:

package main

import (
"encoding/json"
"net/http"
"log"
)

type RequestBody struct {
Field1 string json:"field1"
Field2 int json:"field2"
}

func main() {
http.HandleFunc("/example", handleExample)
log.Fatal(http.ListenAndServe(":8080", nil))
}

func handleExample(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Only POST method is allowed", http.StatusMethodNotAllowed)
return
}

var reqBody RequestBody
err := json.NewDecoder(r.Body).Decode(&reqBody)
if err != nil {
http.Error(w, "Invalid request body", http.StatusBadRequest)
return
}

// Передача данных в сервисный слой
serviceResponse := someServiceFunction(reqBody)

// Отправка ответа клиенту
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(serviceResponse)
}

func someServiceFunction(reqBody RequestBody) interface{} {
// Здесь можно реализовать логику обработки данных из запроса
// и возвращения результата
return map[string]interface{}{
"message": "Data received successfully",
}
}

Настоящие контроллеры выглядят примерно так? Нельзя пост метод где-то прописать вместо того чтобы вручную проверять?
298 3097558
Попросил гопоту написать контроллер который по пост методу структуру принимает,выдала это:

package main

import (
"encoding/json"
"net/http"
"log"
)

type RequestBody struct {
Field1 string json:"field1"
Field2 int json:"field2"
}

func main() {
http.HandleFunc("/example", handleExample)
log.Fatal(http.ListenAndServe(":8080", nil))
}

func handleExample(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Only POST method is allowed", http.StatusMethodNotAllowed)
return
}

var reqBody RequestBody
err := json.NewDecoder(r.Body).Decode(&reqBody)
if err != nil {
http.Error(w, "Invalid request body", http.StatusBadRequest)
return
}

// Передача данных в сервисный слой
serviceResponse := someServiceFunction(reqBody)

// Отправка ответа клиенту
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(serviceResponse)
}

func someServiceFunction(reqBody RequestBody) interface{} {
// Здесь можно реализовать логику обработки данных из запроса
// и возвращения результата
return map[string]interface{}{
"message": "Data received successfully",
}
}

Настоящие контроллеры выглядят примерно так? Нельзя пост метод где-то прописать вместо того чтобы вручную проверять?
299 3097570
>>097558
Ахуел? Больше 10 строк кода, формат уровня b, бредни гопоты. Тебя сжечь надо, а не помощь оказывать.
300 3097647
>>097558
Вот хороший пример https://go.dev/doc/tutorial/web-service-gin
Гопота не может в код, генерит какую-то хуйню.
301 3097775
>>097647
Кто-то пользуется гином? Я думал у вас тут все на стандартной библиотеке делается
302 3097810
>>097775
Да, открой любой урок по созданию REST API, везде будет использоваться gin
download.png7 Кб, 254x199
303 3097881
какие профиты у го перед жабой? Стоит ли ради них наступать на говно?
304 3097904
>>097881
1. это не жава
305 3097927
>>097904
и всо?
306 3097978
>>097927
На каждую таску будешь писать кучу велосипедов. Иногда фреймворков.

>>097810
Gin исключительно в гайдах и используется. Говнокодил на галере в множестве кабаньих стартапов и ни в одном не был использован какой-либо фреймворк. Только самописное говно. Только хардкор.
307 3098139
>>097881
Не надо ставить джава-рантайм нужной версии.
308 3098847
>>097881
Более быстрая разработка по сравнению с жабой. Иногда на порядки быстрее. Ну и конечные сервисы значительнее быстрей чем на жабе. Достаточно посмотреть на сервисы вроде яндекс.маркета или недвижимости, а потом открыть авито недвижимость или озон. В целом на проектах где пишут на гоу молодая и энергичная команда до 25-27 лет. На жабе обычно старичье 30+ что-то там пердит в попытках расставить нужные аннотации спрэнг фримверка. Пока одни за неделю выкатывают новую фитчу и лутают бабулес, вторые 2 месяца настраивают хубирнейт и спрэнг фримверк, а потом три месяца дебажат нюлы.
Про скорость уже писал. Сервис на гоу стартует за +- секунду-две, пока сервис на спринг буте поднимается несколько минут и раз за разом фейлится где-нибудь в конце т.к. ты снова поставил не ту аннотацию и у тебя наебнулся контекст т.к. рефлекшен кругом, лол
309 3098922
>>098847
Средней толстоты пост,есть шанс собрать много ответов
310 3098950
>>098922
Норм пост, достаточно тонкий. Особенно повеселило про яндекс маркет.
311 3098970
>>098950

>Особенно повеселило про яндекс маркет


>джаваскуфидон не выкупил однослойную


Чел... Объясняю.... ямаркет и недвижимость написаны на жабе + спрэнг бут - это медленные сервисы и глючные. Авито и озон написаны на гоу - это круто и быстро. Возвращайся дебажить нюлы по полгода
Стикер512x512
312 3099006
>>098847
Жырнота то какая.
313 3099072
>>098970
Шутишь? Авито это худший продукт эвер,хуже наверное только сбермаркет
314 3099100
>>099072
а что тогда насчет озон??
315 3099103
>>099100
Озон заебись,без нареканий
316 3099208
Салют друзья,в го есть возможность компилировать и запускать гошные файлы переданные в качестве строки. Аналог рефлекшена из джавы. Грубо говоря считать из файла строку,передать ее в какой-нибудь классец и на выходе получить го объект
317 3099259
Можно ли в гуланге написать функцию которая обрабатывает ошибку и вызывать ее при необходимости писать ерр нил? Не дадут ли за это по жопе синьоры? Принято ли ваще так?
318 3099264
>>099208
Вместо точки вопросительный знак

слоуфикс
319 3099274
>>099072
Авито это распреденный монолит, где всё раздробили на наносервисы, примерно по сервису на одного бекендера, а ещё там много Легаси на пыхе
320 3099286
>>099208
Рефлексия джавы не позволяет компилировать код. Рефлексия позволяет создавать объекты, читать/писать значения полей, вызывать методы. Всё тоже самое может рефлексия в Го.
321 3099300
>>099286
В моем случае я создаю джавовский Callable(поток возвращающий результат) передавая ему содержимое нужного класса как одну большую строку. Не подскажешь в какую сторону смотреть в рамках голанга?
322 3099325
>>099300
>>099259
Давай более высокоуровнево. Зачем это всё? Ты хочешь eval-ить любой производный код чтобы что?
323 3099406
>>099325
У меня система обрабатывает бесконечные потоки данных по разным источникам(сетевые коммутаторы). Для каждой версии прошивки и для каждого поставщика в частности пишется парсер(на джаве),далее этот парсер создается и запускается с помощью рефлексии на другом микросервисе(тоже на джаве). То есть существует много потоков уже и также относительно часто добавляются новые,также есть потребность в изменении существующих парсеров в соответствии с требованиями бизнеса. Нынешняя система полностью удовлетворяет требованиям и переписываться на го не будет (хотя кто знает что будет через пару лет),спрашиваю в целях мысленного эксперимента. Как ты понимаешь редеплоить сервис при добавлении нового потока нельзя
324 3099448
>>099406
Можно попробовать https://github.com/traefik/yaegi, но я бы пересмотрел архитектуру
325 3099480
>>099406
Это часом не eIUM?
326 3099538
>>099448
И как бы ты реализовал изменение и добавление новых обработчиков без редеплоя?
327 3099563
>>099538

>И как бы ты реализовал изменение и добавление новых обработчиков без редеплоя?


https://en.wikipedia.org/wiki/Over-the-air_update
Обновление поступает в виде delta-файла, сравнивается старая прошивка и новая. Потом применяются изменения. Опционально можно отключать функционал на время обновления.
328 3099569
>>099563
Сравнение прошивок не нужно,там нет обратной совместимости и в помине. Два потока одного поставщика, даже с разными версиями это два независимых потока. Тут видимо нужно прояснить пару моментов. С вышек приходят данные о событиях в сети(набор номера,сброс,перенаправление и тд)+метаинформация. Данные лежат в жатом пережатом+зашифрованном виде. Документация оборудования описывает как эти данные считать. Если важно,то события поступают в файлах с байтовым содержимым,либо с содержимом в формате asn1. На выходе данные можно представить в виде жсона,хмл или любого другого формата
329 3099642
>>099538

> добавление новых обработчиков без редеплоя


Сама постановка вопроса неправильная. Рано или поздно нужно будет рестартарт сделать, не говоря уже о всяких авариях. Первое что мне пришло в голову это очередь, чтобы консьюмеры можно было создавать динамически и делать rollout restart, а так нужно больше подробностей
330 3099682
>>099538

>И как бы ты реализовал изменение и добавление новых обработчиков без редеплоя?


В гуланге так не делают.

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

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

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

и ьы не ответил >>099480
331 3099929
>>099480
Не знаю что это
332 3099957
>>099642

> Сама постановка вопроса неправильная.


Постановка буквально требование бизнеса

> Рано или поздно нужно будет рестартарт сделать


С чего ты взял? У нас рестарты происходят раз в Х месяцев когда добавляются улучшения в сервис который парсеры запускает

> Не говоря уже о всяких авариях.


У нас авария,в существующей архитектуре,может быть только в рамках парсера который запускается внутри сервиса. Это не затрагивает не только сервис,который это запускает,но и другие потоки от этого тоже никак не страдают

> Первое что мне пришло в голову это очередь, чтобы консьюмеры можно было создавать динамически и делать rollout restart, а так нужно больше подробностей


Вопрос вообще не про потребителей. Если в крации:
1)Парсеры это классы(джава,го,не суть). Для простоты понимания можешь представить что на момент нашего общения существует 5 парсеров. Каждый выводит на консоль число. Первый парсер выводит 1,второй 2 и тд. Вывелось число—ты молодец и обработал одно событие.
2)Эти 5 парсеров работают и бесконечно срут в консоль своими числами.
3)К нам приходит потребитель данных и говорит что хочет чтобы по первому потоку хочет видеть в консоли число не 1 а 10.
4)Потом приходит новый заказчик и говорит что хочет чтобы мы обрабатывали новый поток(сделали парсер 6 который будет срать в консоль шестеркой)

Основные требования к системе вытекают из пунктов 3 и 4. Как ты понимаешь просто положить 5 классов-парсеров в коде нельзя тк добавление нового парсера или изменение старого потребуют остановки существующего сервиса и добавление/изменение парсера. Существующая же система принимает мету по потоку(откуда взять данные,куда положить и как обработать (класс-парсер)). И для нужного потока просто создает динамически класс из меты и все работает окай. Изменение старого тоже не проблема,стопнули поток,внесли изменения в мету и стартанули заново. Вуаля,новый класс обработчик,но сам сервис никак не изменился. Добавление нового еще проще, достаточно просто написать парсер и все. При каждый из этих движух остальные потоки не останавливаются,как работали так и работают
332 3099957
>>099642

> Сама постановка вопроса неправильная.


Постановка буквально требование бизнеса

> Рано или поздно нужно будет рестартарт сделать


С чего ты взял? У нас рестарты происходят раз в Х месяцев когда добавляются улучшения в сервис который парсеры запускает

> Не говоря уже о всяких авариях.


У нас авария,в существующей архитектуре,может быть только в рамках парсера который запускается внутри сервиса. Это не затрагивает не только сервис,который это запускает,но и другие потоки от этого тоже никак не страдают

> Первое что мне пришло в голову это очередь, чтобы консьюмеры можно было создавать динамически и делать rollout restart, а так нужно больше подробностей


Вопрос вообще не про потребителей. Если в крации:
1)Парсеры это классы(джава,го,не суть). Для простоты понимания можешь представить что на момент нашего общения существует 5 парсеров. Каждый выводит на консоль число. Первый парсер выводит 1,второй 2 и тд. Вывелось число—ты молодец и обработал одно событие.
2)Эти 5 парсеров работают и бесконечно срут в консоль своими числами.
3)К нам приходит потребитель данных и говорит что хочет чтобы по первому потоку хочет видеть в консоли число не 1 а 10.
4)Потом приходит новый заказчик и говорит что хочет чтобы мы обрабатывали новый поток(сделали парсер 6 который будет срать в консоль шестеркой)

Основные требования к системе вытекают из пунктов 3 и 4. Как ты понимаешь просто положить 5 классов-парсеров в коде нельзя тк добавление нового парсера или изменение старого потребуют остановки существующего сервиса и добавление/изменение парсера. Существующая же система принимает мету по потоку(откуда взять данные,куда положить и как обработать (класс-парсер)). И для нужного потока просто создает динамически класс из меты и все работает окай. Изменение старого тоже не проблема,стопнули поток,внесли изменения в мету и стартанули заново. Вуаля,новый класс обработчик,но сам сервис никак не изменился. Добавление нового еще проще, достаточно просто написать парсер и все. При каждый из этих движух остальные потоки не останавливаются,как работали так и работают
333 3099961
>>099682

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


Ну да,надо,просто анон вкинул типо он бы пересмотрел архитектуру,вот я и заинтересовался как бы он реализовал требования средствами го ибо текущая архитектура и требованиям по скорости удовлетворяет и для разработчиков очень удобна
334 3100647
>>096669

> без блокировок никак


Императивщики такие императивщики...
335 3101113
>>062417
собес и экзамен сильно отличались чтоли? и как вообще экзамен всплыл этот?
336 3101158
ребзя, какие есть нормальные слитые курсы по гоу? хочу попроходить какой-нибудь параллельно читая донована

студент-вкатун
337 3103003
дженерики уже есть а когда уже добавят стектрейсы ? Еще через 10 лет?
338 3103106
>>103003
Когда главный скажет, тогда и добавят. Ему из гугла лучше видно. Мы жуки-плавунцы, едим, что насыпали. Сейчас главное не бухтеть, а сплотиться и защищать гошечку от богомерзких джаверов и сишарперов.
339 3103391
>>103003
Стектрейсы есть https://pkg.go.dev/runtime/debug#PrintStack

>>103106
Пайк наградил и ушёл на пенсию.
340 3103395
>>103391
* нагадил
341 3103548
>>103391

>Стектрейсы есть



значит ли это, что не нужно изъебываться над каждой строчкой чтобы обработать ошибку?
342 3103561
>>103548
Как это связано с наличием или отсутствием стактрейсов?
343 3103574
344 3103740
>>096814

>https://go.dev/src/runtime/chan.go


а что такое? В компиляторе как в 70х бюджет 6 букв на имя функции?
345 3103788
>>052664 (OP)
Ребят, не подскажете, есть ли какой-то способ задать ограничение на количество считываемых с консоли символов?

Например, я хочу записать в string три слова разделенных пробелами, но если записываю, например, четыре, то получаю ошибку

Или, например, хочу записать два числа в int1 и int2 в формате "22 45", но если, например, ввожу "22 45 8", то тоже получаю ошибку. На данный момент 8 уйдет в следующий виток цикла, что мне не нужно
346 3104404
итак, главный вопрос треда - КАКУЮ ВЫБРАТЬ ТЕМУ ДЛЯ ДИПЛОМА НА ГОУ?
347 3104423
>>103740

>а что такое? В компиляторе как в 70х бюджет 6 букв на имя функции?


Лимита нет, но авто предпочитает короткие имена. Потому что сам из 70х, и вообще привык в vim работать. А потом всякие додики спрашивают зачем вам IDE? Именно за этим, чтобы писать длинные и понятные имена функций.
348 3104501
>>104404
Для дипломной работы, быдло.
349 3104896
>>104501
Для выпускной квалификационной работы,деревенщина
350 3105598
>>103788

> Ребят, не подскажете, есть ли какой-то способ задать ограничение на количество считываемых с консоли символов?


io.LimitReader

>Например, я хочу записать в string три слова разделенных пробелами, но если записываю, например, четыре, то получаю ошибку


считываешь в буфер максимальным размером N, сплитишь и валидируешь

>Или, например, хочу записать два числа в int1 и int2 в формате "22 45", но если, например, ввожу "22 45 8", то тоже получаю ошибку. На данный момент 8 уйдет в следующий виток цикла, что мне не нужно


в чем проблема проверить, что ты на 3-й итерации лупа и вернуть ошибку? или вернуть ошибку после парсинга всего инпута?
351 3105645
Сап
На днях закончил освоение теории ГО, встал вопрос пет-проектов, хочется уже что-то более осязаемое покрутить. Подскажите, пожалуйста, студентоте без опыта, что берется для пет-проектов и как\зачем\почему
sage 352 3105693
>>105645

>Подскажите, пожалуйста, студентоте без опыта, что берется для пет-проектов и как\зачем\почему


Не надо делать пет-проекты для других. Делай для себя. Иначе это будет имитация полезной деятельности. Это та же самая показуха, как и когда мэр города начинает красить траву во время приезда президента, срочно ремонтировать дорогу, сажать цветочки и т.д. Он тоже имитирует полезную деятельность. Смотрите какой я важный! Как я много работаю! Тоже самое, показуха в армии, показуха перед выборами и так далее. И в итоге мы имеем то что имеем.
353 3105791
>>105693
Проблема в том, что я не до конца понимаю что такое пет-проект. Точнее я понимаю, что это примерно, но я не понимаю как их придумывать. Я примерно понимаю, что калькулятор может быть пет-проектом, но как будто в рамках ГО делать калькулятор такое себе. Хочется чего-то прикладного что ли
sage 354 3105857
>>105791
Так возьми я не знаю, свяжись с каким-то благотворительным фондом. Спасение кошек/собак, лечение деток больных пиздецомой, какие-нибудь слепые. И предложи им свою помощь. Так хоть какая-то польза будет. Щас ты силы тратишь в пустоту. Или лучше вообще ничего не делай. Мир и твой будущий работодатель переживёт отсутствие ещё одного 16431-го калькулятора. Когда к тебе придёт крутая идея, вдохновение, такое что прям глаза загорятся, тогда и запилишь свой пет-проект. А если идей нет, не надо пытаться их искусственно создать. Не можешь срать - не мучай жопу.
355 3105869
>>105857
Так проблема в том что я не понимаю что можно сделать в принципе. Как можно ждать озарения, если непонятно что я жду. Нет же смысла условную нейронку бахать на ГО, надо что-то более из области го. Вот челик выше в треде писал эхо сервер.
Если говорить про работодателя, то ему понятно, что не нужен мой калькулятор будет.
Вопрос не в том чтобы сделать очень нужную полезную мне вещь, а попробовать покрутить все что я выучил на более менее практической задаче
356 3105885
>>105791
У нее проблемыНу как проблемы...физически отклонений нет, она полностью здоровый человек. Не найдено ни одной явной причины.
sage 357 3105894
>>105869
Ну охуеть теперь. А как же ты учишь то, сам не зная что? Этим надо было озаботиться до того, как приступать к обучению. Пиздец, это тяжелый случай конечно. Открой тогда гитхаб https://github.com/avelino/awesome-go изучай что другие люди создали до тебя. Не надо переизобретать никаких велосипедов, просто изучи существующие проекты и в следующий раз так не делай. Нахуя лезть в то, если ты сам не знаешь куда лезешь.
358 3107602
Кто-нибудь может что такое микросервисы?
Это типо отдельное приложение/сервер которая как кубик лего вставляется в подходящий проект?
Можно ли на микросервисах зарабатывать? Например, написать что-нибудь и продавать его или в аренду сдавать (сервер поднять)?
359 3107664
>>107602
Микросервисы - это когда ты берешь монолит и превращаешь в распределенный монолит. Теперь тебе надо в 10 раз больше людей, чтобы поддерживать твою систему. По этой причине микросервисы обожают на галерах, заказчик больше платит.
Как ты хочешь, сделать нельзя. Микросервисы уникальные для каждого проекта.
360 3107695
>>107664
Ну так это проще поддерживать чем монолит по логике?
типо вот вася написал микросервис сам, знает все входы и выходы.
361 3107706
>>107695
Намного сложнее.
Монолит можно просто открыть на компе, расставить брейкпоинты и посмотреть, как все работает. В микросервисах у тебя один сервис вызывает другой, тот третий, пятый, десятый, все их на компе не развернешь. В итоге получается ситуация, когда каждый сервис вроде работает, а все вместе не очень.
В монолите транзакциями управляет одна бд. В микросервисах у каждого сервиса своя бд. Сделать атомарные транзакции в таких условиях - это боль и страдания. Особенно, если сервисы пишут джуники.
На ютубе есть выступления на конференции хайлоад от авито, как они делали микросервисы, посмотри.
362 3107969
>>107706
ну а чо их тогда используют?
Рыночек порешал?
363 3108009
>>107706
Расставить брейкпоинты и посмотреть что делается в монолите можно, только если у тебя монолит сам по себе самодостаточный и от других сервисов практически не зависит.

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

>>107969
Проще раскидывать задачи на людей. Проще катать релизы. Если сервис, написанный славиком сычевым, внезапно падает в тестинге, то не нужно пересобирать весь релиз с нуля и катить - нужно просто дождаться, чтобы славик внес фикс и выкатил этот фикс в тестинг. Для каждого сервиса свой отдельный ci/cd должен быть. Вот в этом и преимущество. Если работал хоть раз с монолитами, то должен был сталкиваться с проблемой, что релизы становится сложно и долго катать. По сути это и решают микросервисы.
364 3108053
>>107969
Таки да, порешал. С одной стороны - амазон и микрософт с миллионными бюджетами на рекламу. Проплаченые блогеры рассказывают, как легко и просто и очень недорого поднять микросервисы на aws или azure, любая макака справится. С другой стороны сотни галер топят за микросервисы, ведь чем больше команда, тем больше заказчик платит за разработку. К хайпу подключаются пиздоболы с ютуба и рассказывают одну и ту же методичку про масштабируемость. Про еблю с транзакциями и цену кластера кафки не рассказывают, контент должен быть позитивным. Джуники читаю блогеров, смотрят пиздоболов и думают, что микросервисы - это топчик, а монолиты - кринж для дедов. Такие дела.
365 3108063
Парни, есть тут кто от 400к лутает? Чем вы на работе занимаетесь? Интересно сравнить уровень задач.
366 3108202
>>108063
А чем ты занимаешься на работе 399к??
367 3108208
сегодня траур

опять не добавили эксепшены...
368 3108228
>>107602

>Кто-нибудь может что такое микросервисы?


Микросервисы решают задачу менеджмента. Если у тебя в компании работают 100 программистов, проект быстро разрастётся до миллионов строк кода. Его придётся целую вечность тестировать, целую вечность компилировать и целую вечность деплоить. Вместо этого ты даёт этим 5 программистам вот этот сервис, тем 5 программистам тот сервис... Они могут независимо друг от друга работать, им не нужно общее совещание устраивать. Они могут договорится а-ля "мой сервис отправляет такие-то события".

>Это типо отдельное приложение/сервер которая как кубик лего вставляется в подходящий проект?


Да! Типа как кубик лего.

>Можно ли на микросервисах зарабатывать?


Нууу теоретически можно. Люди продают же API. Грубо говоря, тот же tinypng продаёт же компрессию за десять баксов/10,000 сжатых картинок.

>>107695

>Ну так это проще поддерживать чем монолит по логике?


Ага удачи тебе устроится в компанию где сотня программистов и 10 миллионов строк кода. Расскажешь как это проще поддерживать.
369 3108263
>>108228
В исходниках той же винды миллионы строк. Тем не менее, им как-то удавалось все писать еще до начала шизы с микросервисами. Никто не выкатывал в прод по 10 раз в день. Потом все обезумели, начали раскладывать базу на 20 серверов и вызывать методы через tcp.
370 3108275
>>108263
Виинда модульная.
Лучше с ядром Линукса сраввни.
371 3108710
>>108009

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


>


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


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

Во вторых, чтобы все нормально протестировать - надо иметь qual среду где, уже поднять все реальные сервисы без моков ну кроме внешних систем у которых нет тестовых сред. И там гонять функциональные тесты.
го тур.jpg82 Кб, 1057x670
372 3108991
Нахуя они вот эту вот русофобию затевают?
373 3109100
>>108991
where is English?
374 3109139
>>108991
Переведи и сделай ПР
375 3109213
>>108991
тут перевод в "Основы go"
https://golang-blog.blogspot.com/
376 3109229
Значица решил я поучить ГО, знаю что шустрый язык, можно сервисы наебашить для моего монолита.
Любая хуйня в моей 2летней практике фиксилась либо оптимизацией запроса в БД, либо увелечением оперативки на хосте.
И тут мне Яндекс Практикум в бесплатном своем курсе предлагает байтоебить. Задачу то я решил, но я не понимаю, типа вы все тут байтоебите или что? Или эта задачка была специально для челов, которые с низкоуровневых языков решили вкатиться, что бы видели как подобное байтоебство реализовано в Го`шечке?
377 3109329
>>109229
В яндексе все байтоебят, и себе растят таких же. Странно с двухлетнем опытом не быть в курсе о таких базовых вещах
378 3109336
>>109229
Скорее просто чтобы ты посмотрел в стандартную библиотеку и попользовался unsafe и профилировщиком.
379 3109337
>>109329
Ну судя по их слитому коду они не так жестко байтоебят.
Но вообще вопрос про другое был, вы парни, тоже байтоебите? или так же как и я - крудошлепите в основном?
381 3111031
>>052664 (OP)
Объясните по хардкору, почему столько людей вкатываются в го? Все такие фанаты микросервисов? Что, блять, интересного, может быть в пилении микросервисов?
382 3111037
>>109337
Раньше крудошлепил, сейчас байтоеблю (Ява). Но очевидно всему надо меру знать и байтоебить только там где это оправдано.
383 3111038
>>111031
Это бывшие дотнетчики. Дотнет сильно обмяк за последние годы, а работа та же самая, даже с дебильными if err != nil.
384 3111042
>>109329
Не понимаю как можно байтоебить и двигать микросервисы, буквально одно другому противоречит. Выглядит будто ребята на всех стульях хайпа одновременно хотят усидеть.
385 3111064
>>111038
Мы с жабы тоже к вам вкатываемся, заебал этот bloat ооп помойки.
386 3111092
>>111064
Почему бы просто не писать на ООП? Вы серьезно просрете опыт и инфраструктуру ради очередного хайпа?
387 3111174
>>111064
Я наоборот пытаюсь в джаву перепрыгнуть
388 3111195
>>111174
С чего?
389 3111196
>>111195
А ты не очень умный, да?
390 3111204
>>111196
Нет, я же джавист
391 3111240
го сосет джаве? Или налборот?
392 3111269
>>111092
Не знаю как в джаве, но в дотнете фактические микросервисы строятся вокруг кучи говна из жоп индусов под названием Entity Framework. Буквально в каждом проекте воняет этой смесью кари и дриста. Нельзя просто взять данные из бд и вернуть джейсончик, надо нахуячить слои абстракции ради абстракции с конфигами ради конфигов. Ну и в целом дотнет считается дешевой хуйней для бедных, где криворукие мартышки из мумбая что-то там педалят, криво косо.
393 3111286
394 3111290
>>111269
Это аналог Hibernate, да в джаве такое есть. Я про то, что посади тех же индусов на го, и они напилят тебе AbstractFactoryProxyDecorator сколько угодно.
Говнокодить можно на любом языке, от этого сам язык плохим не становится и он от этого не спасёт.
395 3111328
>>111269
Забавно, я вот часто слышал мнение, что EF единственная годная Орм среди всех языков.
396 3111332
>>111328
Это говорит об уровне долбоебов, которые так и не осилили left join. Задача орм отмапить сырые данные из базы на поля твоих структур, а не делать вид, что бд у нас как бы лежит вот тут рядом в памяти и как-то магически работает.
397 3111341
>>111269

>Entity Framework. Буквально в каждом проекте воняет этой смесью кари и дриста


>>111290

>Это аналог Hibernate, да в джаве такое есть



ОРМ для каждого рантайма рожают и для го родят, не переживайте
Screenshot 2024-04-04 at 8.47.07.png88 Кб, 1530x558
398 3111344
Как вы пишете юнит тесты для методов, которые обращаются к внешним ресурсам?

Думаю, что надо поднимать тест сервер и создавать новый инстанс с его клиентом и урлом, пикрил.

Всё правильно делаю? Есть методы получше?
399 3111347
>>111344
делай мок, нахуя тебе полный тест сервер
400 3111352
>>111341
Для го уже есть орм, только вот стандартом она почему-то не стала
401 3111355
>>111344

Этот прав >>111347 оберни методы сервера в интерфейс, и мокни
402 3111358
>>111347
>>111355
Но разве не для этого httptest.Server придумали? И если нет, то для чего тогда?
403 3111361
>>111358
Сервер имеет смысл поднимать не для юнитов а для e2e тестов когда ты полностью верифицируешь работу функциональности от получения вызова до ответа.
404 3111375
>>111355
Чето я все равно не понимаю. Вот если у нас гига-стандартный геттер типа пикрил, что тут можно мокать? http.Client - это же стракт, а не интерфейс.
405 3111380
>>111375
Ты текстиль метод Access так? Тебе нужно сделать новую структуру которая будет в себе содержать http.Server. Можешь поле оставить без названия, так будет даже удобнее. Для этой структуры ты пишешь интерфейс с методами копирующими оригинальные, потом ты пишешь в своей структуре реализацию этих копированных методов (просто прокидываешь данные дальше в реальный метод. Будет что-то типо func (s *MyServer) Do(req http.Request, ...) error { return s.Do(req...) }). И используешь в своих тестируемых методах только интерфейс, а реализацию подключаешь на этапе инициализации RemoteEndpoint. В нормальном коде ты подсовываешь нормальный сервер, а в тестах мок. Надеюсь доходчиво объяснил
406 3111400
Сап гофач. Как детектить тупики в коде? Например, проебал в какой-то асинхронной ветке wg.Done, а в логах куча другой инфы. Хочу как-то логать места, где код затупил на более чем 30 секунд.
407 3111412
>>111380
О каком нормальном сервере идет речь, если речь идет о внешнем ресурсе? Нахуя обычному геттеру получать какой-то сервер?
408 3111428
>>111400
Так у тебя же дедлок и паника будет при проебанном wg.Done, не?
409 3111475
>>111412
Бля ну наебланил чутка, http.Client имелся ввиду, суть же понятна
410 3111570
>>111400
Делай дамп всех горутин https://stackoverflow.com/questions/23354810/how-can-i-dump-all-a-go-processs-stacks-without-killing-it
И смотри какие долго не меняют точку исполнения. Только учти, что это дорого и не стоит делать на проде.

>>111428
Не будет. Просто горутина встанет на Wait и всё.
411 3111682
>>111570
Благодарю. Мне именно на отладке надо.
Screenshot from 2024-04-05 08-56-49.png23 Кб, 778x195
412 3112466
>>052664 (OP)
Как это так. Переменная по умолчанию 0. Не приводит ли в дальнейшем к ошибкам, которые не заметили?
413 3112488
>>112466
??
А ты замечай, долбоебина
414 3112567
>>112466
Создай *int тогда у тебя будет по умолчанию nil
415 3113405
>>111400
так defer жи есть чтоб не проебывать
416 3113406
>>111400
так defer жи есть чтоб не проебывать
417 3113410
>>112466
ну получше наверное чем в каком-нибудь си где если объявил и не проинициализировал то там может быть вообще что угодно
418 3113441
>>113405
Чел, не одной вейтгруппой мир полон. Есть ещё хитровыебанные каналы, потенциально бесконечные залупы типа пока вар пук < вар срёньк, блокировки соединения и прочая хуета. В этом цирке с хуями нормальный стул порой по 3 дня ищешь.
419 3113837
>>113441
тут согласен. но я хз, правда, ты там свой nginx что ли решил написать, что так заморочился...
зачастую можно асинхронное говно сделать синхронным, и не сильно потерять при этом в скорости выполнения.
таймауты ещё хорошо помогают, если у тебя куча непонятного асинхронного говна
420 3113947
>>113837
Много запросов к разным БД, где нет зависимостей результатов друг от друга. Тут как бы синхронизация чувствительно бьёт по времени выполнения.
421 3114084
Насколько популярен Го вне России?

Ищу работу в UK на линкедыне. Но вакансий как будто вообще нет от слова совсем. Бувально 50-70 штук на всю Англию + Шотланлию + Северную Ирландию.
Очевидно, что на Go пишет Гугл, но туда найма сейчас как будто нет совсем. Слышал про Go в Амазоне, но и там найма нет. Но при этом в Гугл и Амазон могут взять с любым бекграундом, если секции пройдешь.
Я скорее про обычные продуктовые конторки и галеры, где сидят педалят индусы и пакистанцы, а из местных только лишь менеджеры. Вот там как будто Go вообще нет нигде. Сплошная Java, Python и Js.

Верно ли, что в забугорных конторах Go плохо распространен?
422 3114118
Надо по go искать, он в вакансиях редко называется golang. Но, конечно, будет ещё куча мусора из-за того, что язык назвали как существующее и часто используемое слово. Как будто в первый раз.
С C, C++ и C# похожая хуйня, поиск отрезает специальные символы и смешивает всё в кучу.
image.png73 Кб, 496x562
423 3114149
>>114118
Да как бы не сильно больше в итоге.

Но это хуйня на самом деле. Visa sponsorship сейчас нигде не делают, так как на западном рынке переизбыток рабочей силы. Поэтому местных берут, а не привозят из-за бугра.

Тут либо самому пытаться устроиться куда-нибудь на Кипр, в ОАЭ в русскоязычную контору или стартап, если хочется эмигрировать.
биг жаб.png471 Кб, 750x727
424 3114170
>>114084

а ты чем смотрел когда вкатывался

или тоже купился на песни амбассадоров гугла
425 3114198
>>114170
Я на питухоне сейчас педалю легаси за лоупрайс. Ищу технологии или места/проекты куда можно свитчнуться.

Как популярная технология в РФ - это Go. Весь крупняк пишет на нем. Там, где раньше был пхп или жаба/питух, сейчас пытаются писать на Го. Но при этом на западе кроме гугла на Го почти никто не пишет, насколько я вижу. Но, справедливости ради, местный айти рынок в Европе это то еще унылое говно.
426 3114230
>>114198

> Как популярная технология в РФ - это Go



Лол кек чебурек. В то время, как на жападе поутих хайп вокруг goвна, в рф он находится еще на стадии ретроградного самоподдува. воистину отставание в 5 лет
427 3114639
>>114230

> Лол кек чебурек


Ценное мнение, может перестанешь в тред срать?
428 3114646
>>114639

Помимо разрывов, возражений нет, ясно.
429 3115018
>>114646
Срыгни обратно в /b/
430 3115191
>>115018

смари чо мне чвк гпт написала))0

Падение интереса к языку программирования Go на Западе может быть вызвано несколькими факторами:

1. Насыщение рынка: С развитием других языков программирования, таких как Python, JavaScript, Java и других, разработчики могут выбирать альтернативы в зависимости от конкретных задач и потребностей.

2. Тренды и моды: В мире программирования часто сменяются тренды, и то, что когда-то было популярно, может уступить место новым технологиям и языкам.

3. Недостаток новых функций и инноваций: Если язык программирования Go не предлагает инноваций или новых функций, его популярность может постепенно уменьшаться.

4. Конкуренция: Существует множество языков программирования, и конкуренция за разработчиков и проекты очень высока. Это может также повлиять на интерес к Go.

Несмотря на уменьшение хайпа в некоторых странах, Go остается все еще популярным языком программирования во многих областях, таких как облачные вычисления, микросервисная архитектура и распределенные системы.
431 3115346
>>115191
Я вообще не понимаю чем фишка Го.
Вот например джаву хаят за то что она невыразительная, но потом видишь что Го - это такая же Джава без ООП, но это уже "особый подход", когда вместо добавления фишек в язык ты просто пишешь больше кода и это круто и ново.
Называют новым Си, но почему-то со сборщиком мусора, так же как в джаве, но если в джаве это тормознуто, то в Го - это новый Си, круто, быстро, молодежно.
Что компилируется в бинарник - круто, так джава это тоже может делать, но если в джаве Грааль особо никому не нужен по заявлениям, то тут это прямо крутая ключевая фишка.
Как так?
432 3115478
>>115346
Даже с учетом GC, в Go сильно меньше оверхеда, чем в жабе.

Грааль в джаве никому не нужен потому что там нет нормальной поддержки рефлексии. В Го при этом рефлексия есть, как и полноценная компиляция в бинарь. Ну то есть компиляция в бинарник по-прежнему нужна, только в джаве ее полноценно не смогли осилить.
433 3115568
>>115478

>Даже с учетом GC, в Go сильно меньше оверхеда, чем в жабе.


Почему?

>Грааль в джаве никому не нужен потому что там нет нормальной поддержки рефлексии.


Большинство проектов так-то обходится без рефлексии. И часто вы используете рефлексию в ГО на проде? Это и есть причина все переписывать?
434 3115580
>>115568

Зачем все делать умно, быстро и чисто, когда можно все делать. тупо, быстро, грязно и через рефлексии?
435 3115596
>>115568

>Почему


Большой оверхед на хранение объектов в памяти. Условный List<Integer> весит в разы больше, чем обычный []int в Go с тем же количеством элементов. Так просто исторически сложилось в JVM. В Go оверхед конечно же тоже есть, но заметно меньше.

>>115568

>Большинство проектов так-то обходится без рефлексии. И часто вы используете рефлексию в ГО на проде?


Руками рефлексию применяем редко. Но вот в библиотеках ее достаточно. У нас как минимум либа для валидации на рефлексии целиком работает.

В жабе при этом почти любая крупная либа работает на рефлексии в том или ином виде. Тот же спринг - это рефлексия во всех щелях. Они уже который год пытаются Spring Native выкатить в prod-ready состояние?

>>115568

>Это и есть причина все переписывать


Там, где сейчас работаю, вся кодовая база уже на Go написана. В прошлом месте работы новые сервисы писали на Go, старье на джаве либо переписывали на Go, если там совсем уж кал мамонта был, либо делали свитч на Котлин в некоторых сервисах.
436 3115606
>>115596

>Условный List<Integer> весит в разы больше, чем обычный []int в Go


Там а почему ты сравниваешь List<Integer> с []int, а не int[] c []int?
437 3115612
>>115606
Потому что говорил именно про объекты, а не про примитивы.
Примитивы в JVM кажется практически нигде не используют.
438 3115630
>>115612
Но ведь логичнее сравнивать яблоки с яблоками? А не динамические вектора, которых по-моему в ГО вообще нет, с массивами.
439 3115640
>>115630

> динамические вектора, которых по-моему в ГО вообще нет



зато есть капабилити кек пук
440 3115691
>>115630
Динамические вектора это и есть слайсы в Go.

Но речь вообще шла об оверхеде на хранение один объект в JVM, вне зависимости, массив/слайс это или нет.
441 3115894
>>115191

> ))0


Дело не в том что мне по какой-то причине припекло (я джавист вообще), дело в манере письма уебищной, хотелось бы меньше видеть таких
442 3116078
>>115894

> мне припекло



что делать знаеш

> Дело не в том



та мы поняли

> я джавист вообще



а нам зачем это знать

> хотелось бы меньше видеть таких



мало ли что тебе там хотелось сидя на аиб, ты бы еще в /d/ петицию создал
443 3116257
>>115612

>Потому что говорил именно про объекты, а не про примитивы.


int[] это вполне себе объект.
444 3116580
>>115691

>Динамические вектора это и есть слайсы в Go.


Собственно не в том же смысле что и в других языках. Насколько я понял это в том смысле что их длина неизвестна на компиляции. Но расти они не могут, нужно вручную аллоцировать больший массив и копировать туда старый через append.
То есть это аналог джавовского Arrays.copyOf(originalArray, newSize). То есть вот это удобно?

int[] arr = {1,2,3,4,5};
int[] arr2 = Arrays.copyOf(arr, 10);
arr2[9] = 10;

Мне кажется если бы джава так заставляла писать - визг бы стоял раз в 5 круче чем сейчас. А в Го это свежо, компактно и экономично?

>>115478

>Грааль в джаве никому не нужен потому что там нет нормальной поддержки рефлексии.


https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/Reflection/
А что именно ненормальная поддержка?

>Native Image fully supports reflection in ahead-of-time compiled images.

445 3116664
>>116580

>нужно вручную аллоцировать больший массив и копировать туда старый через append


Не нужно.
append сам аллоцирует память большего размера и сам копирует. В любом случае добавление нового элемента в конец у тебя будет выглядеть как arr = append(arr, element).
446 3116675
>>116664

>Не нужно.


>append сам аллоцирует память большего размера и сам копирует. В любом случае добавление нового элемента в конец у тебя будет выглядеть как arr = append(arr, element).


Жопой читаешь? Он же именно про это и говорит:

>аналог джавовского Arrays.copyOf(originalArray, newSize)



В целом я с ним согласен. В нормальном языке у тебя достаточно средств, чтобы можно было реализовать коллекции на самом языке. Все коллекции в джаве, шарпе, С++ реализованы на самом язке, никакой магии рантайма. Зато пайтоны и жопаскрипты коллекции реализуют нативным кодом.
447 3116718
>>116675
Джавовский copyOf всегда копирует.
В то же время append в гохе умеет делать in-place добавление в конец массива, если есть свободное место. К тому же заметь, что copyOf в джаве именно копирует с расширением количества элементов, а не просто добавляет в конец массива элемент.

>>116675

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



Ну, если принять тот факт, что сами массивы реализованы рантаймом той же JVM, то да, коллекции вроде ArrayList и LinkedList поверх них строить довольно просто в стандартной библиотеке.
448 3116796
>>116675

>Жопой читаешь? Он же именно про это и говорит:


в слайсах есть такое понятие как capacity, и если в твоем слайсе еще достаточно памяти для аппенда нового элемента, он не будет аллоцировать память. Вы бы хоть базу почитали прежде чем толкать свое мнение.
449 3116799
>>116796
Не поверишь, динамические массивы в любом языке ведут себя точно так же.
450 3116875
>>116799
Откатись в старт спора, суть в том что динамический массив в го имеет существенно меньше оверхеда чем в джаве
451 3116988
>>116799
Не везде, в ЖС динамические массивы это хэш-таблицы под капотом
452 3117008
>>116875
Нет, если имплементировать как в го - то и оверхед будет как в го. Просто это неудобно, поэтому так никто и не делает. То есть весь выигрыш в оверхэде не в языке, а в желании программиста писать более низкоуровневый код
453 3117298
>>116718

>Джавовский copyOf всегда копирует.


>В то же время append в гохе умеет делать in-place добавление в конец массива, если есть свободное место. К тому же заметь, что copyOf в джаве именно копирует с расширением количества элементов, а не просто добавляет в конец массива элемент.


Ну такое на джаве точно реализовать нельзя.

>>116718

>Ну, если принять тот факт, что сами массивы реализованы рантаймом той же JVM, то да, коллекции вроде ArrayList и LinkedList поверх них строить довольно просто в стандартной библиотеке.


Массив и переменная это, два самых базовых примитива. Они в любом языке поддерживаются рантаймом/компилятором.
454 3117301
>>116796

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


Ох блядь, вот нерешаемая задача то! Создать класс в котором будет массив и текущая заполненность. Это прям уникальная особенность го, нигде такого больше нету.
455 3117383
>>116796
чувак загугли про ArrayList, ахуеешь, что не только в Го такое есть
ты бы хоть на ютубе что-нибудь про структуры данных посмотрел, прежде чем в тред высираться
456 3117388
>>117383
Ты первый начал высираться по поводу того, что слайсы это не аналог ArrayList из джавы, хотя на самом деле это так и есть.
457 3117403
>>116988

>в ЖС


Ну это даже по сути не язык
458 3117627
>>117388
Слайсы не аналог ArrayList в плане синтаксиса.

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

Слайс это примитив встроенный в язык, которые имеет специальные конструкции языка которые могут работать только с ним. И если повторить функционал слайса, еще можно, то вот синтаксис работы с ним повторить нельзя. И использовать свой продукт слайсосодержащий, вместо слайс натуральный без консервантов и синтаксического сахара - нельзя.
459 3117629
>>114084

>Верно ли, что в забугорных конторах Go плохо распространен?


Менее распространен чем Java, но в целом вакансии есть и даже побольше платят чем в среднем на Java. Но работу дольше искать и много криптостартапов.
460 3117656
>>117629

что плохого в криптостартапаххх
461 3117900
Как писать десктопные приложения на го?
462 3117903
>>117656
Не всем нравится делать абстрактные фичи и постоянно держать пару мест куда можно свались когда стартап посыпется.
463 3117910
>>117656
То что они живут за счёт денег инвесторов, деньги кончатся все пойдут на мороз. Ну и частенько бонусы норовят токенами выплачивать.
464 3118216
>>117656
Потому что они живут год-полтора-два максимум.
465 3118526
Парни, посоветуйте нормальные библиотеки для gui :)
466 3118641
>>118526
>>117900
Нормального не завезли, но может хватит https://github.com/fyne-io/fyne
Альтернативы:
https://github.com/avelino/awesome-go?tab=readme-ov-file#gui
467 3118645
>>118526
На Go принято делать CLI вместо гуя.
Если нужен гуй, то лучше рассмотреть кресты+qt, либо js+electron.
468 3118650
image.png103 Кб, 661x543
469 3118668
>>118650
Что самое интересное, сама библиотека уже несколько лет заброшена, как и все проекты в этом списке, за исключением одного.
470 3118675
>>118526
берешь джаву, пишешь как на го и юзаешь swing
1712786108087.jpg16 Кб, 203x249
471 3118731
>>118675
И получается говно
472 3118821
473 3118914
>>118731
Так ты же на нем и хотел писать
474 3119071
>>118645

>кресты+qt


А если кто-то предпочитает Gnome, а не KDE?
475 3119075
>>119071
Тогда джава + свинг
476 3119089
>>119071
То это пидор, которого нужно унижать.
477 3119175
Частенько на ютубе попадаются видео, где какой-нибудь душнила перформит на го, рассказывает, что надо использовать всякие алгоритмы, экономить чуть ли каждый байтик. Но при этом почему-то забывает, что бинари на го весят по 10Мбайт. Даже банальный хеллоуворд получается около 3Мбайт. О каком перфомансе может идти речь вообще?
К примеру, на обычном Си хеллоуворлд без всяких ухищрений занимает 16Кбайт. Энтузиасты добивались и меньших размеров вплоть до сотни байт.
478 3119203
>>119175
Тебя же уже обоссывали, или прямо в этом треде или в прошлом. Нахуй ты опять свое говно принёс
479 3119209
>>119203
Я другой анон, только зашёл в тред
480 3119260
>>119175
В реальных задачах 99% всех оптимизаций делаются через добавление нужного индекса в бд, а сам микросервис можно написать хоть на джаваскрипте.
481 3119327
>>119175

>О каком перфомансе может идти речь вообще?


Об обычном, перформанс не зависит от размера бинарника
Стикер512x512
482 3119344
>>119175

>на обычном Си хеллоуворлд без всяких ухищрений занимает 16Кбайт


>без всяких ухищрений


Жырнота, то какая!
483 3119405
>>119344
gcc -o helloworld helloworld.c
Где тут ухищрения?
484 3119415
>>119405

>gcc -o helloworld helloworld.c



gcc -Os -o helloworld helloworld.c

strip helloworld

А щаз?
485 3119692
>>119175

> бинари на го весят по 10Мбайт


И чё? В чем проблема то? Места на диске жалко? Не под микроконтроллеры пишем же.
hello.png673 Кб, 846x916
486 3119782
>>119415
По сути вот содержимое стрипнутого сишного helloworld.
Говна масса, но при этом весит 17000 байт.
Часть говна можно безболезненно вырезать.
Полюбому это несравнимо с тем, что генерировал golang, когда последний раз его смотрел.
При этом гошный исполняемый файл был непереносим между разными дистрибутивами, как ожидалось.

Тогда зачем это всё?
487 3119786
>>118668
https://github.com/rivo/tview
Вот более живое.

Это все шутка, я не предлагаю всерьез такое писать. Если конечно ты не пишешь системную утилиту которая должна через ssh работать.
488 3119787
>>119782
Никто в своём уме не будет на c писать сервер для перекладывания протобуфов в json-ы. На го рантайм за тебя уже делает кучу всего, н за это ты платишь местом и накладными разходами на работу рантайма.
489 3119788
>>119415
Для начала полинкуй с musl или убери glibc из линковки.
Если взялся размеры мерять, то добейся статических бинарей и там и там.
go.PNG78 Кб, 881x894
490 3119822
Гоферы, почему вот этот код на джаве - это 20-летнее копролегаси, а на Го он же - глоток свежего воздуха, no-boilerplate, doesn't try to be smart, post-OOP и все такое? Нужно ли было изобретать новый язык и заново строить инфраструктуру вокруг него, и дробить комьюнити когда вы могли так писать 10+ лет назад, сохраняя все наработки джавы?
Просто хочу разобраться.
491 3119843
>>119822
Не переживай, дружок, твоя джава не легаси говно, дяди просто завидуют.
492 3119844
>>119788

>Для начала полинкуй с musl или убери glibc из линковки.


>Если взялся размеры мерять, то добейся статических бинарей и там и там.


Ради Hello world?
При необходимости я рантайм весь выкину, положу в регистры что надо и дёрну системный вызов ядра write на дескриптор 1 (который есть небуферизированный stdout). У будет hello world размером с меньше килобайта. Там даже линковать ни с чем не придётся.

Но при этом динамически слинкованный файл на сях запустится на большем числе разных линуксов, чем статически слинкованный исполняемый файл на Go.
493 3119873
>>119843
Спасибо
494 3119913
>>119822
Если бы Скрудж Макдак не судился со всеми за жаву, то может и была жава вместо голенга.
495 3119932
>>119844

>чем статически слинкованный исполняемый файл на Go.


хуйню написал, фантазер.
496 3119933
>>119822

>static class Struct


Бля просто в голос как это жалко выглядит... Особенно если знать об отсутствии value типов которые архитекторы джавы 10 лет пытаются стащить из сишарпа.

Просто не выходи за пределы java треда, пожалуйста. Ты не компетентен обсуждать современное программирование.
497 3119936
>>119932
Опыт - сын ошибок трудных.
Конкретный пример - моя софтина на плюсах. Исполняемый файл запускается на всех современных линуксах, до которых смог дотянуться. Весит около 200 кб, дёргает половину POSIX, в т.ч. pthread.

Собранная на Alt Linux программа на Go на Debian ругается на Kernel API (код ошибку сейчас не назову, но если доебёшь, то ночью выложу сюда).
498 3119937
>>119936

>Собранная на Alt Linux программа на Go на Debian ругается на Kernel API


Play stupid games, win stupid prizes. Разворачиваю все сервисы, написанные на го в scratch-контейнерах (вообще без userspace библиотек).
Так что проблема в тебе.
499 3119972
>>119692
Кто будет писать CLI-утилиты таких размеров? Когда можно написать в разы более компактные на С.
500 3119978
>>119972
почему тебя не похуй на размер бинарника?
501 3120004
>>119978
У меня старый ноут, где всё тормозит из-за того, что современные программисты забивают на оптимизиацию своих программ.
502 3120039
>>120004
Кому интересны твои детские проблемы?
503 3120048
>>119844

>При необходимости я рантайм весь выкину, положу в регистры что надо и дёрну системный вызов ядра write на дескриптор 1 (который есть небуферизированный stdout). У будет hello world размером с меньше килобайта. Там даже линковать ни с чем не придётся.


Так об этом и речь! Что сделать настоящий маленький бинарник можно, но точно не

>без всяких ухищрений занимает 16Кбайт



А с динамической линковкой можно потеряться с питоном, там вообще десяток байт будет. А то что там интерпретатор на мегабайты это другое.
504 3120056
>>120048

>потеряться


померяться
505 3120071
>>119822
Вот именно поэтому мы и уволили всех жава-скуфидонов из конторы, а их помойные говноприложения на спринг буте и хубирнейте просто выкинули и все написали с чистого листа на гоулэнге
506 3120090
>>119972
Я тебе ещё раз повторяю, кого ебут 100 лишних мегабайт занимаемых на диске утилитой?

>>120004
Гошные проги даже тормозят? Сдаётся мне, что ты пиздишь. Тормозить могут как раз монстры на плюсах и джаве. А докер например везде летает. Я на ноуте с процом интел 5200у 2/4 и 16гб рамы даже работать могу. Диск, естественно, ссд. Может у тебя там хард до сих пор и поэтому все тормозит? б
507 3120097
>>120071
Именно почему? Код на скрине без бута и хибера
508 3120113
>>120097
Почему уволили? Ну они скуфидоны закостенелые. Им предложили свичнутся в гоулэнг, они попердели два месяца, но высирали максимально ублюдочный код и писали на гоулэнге как на жаве. Ни один пулл реквест мы не приняли и они все написал по собственному желанию. Да и что-то стоящее все равно не написать без спринга и хубирнейта. Правда нам не нужны такие сервисы, которые стартуют по минуте и потом в рантайме что-нибудь отстреливает. Поэтому скуфы пошли на мороз
509 3120122
Пацаны, а на западе го кому-то, кроме гугла и криптопетухов нужен вообще? Или это чисто российский тренд переходить на голанг?
510 3120130
>>120122
Ну вот я в ЕС, вообще не вижу активности вокруг го, только из РФ идёт это
511 3120133
>>120113

>Да и что-то стоящее все равно не написать без спринга и хубирнейта.


Ну вот же, я привел пример что можно писать на джаве как на Го, и скорость старта будет сравнимая, потому что меньше кода грузить. И как ты и скзаал - ничего не мешает писать на Го как на джаве, т.е. язык тут не причем. Так чего просто не стали писать по-другому на джаве?
512 3120134
>>119913
так она опенсорсная, с кем кто судился?
maxresdefault-2.jpg53 Кб, 1280x720
513 3120136
>>120113
Кул стори бро! Сам придумал или чат гпт попросил?
514 3120141
>>120090

>16гб рамы даже


>даже


Теперь понятно, почему все пофиг на жирные бинарники. Ведь люди даже на 16гб могут работать... Слов нет просто. А дальше что? 128 гб должно хватить, чтобы запустить консоль? А окошко отрисовать пару терабайт?
515 3120148
>>119913
Как раз джава это один из немногих примеров когда проприетарная технология, смогла стать открытой и driven by community. Для примера можешь загуглить какая сейчас самая популярная сборка JDK
516 3120153
>>120141
Странно, а еще говорили что Го экономичный по сравнению с явой
517 3120172
>>120133

>Ну вот же, я привел пример что можно писать на джаве как на Го


Нет, нельзя. Посмотри реальные проекты на жабе и гоулэнге. То, что ты написал - это говно, которое никто не будет поддерживать.
518 3120181
>>119822
Я так в универе писал на джаве и получал пятёрки. Тогда это был глоток свежего воздуха по сравнению с С++.
519 3120200
>>120172

>То, что ты написал - это говно, которое никто не будет поддерживать.


Так это буквально Го код. Кто-то же поддерживает проекты на Го?
520 3120213
>>120181
Забыл добавить, что тогда у меня всё работало на компе целерон 850МГц (пень 3 по сути) и 128Мбайт ОЗУ. Тогда даже джава не жрала память гигами, а функционал был тот же. Что изменилось за эти годы - не понятно. Почему ровно такие же программы стали жрать в десятки раз больше ОЗУ?
521 3120243
>>120004
Так тормозит или диск забит консольными утилитами (причем написанными на го), ты определись
Сейчас ты говорил про размеры бинарников.
522 3120257
>>120243
Бинарники загружается в ОЗУ и ещё сильнее разрастаются за счёт выделения памяти в ходе выполнения. А если ОЗУ не хватает, то начинается свопинг на жесткий диск, а это очень сильная просадка по производительности. Да и сами диски тоже не резиновые.
523 3120276
>>052664 (OP)
Есть какие-нибудь дешевые курсы, где на проекте обучат? То есть чтобы был готовый проект по прохождению курса?
524 3120310
>>120276
На дешевых курсах ничему не обучат, да и материал там дают шлаковый. Я меньше 100к курсы даже не рассматриваю.
525 3120326
>>120310
Аааа, ну понятно. А еще что делаешь?
526 3120386
>>119071
Ну а в чем разница, приложухи на Qt все равно будут запускаться.
Один хуй Qt - это стандарт в мире десктоп разработки, на gtk уже никто не пишет
527 3120388
>>120122
>>120130
Гугл на Go пишет, что очевидно. Слышал истории из амазона, как их просят новые проекты стартовать на Go/Rust вместо java+spring.

А так, в евролегаси проектах Го вряд ли сильно кому-то нужен. Там джава, питухон, js обычно.
528 3120412
>>120388
Я вот не понимаю, что они там пишут на этом го? Консольные приложения получаются с жирными бинарями, выгодней на си написать, десктоп не пишут на го, проще С++ и Qt написать, веб проще на пхп писать, там и фреймворки есть под это, а на го ничего нет.
529 3120416
>>120134

>опенсорсная


Oracle судился c Google за то что повторили API жавы в далвике. С точки зрения оракла апи - интеллектуальная собственность, даром что исходники открыты.
530 3120419
>>120326
Дешёвые курсы частенько на складчине покупают. Можешь скачать оттуда парочку и посмотреть какую там парашу преподают.
Лучше уж взять кредит на крутой курс и пройти его. Тем более, что с зп программиста на го, ты его быстро погасишь. Так что это выгодная инвестиция.
531 3120564
>>120090
Бля.. какой же ты даун ебаный
532 3120586
>>120412

>выгодней на си написать


Без сборщика мусора? Ты уверен, что это будет выгодней?
533 3120648
Коллеги, мой php-проект закрывается и меня скоро на мороз, видимо. Полгода ковыряю го, очень нравится, сделал пару микросервисов, больше особо опыта с ним нет. Насколько мне пиздец, если я попытаюсь вкатиться на вакансию миддла го вместо пыхи? И что ждать по зарплатам (я в дс2)?
534 3120666
>>120412

>Я вот не понимаю, что они там пишут на этом го?


Всякие вебсервисы. Гошечка достаточно неплохо масштабируется.
535 3120684
>>120586
Тогда выгодней на джаве написать, наработок у джавы куда больше и пул инженеров куда больше
536 3120687
>>120648
Никто кроме реального интервью тебе не скажет насколько тебе пиздец. Попробуй, походи по интервью, посмотри что спрашивают.
Но я бы сказал что полный пиздец, потому что хрюши отметают по опыту на конкретной технологии.
И как тебя выгоняют при закрытии проекта, а не компании?
537 3120689
>>120412
Как же ты заебал, поехавший
538 3120692
>>120666
Все языки неплохо масштабируются
539 3120709
>>120687
А сколько опыта надо вообще, чтобы претендовать хотя бы на 200к? Это и так серьёзная потеря, для понимания.

Да мне никто ничего не может сказать вменяемого по поводу смены проекта внутри. Поэтому рассчитывать надо, что выгодят на мороз. Не выгонят - и хорошо, но мало ли.
540 3120712
>>120684
Ух сейчас напишем cli тулу на джаве чтобы тащить с собой jre, ух ахуенно
>>120004
Используй на своем старом ноуте старые программы и кайфуй от жизни, в чем проблема?
>>120386
Немного жалко что гтк как технология говнище лютое на фоне кют, потому что амбассадор гтк гном лично для меня намного лучше всратых кед
>>120692
Многопоточность отличная, легче и приятнее наверно в мейнстримовых языках нет
541 3120714
>>120709

>А сколько опыта надо вообще, чтобы претендовать хотя бы на 200к? Это и так серьёзная потеря, для понимания.


Ну стандартно от 3х лет наверное
542 3120715
>>120712

>Ух сейчас напишем cli тулу на джаве чтобы тащить с собой jre, ух ахуенно


Всмысле? Го просто упакует тот же рантайм в бинарник, это другое чтоли?
>>120712

>Многопоточность отличная, легче и приятнее наверно в мейнстримовых языках нет


Грин треды в джаве есть и в Эрланге
543 3120750
>>120715

>Грин треды в джаве есть


Твои грин треды обосрались, когда начались утечки памяти и прочие приколы. Бесшовного перехода не вышло. Пройдет еще лет 10 пока их допилят до нормального состояния. Ну и API у них мерзотный и многословный
544 3120847
>>120388

>js


На бэке что ли? Реально активно используется?
545 3120848
>>120419

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


И что же это за крутой курс по го? Скиллбокс?
Снимок экрана 2024-04-13 145652.png22 Кб, 1029x244
546 3120928
скачал новую версию го, взамен старой, и теперь выход это. хотя программа работает, но как я понял это все же проблема. помогите пожалуйста.
547 3120939
коллеги, как учить алгоритмы если я тупой и 4 часа разворачивал список? Имею 3 года опыта, мидл, с задачами справляюсь нормально, но все что связано с алгосами вызывает жжение. Знаю только Го
548 3120942
>>120939
А какие именно алгоритмы ты хочешь учить?
Так-то я бы сказал просто придумывать задачи на эти алгоритмы и решать их
549 3120949
>>120942
те которые на собеседованиях спрашивают. Ну там задачки на очереди, на стек, на списки, динамическое программирование, деревья, графы. А придумывать их - ну это вообще шиза, у меня во-первых воображения 0, во-вторых чтобы что-то придумать нужно это понимать
550 3121016
>>120692
Вопрос в количестве усилий которые надо приложить. Так то и Си хорошо масштабируюется nginx пример. Но чтобы этого добиться, надо очень сильно постараться. А где-то всё работает из коробки.
551 3121018
>>120750

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


Сто раз говорили не юзайте тредлокалы, но проблема у гринтредов конечно.
552 3126302
>>120928

>помогите пожалуйста


ебало этого опущенного представили?
553 3133020
>>121018

>но проблема у гринтредов конечно.



Проблема у дизайнеров этого кала, потому что не могут реализовать обещанного, не сломав злоебучий существующий легаси.

Давно пора уже

Один хуй на современных джк большинство старого кода не запуститься из-за отсутствия --illegal-access=permit в современных версиях рантайма.
554 3133025
>>133020

>


>Давно пора уже


... было внести изменения в язык, ломающие обратную совместимость, как это в мажорных версиях других языков регулярно происходит.
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее