Cамого МУЖЕСТВЕННОГО в мире языка Go тред №17 /go/
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, богатую и универсальную стандартную библиотеку функций и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.
Обсуждаем язык, смеемся с залетных крестоносцев, обсуждаем почему нам не нужны дженерики, наследование и эксепшены, по каждому багу находим трехстраничный пост в официальном блоге Go, объясняющий почему это на самом деле фича, ждем, когда нам завезут дженерики (в 1.18), наследование и эксепшены.
Растобляди завидуют, сектантская запарта не переваривает.
Кто-нибудь вкатывался в школу озона? Мы писали несколько лет на java, решили с коллегой попробовать. После задачи пригласили на собес онлайн. Он задачу алгоритмическую не решил, его дропнули, а я решил, но меня тоже дропнули, х.з. почему, возможно потому что я в докере не шарю, совсем не знаком, ну и по БД можно было бы глубже и лучше ответить. Что там вообще происходить? Фидбека как водится они ни мне ни ему не дали.
Вряд ли вопрос покажется адекватным, но...есть ли тут аноны, которые работаю в Европке? В скором времени переезжаем из Польши в Германию. Работа аналитика доебала, и хочу вкатиться в программирование (работу сменить смогу без work permit от компании). В Европах ситуация так же? Не нужен, как первый язык, вкатиться нереально нубу и так далее? Гуглить умею, но в гугле все хорошо пишут
>>2120982 Блять, у тебя русская речь совсем атрофировалась? Ты как инсультник написал бессвязный бред с рандомными словами. Только понял, что ты хочешь переехать из Польши в Германию
> В Европах ситуация так же? Как так же? Ты не сказал ничего про цели переезда и что ты ожидаешь не "так же" в другом месте, дебил.
> Не нужен, как первый язык, вкатиться нереально нубу Что не нужен, кретин? Что как первый язык? Хорошо первый язык, а ты как?
Пишу на го пет прожект и у меня проблема. Суть в чём, мне нужно хранить на диске структуру Some struct { Первый, Второй, Третий, Четвёртый string } и уметь находить Четвёртый по одному из трёх полей. Собственно это же элементарная хуйня, любая реляционная база данных для это как раз и создана. Но я не хочу использовать sqlite, не хочу серверные бд. Мне надо что-нибудь простое и быстрое как key-value стораджи, вместе с тем максимально эффективное на записи на SSD. Перфоманс на чтение меня мало волнует. Что можете посоветовать?
>>2121043 Это не кей-велью сценарий вообще. Ты уже сам сказал, что тебе нужна реляционная база. Ну так и используй ее. В плане эффективности на запись рассмотри кликхаус, если тебе не критично, что данные не записываются вот прям сейчас, а сначала компонуются в батчи, и если тебе не нужны транзакции и частые апдейты уже записанных данных. Бонусом получишь мощный перфоманс на чтение.
>>2121063 Ну если тебе нужна бд с структурированным хранилищем - проще sqlite юзать, чем тебе не подходит? Ну либо такие поделия: https://github.com/krotik/eliasdb (выше по ссылке awesome-go-storage еще несколько есть)
>>2121043 Я нихуя не понял какие у тебя требования. Ты эти структуры в памяти держишь или их слишком много и нужен поиск на диске? Что тебя вообще волнует: скорость добавления новой записи? скорость лукапа? размер данных на диске? твое время, потраченное на написание этой хуйни?
В общем, всем советовал переходить с шарпов жабы пхп жс на ГО. Недавно сам решил узнать что же за такой язык популярный нынче, а то всем советую, а даже хеллоуворлда не написал ни одного.
Что я понял: 1. interface{} - это какой-то очень жуткий костыль. Как будто бы хотели сделать что-то уровня класса Object из джавы, но по ощущениям выглядит как полная залупа.
2. Объявления переменных сделаны в каком-то паскалевидном синтаксисе. Печатать := вместо обычного = гораздо тяжелее на мой взгляд. Ну и зачем было придумывать объявление в стиле var x int? Разве не лучше просто x int? И зачем тип переменной ставить в конце, а не в начале? Пока что показалось, что это просто прихоти разработчиков языка, а не улучшение читаемости кода.
3. Язык тащат в e-commerce, во всякие авито, озоны и прочий энтерпрайз. А нахуя? Вменяемого ООП я так и не увидел. Вернее, оно изначально и не предполагалось, тогда зачем гошку тащат в те области, где нужно максимально концентрироваться на бизнес-логике, которую с помощью простых структур описывать крайне трудно?
4. Автоматический дереференс указателей. Взять те же методы, у которых ресивер принимает value, а не укзатель. Тогда если вызвать такой метод по указателю, произойдет неявное разыменование. Аналогично, когда обращаюсь к полям структуры по указателю. Очевидно же, что читаемость кода будет заметно хуже, чем если это все прописывать руками.
Кстати, интересно что голанг очень похож на Limbo из 1995 года http://www.vitanuova.com/inferno/limbo.html Видимо потому язык получился довольно отсталым по современным меркам.
>>2122567 >scala, rust Ебать говноед. Щас бы наворачивать переусложненные языки с кучей синтаксического мусора, называя это сахаром и довольно урча, пока все остальные хватаются за голову в попытке понять, что это за древние манускрипты вместо кода высрал автор.
>>2122567 >зачем гошку тащат в те области, где нужно максимально концентрироваться на бизнес-логике Очевидно затем, что тащат его для другого. Догадаешься, зачем? >Очевидно же, что читаемость кода будет заметно хуже, чем если это все прописывать руками Наоборот, автоматический дереференс читается куда лучше. А так да, язык местами ГОвнистый, но для своих задач хорош, щас бы сравнивать его с растом-хуястом и скалой-хуялой.
>>2122654 >Догадаешься, зачем? Его вроде как средство для инфраструктурных решений создавали. Язык для всяких девопсов и сисадминов. Зачем его тащат в энтерпрайз?
>>2122656 Все правильно говоришь. Даже на дваче понимают в красоте языков больше, чем очередной задрот из жидбрейнс, который еще и наверняка не прочь в свободное время поиграть с анусом функциональщиной.
>>2122567 В индустрии есть тенденция создавать языки для программистов с низкой квалификацией. Самый первый пример это Кобол - его создавали, чтобы быстро нанять с улицы макакенов, которые бы писали тырпрайзные приложухи без обучения в академиях. Второй известный пример - Java, который дал вход на рынок миллионам индусов, скрыв под капотом слишком сложные для них вещи типа управления памятью и кроссплатформенности. Гошка продолжает эту линию. Для клепания микросервисов был нужен максимально простецкий язык с низким порогом входа, в котором сложно отстрелить себе ноги даже если ты конченый идиот.
>>2122690 >>2122669 >оптимизации узких мест за счет мощной мультитрединг модели языка и низкоуровневости
Но ведь низкоуровневость несколько выдуманная в Го, нежели реальная? Там, где нужен перфоманс, берут С++, а там, где низкоуровневость и прямой доступ к памяти - си. Допиленный клон Си из 1995 года с рантаймом и GC может и быстрее жирной JVM, но его явно не хватит для жоского перфоманса. Для чего в микросервисах низкоуровневость? Имхо, те же микросервисы вполне пишутся и на жабе с ее спрингом, и на котлине, тем более что в последнем тоже есть корутины, а также полноценное ООП вместо структур, которые только и годятся для ебли байтов, а не описания бизнес логики.
>>2122780 У говна оверхед по памяти будет сильно меньше, чем у жвм-языков. Если нужно выжать минимально возможную латенси, то тут все ж придется взять жявку, потому что гц в говне не настолько продвинутый. Но если нет, то в среднем говно производительнее по ресурсам.
>>2120628 Не вспомогательный, но просто сравнительно новый и не (пока) настолько популярный, поэтому на нём чаще что-то переписывают и дописывают, чем пишут полностью с нуля. Хотя я вот пишу и совершенно не страдаю.
>>2120624 Потому что сложнее будет первую работу искать. Лучше найди норм компанию на пыхе, поучись основам коммерческой разработки пару лет, а потом мигрируй на любой нормальный язык. Здесь надо понимать "норм компании" как серьезные проекты с нормальной кодовой базой, чтобы ты обучался хорошим практикам, а не говнокодить wordpress и bitrix по быстрому за копейки
>>2122792 Ты в чём то прав, а в чём то нет. Джаву можно заточить под го-подобный лейтенси правильно выбрав гц и правильно его настроив, что в реальности задерет тебе потребление памяти ещё минимум в два раза, потому что ты захочешь как можно реже вызывать гц, чтобы избежать паразитной нагрузки от него и блокировок. Гошный гц тоже в целом блокирующий, но он даст крайне малый лейтенси при гораздо более низком потреблении памяти. Не просто так в очень многих современных банках для инвестиций и прочего бэкенда часто го берут.
>>2122780 Ты не путай член с пальцем. Для оптимизаций вполне применимо правило Парето, кривая цены за разработку очень быстро задерется при упарывании оптимизациями, поэтому почти никто не пытается оптимизировать свои бэкенды до тактов процессора, если ты не пишешь ботов для высокочастотной торговли или если у тебя не гугловые объемы данных. 999 проектам из 1000 подойдёт ванильный LAMP. Из оставшихся ещё 999 из 1000 будут прекрасно жить с кэшами и выносом нагруженных частей приложения в сервисы на го или любом другом производительном языке. А вот оставшаяся часть - это и будут те самые Гугл,Яндекс,Биржи,Nvidia,AAA-gamedev(сервера) и прочее где понадобится ещё более горячие места отдельно выносить и писать на плюсах. tldr: го это такая промежуточная ступень между жирными php и прочей java и прям совсем хардкором типа плюсов. Читай статьи тех же badoo они вроде внятно рассказывают про свой выбор стека и технологий
>>2122690 > Для клепания микросервисов был нужен максимально простецкий язык с низким порогом входа, в котором сложно отстрелить себе ноги даже если ты конченый идиот. В той формулировке, в который это пишешь ты - это миф. Го - это небезопасный язык и острелить себе ноги в нём очень легко. Поинтер ресиверы у структур, валидный (InterfaceType)(nil), отсутствие енумов и union type'в, а также очевидные interface{} прям в публичных интерфейсах stdlib отлично могут и будут стрелять тебе в ноги, даже когда ты этого не хочешь. Го как раз небезопасен, но при этом синтаксически и функционально очень прост и как раз в этом и заключается его фишка и философия авторов. Что-то вроде того, что нечего писать заумный код ради заумного кода, самое очевидное решение - самое верное и всё в таком духе. Не могу сказать, что я на 100% согласен с их точкой зрения (я в последнее время вообще тяготею к функциональным языкам), но в чужом гошном коде зачастую действительно проще разбираться, потому что ты точно знаешь, что он работает так, как ты видишь и что там нет никакой магии внутри.
>>2122567 Да на каждый язык можно тонну минусов высказать, причем все будут серьезные, что на Джаву, что на шарп, что на питон, что на раст, что на плюсы, и все аргументы будут валидны. По факту же пишут и сервисы спокойно себе живут. Нет языка, который бы не хейтили, все зависит от перспективы смотрящего, кому-то и пхп конфетка, лол.
>>2122567 > Елизаров Как вообще можно серьезно относиться к высерам Жаберов о удобстве или эффективности языков? Это ведь мамонты из прошлого умирающие, которые дрочат на кол-во фич в языке и СЕРТИФИКАЦИИ, лол.
Я бы хотел привести мистера Пайка в подвал, привязать его к деревянному кресту, подключить к системам жизнеобеспечения, чтобы он не сдох раньше времени от болевого шока и потери крови, и начать последовательно избавлять его тушку от различных органов, костей и сухожилий. Зачем? Потому что, на мой взгляд, все эти вещи лишние в организме мистера Пайка, и он прекрасно сможет обойтись без них. Ведь лучшее средство от камней в почках это отсутствие почек, а передвигаться по полу можно быстро перебирая обрубками конечностей, а не с помощью избыточных и переусложненных ног. Ведь там столько лишних суставов, что можно просто запутаться!
Почему из всех похожих друг на друга языков, которые придумывал Пайк, взлетел именно ГО? Как мне кажется, они все хуевые и не достойны быть в продакшене, но видимо кто-то из гугла считает иначе.
>>2122829 > interface{} Просто это хуевый дизайн. Сначала решили, что сильная типизация снимет все головные боли, но тут оказалось что людям нужен sprintf...
>>2123333 > И где аналог Хэдупа или Эластиксерча на Python? Ммм. > И где аналог Хэдупа или Эластиксерча на PHP? Ммм. > И где аналог Хэдупа или Эластиксерча на Kotlin? Ммм. > И где аналог Хэдупа или Эластиксерча на C#? Ммм. > И где аналог Хэдупа или Эластиксерча на Swift? Ммм. > И где аналог Хэдупа или Эластиксерча на Rust? Ммм.
Почему у залетных так бомбит с того, что гошка популярной становится? Что они аж из треда в тред сюда залетают и срут? Насколько должна гореть жопа, чтобы это постоянно делать? Ведь не лень человеку взять, мониторить тред, сраться, пытаться обосрать язык. Это форма шизы какая-то или зависти?
>>2123333 Ебалоид, весь apache software foundation - это каловый высер нулевых, от которого сейчас все отказываются. Никакого еластика, солра, хадупа, спрка, кафки в будущем не будет - так как они построены на jvm, которая умрет лет через 5-7 крайний срок.
>>2123346 >>2123337 >>2123336 Го жалко пнпебирает лапками пытаясь не потонуть в собственном говне. Ну кто в здравом уме на этом потешном языке бизнеслогику писать будет?
>>2123337 Возможно, что это неосиляторы, либо завидующие зарплатам. Мне в свое время тоже не повезло с первой работой после переката в го, да так, что я выкатился обратно на несколько лет и тоже долго ходил срать в го треды.
>>2123398 >>2123402 >>2123405 > ряяя нет эта ни то эта другое ваще эта другое ани на джаве на джаве все яскозал!!
Аутист, вакансии давно не смотрел? Тинек со сбером на полном серьезе планируют часть платформы на го переписать. С добрым утром, тебя и вчерашний шторм не разбудил
>>2123412 > >Аноним 10/08/21 Втр 14:05:46 №2123412 97 >2123398 (You) >>>2123402 >2123405 (You) >> ряяя нет эта ни то эта другое ваще эта другое ани на джаве на джаве все яскозал!! >
Где твои го-вакансии, а? Нет нигде нихуя. Если бы они были, как в озоне или вайлдберисе, то набирали бы гошных стажеров, банки могут себе это позволить. Только вот самих вакансий даже для мидлов и сеньоров хуй да нихуя, не говоря уже про стажеров.
>>2123417 2 тысячи монолитного легаси говна и 600 вакансий на моложедные микросервисы, легковесные потоки, отсутствие ООП, хайлоад и распределенные системы. Что же выбрать?
>>2123420 >>2123417 Ебнутый? Очевидно, что жаба по кол-ву вакансий будет доминировать, это показывает лишь то, что сейчас куча легаси говна на жабе. Ты бы еще в эту выборку ПХП приплел, дебил. А второй пост вообще доказывает, что банки начинают го применять, причем в больших масштабах (4 к 1 по жабе это дохуя, учитывая что на жабе там одно легаси).
>>2123426 Что то хуйня, что другое. Просто с омномлитом сложность в логике, а с микросервисами - в логике плюс развертывании и планировании взаимодействия, ведь в 99% случаев их используют тупо ради хайпа и получается распределенный монолит.
>>2123431 >А второй пост вообще доказывает, что банки начинают го применять, причем в больших масштабах (4 к 1 по жабе это дохуя, учитывая что на жабе там одно легаси)
А теперь посмотри и скажи, сколько там именно Гошных вакансий. По-моему в сбере вообще практически нет Го, кроме какого-нибудь клауда.
>на жабе там одно легаси Очень сомнительное утверждение, учитывая что сбер кое-как, но развивается и там почти все написано на жабе. Аналогично с другими банками. Раз код поддерживают и пишут, значит все-таки не совсем легаси.
Лично мне кажется, что кроме ритейла (озон, авито, вайлдберис) го вообще нахуй никому не нужен в бизнесе. Понятно, что какие-то части бекенда яндекса стали на го писать, тот же клауд, но там го чисто вспомогательный язык.
>>2123420 > Где твои го-вакансии, а? По твоей же ссылке го вакансий больше, чем по другим языкам. Сам же и обосрался, какой же жабадебил конч таки ИТТ)
>>2123444 Я и сказал, что сбер только начинает гошников набирать, ты жопой читаешь?
Ты какой-то буквально ебнутый шиз, откуда ты вообще в тред залетел, брызжа слюной пишешь лживые пасты и опровергающие твои же аргументы ссылки. Это выглядит пиздец позорно, если ты рил на жабе пишешь, то это уберкринж какой-то прям, неужели так задевает Говно?
>>2123457 Проигрывай дальше, иди новый фреймворк изучай, новый сертификат под новую джаву пора сдавать, пока нормальные люди не парясь получают те же деньги на модном го
>>2123444 Госпади, как же жопу то рвет у тебя. Ты что хочешь от нас то сейчас? На весь тред разорвался. Да, го - говно, самый хуевый язык в мире, вакансий нет, работа хуйня, никому ненужный язык и вообще разрабы на нем лохи и пидоры. Что-то еще интересует или я могу пойти дальше пить смузи за 300кк наносек в месяц мидлом, или что-то еще конкретно интересует тебя, мой друг? А по поводу твоей желчи - не стоит так обижаться, тем более на какой-то язык программирования, хз может у тебя опыт был плохой или в жизни ситуация такая, что заглушить боль можешь только путем токса в интернете, но я тебе отвечаю, это не сделает легче твою жизнь, абстись, попей водички, и не возвращайся в этот тред, пожалуйста.
>>2123470 Ну в действительности их может как больше, так как я специально убрал пхп и питон (а именно с них сейчас на го переписывают), либо даже меньше, так как фейковые вакансии никто не отменял. Но факт, в москве сейчас примерно открыто 300-400 гошных вакансий, что в целом неплохо. Пару лет назад было около 100 - 150, сейчас просто хайп пошел и энтерпрайз начал перевозиться на гошку.
>>2123253 На го переписывают конторы перепрыгивающие с одного хайпа на другой, долгосрочная поддержка там в принципе никого не ебёт, т.к. твою хуйню через пару лет снова перепишут на новый хайп.
>>2123481 Какой новый хайп? Гошка в проде где-то с 2015-2016 начала в РФ появляться. Раст чуть позже. А больше новых языков нет вообще от слова совсем. Тем более, что в го гугл вливает бабло.
>>2123468 Ну да, дохуя работы, а в чем проблема? На жабе меньше, чем в 2 раза больше вакансий. Ну что, трясутся поджилки, жабабояре? Пару лет назад было 5к вакансий в дс, как сосется?)
Срач java vs go никому не интересен, а вот rust vs go уже куда более заманчивый. Например, недавно выяснилось, что уже далеко не все любят ГО. 4943 голоса за ГО и 5044 за Раст. При этом негативных отзывов о расте мало. Собственно раз раст такой хороший язык, то планирую вкатиться сначала в го, поработать год-два, а потом свалить в лучший мир раста. Какие подводные?
>>2123503 руби тоже любили, и где он сейчас? Джаву с шарпом не любят, а они доживают свой век в комфорте, питон любят все, а на деле 30к в месяц джанго синьор специолист
>>2123489 >https://killedbygoogle.com/ И что? Очевидно, у гугла очень много денег, и он их тратит на разную хуйню, в том числе на андроид для стиральных машин или google chrome apps, которые никому не были нужны изначально. Говну уже много лет, вроде с 2007 ведется разработка под гуглом, а до того еще в 90-е роб пайк с братвой писали свои недо-клоны си.
Зачем нужен GOPATH? Я прочитал конечно в гугле, что там якобы что-то хранится, но нахуя? Как его вообще сделать этот гопатх, а то у меня goland его просит. И еще, зачем голанд выводит первые 4 строчки? Я вот не хочу их видеть. Можно их как-нибудь убрать?
Почему в этом примере не происходит дедлока? Ну, когда первая горутина записала в канал, то вторая ведь при попытке записать словит дедлок, разве нет? Ведь мы между двумя попытками записи в канал можем не успеть оттуда прочитать данные. Канал ведь не буферизованный.
>>2123568 Канал - effectively указатель, так что при копировании под капотом все равно будет тот же канал. В твоем примере дедлоку неоткуда взяться, потому что гарантируется, что до чтения из канала появятся две горутины, пишущие в него.
>>2123573 Ок, спасибо. А вот еще момент, есть код на пик1 и на пик2. Почему первый код с горутинами отработает как надо и не свалится в дедлок, а второй свалится? Все дело в горутинах?
>>2123580 То есть горутина очень умная и понимает, что если канал забит (из него пока что не прочитали) то она туда писать не будет пока из канала кто-то не прочитает и он не станет пустым? И на пикриле вторая горутина запишет свою единицу в канал только после первого вызова fmt.Println(<-ch), когда из заполненного канала прочитают информацию?
>>2123594 >И на пикриле вторая горутина запишет свою единицу в канал только после первого вызова fmt.Println(<-ch), когда из заполненного канала прочитают информацию? Тоже этот момент интересует
>>2123604 By default, sends and receives block until the other side is ready. This allows goroutines to synchronize without explicit locks or condition variables.
Вот что в го туре написано. Как раз в том случае пока в первом printf не прочитают из канала, он остается заполненным. А потом из него читают, он освобождается, вторая горутина видит что он свободен и пишет в него. Это лично мои догадки.
>>2123568 Channels act as first-in-first-out queues. For example, if one goroutine sends values on a channel and a second goroutine receives them, the values are received in the order sent.
>>2123712 Да по сути 0, если раньше жвм крутилась везде, то сейчас только бекенд на жабе и мобилки на котлине (но там неклассическая жвм и эластик или хадуп там вряд ли кто-то будет поднимать).
GOспода, созрел вопрос о миграции с пхп на другие языки программирования, дабы влиться в будущем в хорошую корпорацию и в иммиграцию конечно же. Стоит ли перекатываться в Go с Пыхи?
>>2124002 Для иммиграции мб не очень хорош, вакансий не так много. Как второй язык вдогонку к php - зайдёт отлично, эта связка на рынке становится всё более популярной
>>2124002 Стек PHP/Go сейчас популярен. Но вообще вакансий на го маловато пока что, и не факт что в будущем их станет больше. Для иммиграции куда-либо наверное не самый лучший вариант, но тут как повезет. Если брать российские корпорации, тот тут все неоднозначно, в корпорациях обычно тотальный жабизм, на го вроде бы только озон, авито и вайлдберис переходят, не знаю насколько это хорошие места.
>>2123594 Не буферезированый канал, это по сути канал с размером 1, чтобы записать в него, из него должно производится чтение в другой горутине, и наоборот, чтобы прочитать, кто-то (другая горутина), должен в него писать. Если ты будешь тупо читать, пока в него никто не пишет, горутина встанет на месте и будет ожидать, пока в канал кто-то напишет. Дэдлок, это то самое состояние когда горутина ждёт. Паника (та ошибка которую тебе выдает программа), означает, что твоя main горутина встала на месте, в ожидании записи или чтения из канала, и уже никогда не запустится. Ошибка о дедлоке происходит только тогда, когда застопорится main горутина, если в дедлок упадут другие горутины, то программа ошибку не выдаст, и ты даже не заметишь как утекает твоя память.
Какие подводные будут в Го с выходом Go2? Я надеюсь, что обратную совместимость похоронят к хуям иначе получится получится пиздец, в котором одновременно будут и дженерики, и interface{}
>>2124744 Есть такое, думал, что если main заснет то выдаёт ошибку, получается, что дедлок происходит только в случае кода все горутины ожидают, собственно так и написано в ошибке.
Пидорасы, кто из вас придумал использовать уебанские го темплейты в хелм чартах? Мало того, что фигурные скобки - валидная конструкция языка, так еще и этот формат зависит от отступов, за которыми надо следить вручную, блядь! Я уже молчу про уебанский синтаксис. Ну, признавайтесь нахуй.
Как вы обрабатываете такие запросы? И вообще, нормально ли таким образом выполнять поиск по бд, с внешней стороны по API? Решил попробовать сделать что-то типа динамического sql билдера, но возникла проблема с sql инъекциями. Может есть готовая библиотека ?
>>2125819 Тут наверное стоит спрашивать а нахуя ты это делаешь через какую-то хттп + жсон обертку, а не в БД, и какие у тебя кейсы, к тому же есть PostgREST который может вроде бы все то же что ты делаешь
Посмотрел некоторые опенсурс го проекты и там все утилитарные вещи вроде валидатора мейлов переизобретаются заново в каждом проекте. В жабе обычно для такого просто подключается один из пакетов apache. commons.* или guava, в котором лежит уже проверенная и оптимизированная реализация и просто юзается, а здесь каждый раз свой велосипед. Это из-за недостатка устоявшихся библиотек или пресловутый go-way?
>>2125887 > Это из-за недостатка устоявшихся библиотек Да. Покопай говно на перле или крестах из нулевых, там тоже велосипеды в каждом первом проекте. Ещё тут один шиз как-то писал, что устоявшееся библиотеки - это ненужное легаси, ведь оно тянет развитие назад, да и вообще лишь бы не как в жабе.
>>2125881 >а нахуя ты это делаешь через какую-то хттп + жсон обертку Ну допустим нужно будет на фронте получить список объектов по имени, или по имени + ещё какое нибудь ограничение, таких ограничений может быть Н штук. Это же вроде обычный поисковый запрос, на каком нибудь E-commerce.
Что-то Viper вообще какое-то говно, там даже нормально удаление не сделали, такой функции просто нет в либе и вообще все похожие либы говно, в итоге скатился к обычному go-toml либе и вручную всё делаю.
Есть нормальные альтернативы? Помните эти .ini файлы у виндоус программ, которые создаются автоматически запустив .exe с дефолт настройками в этой же папке, если удалить все файлы проги кроме основого .exe.
Вот мне такое же поведение нужно. Минимум забот со стороны юзера, никаких -config флагов.
Как вообще лучше всего хранить миниБД для CLI-прог с списком пользователей, чтобы прога была стейтфул и где лучше хранить conf.ini файл?? Я с заделом на будущее, чтобы чел apt install делал и есесно прога улетит лежать в /usr/bin а там нет прав создавать файлы в рабочей папке. Поэтому думаю $HOME путь юзать, но хз как там на winodows/macos будет. Очень нравится .toml формат, он напоминает .ini при этом современный и его самый тупой юзер может отредкатировать вручную блокнотом, не то что json который сразу invalid если запятую забыл где или наоборот не убрал её если конец списка.
>>2125995 Значит так: поднимаешь кластер etcd, туда кладешь конфиги, затем создаешь микросервис config-manager, засовываешь его в кубер, создаешь микросервис config-change-notifier. Сonfig-manager пишет в кафку, когда конфиг изменился, config-change-notifier читает события из кафки и дергает AWS лямбду, которая идет в config-manager и получает свежий конфиг, затем сохраняет его в S3 бакет, к которому прикручен Cloud Front, на который ты обращаешься по имени типа my-simple-app.com, которое ты задал через Route 53 (конечно, потребуется лямбда, которая будет обновлять днс запись в случае изменения урла клауд фронта). Готово, теперь твои приложения могут периодически ходить на урл my-simple-app.com и получать свежий конфиг.
>>2126001 Это стёб тонкий? По сети кстати хранить конфиг я уже думал, была идея, да. Это же круто, даже не нужно файл сохранять на диске юзера и пермишены не нужны. Хотя KISS паттерн говорит юзать .TOML-файл и без всяких SQLite, а он тоже удобен т.к. 1 файл sqlite.db
вот либа состоит всего из одного .go файла. Этот паттерн кодинга как называется?
https://github.com/tmrts/go-patterns посмотрел везде примеры кода, чёт ахуел, ничего не понимаю, надо что-то более понятные, на живых проектах мне удобнее. Я так понимаю их много и везде свои минусы\плюсы, я бы хотел гибкость, чтобы можно было потом добавлять поддержку новых сервисов через их АПИ и чтобы основа не менялась, что-то вроде модульности. Типа логика одна всегда в папке /internal, а остальные уже конкретное общение например с Твич АПИ в папке pkg лежит. Я потом создаю twitch.go twitter.go youtube.go.
>>2126226 Комментарии и структ тэги - это не очень прикольно, потому что там нет никакой компайл-тайм валидации синтаксиса и прочего, это тупо плейнтекстовая строка и хрен его знает, как оно в рантайме отработает. Короч, в идеале ждём нормальных аннотаций, с компайл-тайм гарантиями и тп.
>>2126152 Тем не менее, структ тэги это вполне себе рабочее решение. Юзай либо его, либо просто напиши что тебе там нужно ифами, вполне себе го вэй. Нет никакой проблеме написать функцию validateUser и вызывать её по необходимости.
>>2126093 Стандартов на это нет, потому что под разные задачи подходит разная структура проекта. Бывает data driven development, domain driven development и тп.
Лично я по умолчанию делаю так: Есть пакет internal/handler, там лежат все точки входа в приложение. internal/handler/cmd, internal/handler/http, internal/handler/kafka и тп. В них я вычитываю данные из источника и превращаю их в структуры данных, которыми оперирует приложение. Затем вызываю нужный сценарий из пакета usecase. Есть пакет internal/usecase в котором лежат конкретные сценарии того, что вообще умеет делать моё приложение. Например CreateUser, RegisterOrder, MakeAPurchase и тп. Юзкейзы ничего не знают о хендлерах и работают сами по себе, используя структуры и интерфейсы из пакета domain. Соответственно есть пакет internal/domain в котором лежат сущности и интерфейсы предметной области, то есть структуры данных (например User, Order и тп), интерфейсы репозиториев (Users с методами Create/Get/Update/Delete и тп) и интерфейсы всяких внешних сервисов (например если приложению надо общаться с хостингом видео, у меня в domain будет интерфейс VideoHosting). А отдельно в других пакетах из internal у меня лежат уже реализации интерфейсов, в internal/postgres лежат репозитории, в internal/youtube конкретные реализации интерфейса VideoHosting и тп. Получаются вот такие взаимосвязи: handler -> usecase -> domain Всё написано достаточно абстрактно, чтобы я мог заменить youtube на vimeo не меняя основной код, но при этом конкретно и наглядно. Я называю такой стиль "упрощенный DDD".
>>2125819 sqlbolier - если нравится кодогенерация squirrel - просто плейн билдер
>>2127725 Говно в тупике, без дженериков и исключений путь в сложную бизнес логику закрыт, с дженериками и исключениями непонятно зачем нужен, если уже есть шарпы и жаба с нормальной инфраструктурой.
>>2128104 >>2128105 Неудобный вопрос про дженерики говноеды игнорируют. Ни один уважающий себя разработчик не будет писать в 2021 году на языке, в котором нет полноценных коллекций. Я еще в начале нулевых за это обоссывал оберонщиков, когда говняшки еще и в проекте не было.
>>2128128 Дженерики - приятная штука, но не обязательная, поскольку нужны не так часто, а когда нужны - то простейший скрипт на кодогенерации (скажем genny) сделает то, что нужно. Я вот не первый год программирую на го фулл тайм и прям необходимость в них ощущал только пару раз, и то кодген изи всё решил. Тем более что дженерики скоро будут, а срач по поводу их отсутствия, кажется, настолько же древний, как оберон, про который ты припизднул даже не зная, что это такое.
>>2127828 Спасибо, что-то похожее я видел у него https://youtu.be/B0lV7I3FO4E но всё равно осознания полного в голову не приходит, туго доходит, мне бы гитхаб репозиторий посмотреть на примере живого проекта.
>>2128166 >как оберон, про который ты припизднул даже не зная, что это такое. Ишь как манька завиляла жопой, как только макнули носом. Голанг ваш это и есть спизженный Оберон. Потому-то и нет дженериков, что Вирт их ниасилил.
Как правильно открывать и управлять подключениями к бд? Я делаю примерно вот так, но мне кажется, что это не совсем правильно. https://play.golang.org/p/ZuUlN6TzLwN
>>2128197 В каком это месте у тебя Вирт с го связан? Или это такой сарказм?
>>2128189 Кодген норм, джавовый даггер тому доказательство.
>>2128196 Изи, в точности как с генериками. Библиотека предоставляет темплейт, а ты в нужном месте делаешь go generate.
>>2128688 Миграции и коннект к бд это несвязанные вещи. Разлепи проект на две команды, "go run main.go migrate" и "go run main.go serve", и просто перед serve запускай migrate или руками или хуком k8s или как ещё угодно. А в serve делай тупо db, err := sql.Open() И менеджить ничего не надо, тупо создавай db и используй в логике
Сидел на visual code studio, все устраивало. Давно не включал, а сейчас тормозит и долго предлагает выбор, как пофиксить или чем заменить. Там терминал удобный, эх.
>>2119331 (OP) Да что же это твориться!! Там раст почти гошу догнал! Я че зря потратил миллион нейронов мозга чтобы стать спецом в го, который не станет популярным??? Я терпел потерю делфи, флеша, нюхал руби, а теперь ГО станет всем не нужным??? Блин, за что!!!
>>2129568 Да что же это твориться!! Там javascript, php, java, c# почти раст догнал! Я че зря потратил миллион нейронов мозга чтобы стать спецом в javascript, php, java, c#, которые скоро закроются???
>>2129920 > Умрет - свичнемся на что-то новое Мудрые слова. Вообще, странно привязываться к языкам из каких-то эстетических и сентиментальных соображений, это ведь просто инструменты для решения задач.
>Позови когда они начнут конкурировать Они не начнут конкурировать, го просто станет вдруг ненужным. Уродства дизайна языка все равно даст о себе знать.
>>2129920 Наивный, ресурсы мозга ограничены, плюс потраченное время. Ты не станешь быстро спецом из одного языка, попав в другой. У всех разная инфраструктура
>>2130175 Ты же понимаешь что знание алгоритмов и синтаксиса это лишь малая доля тех знаний которые требуется специалисту? У каждого языка своя инфраструктура со своими особенностями и подводными камнями. Тысяча одинаковых вещей делается немного по разному со своими нюансами в каждом языке! Эти знания накапливаются трудом многие года, постепенно превращая тебя из мидлоговна в что-то по настоящему стоящее в твоей сфере.
С учетом того что твой потенциал мозга ограничен, так еще и к 25-30 годам ты начнет терять способность так же быстро обучаться как это делает молодое поколение 14-20 лет (которым тебя и заменят). Ты реально веришь в то, что сможешь прыгать от технологии к технологии, оставаясь специалистом на том же уровне?? Практика говорит что нет, но ты убеждай себя.
>>2130213 Самое забавное, что именно в го много странной отсебятины и если ты именно в этом языке стал спецом, то тебе будет трудно в других языках (так же и с питоном, у которого вечно что-то по другому даже на уровне синтаксиса).
>>2130213 >>2130172 Перекатился в го с пхп, а в пхп с питоне, каждый раз апая ЗП. Не знаю о чем ты, до 30 лет если совсем не повезет с генетикой - изи сменить стек, если еще и есть бэкграунд ООПе языков - то мало что нового придется изучать, а те же библиотеки и т.д. изучать вообще не нужно, достаточно иметь документацию рядом. Проблемы возникнут только при перекате в определенные секторы бизнеса (например в тырпрайз жавы, где от тебя будут требовать сертификации спринга, лол)
>>2130215 > если ты именно в этом языке стал спецом Компилируемый язык с базовым ООП и конкурентностью - го как раз отлично подойдет для переката в другие языки, ибо имеет базовый суповой набор, тут и верхнеуровневые слайсы да жсоноперекидывалки и низкоуровневые профайлинги с конкурентностью. Да, здесь мало сахара, но сахар - это как раз то, что учится по документации. Я когда искал первую раб оту по Goвну - ОЧЕНЬ ЧАСТО натыкался на конторы, которые добавляют Го к существующей в компании Жаве и даже Шарпу, не говоря уже об огромном кол-ве связок Пхп+го и Питон+го. Если твои когнитивные способности вообще не способны к нормальному перекату - всегда будет возможность вот так вот и перейти, но это совсем для брейнлетов, имхо самый лучший варик переката - внутри существующей компании или полный кувырок в другой стек с обрывом концов.
>>2130314 Есть два варианта: 1. Просто берешь и все в докер пихаешь через copy, в конце вызываешь go mod download, потом билдишь и запускаешь бинарь. 2. В одном контейнере собираешь, в другом запускаешь.
FROM golang:latest as build ENV APP_HOME /go/service
>>2130454 > ОЧЕНЬ ЧАСТО натыкался на конторы, которые добавляют Го к существующей в компании Жаве и даже Шарпу, не говоря уже об огромном кол-ве связок Пхп+го и Питон+го. Кстати норм тема для переката куда угодно. К примеру в рамках кампании А [php->go], потом переходишь на гошника в кампанию B и там делаешь хоть [go->scala]
>>2130168 Это в твоём php он уродлив by design, а в го дизайн максимально прост, в этом его прелесть. Судя по твоей ненависти (это ведь ты тот шизик, что раз в неделю сюда приходишь поныть что го слишком тебе не нравится?) ты просто ниасилил и видимо на собесе тебя отбрили пару раз за неумение и общую когнитивную бесполезность, вот и доебываешься до анонов теперь
Сейчас посмотрел этот ваш раст и вдруг осознал что они сделали системный язык (то есть, всеобъемлющий в плане разработки, без каких ограничений, которые накладывают VM или GC или еще что-то) уровня С++, догнав его до современного высокоуровневого синтаксиса.
Проблема С++, для такого обывателя как я, была даже не в том что он там сигфолит, а то, что это древнейшие говно с древнейшим подходом в синтаксисе, с кучей подводных камней (необъятных!), с этими хедерами и прочим говном и все это с отсуствием пакетного менеджера. А тут тебе язык, который может на уровне С++, да еще с удобным высокоуровневым синтаксисом.
Да, конечно, сложнее чем го или тем более питон, он все таки близок к железу и имеет меньше привычных абстракций из других более высокоуровневых языков. В любом случае раз руку набил и получай тебе язык, который в потенциале может все, с чем бы там не столкнулся в жизни (нормальные игры, реалтайм отклик на бирже, системщина, встроенщина, веб, васм...)
>>2130621 >Это в твоём php он уродлив by design Лол, толстота то какая. Как еще язык повернулся по красоту дизайна сказать.
Уж что, а пхп норм, у него стандартная бибилиотека исторически уродливая, но сам пхп очень неплох. Эта мантра пошла еще с 4 версии, когда там было кривое ООП, как и в вашем питоне. Но только с 5 версии (~17 лет назад) они пофиксили это, а в питоно до сих пор нормального ООП нет. Эти циничные говнари кидались какашками в пхп, когда сами еще сидели на убогой 2 версии, лол
>>2130652 Ага, раст охренительный. Его проблема в том, что на C++ написано столько легаси, что он не умрет никогда и при этом мир просто переполнен плюсовиками (полный Яндекс), которые искренне считают, что раст ничем не лучше плюсов, что сама идея заменить плюсы, на которые они отдали годы жизни - это кощунство и что язык, который не просто переполнен подводными камнями, а натурально построен на них на уровне даже блять стандартов - это нормально. Короч, раст хоть и популярен и всем нравится, работу на нём пока найти очень сложно, это главный минус. А игровые движки типа Unreal или там Cry ещё десятилетия будут писаться на плюсах, ты максимум дождешься биндингов раст->плюсы, благо хоть интероп там ничего не стоит.
>>2130676 >C++ написано столько легаси Это мантра инфоцыган. Тут ели как перекатили по объему кода COBOL 10 лет назад, хотя ты в то время уже о коболе мало что слышал, да? Любой код легко умножается на ноль. Как умножался код на делфи, на перле, на руби и т.д. (там в древности тоже много интересных историй о забвении ЯП).
>которые искренне считают, что раст ничем не лучше плюсов Старые дядьки они умные, они не хотят учить новое бесплатно и потом за два языка получать ту же зарплату. Это зумеры хавают прокси языки типа там котлин или ts или свифта и в итоге за два языка получают как за один. То есть, мнение плюсовиков не имеет значения, они просто пытаются сохранить рыночное место, а это не пахнет объективностью.
>работу на нём пока найти очень сложно, это главный минус Это всегда минус. Тут речь про старую мечту об универсальном языке (а работать придется пока на жабе или пхп и даже С++, ибо отечественный рынок еще медленнее впитывает в себя новое).
>А игровые движки типа Unreal или там Cry ещё десятилетия будут писаться на плюсах Я вот не растовец, но вроде там уже у них есть продвижение по движкам. Но тут это не важно. Дело в том, что в этом геймдеве такой бардак, что у них совсем непривычная для нас атмосфера, где С++ не как главный инструмент, а скорее просто исторический рудимент. Как только появятся движки и кол-во спецов на расте, там о С++ даже не вспомнят, потому что каждая игра, это "написал код и выкинул".
>>2130679 Все там нормально с асинками. Вопрос в другом зачем они тебе в твоем пет-проекте? Ты быстрее в сpu упрешься или в ширину канала (если срешь html или жирные json'ы), чем достигнешь 10К запросов в секунду. Асинхронное программирование оно, конечно, круто и уже во всех ЯП (даже зачем-то в питоне). Но это не стоит забывать, что это потребность и игрушка реального хайлода.
>>2130768 Очевидно что в начале там были только шарписты, потом процент разбавили. В общем, само разбавление новыми технологиями и понижает все другие ЯП (у всех одинаковая линия падания). Кроме конечно пузырей как js и питон, число качующих хочух-в-айти там просто колоссально, и как следствие колоссальное число тупых вопросов.
>>2130783 > пузырей как js и питон Сам ты пузырь. JS и питон охуенно удобные языки для разработки чего угодно. Говорю как жаваскриптер, который начинал с крестов и асма. А го - натурально говно (и да, на нем я тоже писал продуктовый код).
>>2130800 > шо-нибудь интересное (с вашей точки зрения) о вашем языке Почему-то у жабадебилов и растопидоров неистово горит с самого факта существования Го, что они с пеной у рта постоянно залетают в тред.
> Что нравится, что не нравится, как так получилось, что вы попали в го? Плюсы: Платят много, хорошие перспективы, конструкций в языке мало (что делает его легким с точки зрения синтаксиса), конкуренси с которым разберется 6 летний, не нужно париться об утечке памяти, есть обрезанное ООП. Минусы: Почти нет сахара, что рождает бойлерплейты, хуевая обработка ошибок как значений, нет сформировавшегося костяка сторонних либ и фреймворков, каждый гофер считает своей обязанностью написать свой велосипед, из-за простоты языка и отсутсвтия сахара крайне сложно писать и поддерживать большой проект, не разбивая его на сервисы.
>>2130796 Сейчас вебассебмлер получить "графические 2D движки" и ты не увидишь ни html, ни CSS, ни DOM, ни свой жопаскрипт. Популярность этого говна просто улетит в мусорку за мгновение, так как js жил за счет только браузера, а ваннаби-программисты, которые дрочат на него и ничего кроме него не знают, сделать уже ничего не смогут (потому что не умеют).
>>2130830 >горит с самого факта существования Го Жаба-господа могут зайти в го тред только посать. Так что бомбит только у тебя осознавая, что го так и не потеснил жабу (а там еще и ко-ко-котлин у них). А тру стори когда говнокод переписывают на раст, просто разрывает пердоки потому что где-то в глубине души понимаешь, что раст хотя бы задизайнили красиво и на нем приятно писать.
>>2130844 Собственно что и требовалось доказать - жабадебил тут как тут. Насколько нужно быть завистливым долбаебом, чтобы мониторить тред какого-то там яп и высираться по кд в нем какой-то хуетой токсичной. Зачем жабу вытеснять? На жабе 2к вакансий, на го 1к, жабу котлин уже и так теснит по всем фронтам, кек. А раст, вакансий на котором становится вообще меньше - это отдельный ор.
>>2130846 >>2130844 Прям представляю чмошника немытого, который сидит и в тредах в программаче срет, неужели настолько сильно задевает тот факт, что говнари больше получают и язык проще? Иди сертификат на спринг обновляй, чмоня
>>2130830 Понял. Интересно. А вообще на что больше го ориентирован (бэкенд, нейросети, может десктоп, если на нем это можно делать и т.п.)?
Т.е. я правильно понял, что нет каких то общепринятых "маст-хэв" фреймворков для работы с go? Что нового добавили в последней версии вашего языка и Часто ли пользуетесь этими новыми фичами ?
>>2130856 > Минусы: Почти нет сахара, что рождает бойлерплейты, хуевая обработка ошибок как значений Твой маневр - как всегда лживый вброс. Ты бы хоть как-то по нормальному тролил, каждый раз одно и то же, будто тебе 13 лет.
>>2130858 > А вообще на что больше го ориентирован Основное - бэкенд, го дефакто стандарт для микросервисов на данный момент. Десктоп по ощущениям процентов 10 от рынка, делают полу-эмбедед решения для телефони, например, но это непопулярная ниша.
> Т.е. я правильно понял, что нет каких то общепринятых "маст-хэв" фреймворков для работы с go? Что нового добавили в последней версии вашего языка и Часто ли пользуетесь этими новыми фичами ? Угу, есть какие-то ходовые либы, но это совсем не уровень какой-нибудь джанги или спринга у жабистов. Это еще обуславливается тем, что на го огромные кодовые базы в одной репе почти не встретишь, стараются писать просто и делить на модули. Фич много разных, пользуемся, в последней версии например эмбеддинг ввели, фича для эмбеддинга любых текстовых файлов в переменную на этапе компайлинга, да много разного, в 18й ждем женерики, например.
>>2130864 Понятно. Ты сказал, что ждёшь женерики и я совсем забыл уточнить. Ваш язык типизированный, получается? Go поддерживают чисто гугл или он кому то ещё принадлежит? Синтаксис похож на Dart или он самобытен?
>>2130870 > Ваш язык типизированный, получается? Да, компилируемый, в шапке треда все написано.
> Go поддерживают чисто гугл Изначально гугол поддерживал, но потом ушел в отдельный проект со своей командой.
> Синтаксис похож на Dart или он самобытен? Не, не самобытен, си-подобный синтаксис, похоже на результат инцеста С++ с питоном (например слайсы похожи по поведению на питоновские)
>>2130849 Бинарное животное делает вывод, на основе стеба над ним. Нет, ограниченный, я не джавист, просто в свое время агрессивным маркетингом го пытались пропихнуть в рынок жабы, поэтому мокать в мочу джавы, это полезно. И ты забыл те времена, когда го треды создавались исключительно чтобы постебаться над юродивыми. С каких пор стало зазорно зайти и обоссать гофера? Даже вон жопоскрипщики это делают
>>2130834 > Сейчас вебассебмлер получить "графические 2D движки" Получит ли. Я уже и надеяться перестал. Сейчас можно только что-нибудь быстро посчитать и отдать жсу, и не видно подвижек запилить туда хотя бы работу с канвасом. Кажется, эта скриптопараша навсегда.
>>2130880 Одно дело - правду бы писал, тогда еще можно спорить, но ты тупостью троллишь и кидаешь выдуманные факты каждый раз, которые тут же обоссываются, а НЕУДОБНЫЕ ответы тобой тупо игнорятся. Ты ебнутый просто, признай, и не надо тут выдумывать
>>2130962 Жабисты вообще легко на толстоту ведутся, недавно сярпист в жабатреде постил очевиднейшую толстоту, и ничего, его охотно кормили, пока сам не ушёл.
>>2130830 > из-за простоты языка и отсутсвтия сахара крайне сложно писать и поддерживать большой проект, не разбивая его на сервисы. Неоднократно встречал такие утверждения и как гошник со стажем могу сказать, что это хуета. К примеру у меня в новом текущем проекте несколько сотен тысяч строк кода, но я не испытываю никаких проблем с тем, чтобы оперировать с этим кодом и поддерживать его. Почему? Потому что никакой синтаксический сахар не мешает правильно структурировать код и все проблемы с поддержкой возникают как правило не из-за того, что у кого-то в языке меньше фишечек и err!=nil надо писать лишний раз, а из-за того, что кто-то смешивает логически несовместимое либо пишет неадекватный (в смысле необъяснимый/нелогичный) код, только и всего. Это в целом нормально, большинство "разработчиков" только и умеют, что копипастить со stackoverflow и про архитектуру, системный дизайн и паттерны только слышали, поэтому если им дать чистый лист - они накопипастят туда говна и задохнуться в нём. В этом смысле Java, PHP, Python и некоторые другие языки ощущаются вами лучше, потому что в них вы используете фреймворки, где умные дяди подумали за вас и написали гайды, примеры да и просто продумали структуру, что вот тут вы пишете логику, вот тут маппите запросы и так далее. И в такой экосистеме даже самый тупой денегерат начнет по аналогии генерировать +- логичный и нормальный код нет на самом деле нихуя, я видел такое, что вам и не снилось, некоторые вообще не способны в логику и их вообще нельзя подпускать к клавиатуре Го же в отличие от этих языков гораздо менее шаблонный, то ли сам по себе, то ли в силу своей новизны и никаких фреймворков здесь нет, поэтому если самому заранее не спроектировать систему, которую ты пишешь и не начать выстраивать правильную структуру бизнес логики - действительно получится каша. Микросервисы же, про которые все говорят в контексте го, зачастую именно эту задачу и решают, потому что из-за барьера между двумя разными сервисами у говнокодеров не получится ни через БД общаться, ни хранить всё в синглтонах, ни прочей ереси. И поэтому говнокодеры или делают распределенный монолит и моментально умирают (потому что нет ничего хуже), или эти слабопроницаемые "кубики" заставляют их всё же начать думать о структуре системы. Фух, выговорился.
TLDR: нормальный код в любого размера проекте можно писать на любом языке и ни го не заставляет тебя писать хуево, ни джава не гарантирует что получится шедевр
>>2131243 Чееел, ну камон. Я вот жявист, и то попускают еще до собеса, говоря, что 300к - это выше вилки на мидла. Может, в банках и платят хорошо, но это банки, так что работать там - зашквар.
Вкатывался в го, имея небольшой опыт программирования. Но тут задумался над растом и его преимуществах. Скажите, почему не стоит смотреть в сторону раста?
Понятно, что если напишу сейчас в раст треде, меня там вместе с го закидают камнями, поэтому пишу тут.
>>2131331 Это единственная причина? Просто я сам пишу свои проекты в вебе, для меня вакансии не решают (у меня работа на другом языке, от которого я уже выгорел).
>>2131324 >Почему-то все пидарасты набигают сюда рекламировать его, а не наоборот. В раст треде предлагать го, это как охотнику предлагать водяной пистолет вместо ружья.
>>2131339 самый объективный критерий нужности языка это что нового и уникального на нем написано уже? докер, кубер, кокроачдб и т.д со стороны го и ничего со стороны раста. И нет никаких предпосылок для трансформации ничего во что-то. Не нужно слепо верить пропаганде идиотов, когда перед глазами реальность противоречащая этой пропаганде.
>>2131342 То что ты посчитал за объективность, называется маркетингом. Не помню уже точно, но докер вообще был демонстрационный проект (ака флагманский). А все остальное это следствие агрессивного маркетинга и репутации гугла. В реале же го так и остался нишевым языком спустя 12 лет, вдохновляя только на влажные фантазии всяких ваннаби программистов, которые верят, что если переписать с пхп на го, они смогут сэкономить на железе.
Реально объективный критерий нужности языка определяет его "киллер фича" (серебряная пуля). Такой фишкой в го была асинхронность под капотом. То есть, вменяемы технари, которые и задают основное направление ИТ-мира, готовы были терпеть абсолютную бездарность в дизайне языка ради преимущество прозрачной асинхронности (кстати та же причина популярности ноды в свое время, хотя ваннаби-программисты и пищали в каждом углу о своем js, истинной популярностью, которая двигала технологию была именно асинхронность).
Но что пошло не так? Да просто современные асинки во всех языках, не вызывают реальной сложности, а терпеть топорный бойлерплейтный синтаксис годами, это правда тяжело для настоящего технаря, который нюхал другие языки. Поэтому го и остался нишевым продуктом, асинхронные микросервисы сейчас можно писать хоть на питонах.
А что дает дает раст в плане серебренной пули? А он дает ошеломляющую вещь, которые даже маркетологи не упоминают. Он дает возможность получить универсальный язык для всего и вся (как и "батя" С++), но при этом с вменяемым для такого уровня современным синтаксисом (с некоторыми сложностями по начальной кривой обучения). Если раньше ты бы стоял перед выбором какой язык выбрать для той или иной задачи. То сейчас такого выбора уже нет, если ты набил руку в расте. И это реально грандиозная киллер фича, которую еще не все осознали.
>>2131418 Долбоебы всё ещё считают, что где-то есть метрики "абсолютно хорошего" или "абсолютно плохого" дизайна языка. Когда-нибудь до них дойдёт, что "им не нравится" или "в кругу их друзей-джавапидоров модно ненавидеть" не равно "никому не нравится".
>>2131449 Не фантазируй, не раз уже объективно обсуждали бездарный дизайн языка. Если бы эти технические решения завернули бы во что-то стоящее, вопроса бы даже не стояло. Так что формулировка "я художник, я так вижу" тут не прокатит, есть объективные недостатки. Даже вот дженерики тащат, хотя годами заливали мочу всем, что ненужно и стадо хомяков все вместе это повторяло. Помню с отладкой у нас тоже самое было, принтавали как школьники, пока в какой-то IDE не завезли удобный тулкит и тут же переобулись.
Выглядит как халтура это все, но больше обидно что люди с техническим мышлением ведутся на это как моя бывшая на айфон.
>>2131418 > вдохновляя только на влажные фантазии всяких ваннаби программистов, которые верят, что если переписать с пхп на го, они смогут сэкономить на железе.
По работе переписываю проект с баша на го, зависимость есть, брат жив
>>2131418 Как можно на полном серьезе считать говно нишевым, когда вакансий по нему всего в 2 раза меньше, чем по жаве?
>>2131455 Если тебе обидно что кто-то выбирает не твой любимый язык и ты готов каждый день об этом спорить в треде на дваче - стоит задуматься где в жизни ты повернул не туда. Никто и не спорит, что го - идеальный язык, тебе в треде даже сами гоыеры говорят про его недостатки, но ты игноришь и как попугай продолжаешь повторять то же самое.
Мы деньги зарабатываем на несложном популярном яп, в котором ещё и есть фичи из старших языков типа ООП и конкурентности. И как-то похуй на мнение какого-то шиза с двача. Если бы ты хоть адекватный диалог строил, а не лил потоки желчи в жалких попытках триггерить людей - тогда можно было поговорить.
>>2131474 Сейчас бы скрипты переписывать на компилируемый язык, чтобы потом год спустя всей галерой искать исходники этого говна среди тысяч других таких же скриптов. Уровень интеллекта - гофер.
>>2131484 Лол, на го в СНГ особо тоже работы нет. Но в реале - зачем искать работу, когда она уже есть и ты переписываешь с древнешумерского С++ на раст?
>>2131478 >вакансий по нему всего в 2 раза меньше, чем по жаве Ну да, по джаве 4500 на хх, а по го примерно 1.5к в лучшем случае. И то, в из этих 1.5к примерно 500 будут никак не связаны с айти.
>>2131478 >вакансий по нему всего в 2 раза меньше, чем по жаве Уровень вранья - гофер. Сейчас на серьезных щах мериться фантомными вакансиями, а потом бампать самый популярный тред в разделе - мы вам перезвоним.
>>2131507 Добро пожаловать в девопс. У нас тут горы скриптов, темплейтов скриптов, хелм чарты со скриптами, скрипты, которые генерят скрипты из темплейтов скриптов и конфигов, цепочки инклудов source'ов и кучи глобальных и ENV переменных
Я не понимаю, почему этот шиз не может успокоиться? Я прям чувствую как по ту сторону монитора он прям мечится, прыгает, краснеет, пытается доказывать что гошка говно что тут все не так что вакансий нет что все лохи что раст с жавой лучше.
Насколько нужно быть ебнутым, чтобы на полном серьезе заниматься такой хуйней? Неужели го прям так сильно задевает этого шиза? Дело ведь 100% не в том, что ему язык не нравится, его явно что-то прям до глубины души задело, что настолько взорвался сильно. Можно только посочувствовать шизу и не отвечать на его посты, пусть сам с собой развлекается.
Это какая-то психологическая травма, или что, друг? Ответь на простой вопрос - почему именно тебя так задевает сам факт существования языка? И не надо только выдумывать что ты рофлишь с лахоф гыгык азаза, тут совсем не рофл, тут целенаправленное говнокидание, я подобных шизов пока только в питонотреде видел.
>>2131701 > Участники, которые успешно пройдут интенсив, получат сертификат на курсы Skillbox на 15 000 рублей Вся суть, заманить вкатыша в свое логово. Я себе качнул этого шварценегера, вроде ничего. https://pro.academind.com/p/golang-the-practical-guide
Ладно, ребята, это уже совсем превращается в какое-то откровенное свинство. Мне не нравится, что наш небольшой тред вызывает такую негативную реакцию от нескольких человек, и превратился в какое-то поле боя. Больше я создавать го треды не буду, вы добились своего. Если вам действительно так мозолит глаза этот тред в программаче и так не нравятся подходы и практики в языке, что вы готовы превратить тематическую доску в филиал б - лучше этому треду здесь вообще не существовать в принципе.
Я вас услышал. Спасибо за внимание.
кто хочет - может перехватывать эстафету, хотя имхо пусть уж лучше тред сдохнет, чем вот это вот все из раза в раз
>>2131700 Забей, люди с пустотой внутри и в жизни, таким образом самоутверждаются, кичатся, плюя желчью. Видимо ему это доставляет удовольствие, действительно, чем бы ещё заняться в будние дни.
>>2131725 Ты вообще в курсе, что го тред со стартовой нумерацией создавали раз 20 (и скорее всего больше, потому что даже я не застал Илюшу)? Из них 3 раза был я, лол, тогда треды доживали до 11 потом мне было лень и я переписал свои пет-проекты.
>>2131651 Ну все пошли галочки и манипуляции, тупой любитель вишни. Забавно, что львиная доля вакансий на го это Москва (когда как жаба с 12к размазана по России). Уровень манипуляции рейтингом - гофер (и убери уже ключ "Go" это уже смешно)
>>2131752 Ну как бы то ни было, я пошел ошибки-значения дрочить, мне норм. Надеюсь, у тебя все будет норм и ты всё же найдешь хороший язык программирования.
>>2131700 Суть гошки - быть нишевым языком для клепания микросервисов. Примерно как 1С для бухгалтерии. Всем бы на вас было похуй, если бы гофераны сами не раскукарекались типа жава всё, кресты всё, надо переписать всё на го. Вот только та же жава это зрелая технология, в отличии от.
Жабодебилы построились в ряд Жопы от баттхерта ярко горят Скулит крестопидор в вонючем углу Размазав соплю по кривому еблу Пишет обиженно в тред растоблядь Но Go господам на всех наплевать
>>2123187 >Чел, ты новости вообще не слышал? >ГО ворвался в энтерпрайз и убил джаву с шарпом. Теперь все новое исключительно на ГО пишут. >>2123324 >>Эластиксерча >Вчера выяснилось, что он скоро умрет >>2123324 >>Хэдупа >не нужен. >>2123346 >Ебалоид, весь apache software foundation - это каловый высер нулевых, от которого сейчас все отказываются. Никакого еластика, солра, хадупа, спрка, кафки в будущем не будет - так как они построены на jvm, которая умрет лет через 5-7 крайний срок.
Дали как-то раз запилить одну хуевину на гошном бэке. После JS такое ощущение, как будто посадили в детскую песочницу и дали в руки совочек с ведерком. Никак не пойму откуда взялся миф, что гошка для скилловых прогарей онли.
>>2131767 > вместо деплой-приложения > тонну скриптов > на Го Наркоман чтоле сука? Все как раз наоборот, мы выбрасываем тонну баш скриптов и делаем деплой приложение на го
>>2131968 Чел налету переобувается. Так и скажи что свои пет-скрипты дома переписываешь на го. Хватит уже под посты подстраиваться. Это, по крайней мере, будет звучать куда лучше чем то, что какая-то команда в 2021 году свой деплоеер пишет.
>>2119493 ИТ безумие продолжало рости. Теперь чтобы попасть в какую-то школу, надо сдать алгоритмы и проштудировать докер. Наверное еще и деньги за это берут?
>>2131875 >После JS такое ощущение, как будто посадили в детскую песочницу Первый раз вижу жопаскрип-макаку с таким самомнением. Обычно они скромные, так как понимают, что являются не программистами, а рисователями кнопочек и формочек.
>>2132036 Порог вхождение в обучение? Ты серьезно? По-моему это просто новый уровень инфоцыганщины. Типа, "обучаем программистов питон, требование, надо знать программирование на питон". И придет такой чел который там прочитает из вики историю питона и даст ссылку на документацию стандартной библиотеки. На этом занятия все.
>>2132054 Самое забавное что из-за общепринятого мема что пхп говно, средний пхпшник в оправдывающейся позиции и очень самоуничижительно думает о себе и языке, хотя может уже умеет в пять раз больше, да и проект у него может красивый смузихлебский. В этом плане гоферы тоже тихие и неагрессивные плюс минус
А питонисты и жсовцы вот самые агрессивные и уверенные в святости своей, хотя у них там может вообще неподготовленные запросы и роутинг через свитч кейс uri строки
>>2131418 >Реально объективный критерий нужности языка определяет его "киллер фича" (серебряная пуля)
Спорное утверждение. Вот например были языки вроде DLang, Erlang, Elixir, да и еще куча всякого типа модного за последние лет 20. И что с того? Все сдохло нахуй. Нужность языка определяет его инфраструктура и размер сообщества, которое использует этот язык в проде. Вот например на го за 12 лет написали несколько крупных популярных проектов. И го в каком-то смысле стал популярен для инфраструктурных задач и клауда. У жабы огромное комьюнити и очень стабильная инфраструктура с кучей разных либ и огромных фреймворков. Спринг, хибернейт, эластик, хадуп, зоокипер, кафка. Поэтому бизнес выбирает жабу. На С++ тоже написано куча всего, особенно в области графики. И движки сейчас пишутся на с++, а не расте. На расте нихуя не пишется кроме однодневных криптостартапов, которые живут год-два максимум.
>>2131700 Вообще тут несколько шизов сидит, я один из них, и здесь где-то был мой пост о том, что я не смог понять, как нормально описывать бизнес-логику, не имея даже нормальных механизмов для сокрытия полей. Возможно я не прав, но я вот уже почти пару недель периодически играюсь с гошкой и мне кажется, что это неплохой инструмент для написания консольных утилит для работы с сетью. Всякие парсеры говносайтов и несложный бекенд, где не нужно погружаться в логику, отлично пишутся на гошке, и походу язык для этого изначально и создавался. Просто кто-то начал говорить, что вот он уже убил шарп, жабу и плюсы, приводя в аргумент 1.5 тысяч вакансий, из которых 70% - это переписывание с пыхи на го, а не с шарпа или плюсов.
>>2132208 > Вот например на го за 12 лет написали несколько крупных популярных проектов Ох, ты бы знал сколько было написано кода на коболе и на других подобных языках. Где они сейчас? Утешай себя количеством кодо-хлама, верь что он спасет твой язык.
>>2132224 Кобол уже давно не развивается. А количество уже написанного кода напрямую влияет на выбор технологий для нового проекта. Если микросервисы были на гошке, то пилить новый на расте вряд ли станут. Аналогично с жабой. Если в энтерпрайзе очень много всего написано на джаве, то ее и выберут для нового проекта, тем более что джава развивается.
>>2132270 Джаве просто C# отвесил хорошего такого пинка, и оракл наконец-то зачесался и начал что-то делать. Но уже поздно, скоро часть сбежит под крыло майкрософт, а часть привыкшая к котлину то есть примерно вся мобилка и значительная часть серверов на котлине и останется тем более что котлин мультиплатформ будет готов уже к тому времени и старую жирную JVM тащить не надо будет. Кстати C#вая виртуальная машина просто на порядки лучше и современные джавовой, почитайте сами или послушайте доклады, охренеете
>>2132224 > верь что он спасет твой язык. А почему мне не должно быть похуй то? Ну умрет и умрет - скала кодоебы, успевшие на хайп - сейчас лучше жабистов живут, да и перекатиться всегда можно на очередной модный-молодежный, или спокойно вкатиться в тот же шарп. Чет вы как-то пиздец фиксанутые на одном яп
>>2132287 Жавадебилы, сэр. Искренне уверены, что их язык лучше всех и приходят ИТТ посрать себе на голову Гошники как раз обычно миролюбивые и спокойно объективно обсуждают как недостатки конкретно своего языка, так и преимущества других языков над го. Ну и наоборот.
>>2132279 >Кстати C#вая виртуальная машина просто на порядки лучше и современные джавовой Не верю. Все эти гцшные алгоритмы были разработаны еще десятки лет назад, принципиально круче сделать там не получится. В чем именно она на порядки лучше и для чего нет аналога в жяве?
>>2132325 Го очень простой даже для питонистов для изучения, но если ты байтослесарь тебе в нем делать особо нечего, т.к. на нем в основном пилят всякие микрописечки-перекладывалки джейсонов, CLI-приложения, кубернетис операторы и прочий девопс.
>>2132317 Во первых не пизди, алгоритмы постоянно пишутся и совершенствуются, как и их реализации. Те же ZGC и шеннондоа вышли из беты только в прошлом году. Во вторых тебя что в гугле забанили? Полный интернет сравнений языков и технологий. В третьих просто к примеру раз уж мы в го треде в jvm ты не сможешь рефлексией в рантайме достать конкретный тип из дженерика, а в clr спокойно не говоря уже о том, что по перфомансу дженерики в шарпах сильно быстрее за счет отказа от боксинга и кастов под капотом. Погугли и почитай про разницу в реализациях генериков в частности и разницу в моделях памяти вообще, охуеешь
>>2132342 От чего охуевать-то? То, что в шарпе тип генерика не стирается, на перформанс положительно влиять не может никак. К чему ты тут касты привел вообще хуй знает.
>>2132325 Пока в го клубе идет обсуждение наносервисов, пятиминутка злости про С++ Пошел вот сознательно в одну компанию, поближе познакомиться с С++ так сказать Помимо специфичексих вещей проекта (ну, энтерпрайз писать на плюсах это так себе сама идея) есть и несколько общих выводов В целом получил что хотел. А хотел собственно спуститься еще чуть ниже по стеку (начал с джавы -go) и на шкуре почувствовать что в свое время достало авторов го в этом самом ++ И да, этого сполна... Потрясающая неэффективность разработки. Это про то что плюсы хороши и плохи одинаковы для проектов любой сложности ну это утрированно. Но их как языка в общем не существует есть плюсы стандарта Х/Y и даже уже, компании А/Б, со всем своим - стектрейсером, шедулллером, базовыми типами и тд. Знать с++ абстрактно хорошо непонятно можно ли вообще. Время компиляции, дааааа..... UB это злосчастное. Имхо это такая отмазка сказать "не знаю". (кто не в курсе - undefined behavior). шаг вправо-влево - "UB" иди кури бамбук. Ну да формально выход программы без джойна всех тредов это UB. Но в среде c++ это такая волшебная мантра которая обозначает окончание беседы и задумчивое смотрение вдаль. А откуда тут UB когда компьютер детерминисткая железка вообще? В го (бинг) нет UB, в java нет. Если копнуть рантайм того же го - ьам вызов сисколла в главном треде закрывающий все треды процесса и даже некоторый цикл, чтобы процессор стек не распахал, и вуаля - и нет UB, надо подумать просто, и сделать. Так и в плюсах можно, но у плюсовиков кажется рефлекс - UB - и дальше не думаем. Очень расстраивает( Импенетрабельная (извините) стандартная библиотека с этими шаблонами и принципиальным кажется отсутствием документации в коде; язык с++ не только сложный но и не способствующий изучени. Так копошишься на своем уровне без особых шансов понять как оно внутри там устроено. + Деление backend/frontend (llvm) добавляет - очень на джаву похоже После этого посмотришь опяь на го - все чистенько аккуратненько, внутри сделано чаще всего good enough в 99% (и в такой же степени лучше чем сам бы пытался сделать с нуля) и просто работает. Кому не хватает сложности в го, вместо того чтобы тянуть рантайм DI и прочую магию энтерпрайза - займитесь плюсами немного, там этого хватает. И возвращайтесь в го, писать чистый понятный код
>>2132342 >Те же ZGC и шеннондоа вышли из беты только в прошлом году Oh, really? А ничего, что pointer coloring, используемый в том числе в новом ZGC, был придуман еще Дийкстрой в далеких 70х? Может, с вариациями, но суть та же. >ты не сможешь рефлексией в рантайме достать конкретный тип из дженерика Пиздеж. В жяве это можно сделать, просто надо флажок при старте передать жвм. И да, ты съехал с темы гц на дженерики, охуеть просто. Еще бы рассказал, что в котлине есть зеленые потоки.
>>2132348 Мне нравятся кресты и я радостно дрочу их у себя в проекте, обмазываясь фичами и последними компиляторами, но читать чужой крестовый код (только если не гугл или аккуратно написанная либа) -- ад и ужас, нахуй. Но злость я тоже понимаю.
>>2132241 >Кобол уже давно не развивается Пиздит как гофер - это станет скоро уже мемом. Ты следишь за коболом? Конечно нет и про последние ISO не в курсе, да? Чтобы ты понимал, количество кода на коболе, на сегодня, где-то больше порядка на два или три, чем на твоем го.
Так что забудьте про эту мантру, что количество кода, защищает как-то от забвения.
>>2132279 Маня фантазии, как был сишярп позади, так и остался. Скорее всякие кококотлины подстегнули что-то с топорным синтаксисом делать. Но мне нравится как новое поколение фантазирует и делает выводы (какие ролики на ютубе смотришь?)
>>2132279 Да вряд ли на шарп уйдут. Здесь уже инфраструктура решает. Понятно, что в шарпе куда лучше сделаны дженерики и много сахара, но без такого количества либ и инструментов (Spring, Hibernate, ZooKeeper, Kafka, Hadoop, Spark, Elasticsearch) на шарп просто ради сахара никто не захочет переходить.
>>2132571 Ну ладно Spring, но при чем тут Elasticsearch и Kafka? Какая разница на чем они написаны, если всё равно приложение через АПИ взаимодействует?
>>2132571 Ну ладно Spring, но при чем тут Elasticsearch и Kafka? Какая разница на чем они написаны, если всё равно приложение через АПИ взаимодействует?
>>2132364 Что за флажок? Я на сколько знаю в шарпе женерик можно инстанциировать просто через new T(). А в жабе только тип класса передавать и через всякие newInstance() его дергать, что по сути рефлексия. другой анон
>>2132571 >Да вряд ли на шарп уйдут Двачую, но тулинг тут не причем нормальным людям там делать нечего. после 4 года язык активно превращают в какой-то пиздец на уровне плюсов.
>>2132571 >Spring, Hibernate, ZooKeeper, Kafka, Hadoop, Spark, Elasticsearch Ну ты и говноед. Иди сравни как работает аспнет и спринг. Спринг еле еле обгоняет джангу. Ты серьезно считаешь всех этих монстров тырпрайза достоинством джавы? Это то, от чего из джавы бегут. И да, для тех кто в криокамере там у жабистов котлин есть, который может во многое что может шарп.
>>2133120 После шарпа "посматривать" на го, может только особенно одаренный человек (хотя скорее всего ты звездабол).
>>2133161 >шарпа "посматривать" на го, может только особенно одаренный человек Как скажешь Три года назад дотнечики бежали на ноду, сейчас бегут на Go. Я лично знаю с пятерку дотнетчиков которые ушли на Go Шарп последние три года скатывается в сущий пиздец, через пару лет будут плюсы 2.0, при этом гоферу знать нужно меньше, а платят больше
>>2133294 Что-нибудь новое будет? Какие у дотнета преимущества? Удаленную работу гоферу найти проще, платят больше, учитывая бесконечные изменения в языки и инфраструктуре, проще начать с нуля ковырять Go, чем держать в голове кучу говна, которое МС с пропоузов компьюнити высрали за последние пять лет
>>2133336 >Что-нибудь новое будет? Ты видимо и так знаешь.
>Какие у дотнета преимущества? У го ничего нет. Поэтому преимущество является все куда не ткнешь. Хоть от самого дотнета и инфраструктуры NuGet. Хоть от мощнейшего синтаксиса. Хоть от веб разработки, мобильной, десктопа... до игр. ГЦ с поколениями и много чего еще.
> проще, платят больше А еще волосы шелковистые, фантазер.
>чем держать в голове кучу говна Забавно что кучу говна тебе придется держать как раз в го. Так как у тебя по сути процедурное программирование и тонна бойлерплейта. Си шарп не сложнее котлина или тайпскрипта по фичам, но мантру о сложном ЯП бараны передают из уст уста.
>>2133161 >Спринг еле еле обгоняет джангу Ну спринг медленный и жирный, как и сама жаба, никаких секретов тут нет, но раз в энтерпрайзе его активно используют, значит сверхбыстрые сервера им не нужны. Если есть какие-то супер критичные участки, то можно взять для них быстрый как понос С++ и написанный на нем drogon или Go. Но сейчас уже появилась GraalVM, а вместе с ней и Quarkus и Micronaut.
>>2133161 >Ты серьезно считаешь всех этих монстров тырпрайза достоинством джавы
Да, ведь жаба сейчас тоже позиционируется как монстр тырпрайза. У того же спринга отличная документация, куча примеров и ответов на stackoverflow. Для энтерпрайза нужна не модность и скорость, а наличие хороших доков и стабильность.
>>2133372 >Ты видимо и так знаешь. Мне этого достаточно, чтобы понять ты студент или зеленый без серьезного коммерческого опыта >>2133372 >инфраструктуры NuGet еще MSBuild и IIS забыл как преимущество (нет) подать >>2133372 >мобильной замарин настолько убог, что когда было принято решение переписать все на дарт, никто не был против >>2133372 >десктопа... до игр. ГЦ с поколениями и много чего еще. слишком толсто, даже не буду комментировать >>2133372 >но мантру о сложном ЯП ты из 2014? если каждый день открывать студию и создавать новый проект на 50 строк кода, то конечно же простой
когда займешься чем-нибудь реальным аля распиливания монолита на webforms \ перевод проректа на nullable reference types тогда поговорим
>>2133384 Ты в курсе что джава быстрее го? А так где пишут на С++ точно язык с ГЦ не возьмут, тем более го. Где вам это говно заливают? Надеюсь ты троллишь, а не такой тупой.
>>2133403 Ну, GC у джавы действительно более продвинутый, чем у Го. Но гошка потребляет памяти ощутимо меньше и рантайм у нее куда более легковесный, чем JVM. Другое дело, что сам по себе Spring тяжелый и неповоротливый, а основной контейнер сервлетов - Tomcat, использует под капотом довольно старый механизм выделения потоков в пуле под каждый запрос. С легковесными потоками из Loom наверное какой-нибудь прирост производительности может и будет за счет того, что можно будет создать 10к виртуальных тредов разом, а планировщик сам будет раскидывать их по реальным потокам. Но это не точно.
>>2133410 >Но гошка потребляет памяти ощутимо меньше и рантайм у нее куда более легковесный, чем JVM. Память дешевле процессора, зачастую джава съедает то, что может ускорить (оптимизирует). Но по большей части виноваты раздутые приложения. Например у нас приложение жрало ~20мб без кэша, ну поставил ты ограничение в 30мб хипа, ну будет тебе чаще собираться мусор. Фактически ты бы заплатил памятью за процессор, так как процесс сборки это тоже вычисления. А дай такому приложению 5гб, сборка мусора будет запускать только по праздникам и все будет летать. В джаве ты можешь настроить так ГЦ, чтобы сэкономить на камне.
В общем я к чему, в свое время, в какой-то версии го (не помню уже), поменяли ГЦ на отклик ~10мс. Естественно это не далось бесплатно. Гц фактически быстрым, но очень частым. Хотя тупой маркетинг выдавал это как новую эпоху. Но в реале это сожрало у нас ~15-30% процессорных ресурсов.
Не знаю оставили ли они выкрученное latency в ГЦ или нет, но тогда язык мы сразу дропнули. Вот такой вот уровень, я даже представить боюсь, чтобы завтра в джаве вышла обнова которая руинит проц хотя бы на 10%, это был бы мировой скандал. Вот и понимай уровень языков.
>>2133447 В жаве можно какие угодно эксперименты ставить не в лтс релизах, и никакого скандала. Даже если в лтс, то бухтеть начнут только после окончания поддержки предыдущего лтс
>>2133436 А потом мы открываем настоящие тесты на настоящих приложениях и видим пук и среньк. Специально представлены настоящие сервера gin и родной гошный, ибо у всех других обрезан http, то есть, это не настоящие веб сервера, а манипуляция рейтингом
>>2133480 На го хардкорь не хардкорь, все равно сосет, не помогает. Ты читал сорцы с сайта benchmarksgame-team? Или статью на хабре как автор всех послал и анально огородился. Это самый последний сайт по объективности тестов.
Почему все говорят, что в го нет исключений? А как же panic и recover? Понятно, что это плохая практика и вообще такое не стоит никогда использовать, но если сильно хочется исключений, то почему бы и нет?
А в го есть оператор goto? Он ведь очень полезный и многое решается с его помощью гораздо проще, чем без него. Но все или почти все от него отказались почему-то.
>>2133861 Есть. >>2133864 В некоторых языках есть break labels, в других пориджи могут высрать лямбду и в ней делать ретурн, ну а петухонщики страдают.
>>2133878 >ограничивается только циклами Ну гото с ограничениями, нах такое нужно не понятно. Гото ведь охуенная тема, какой то петух-теоретик высрал, что нинужно, остальные подхватили.
>>2135768 Раз упомянул, значит, уже проанализировал, так что и делать будешь ты. Больше спринтов не будет, это последний, дальше водопад. Задача на 1 человеко-день,
>>2136834 Го позволил мне заново полюбить шарфик и понять, что он не так уже и плох, даже на фоне того, что я уже пишу на нем много лет и синтаксис приелся.
>>2137159 Узнаешь что половина треда это стебущиеся тролли. @ Интеллект мозга не достаточно чтобы переварить реальность. @ Бессознательное перехватывает управление и включает режим агрессивной защиты, экранируя восприятие. @ -"Ааа, Подрыв пуканов у залетных, ггг ну тупые."
>>2136612 Зато LocalContainerEntityManagerFactoryBean читается хорошо, в отличие от названий переменных и структур в стиле Си. Только в си нечитаемые имена изначально пошли из-за того, что там было ограничение на количество символов в названии.
>>2137350 > Зато LocalContainerEntityManagerFactoryBean читается хорошо говноед, уебывай в свою парашу. Тут скиловые пацаны, не плодящие сущности без надобности. Я могу открыть любую часть реализации языка и стандартной либы и она мне будет понятна сразу. В жава же придется проблевываясь продираться через абстракции шизов, не умеющих программировать.
>>2137357 Ну и как тебе, сразу понятна логика структур, которые вроде как за горутины отвечают. g и m блять. Хорошо хоть комментарии есть, а не как в хедерах STL.
>>2137357 >В жава же придется проблевываясь продираться через абстракции шизов, не умеющих программировать
Ну, во первых программирование с абстракциями уже давно доказало свою пригодность для некоторых отраслей в IT. Во-вторых если открыть исходники жавы, то абстракций там немного. Есть конечно и абстрактные классы, и интерфейсы, и наследование, но настоящие абстракции это про спринг и прочие энтерпрайзные фреймворки.
Java - стагнирует, держится только за счет гигантов, которые реанимировали его по средствам openjdk (этого говна им еще на век хватит).
Kotlin - на серьезных щах писать новый язык поверх стагнирующего jvm, где все другие прокси языки уже скукожились - это странно, но смогли.
Go - пытается кого-то удивить в 2021 асинхронщиной (и дженериками, лол). Язык микросервис, язык if err != nil
Rust - пытается и так сложное системное программирование засунуть в рамки борроу-чекера, а то, видимо, программистам и так скучно, им надо еще больше ограничений в коде, чтобы они не выражали своим мысли, а просто боролся с кодом.
Js - вместо создания удобного функционального языка, где у тебя были бы только данные и алгоритмы (и никакого лисп-синтаксиса!), они все таки пропихнули в него ООП. Получилось терпимо, но блин node.js это какое-то издевательство уровня студенческой лабораторной работы. Вам повезло, если нюхаете его только во фронтенде.
Python - до сих пор при копипасте слетают отступы. Постоянно "не такой как все" синтаксис, даже если идею стыбрили из вне. Засунули тоже классы, но криво. Теперь у вас и классы и словари, живите с этим. Язык дико любим инфоцыганиями, которые до сих пор неплохо доят вкатывальщиков. В узких кругах называют не питоном, а"вкатоном"
PHP - еще один стагнирующий язык, который убили тем, что в него засунули полный синтаксис джавы. Зачем динамическому языку ООП и тем более интерфейсы, мало кто ответит (они реально их использовали даже когда не было хинтов на типы). Как бы всем не было больно это осознавать, но язык по прежнему хорошо приносит деньги и занимает 80% интернета.
C# - удобнейщий на сегодня фулл-ООП язык, в котором есть конструкции на все случае жизни. Имел бы статус лучшего языка в мире, если бы начал перекатываться в опенсорс еще лет 10-15 назад, когда жабу начало колбасит. К сожалению МС умеет делать языки и платформы, но не умеет вовремя прыгнуть в нужный вагон. Язык, которого вам хватит на все задачи (от машинного обучения, до игр и вебассембли). Одно из самых быстрых асинхронных веб решений (ASP.Net) поддерживаемое самим разработчиком - MC, а не просто тестовая зарубка для бенчей techempower. Но не самый популярный язык ввиду выше описанных причин. в
>>2137789 >на серьезных щах писать новый язык поверх стагнирующего jvm >C#, имел бы статус лучшего языка в мире Ты или трусы надень, или крестик сними, шизоид.
>>2138062 Только шарфик, жаба там забуксовала лет 10 назад и выглядит как топорное говно. Есть большой шанс наступить в такое легаси, что ЕЕ покажется вкуснятиной.
Если ты кабанчик, капай в шарфик, не пожалеешь. Универсальный язык. Если же любишь чистить канализации от древнего вонючего кода и получать за это чуть больше - то конечно джава (можешь еще и котлин накатить, чтобы удвоить удовольствие от канализации).
>>2138197 А в чем смысл их вообще делать? Сейчас не 80-ые, что бы люди в блокноте без автокопмлита сидели. Вон на питон какой-нибудь можно глянуть, очень мало сокращений в 1-2 буквы и не уходят в шизу абстрактных фасолин-синглтонов.
>>2138070 Плюсую, языки похожие до смешения, только на жабе написанно говна на 30 лет, а шарф майки раздувают во что-то неведомое. Осталось в стандартную библиотеку засунуть удаленное управление дверьми только. А, ну и говно-ооп. Шоб как у людей.
>>2133864 >Пориджи Пчел, лет через 30 все будет написано на ГОвне, а мы будем сидеть тут и обсерать котлин++ потому что как это блять квантовые переменные? Че за говно собаки? Нее, надо шоб как раньше было.
>>2138358 > ну и говно-ооп Конечно, ведь процедурное программирование это ноу-хао семидесятых годов. Очень было писать большие системы в 1000 строк кода на процедурном языке, чем этот ваш спагетти-код
>>2138205 >ЕЕ покажется вкуснятиной Легаси древнее ЕЕ почти не существует в природе. Учитывая, что первый выпуск джавы состоялся в 1995, а ЕЕ - в 1999, в РФ ты точно ничего старше ЕЕ не найдешь. Может, конечно, какие-нибудь сервисы для взаимодействия с кодом на коболе, но не более того. Сейчас уже спринг везде.
>>2139680 Спринг уже сам легаси. Поскорее бы этот тупиковый тренд "продолжать жрать дедовское говно" закончился и начался золотой век микрофреимворков.
>>2140890 Вместо спринга надо тащить 100500 микрофреймворков и долго ебаться с их связыванием воедино. За это могут топить только те, кто не пишет ничего кроме рестконтроллеров.
>>2143073 А нахуя они? Их высрали в языках, где треды слишком дорогие, чтобы можно было запускать их на каждый чих, а в го создавай горутины хоть тысячами.
>>2143177 Асин/эвейт высрали чтобы избавиться от колбэк хела или promise-like стиля, потому что асинхронщина без асинков выглядит как говно. Это чисто синтаксическая хуйня. Корутины чисто перформанс хуйня. Жаль что мало где додумываются совместить эти две вещи. Через каналы конечно возможно, но слишком многословно как то, что основной посыл синтаксиса с асинками нивелируется.
Насколько подходит ваш этот go для комерс-сайтов уровня хуяк-хуяк и в продакшн? Сам js'ер, но о ноде слышал разные страшные вещи, смотрю вот альтернативы и все не могу понять, может ли go в эту нишу вместо скриптовых языков?
>>2145846 Не хочу специализироваться только на фронте вернее, не хочу с кем-то кооперироваться. >Нагрузок у тебя, очевидно, никаких нет Тем не менее, выбор не такой большой для маленьких проектов, если исключать ноду, php, python (не могу жить без скобочек), а ооп-монстры кажутся избыточными - вот и думаю насчет присоединения к вашему стану. По сути сейчас выбираю между Node и Go. Вопрос количества вакансий не стоит, ибо для меня разработка скорее хобби и шабашки.
>>2145862 Под твои задачи на го придется писать слишком много кода для того же самого результата. Я бы такое на тайпскрипте делал. Но на го тоже можно, никто не запрещает. Попробуй и оцени сам, мне уже за пол года продакшен разработки уже всё вполне привычно и понятно, а остальные языки начинаю забывать
>>2148343 Контекст - это собственно контекст выполнения задачи. Отличным примером его использования я вижу логирование, у тебя есть один сервер, который множеством потоков выполняет множество реквестов одновременно. Как тебе понять, в рамках какого запроса ты пишешь что-то в лог? Джависты на этот счет не парятся, у них один системный тред полностью забирает обработку конкретного запроса, поэтому такие вещи как request id они просто пишут в глобальную thread local переменную и всё. В го так не получится, поэтому для проброса любой фигни, значимой для конкретного контекста выполнения и используют контексты. Туда пишут id текущего юзера (в рамках которого выполняется запрос), ид запроса, урл запроса, всякие флаги, реквест-локал кэши если есть и тп. И к примеру внутри логгера достают их перед записью, чтобы ты мог нагрепать себе конкретный лог.
Ну и для отмены оно тоже используется. Предположим, породил ты кучу ассинхронных задач, долгих запросов, расчетов и тп. Как останавливать будешь, если надо всё отменить? Как раз через контекст и пошлешь сигнал отмены. Классический пример Ctrl+c, как правило при получении этого сигнала программа просто отменяет верхенуровневый контекст, а потом всё по цепочке gracefully завершается
>>2148560 >Джависты на этот счет не парятся, у них один системный тред полностью забирает обработку конкретного запроса Хуя себе заблуждения. Ты там как, в нулевых застрял, дед?
>>2148560 >Туда пишут id текущего юзера (в рамках которого выполняется запрос), ид запроса, урл запроса, всякие флаги, реквест-локал кэши если есть и тп. И к примеру внутри логгера достают их перед записью, чтобы ты мог нагрепать себе конкретный лог. С этим у меня как раз проблем нет. Как хранилище данных контекст я вполне себе представляю. Я не понимаю, как работают дедлайны и таймауты.
>>2149309 >как работают дедлайны и таймауты В основном используют в нетворкинге, чтобы пользователь например долго не занимал открытое соединение. Deadline - передаёшь ему время когданужно "отменится", например: время.Сейчас + Час2. Timeout - передаёшь время, через которое нужно "отменится", например: время.Час2.
>>2148580 Он может контекст треда менять, если ты об этом, но не может обрабатывать одновременно несколько потоков в одном треде одновременно, без смены собственно контекста треда. Ну и не вспоминая про корутины, это другая история
>>2149568 Компилятор неявно расставляет елды в точках прерывания корутины. Это при вызове локов, ио операций и ещё какого то говна. Gosched для явного вызова елда.
Почему в Go большинство забивает на структуру проекта? Каждый лепит, как хочет. Хотя казалось бы есть какой-то принятый стиль (cmd, api, pkg, internal, вот это вот все). Стоит вообще париться и придерживаться этого стиля? Или забить и делать отдельную структуру под проект? Не заулюлюкают потом остальные, при просмотре гитхаба?
>>2150373 Если ты делаешь потенциально крупное приложение - тогда да, тебе просто необходимо размазать всё это говно по DDD слоям. А если же ты пилишь либу на 3.5 экспортируемые функции то тебе нахуй не нужно структуру создавать, хуячишь всё в один файл, в соседний пару тестов и готово. Ну что вы как маленькие. Вы бы еще удивились, что в npm-е у пакетов с одной функцией (is-odd, is-array и тому подобные) нет структуры.
>>2149553 По тому что когда у тебя горутина паникует - у тебя весь процесс падает, тебе каждую панику нужно обрабатывать в своей горутине. Если у тебя больше одной горутины а у тебя почти всегда это так то паники превращают код в минное поле.
>>2133447 > Например у нас приложение жрало ~20мб без кэша, ну поставил ты ограничение в 30мб хипа, ну будет тебе чаще собираться мусор. Фактически ты бы заплатил памятью за процессор, так как процесс сборки это тоже вычисления. А дай такому приложению 5гб, сборка мусора будет запускать только по праздникам и все будет летать. Енджой йор 2-х минутные паузы приложения каждый цикл GC. Или у вас в Жабе принято рестартить такие сервисы вместо GC?
>>2151276 Если у тебя нет утечек, то фулл гц никогда не вызовется при таком соотношении потребляемой и доступной памяти, поэтому больших пауз не будет. Плюс в жяве есть канкарент гц, которые практически без stw работают.
>>2151435 >Если у тебя нет утечек, то фулл гц никогда не вызовется при таком соотношении потребляемой и доступной памяти
>Плюс в жяве есть канкарент гц, которые практически без stw работают Такой функционал сейчас почти во всех ГЦ языках. Так и в Го. Только нужно алоцировать меньше чем успевает чистить коллектор.
>>2151511 >Если бы в го было так же В смысле было бы? У го конкурентный СМ, также можно настроить флаг GOGC The GOGC variable sets the initial garbage collection target percentage. A collection is triggered when the ratio of freshly allocated data to live data remaining after the previous collection reaches this percentage., можешь даже его выключить нахуй, но не думаю, что это будет хорошая идея.
Везде своя структура... где-то есть общее, но в целом ебошут на похер, как им нравится. Это же ты приходишь на новый проект, а там структура вообще тебе незнакомая. Кто-то сервисы по MVC пилит, кто-то просто handlers и роутер, а кто-то чисто handlers и прямо в них и роуты объявляет и логика, и отображение.
>>2153224 Ну в го нет классов, но ты можешь сделать из любой структуры практически полный аналог класса, добавив туда методы и приватные поля. Чем принципиально отличается абстрактный класс от обычного? Только тем, что мы не можем создать его инстанс. Ну вот и отлично, просто не создавай для него конструктор, а там где он нужен как родительский класс - просто встрой его в свою структуру и вызови внутри констуктора уже родительской структуры на нем какой-нибуть Init() метод. Тоже мне, проблему придумали.
>>2154117 Когда понадобится, использую. А сейчас я читаю официальную доку с официального сайта, которая объясняет, как писать на го эффективно. Там в начале написано, что чтобы писать хороший код на го, надо думать в стиле го. Я так понял, стиль го - переизобретание колеса, жесткая экосистема со вшитым в язык тест фреймворком, менеджером зависимостей и форматтером, а также позволение авторам языка делать то, что не позволено простым смертным (сигнатура append). Ну гугл в своем репертуаре.
>>2154115 Забили на стандарт. Которого нету. Везде своя структура проекта, свой взгляд на написание кода. Это бесит, потому что придешь на новое место работы и полностью с нуля приходится структуру проекта осваивать. А не как в Java/C++/C#/любой другой нормально стандартизированный язык, исходный код тут, интерфейсы, заголовки тут, внешние библиотеки тут, конфиги, утилиты там и т.п.
>>2154173 Ты учти, что нынче каждый крупный банк возомнил себя дохуя айти фабрикой. У них куча сайд проектов, которые не связаны с основной деятельностью.
>>2154173 >>2153772 В тиньке вроде что-то связанное с инвестициями и трейдингом писали на Го. А так вообще го не особо популярен в банках, кроме как для клауд инфрастурктуры. Тут стоит понимать, что на го переписывают в основном проекты с пыхи/питона, которые в банках были не сильно распространены.
>>2155999 >>2156000 А обратную совместимость, я надеюсь, сломают полностью? Ну, чтобы больше никаких interface{} не было?
А вообще как получилось, что в гугл проник роб пайк со своими идеями языка программирования, который явно выглядит несколько устаревшим, как будто бы его действительно придумали в 80-х - начале 90-х для Plain9? Почему в гугле не решили сразу пилить язык с дженериками?
>>2156019 > А обратную совместимость, я надеюсь, сломают полностью? Ну, чтобы больше никаких interface{} не было? Пока не ясно, но надеюсь они сами будут использовать предложенный ими же подход для модулей - продублируют пакеты с /v2/ путем импорта. А иначе действительно хуйня получиться - комьюнити должно делать так, а мы будем делать по-другому.
>>2156019 > А вообще как получилось, что в гугл проник роб пайк со своими идеями языка программирования, который явно выглядит несколько устаревшим, как будто бы его действительно придумали в 80-х - начале 90-х для Plain9? Почему в гугле не решили сразу пилить язык с дженериками? Там не всё так просто, у того же пайка в его предыдущих языках (в тч и в Plan9) дженерики были. И никто из команды го включая самого пайка не утверждал, что они не нужны и что их никогда не будует. Их так долго не впиливали потому что это пиздец какой сложный вопрос технически, что и как делать. Если сделать втупую, то получится хуево как в джаве, а этого никому не хочется
>>2156146 >то получится хуево как в джаве Так в джаве получилось хуево как раз потому что дженериков изначально не было, а потом их прикрутили таким образом, чтобы не нарушать обратную совместимость, ну и получилось говно, хоть и рабочее. В сишарпе, кстати, дженерики появились где-то в 2005 году, примерно спустя год после того, как в жабу привезли дженерики. Только в шарпе сломали обратную совместимость (все равно тогда шарпом мало кто пользовался еще) и благодаря этому дженерики существуют в виде отдельного типа, а не просто в виде каста к Object, как в жабе. Если Го пойдет по пути сохранения обратной совместимости, то будет очень больно на протяжении следующих лет 10-20 (или сколько там го проживет)
Какие нужны знания чтобы найти работу джуна или сразу мидла в го?
Есть полтора года опыта. Год бэка на питоне в облачном проекте и пол года лоулевел си асм си++ тоже околооблочный проект. Есть профильная вышка, с1 англ и хорошо шарю за алгоритмы как бонус. С большего знаю разные технологии, которые могут пригодиться на бэке типа орм, докер, селари, рэбит, кафка, кубер, дженкинс. Го пока знаю только на уровне базового синтаксиса. Как учить го и что учить в добавок чтобы можно было получить работу без даунгрейда в зп (сейчас есть сотыга)?
>>2157193 >Как учить го Если честно, то хуй знает, со временем опыт сам придет, если будешь пилить всякие штуки. Ну попробуй для начала сделать аналоги редиса или селери, потом рефактори до бесконечности. Дополняй проэкты плюшками в виде чистой архитектуры, версионного конфига, разные апишки прикрути.
>>2157754 Там лежит то что в теории можно будет использовать в других прожектах. Подключение к бд, обработка ошибок сервиса или бд, логгер. Ещё многие туда кладут utils, но по мере роста проекта, этот модуль обрастает говном.
>>2157775 То есть если я захочу экспортировать некоторые пекеджи/функции, то мне их разместить в pkg? И потом в других модулях, после go get я смогу их использовать? А если мне нечего экспортировать, получается мне не нужна pkg папка?
>>2157193 Подучи гошные примитивы синхронизации, особенности работы каналов и горутин и вообще работу с асинхронностью и можно смело идти на собеседование, все равно там большая часть вопросов не про го будет хотя и попадаются люди, которым важно чтобы ты на память знал какие операции с nil слайсом/каналам/мапам приводят к панике, какие - к вечному локу, а какие - просто отрабатывают
В любом случае смелее идти на собеседование, гоферов до ввода дженериков на много меньше чем вакансий для них.
>>2158035 > какие операции с nil слайсом/каналам/мапам приводят к панике, какие - к вечному локу Без знания этой хуйни ты мне прод положишь, так что спрошу обязательно. Ещё могу спросить про копирование мап и слайсов, про то, как работают интерфейсы и про шаринг памяти между горутинами и скоупами, короче все места, на которых чаще всего подрываешься при написании кода
>>2158654 А нахуя так рекламить этот недоязык, что аж на уровне руководства у нас предлагают переписать микросервисы на го, чтобы они стартовали быстрее?
>>2158662 Ну, микросервисы на го действительно стартуют быстрее, чем на джаве со спрингом. О том, что джаву можно обновить, спринг поменять на кваркус и компилить бинарники через грааль никто не говорит почему-то.
>>2157775 Так весь код, который не в internal/* может быть использован повторно из другого проекта импорчу себе в кубер-операторы всякие rook-и, helm-ы, promtail-ы и прочие графаны, и что ты мне сделаешь? Я в другом городе
>>2158683 Хуй знает, лень полностью расписывать: Логику с IsInit можно заменить на sync.Once sql инъекция в conn.Query rows не закрывается компилировать url, для подключения к бд, через конкатенацию - хуйня, используй pgx.Config.
Ну и поле Cost я бы сделал uint. А так там ещё дохуя всякой ебалы связной с синхронизацией в connPool.
>>2158683 На мой взляд тут хуита просто по тому что все в одном файле. Я даже проекты такого размера размазываю по слоям всё равно рано или позже придется, а так можно малой кровью сделать
>>2158683 А какого хуя название БД, АйПишник и порт базы захардкоженый? И что произойдет с сервисом, когда в пуле закончатся открытые соединения? Нахуя вообще самому с соединением работать, если вам гугел дал *sql.DB ?
>>2158665 Cейчас бы, чтобы написать МИКРОсервис надо тащить миллион говнофреймворков, вот это кайф. Какого писать на языке в котором на стандартной либе нихуя не напишешь? перекатился с явы на го 4 года назад
>>2158756 Ты давай, стрелки не переводи. На го вполне можно написать вебсервер на одной стандарной либе. Единственное приодеться все-таки импортировать драйвер базы данных, но такие вещи и не должны быть в stdlib. Я не знаю как там в вашей яве, но в питоне и ноде так нельзя без, по факту, того, чтобы по пути не написать свой недофреймворк
>>2158890 У меня сейчас нет винды под рукой, не могу сам попробовать, но тут вроде написано как собирать https://portapps.io/doc/faq/#how-does-it-workне факт что оно вообще соберется, с учетом того что это ноунейм репо с 2 звездочками
>>2158930 >Единственное приодеться все-таки импортировать драйвер базы данных, но такие вещи и не должны быть в stdlib. А почему веб сервер должен быть?
>>2159262 >Неиспользование этого веб-сервера в проекте означает нецелевое применение языка. Я не использую стандартный веб сервер net/http в проекте, в котором подразумеваются http подключения, я неправильно язык юзаю?
>>2159279 Делали язык простым, чтобы можно было посадить макак и они сходу смогли начать писать код, а такую банальную вещь, как стандарты написания кода и хотя бы структуру проекта не предусмотрели. Хотя я уверен, что в самом гугле, естественно, описана четкая структура проектов и есть свои стандарты, а комьюнити? нахер оно нужно это комьюнити.
>>2160539 >>2160417 sun. - это internal API. Его использовать нельзя. com.sun. - тут уже по всякому может быть. Но хттп сервер вряд ли диприкейтнут, хотя стоило бы, он уже слишком древний и им вряд ли кто-то пользуется.
>>2158754 >писать на языке в котором на стандартной либе нихуя не напишешь В джаве вполне рабочая стандартная библиотека. Хттп сервер, хоть и древний, есть. Хттп клиент тоже. Асинхронщина есть. Бери и пиши что угодно. Можешь хоть на сокетах писать. Другое дело, что ни в одном языке полностью на стандартной либе никто не пишет, все тянут фреймворки.
>>2160415 Вот ты приходишь на проект, где не MVC нихуя, а какое-то шизоподелие местного тимлида и вдруг резко начинаешь ебашить по MVC? И вот на каждой работе, вместо привычного MVC, будешь видеть очередной велосипедный шизовысер.
>>2160733 Сам будь типлидом и ебашь как хочешь. Почему ты решил, что MVC - это silver bullet? Если прям течешь по этому, то просто ищи проект с go-kit.
>>2159182 Я думаю по тому что это слишком популярная задача, да и много в стандартной либе пакетов, которые зависят так или иначе от net/http >>2159207 Ты сказал?
>>2159182 Стандарт http дополняется раз в 100500 лет, а баз самих по себе много, так еще и релизится каждая чуть ли не раз в пол года. А в стандартной либе код так быстро не эволюционирует. Но это моя шизотеория, может есть и другие причины
Шалом. Дебажу, значит, бинарь на го, и просто не могу понять систему с этими паками, прошу помочь: ипортируется с гитхаба клиент, он помещается в GOPATH Потом внутри этого клиента идет вызов метода, который лежит в одной папке с ним. Когда запускаю бинарь (на другой машине) он вываливает рантайм панику, выводит путь где он ищет файл с методом, но путь то выводит от той машины, на которой я бинарь собирал.
Я, очевидно, что то не так делаю, как я понимаю все компоненты должны собираться в один бинарь. Или не так?
>>2163282 В теории ты мог импортнуть либу, которая через exec вызывает другой бинарь. Но скорее всего ты просто в импорте абсолютный путь написал. Ты go mod используешь?
Почему в говяхе не выделяют тесты в отдельную папку, как в других языках? Ну или хотя бы делали по отдельной папке с файлом+юнит тестом, что в туториалах, что в популярных либах жутко раздражает эта мешанина файлов.
>>2163467 Да у этих гоферов вообще проблемы со структурой файлов. Как будто они пересели на Go и у них резко удалили из головы все правила хорошего кода. От этого и боюсь начинать писать на Go, думаю тоже отупею.
А какого это дэбажить го в scratch контейнере в кубере? Вот я сейчас на питоне пишу и могу в любой момент зайти в ui облака, найти вмку, залезть туда по ssh, с docker exec влезть в один из контейнеров, через vi открыть файл с исходником и отредачить его добавил логгер в нужное место и рестартнуть котейнер. И всё. В вмке теперь логи из проблемного места. Билдить ничего не надо. Редиплоить доже. Зависимости специальные для дэебага тянуть не надо. Тулзы никакие не нужны. А у вас как? У вас ведь даже vi нет в контейнерах. Лежит всего один бинарь, к которому даже дебагером не приатачиться т.к. дэбагера нет. Только если снаружи контейнера в процесс влезть, но это извращение какое-то. Плюс когда оно у вас не на вмках, а на кубере, то нужно ещё понять в какой контейнер на какой ноде нужно лесть. Вот вы бедняжки
>>2163655 >зайти в ui облака, найти вмку, залезть туда по ssh, с docker exec влезть в один из контейнеров, через vi открыть файл с исходником и отредачить его добавил логгер в нужное место и рестартнуть котейнер Ох ебать, хорошо что ты не хирург.
>>2163655 > через vi открыть файл с исходником и отредачить его добавил логгер в нужное место и рестартнуть котейнер
Чет каким-то пиздежом попахивает, у тебя же контейнер образ с уже сбилденным кодом запускает и если ты что-то поправишь внутри контейнера, то при следующем рестарте оно перетрется. Тут только образ пересобирать, либо в рантайм лезть, либо на горячую код менять, как в божественном эрланге.
>>2163422 go команда это по факту всё что тебе нужно. Но в большинстве случаев в проектах используют Makefile'ы. В исходниках самого языка - bash/bat/rc скрипты для сборки/тестирования
>>2163655 Ну никто тебя не заставляет scratch использовать, у нас все рантайм контейнеры на альпинах как раз ради юникс утилит, местами даже дебианы есть. А дебаг в кубере это действительно проблема, т.к. там нужно собирать специальный образ для этого, прокидывать порт для общения дебагер-приложение, может еще что-то в этом духе. Я никогда так не заморачивался, мне вполне хватало логов + локального дебага отдельных кусков. Нагуглил тут гайд, ничего непонятно но очень интересно https://dchaykin.medium.com/debugging-a-go-service-in-kubernetes-f1dd48865e1d
>>2163755 Подэфолту изменения файловой системы остаются даже после остановки контейнера. Чтобы пропатченный файл сам откатился нужно контейнер в флагом rm запускать
>>2163655 Как-то слушал какого-то челика из рамблера, он рассказывал, что они в сервисе делали специальный апи эндпоинт, если его дернуть, то на ограниченный период времени в логи сыпалось вообще все что можно.
>>2163925 Да естественно это надо делать через рантайм конфиг, etcd например заюзать или в переменную окружения флаг проставить. Править код это нонсенс и сработает только для всякой динамодрисни вроде питона.
>>2163925 Решено. Начну учить го и сделаю либу для этого. Чтобы можно было оборачивать интересные методы в декораторы и их вызов вместе с аргументами в трэйслог писался как самый нужный юзкейс. И чтобы он был унаследован от дэфолтного логгера и в любом месте мог заменить его. И главное чтобы был новый метод, который временно сетит новый логлевел и по таймауту возвращает обратно.
>>2163965 ага, а теперь загугли, что такое OpenTracing и Jaeger и скажи, чем твой велосипед, работающий только в рамках одного сервиса в микросервисной архитектуре и не имеющий интерфейса, лучше?
>>2164498 Из-за того что ей 45 лет она стала хуже работать? Может и от С отказаться (и дропнуть суппорт всего что на нем написано) просто по тому что язык старый? Какое-то сверх-поридживое мышление
>>2163467 В других языках каждый файл это отдельный неймспейс. Не нравиться - не ешь. А вообще зачастую достаточно просто для пакета foo тесты размещать в пакете foo_test, чтобы обращаться к пакету foo как из другого пакета. А как файлы на диске лежат - вообще поебать, на самом деле, если неймспейс другой.
>>2164542 Если бы я и отказался от мейка (хотя я всё еще не вижу причин, разве что ради поддержки винды), то только в пользу pure-go сборщика, нахуй-нахуй эту вашу жабу.