GO (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего. Батарейки почти как в питоне.Дженериков нет пока что, эксепшенов нет, просто смирись.Обработка ошибок получается охуенно через http://github.com/pkg/errors | в приложениях обычно можно просто паниковать на ошибках.HTTP-сервер для убер максимального маня-хайлоада: https://github.com/valyala/fasthttpДля вката в Go читай Донован, Керниган "Язык программирования Go", https://www.golang-book.com/, книги из списка https://github.com/dariubs/GoBooks, а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSwВкатываемся в эпоху докера, микросервисов и адово кошерной сетевухи.Предыдущий: >>1360787 (OP)
Пишу петпроджект, и часть его функциональности решил вынести в отдельную, обособленную либу. Должен ли я использовать vgo на одном или обоих компонентах, или и так сойдет?
>>1453041Вопрос из разряда "должен ли я использовать composer, если вынес часть кода в либу на php", "должен ли я использовать npm, если вынес часть кода в либу на nodejs" и так далее.
>>1453159Я придерживаюсь противоположного мнения. Но ты волен говнокодить как тебе душе угодно, особенно в петпроджекте.
>>1453147Я не совсем правильно сформулировал вопроc. У меня есть библиотека и приложение, которое ее использует. Библиотеку я хочу выложить на гитхаб, я думаю она может быть полезна не только мне. У обоих компонентов есть свои внешние зависимости, про которые, собственно и идет речь. На данный момент это просто исходники в GOPATH, при том у некоторых пакетов разные комиты на моем домашнем и рабочем компьютере, и все работает одинаково, тесты и там и там проходит. Но если я жестко задам версию зависимости, и пользователь моей либы сам будет использовать эту же зависимость, но другой версии - это же приведет к увеличению как размера исходников, так и бинаря.Или я что-то не правильно понимаю?
>>1453491В бинарь попадает только использованный код, это раз.Го модули (как и dep, к слову) нужен в первую очередь тебе самому, для того, чтобы управлять тем, какую именно версию твоей библиотеки ты используешь. Объясню на примере, чем плоха схема с GOPATH:У тебя есть пакет alpha, который использует пакет beta. Ты сделал go get github.com/.../beta и выкачал себе его.Потом у тебя появляется пакет gamma, который тоже использует пакет beta. Ты пытаешь скомпилировать gamma и ловишь ошибку, потому что обнаруживаешь, что у пакета beta вышла новая версия, и gamma использует beta v2.Ты радостно перескачиваешь beta и обнаруживаешь, что gamma начал компилироваться - но теперь пизданулся alpha, потому что он писался так, что использует beta v1.Получается вот как-то так:В случае с gopath ты получишь очевидный конфликт, потому что никогда не знаешь, какую именно версию beta тебе сейчас нужно иметь.Соответственно, для этого тебе и нужен менеджер зависимостей: там как раз и написано:alpha <- beta v1gamma <- beta v2И теперь го будет использовать нужные версии библиотеки (там можно даже не версии, а просто коммиты указывать, по желанию).
>>1453497Но это было в принципе про то, нахрена тебе нужен менеджер зависимостей. Когда начнёшь иметь больше 1 проекта в одной системе или попытаешься съехать на другую и обнаружишь что просто go get качает что-то некомпилируемое (потому что go get берёт тупо последний на текущий момент коммит с гитхаба) - поймешь.Теперь про разницу между dep и го модули (vgo). Классический уже подход (привет композеру, npm-у и т.п.) - это когда менеджер зависимостей качает тебе исходники в папку vendor прямо в твоём проекте и поэтому два не связанных друг с другом проекта не конфликтуют (у каждого свой vendor). Но это засирает систему использованием одних и тех же пакетов кучу раз (особенно npm этим грешит).Поэтому гоферы придумали го-модули. Они хитро качают пакеты в одну единственную папку на всю систему, но делят их по версиям: GOPATH/pkg/mod/{vendor name}/{package name}/{commit}/...И это по идее должно снизить нагрузку на систему.Плюс, vgo даёт тебе возможность в нескольких пакетах в рамках одного и того же приложения использовать один и тот же внешний пакет разных версий. Но это очень редкий случай, я таких почти не встречал.
>>1453499>Но это засирает систему использованием одних и тех же пакетов кучу раз (особенно npm этим грешит).Собственно по этому у меня такой вопрос и возник, по тому что я привык, что в каждом проекте node_modules, который занимает очень много. И у каждого пакета, который я явно указал есть свои зависимости, и в итоге это приводит к тому, что всяких лоудешей и jquery в проекте по 5 разных штук, при том что я их и не добавлял в package.json.Но про vgo ты меня убедил
>>1454463Никогда не понимал людей, которым нужны идеи для пет проекта.Ты блять можешь написать ВСЁ. Интернет полон документацией, схемами, мануалами.Тебя что, ничего в жизни не интересует?Напиши свой крипто-мессенджер, аналог телеграмма (чтобы end-to-end шифрование). Сделай его распределённым, p2p.Напиши свой игровой движок, поиграй с друганами в какую-нибудь самописную простенькую херню, 2д шутер.Напиши свою базу данных, заставь потенциального работодателя охуевать от твоей крутости.Напиши свой почтовый сервер, используй его и понтуйся перед братюнями.Нагенерил тебе за полминуты.
ГОспода, есть вопрос как изящнее реализовать без наследования "заглушку".Программа получает данные, и парсит. Парсинг и всегда один и тот же, а получать данные можно по сети, а можно, в отладочных целях, читать из файла. В плюсах я бы отнаследовал новый класс, перекрыл функцию получения данных, и создавал нужный класс - с получением данных по сети или с чтением из файла.Фактически надо, чтоб была возможно в одном единственном месте закоментить одну строчку, разкоментить другую и запустить прогу.Тк работа идет со структурой, я придумал засунуть в эту структуру указатель на нужную функцию, но может есть более идеологически правильные способы?
>>1454628> Ты блять можешь написать ВСЁ. Интернет полон документацией, схемами, мануалами.Например.То, что дальше - ГОвно.
>>1454628> Никогда не понимал людей, которым нужны идеи для пет проекта.Видимо потому, что у тебя от пет проекта другие ожидания, нежели у других людей. Некоторые, может, хотят что-то полезное или релевантное к их деятельности, чем они реально пользоваться будут, а не упражнение по написанию велосипеда в стол. В глубине души они чувствуют, что код это блоат и программисты должны сидеть в газовых камерах.
>>1452808 (OP)>> Обработка ошибок получается охуенно через http://github.com/pkg/errorsКто-нибудь шапку за последние лет 5 обновлял?Во-первых, этот пакет уехал в STD - "errors".Да и не часто им пользуются, есть же juju/errors от Canonical.
>>1457324Я её почти не меняю, лень заморачиватьсяАлсо, до сих пор в своих проектах просто возвращаю ошибку, без дополнительного контекста
>>1457340Исключения не нужны, они рушат поток исполнения программы, замедляют код и делают его менее очевидным.(Зря они пошли на поводу у публики и добавили паники).
>>1457356Какой поток исполнения они рушат, почему они рушат что-то там у гоферов?>замедляют кодГо и так относительно медленный, что-то среднее между джавой и питоном, до раста там как до китая.>делают его менее очевиднымМы тут всем коллективом по полу катаемся, то есть if err != nill {...}Делает код читаеме??Исключение плохи лишь тем, что их нет в го, как и дженирики, это тупо поинт дизайнеров языка, которые не захотели парится и сделали просто палку, возложив переброску ошибок на руки программистов (как и много другое) собственно сейчас я смотрю научились заворачивать какой-то контекст и даже стектрейс. Я тебе уверяю, еще 2 года назад, меня пытались забанить за то что я доказывал что стектрейс очень важен, а мне говорили нет и вообще я тролль. А я лишь хотел сделать язык чуточку лучше
>>1457358>>1457360Просто учите матчасть. Я не могу в комментарии вам уместить содержание нескольких книг и десятка статей.
>>1457358Через 5 лет, когда им добавят эксепшены и дженерики, они будут с ними носиться, как с откровением, мол, какой же го замечалньный язык, инфа 100%. А пока Пайк говорит нинужно, значит нинужно.
>>1457388Дженерики нужны, не представлял, как без них можно жить.Но как выяснилось можно, но не очень комфортно.Их добавят.А исключения - дичь. Вот по ним точно не скучаю.
>>1457390> они будут с ними носиться, как с откровением, мол, какой же го замечалньный языки тут же, после того как стало известно что добавят дженерики:Дженерики нужны, не представлял, как без них можно жить, ...можно, но не очень комфортно.Суслики, вы неисправимы)) По прежнему не берем людей у которых в резюме го указан, это просто эталонный идентификатор невменяемости в ИТ
>>1457388>>1457410>>1457415>эти кормящие толстого школьника дебилыЯсно.>>1457428До сентября осталась неделя.
>>1457428Из-за таких как ты, вполне себе хорошая идея языка, имеет херовую реализацию. Если такие как ты не ели бы говно, а требовали, то язык бы развивался и за эти года стал лучше.Требовали же пакетный менеджер и дженериков - получили? Да! Поэтому самое худшее в языке - это вы говноеды.
>>1457612Ты школоло просто, но отвечу, просвещайся.-Отсутствие вирт машины.-Полностью асинхронный код, но пишешь как обычно.-Кроссплатформенная компиляция.-Единый fat-бинарник со всеми зависимостями-Отстуствие говно ООП, который трудно изучать и сопровождать, потому что б-логика размазывается по десяткам и я видел сотням классам.-Настоящие структуры.-Стековые переменные, а не как в жабе почти все в куче....и еще что-то, что я может не помню.Так что, мой юный друг, идея языка то хороша, а вот дизайн плох и будет он плох пока суслики не перестанут жрать "лень разработчиков" и не потребуют развитие языка.
>>1457633Это все есть и прекрасно можно делать в плюсах.>Отстуствие говно ООП>б-логика размазывается по десяткамТо есть тебя надо силой заставлять не говнокодить.Быдло as is.
>>1457607> хорошая идея языка, имеет херовую реализациюЯ бы сказал наоборот, Го - отвратительнейшая спека языка с охуенной технической реализацией (gc, гоморутины, компайл в бинарь).
А нужно ли то, без чего отлично программируется?В любом языке есть проблемы, тупые места, дискомфорт, места для улучшения.
>>1457976Пустой интерфейс лучше чем дженерики, после этого даже как-то непривично на других языках писать
>>1457997Чем питоньяче говно:if isinstance(x, X1Type):...elif isinstance(x, X2Type):...Лучше type assertion'a в golang
>>1458003бля хоть кто-нибудь из крупных компаний использует котлин в проде для бэка? с чего весь этот хайп воокруг него
>>1458005>бля хоть кто-нибудь из крупных компаний использует котлин в проде для бэка?Какая-то компания гугл использует в малоизвестной мобильной разработке
>>1458013>>1458015я специально в сообщении указал для БЭКА. то что на нём android-приложения хуячат и так понятно
>>1458105Лучшая джава.Если вы не хотите писать на топорной джаве, и вы явно не альпинист - то котлин ваш выбор.Котлин - это сишарп в мире jvm
>>1458082бля, да на котлин бэкенд-разаботчика даже вакансий нет. в лучшем случае идёт вторым языком к джаве и то таких вакансий 40 штук в Москве. короче понятно, опять нексколько городских сумасшедших напридумывало себе какую-то хуйню в голове.
>>1458174Сомнительно.Джетбрейнс конечно рвет жопу что бы пиарить свой велосипед, но создать фанатиков котлина у них вышло только в отсталом постсовке.Да и поздно они выкатили эту шляпу, когда они начинали пилить язык - да, сахар! Больше сахара! Ещё больше сахера!Но у современной джавы тоже появились приятные упрощения, и котлин нахер никому не нужон.
>>1457976Не знаю, зачем вам нужны эти дженерики. Обычно все примеры их использования сводятся к "Зато можно написать функцию сортировки универсальную"
>>1458181Котлин вроде как и универсальный язык, но по факту стал языком разработки под андроид.>>1458003Тебе решать: разработка под мобилки или разработка бэкенда
Охуеть, понавылезали тут, в моём программаче.Вот за что я люблю двач, так это за то, что он помогает понять: вокруг тебя целая куча идиотов с дерьмом в голове. Обычно они молчат и ты об этом не догадываешься, а тут они высказывают что-нибудь вида> Го и так относительно медленный, что-то среднее между джавой и питоном, до раста там как до китая.и хоть стой, хоть падай.блять, относительно медленный для чего? с чем сравнивать? хорошо распаралеленный алгоритм на го будет скорее всего быстрее. линейные вычисления на специализированном железе затащит джава защёт JIT под особенности конкретной тачки. да даже для питона есть уже pypy и прочая хрень. Уже давно почти все языки работают очень шустро, а медленно работает конкретная бизнес-логика говнокодОтдельно люблю читать, как люди кидаются какашками вообще в любой стек, относительно своего, чтобы показать, что они - такие илитные и пишут на "единственном правильном языке" (с).В итоге всё сводится к тому, что решает не язык, а навык программиста решить бизнес-задачу так, чтобы её как можно дольше не пришлось переделывать. Можно писать на джаве, потому что удобненько, а выносить узкие места в отдельные маленькие сервисы на го, потому что дикая производительность из коробки. Можно всё на хаскеле херануть, если у тебя в голове команде сидит 100500 функциональщиков.Срача по поводу дженериков вообще не понимаю, если не строить сотню слоёв абстракций, а писать AS IS (так называемый go way), то они нужны только, действительно, когда нужно тривиальную операцию типа сортировки написать для разных типов. За свою практику встречался с такиими задачами 2.5 раза, с такой частотой можно и скопипастить.Имплементируй я всякие стратегии, абстрактные фабрики стратегий и так далее - да, было бы больно. Но го попросту не для этого, не надо на нём монолиты писать. Пишите блять конкретный код для того, чтобы расшить конкретные узкие места в вашем проекте и будет вам счастье.
>>1458177> идёт вторым языком к джавеДа потому что, пойми ты, котлин это и есть вторая джава. Котлин на бэке возникает, когда команда джавистов в какой-то момент начинает новый код писать не на джаве, а на котлине, при этом оставаясь на тех же джава-фреймворках, в той же jvm-экосистеме. И джавист может пересесть на котлин буквально за несколько дней, поэтому нет смысла в вакансии что-то требовать как обязательное.
>>1458194Опять, пиарщики (долбанные партизаны) джетбрейнса пускали слухи, что котлин чуть ли не станет официальным андроид языком. Но хер там плавал.Полторы калеки вероятно юзают, но мне как-то не попадалось.
>>1458289Так стал же, причем теперь приоритетныйони убивают джаву, но вместе с джавой улетят на дно все jvm языки
>>1458289Хз, все знакомые джависты, кто юзал котлин, ссутся кипятком и говорят, что это действительно лучше и удобнее. Понятно, что просто сахар, на всё-таки.
>>1458364А лет пять лет назад ссались по скале.И с тем и другим поиграли, а потом эти языки остались местячковыми решениями.
>Мужики, у вас там дженериков нет, лямбд нет, коллекций почти нет, элементов фп нет ну м.б. они и нахуй не нужны да и вообще язык stuck in the 80s>Да не, давайте лучше введем бинарные и литералы))))) и еще суффикс для комплексных чисел)))000)))0)гавкнул чет
>>1458420Ну не на жабе же микросервисы делать. Покупать для каждого круд-сервиса по vps (или серваку)Нету больше хорошей ниши.Питон и всем динамическое тормозит, раст и С++ не для бизнес-логики
>>1458515Спокойно делаем микросервисы на элике. Основная посуда на рельсах летает. Сейчас вот через неделю на 6.0 перейдем. Вопросы?
>>1458515Не преувиличивайте, у меня был отличный проект на основе spring cloud, ни единой проблемы.Джава, если умеючи, отлично живёт в контейнере с софт лимит 128мб.
>>1458540Лол, покупаешь себе облачко с 512мб, а у тебя уже 128 нету, просто жаба ради жабы покушала.На го с 128 можно весь пет-проект в памяти держать, или как минимум 6-8 микросервисов с дробилками поднять. А тут у нас целый спринг поместился.>Джава, если умеючи, отлично живёт в контейнере с софт лимит 128мб.Ага, урезаешь хип, начинает чаще ГЦ срабатывать, под нагрузкой все это ускоряется и тупо с каскадным эффектом крашится. За то в 128 поместился.
>>1458527Да можно на брендфаке поднять, мы же говорим про эффективное использование железа, а не то что вы на сервер смогли рельсы поставить.
>>1458420Ну давай разберём по частям тобою написанное:>дженерикине нужны, выше уже объяснили, что пустые интерфейсы ничем не хуже>лямбд нетв го есть лямбды, имбецил>коллекций неттут тоже обосрался, в го есть основные коллекции, а остальные не нужны>элементов фп нетты долбоеб? функция в го - это объект первого класса, то что нет map reduce не означает, что в языке нет элементов фп>Да не, давайте лучше введем бинарные и литералы))))) и еще суффикс для комплексных чисел)))000)))0)если тебе эти вещи не пригождаются в каждодневной работе, то это прежде всего твои проблемы, макака, иди джсоны перекладывай
Накину "вдохновений" вам в тредhttps://github.com/search?l=kotlin&o=desc&q=stars%3A%3E1000&s=stars&type=RepositoriesЕсть такой подход, как смотреть количество проектов по звездам. Не лучший, конечно показатель но все же определенную информацию можно достать.Понятно, что в низу списка тысячи полузаброшенных реп и их считать не будем поигрались и забыли, далее идут само-пролайканные репы малых контор и просто сомнительные малопопулярные решения. Но! Вот где-то с 1000 можно уже начинать считать достойные библиотеки для языка, которые люди сами отметили. Так давайте посмотрим количество этих условно-достойных либ.И что мы видим?см картинку Go почетно среди топов и имеет 1200 условно-хороших отмеченных людьми либ. При том что язык достаточно молодой.У раста 193 репыУ котлина 147 репыВ общем, го не просто ворвался в мир разработки, он еще умудрился заполнить себя кодовой базой за такое время.
>>1458641>>дженерики>>не нужны, выше уже объяснили, что пустые интерфейсы ничем не хужеЕщё первой версии не было, а на отсутствие дженериков пинали.Сошлись на том, что они "в принципе" нужны, но в 99% случаев потребность закрывается интерфейсами, причем не пустыми.Если вам не хватает, то скорее всего у вас проблемы.
>>1458661на котлин даже самы разрабы поленились либы писать, поэтому язык имеет чуть ли не самую скудную стандартную библиотеку
>>1458667Имхо, лучше уж интерфейсы чем wildcard или рекурсивные дженерики которые в реальности еще не все джависты до конца понимают или умеют их готовить
>>1458687Без либ он просто обертка для джава-тестов (как и груви)Видимо создали решили сделать ставку на маркетинге, а не либах. Думаю скоро они поймут на какую лошадь поставили.
>>1458692У котлина есть фатальная ошибка.Нужно иметь бэграунд джавы, чтобы комфортно кодить на котлине. Без косяков джавы и вообще принятых там обычаев, совершенно не понятны многие странные решения.У тебя есть дата классы. Думаешь круто, а потом приятно рофлишь что нельзя пронаследоваться в них.У тебя запрещен return в лямбдах, но есть вариант return@label, в итоге в сорца смотришь как все скачут - очень прагматично.Еще больше путаницы привносят inline функции со своим returnDSL - мне показались притянуты за уши. Да можно, но достигаются они таким способом, что проще билдер через точку сделать и выглядят всегда однобокаКакая жесть с первичным конструктором и вообще треш какой-то, который заканчивается init, потому что кончилась магия. Человеку не из джава мира, эту магию трудно объяснить. хотя по честному все же можно сделать как в жабе без первичного конструктораЗакрытые классы - просто венец ООП архитектуры.Нет обёрток над базовыми структурами типа списка [1,2,3] мап {k:v}, но есть костылизация.Компаньёны - трешКорутины, вроде пытались сделать лучше, без await, но получилось как всегда.
>>1458641>в го есть основные коллекцииИз всех коллекций для нас важнейшими являются list и map прям как Ларри Уолл завещал.А множества, сортированные коллекции, очереди с приоритетом - это все буржуйские излишества и пролетариям такое не нужно.
>>1458876Вы ведь в курсе, что есть множество вариантов реализация различных структур данных?Какие-то языки решили реализовать "в среднем" лучший вариант, но по факту, когда тебе нужна хитрая структура - пишешь его сам. Для нужного тебе интерфейса.Зачем раздувать стандартную библиотеку?
>>1458876>А множества, сортированные коллекции, очереди с приоритетомНа ваших питонах и жабоскриптах с мапами и списками справляются. Все эти коллекции больше нужны чтобы было что спрашивать на собеседование, чем реальная потребность возникает в коде.
Поясните за деплоймент в докер. В го же йоба-горутины, которые по-хитрому запихиваются несколько штук в один системный тред. А докер всю эту годноту заворачивает в еще один слой абстракции, разве это хорошо?
>>1458974Я даже не знаю, что сказать, кроме как "и что?".Это не создаёт никакого оверхэда на уровне приложения.
>>1458989Не путайте чувака.У докера есть вполне определённый оверхед на сетевое взаимодействие и работу с файловой системой, это легко считается и замеряется.А вот оверхед на горутины и треды действительно находится на уровне статистической погрешности, потому что докер - это движок контейнеризации, а не виртуализации. Он не эмулирует виртуальную машину, а запускает внутренние процессы в той же машине, просто урезает им доступы и видимость, чтобы добиться изоляции. Соответственно, так как машина та же самая, то и оверхеда нет почти, если ты сознательно не урежешь контейнеру ресурсы.Но это если говорить про докер на линуксе. Потому что докер на маке и винде запускается в отдельной виртуальной машине с линуксом - в таком случае оверхед, конечно, есть. Но это узкий кейс, когда ты запускаешь контейнер у себя, локально. На сервере у тебя, очевидно, будет линукс и нативный докер, так что всё норм будет.
>>1459001А пруфы можно? У io тоже минимальный оверхэд.У сети только в режиме nat, но есть возможность вынести сеть на хост. (Вроде так, я не админ - настройками сам не занимался)
>>1459015У io всё зависит от используемого storageDriver'а, читай про device mapper и прочие *FS в документации докера, там описаны их особенности.К примеру, если ты пишешь в монитруемую директорию а у тебя BTRFS, то файлы не попадут сразу на диск, они промежуточно пишутся в журнал, импакт очевиден.
>>1459015А выносить сеть на хост - это очень спорное решение, потому что ты тут же теряешь изоляцию между контейнерами. И ладно, если у тебя только два с половиной контейнера локально, а когда у тебя кластер на проде - то ты от неймспейсов и прочего не уйдёшь уже никуда.
>>1458951какое джунское имхо то что большое кол во задач где не критична производительность можно решить с помощью мап и листов это очевидно (в пыхе массивов и объектов), но это не отменяет тот факто что в более узких задачах где прохождение по массиву будет намного дольше чем по линкид листу не говорит нам о том что все реализуемые типы данных нужны только что бы дрочить на собесах
>>1459229>где прохождение по массиву будет намного дольше чем по линкид листу Схерали?? Одинаково будет
>>1459297на самом деле лучше будет у массиваа на добавлении и удалении ?очевидно что на 10 - 20 - 30 элементах это будет малозаметно , но например на 100кк 100ккк и тд , думаю суть ты уловил анчоус
>>1459308Блин, только не говорите, что вы не можете написать линкед лист. Нахрена он в стандартной библиотеке? Он что по десять раз на дню нужен?
>>1459308Быстро переобулся. Думаешь не заметили?Приведи мне пример "а на добавлении и удалении ?" при фантастических "100кк 100ккк" Хотя не нужно, очевидно ты какой-то школьник или взрослый с мозгами школьника, уноси свои 100ккк
>>1459229> какое джунское имхо > прохождение по массиву будет намного дольше чем по линкид листуЛюблю, когда петушки с гонором обсираются.
>>1459318В том и дело что любые структуры данных, отличные от списка и мапы, надо брать из внешних либ, где они хотя бы поддерживаются, а не заброшены в стд-либ, где для галочки существуют.Ну или написать самому, раз 100кк и 100ккк данных, это повод научиться программировать самому
Как же я благодарен тому, что в го нет полиморфизма, но есть композиция в структурах.Как же это ООП говнище настапиздела
>>1459412Это же очущуенно!!!Да мои маленькие наблюдатели, там везде стринги, так и задумано, это просто пример, в реально жизни так дробить не имеет смысла из-за возможных пересечений данных
>>1459488Не ври, нет такого листа, "где прохождение по массиву будет намного дольше чем по линкид листу"
>>1459497А, извини, не заметил сразу. Тогда вопросов нет, Роб Пайк - пидорас, не стал добавлять такой лист. Совсем ебанулся со своей простатой языка, ну его нахуй, пойду в котлин, там дела с коллекциями лучше обстоят
>>1458884>Зачем раздувать стандартную библиотеку? Потому что такую роскошь как: map[string]int может себе позволить только стандартная библиотека. А остальным как известно: дженерики не нужны.>>1458951>На ваших питонах и жабоскриптах с мапами и списками справляются.Так их никто и не позиционирует как высокопроизводительные языки. У Питона вон попытались выпилить GIL - а потом сказали, да ну нахер нам чистота кода интерпретатора важней.А Го как раз позиционируется как язык для высокопроизводительных приложений.
>>1459621С питоном отдельная тема.Никто в него не вливал кучу денег, а текущие кор-разработчики не могут придумать, как избавиться от Гила, без чувствительного замедления однопоточного кода.
>>1459645Ну там были энтузиасты которые выпилили GIL https://www.artima.com/weblogs/viewpost.jsp?thread=214235 .jsp - какая иронияДа, для однопоточной программы стало хуже, но я уверен, что если бы тогда его все же впилили - сечас бы уже все проблемы были давно решены и у Питона была бы полноценная многозадачность.
>>1459645Блять никого не напрягло, что долбоеб выше высрал полную хуйню насчёт того, что в питоне не коллекций?Во-первых, лист в питоне может играть роль очереди и стека за счёт методов pop и append, во-вторых, помимо листа и словаря есть ещё такие встроенные коллекции как set, frozenset и tuple. Также, в стандартной либе питона, внезапно, есть пакет collections, который предоставляет ещё несколько коллекций (самые часто используемые из него - deque и Counter).Наконец, в стандартную либу входит ещё пакет heapq, который включает в себя очередь с приоритетами, пакет bisect, позволяющий поддерживать коллекцию в упорядоченном состоянии, и пакет array, предостовляющий чистые строготипизированные массивы (почти как в си).В итоге имеем довольно приличный список коллекций, которого хватит в 90% ситуаций, не хватает только, пожалуй, одного связанного списка
>>1459621Лол, го и есть "питон которого не смогли разогнать", одно только йоба наследие циклического импорта о чем говорит да, иногда циклические зависимости нужныДженерики и правда не нужны, это просто такой вот другой стиль, где не нужно чтобы компилировалось несколько минут.Что действительно нужно, так это улучшить обработку ошибок и пакетный менеджер, все.
>>1459653Зачем в питоне вообще какие-то там коллекции? Ты на скорости простого цикла просядишь больше разницу между ними увидишь
>>1459740Забавно, но из-за неявно конвертации между новым и старым, можно даже реально так заюзать ну конечно не стоитhttps://play.golang.org/p/qSCvqQA-yyh
Важная концепция для новичков.1. Горутины в го, после переключения (остановки и продолжения работы), могут возобновить работу в другом системном потоке. Собственно как решит планировщик.Это исключает перегруженности одного системного потока, как например в js
Для шапки2. Сам факт переключение горутин происходит после вызовов функций (то есть вызываешь функции и планировщик решает что-то).3. Если нужно вызвать переключение (планировщик), например если работаете с цифрами в цикле и не вызываете функций, то можно вызвать runtime.Gosched()
Визуализация работы горутин.Обычная работа:https://play.golang.org/p/3Wq5eHzX-YoРабота с вызовом планировщикаhttps://play.golang.org/p/8FvLwQ4IqoSРабота с эмуляцией блокирующего вызова (например запрос в базу данных)https://play.golang.org/p/waSYlXHdy0h
>>1459755Вряд-ли это самая полезная и важная информация. А что такое перегруженность системного потока, что так мешает Js, я вообще не понял.>>1459758Переключения горотин происходят не только после вызова функций и ручного вызова goshed. Но вопрос интересный, так что предлагаю погуглить и разобраться самому.Но как по мне, это скорее вопрос для собеседования, в работе ни разу не приходилось думать об этом.
>>1459735Только нужно не смотреть их, а читать пдф приложения (хоть там и куча опечаток) и ходить оттуда по рекомендованнм ссылкам.
>>1459779Нужно простое изложение работы горутин и чем они буду лучше, скажем в js. Надо показывать достоинства языка новичкам, а то что информация тебе полезна или нет, это малоебучий факт.>вопрос для собеседованияНадо знать базис, иметь представление как работает все, причем тут твоя работа и собеседование.
>>1459823При том, что эти обрывочные фразы - непонятное говно или гуглтранслейт. Про goshed вообще неправильно, ты не вкурил.
В шапке должны быть перечисленны плюсы го и его фичи.Статическая строгая типизация, компилируемый, быстрый, рождён быть многопоточных, быстрая компиляция, что там ещё?И три ссылки. На интерективный тур и на два курса на курсере. И 50 оттенков го с хабра.Все.Если материал для новичков, то надо показать преимущества, а не грузить непонятными вырванными из контекста фразами.
>>1459829Компиляция, статик типы...Это скорее характеристики языка, а не фичи. Про фичи как раз забывают (хотя бы что с сетью удобно работать или что куча батареек). А про корутины - они видят какую-то магию и им не понятна чем эта магия от других магий отличается.Новичков - я имел ввиду в языке, а не людей учащих программирование.
>>1459839Да, лично мне понравиламь первая часть.Никаких рассусоливаний по основам, а сразу практический подход. И домашки прикольные были.
>>1459721>Дженерики и правда не нужны1. А для map их зачем сделали?2. Без дженериков у тебя внутренние структуры данных смогут работать только со ссылками. А так у тебя тот же []int хранит именно int, экономия памяти и перфоманс.
>>1459847Именно потому что контейнеры у тебя уже параметризованы, дженерики тебе и не нужны.Придут обязательно жабо кодеры и начнут заворачивать абстракцию абстракций и мы получим не поддерживаемый говнокод ~60-80% кода на жабе ничего полезного не делаютУ тебя нет полиморфизма на структурах, больше как для контейнеров тебе дженерики и не нужны кроме базовых операций для числовых примитивов, типа сложения, вычитания. Но это можно и ручками написать.Реальность:Среднестатистический программист очень тупой, он видит дженерики у себя в жабе и думает они так же войдут в совершенно другой язык. Ему просто привычно, он верит что будет сидеть на прагматичном языке клепать абстракции и контейнеры, а не решать структурно задачу.
>>1459853И да, дженерик, в жабе а больше я это слово нигде не слышал, у С/С++ другая парадигма, обобщенная, они очень бестолковые и мало что можно сделать из-за затирания типов.
>>1459853>>1459854Ну и быстрая компиляция, мне куда важнее типов. Я не хочу ждать по 15-600с старта каждый раз, я готов писать руками или юзать приведение типов.Самый лол, что ни раз видел в жабе, когда человек не справлялся с дженериками или не хотел вилкарды юзать с рекурсивными дженериками, тогда тупо прибегали к Object типу и юзал условно договоренность по типам. Это называют джентльменской типизацией, джентльмены всегда смогут договориться
>>1459853>Именно потому что контейнеры у тебя уже параметризованы, дженерики тебе и не нужны.Вот только тех же контейнеров тут map + array и все. Ни очередей (вставка/удаление в начало массива очень дорого), ни сортированных деревьев. Я конечно понимаю что для среднестатистического гофера префиксное-дерево адский матан и вообще не нужно, но есть задачи где это нужно. И приходится писать руками и постоянно кастить.>>1459853> больше как для контейнеров тебе дженерики и не нужныЭто тебе не приходит в голову, где они ещё может быть полезен контроли типов на этапе компиляции. Но это не значит, что таких вещей нет.>>1459854>И да, дженерик, в жабе а больше я это слово нигде не слышалНу с твоим кругозором все ясно. Дженерики это частный случай обобщенного программирования и оно есть практически во всех современных языках не кроме го понятное дело. Где-то оно очень мощное типа List, Haskel, Scala, C++, где-то не очень Java, C#. В Ada дженерики появились в 1977. И только в Го дженерики не нужны.
>>1459904>что для среднестатистического гофера Го юзаю меньше недели, на жабе я 10 лет. Писал такое и в таком, что тебе и не снилось. О чем ты вообще? даже пописал без дженериков немногоЕще раз для контейнеров есть interface{}, с той разницей что на жабе тебе каст компилятор пишет, а тут сам ручками. В итоге тебе обещают какую-то гарантию типов, но замен дают костыльное обобщение Одно говно, на другое разменяли, но второе чтят как святынуСмирись - го специфически-статически типизированный язык. Ты же блядь к питонистами не приходишь и не тыкаешь что у них типов нет? Хера ты до го докопался? Golang != JavaИ да, типизация не панацея и в реале ловит где-то 1-5% ошибок в коде. Кто писал сложный домен те меня поймут не редко сложный домен реализуют через динамические языки. Поэтому вообще какие-то тут претензии, кто и где вам голову забивает про панацею статических типов?>C++>Дженерики Ой, иди уже отсюда, дженерики он в С++ увидел.
>>1459841https://rutracker.org/forum/viewtopic.php?t=5655300Вот хороший курс про особенности языка, от этого же автора есть книга, а мылору просто сделали видеометодичку по синтаксису и в конце мини-обзор как сделать простенькое веб-приложение.
>>1459967Я его давно смотрел, но не помню "видеометодичку", а помню как с места в карьер предложили написать конвейерную обработку, потом учили пользоваться поофайлером и в дз предложили оптимизировать программу.
>>1459924>Ой, иди уже отсюда, дженерики он в С++ увидел. Вот же тупое мудило, даже фразу целиком прочесть не может>Дженерики это частный случай обобщенного программирования и оно есть практически во всех современных языкахВ С++ шаблоны, в Lisp макросы, в C# дженерики, и только в Go - хуй вам.>Еще раз для контейнеров есть interface{}, с той разницей что на жабе тебе каст компилятор пишет, а тут сам ручками. В итоге тебе обещают какую-то гарантию типов, но замен дают костыльное обобщениеА что же Го не использует interface{} для map и array?>на жабе я 10 лет. Писал такое и в таком, что тебе и не снилосьЖабацелоп в треде, всем присесть и два раза ку.
>>1460046>А что же Го не использует interface{} для map и array?Потому что может себе это позволить. У тебя уже просто походу бомбить, раз ты уже просто херню несешь>только в GoЗачем в го дженерики? Нужны ли дженерики в Python?Почему не компилируется PHP? Почему в java нет функций? Почему пи равен ~3.14? Почему долбаебы продолжают воевать с ветряными мельницами??
>>1460046У меня на яйцах растут большие черные волосы, а у го нет дженериков. Есть вещи, которые нам не нравятся в этой жизни думаю тебе бы тоже не понравились эти волосы, раз не нравится отсутствие дженериков. Поэтому хватит звездеть и пошли писать код на Go, который хорошо утилизирует ресурсы системы.
>>1460084Слишком хорошо, gc съедает добрую четверть проца.Как будто мало подходов для работы памятью, кроме сборщика. Ленивые мудаки.
>>1460093Там и так все топорно, ты еще хочешь чтобы на руки программистов передали память. Кто хочет страдать, те идут в раст или с++.
>>1459982Задания может быть там интересные, но подача материала просто мегахуевая. Лектор говорит очень сбивчиво, упуская кучу важных деталей, один из самых худших преподов, с которыми я сталкивался.P.S. Можно ещё похвалить с дополнительные материалы в конце каждой недели, помню там штук по 10-20 ссылок на годный вспомогательный материал.
>>1460216Ну тебе не обязателен партнер, ты можешь сам одеть кожаный костюм, взять плетку, закрыться в комнате и начать массировать борроу-чекер
Сусланы, кто-нибудь может мне объяснить причину и профит от использования каналов в этом примере? https://github.com/gorilla/websocket/blob/master/examples/chat/hub.go Почему бы не напрямую вызывать методы h.register(client) и т.д ?
>>1460615> независимоПогоди, hub.Run() запущен через горутину, writePump/readPump тоже. То есть каждный коннекшон асинхронен в i/o операциях. Или я ошибаюсь?
>>1460605В данном примере никакой. Профит будет тогда, когда у тебя будут воркеры, горутины которые запущены заранее и периодически что-то делают и блокируются, ждут. Понятно, что такой горутине ничем кроме как каналом инфу не сообщить. В этом примерно ровно никаких профитов от использования канала нет, точнее он есть, поскольку run это воркер, и отдать ему сообщения иначе не выйдет. Однако вызвать а перед этим создать метод broadcast будет ничем не хуже, а даже лучше для читаемости.
>>1460911Есть один момент. Язык может уже накопить какое-то количество ответов, поэтому количество вопросов может уменьшаться.Так же играет роль документация, на молодом языке чаще опытные программисты, которые будут нырять в доку, чем спрашивать. Спрашивают обычно ленивые копипаст-кодеры.Данная статистика больше показывает насколько язык становится попсовым.
>>1461550Не вижу принципиальных преимуществ по сравнению с xamarin или react native.Хайп, как он есть.
>>1461744А что о них думать? Сырые.Так и не получилось их заставить работать с приватными битбакет репами.
Для каких сфер работы стоит учить Го?СердцеКирилл хочет в геймдев(мёртв в России), разум говорит целиться туда, где можно выйти на $200k/год и больше(facebook, google etc) и не жалеть потом.Джава, С, С++, Го... всё не осилю же.
Котаны, а что нынче модно спрашивать на собеседованиях по го?Я что-то подумываю менять работу и хочу подготовиться а все же знают, что на собеседованиях спрашивают то, что к работе отношения не имеет, так что придётся вспоминать и/или учитьЯ спрашивал у знакомых девелоперов, они говорят, что в основном спрашивают про общие практики и архитектуру, потому что го слишком простой и каких-то тонкостей типа настройки JVM или арифметики указателей там нет.Но у меня такое чувство, что на собесах должны спрашивать какое-то хитрое дерьмо типа сборки мусора, планировщика, как устроены хэш-таблицы внутри мапов, как работают под капотом строки и всё такое.
>>1462323Я спрашиваю о многопоточном программировании в целом, примитивах синхронизации, о scheduler, как он понимает, что можно переключить активную горутину, о том, как устроены каналы.Парочку вопросов из 50 оттенков го, вроде работы со слайсами. Банально, но некоторые валятся, все гошные wtfки нужно знать, их не так много, сравнительно с другими языками.
>>1462369>их не так много, сравнительно с другими языками.Мне говорили что у гоферов есть стокгольмский синдром. Многие костыли в го фатальны и их правда надо знать пишу на го и не страдаю стокгольмским синдромом
>>1462323> сборки мусора, планировщика, как устроены хэш-таблицы внутри мапов, как работают под капотом строкиУ меня это и спрашивали. Еще про устройство слайсов и каналов, работу с многопоточностью. Ну и про базы данных, микросервисы и тд
>>1462369>Я спрашиваю о многопоточном программировании в целом, примитивах синхронизацииЧто на эту тему почитать стоит? Или всяких гоферских конф хватит?
Объясните своими словами, зачем нужен Go BuildID. Это зонд от гугла или он выполняет действительно какие-то полезные функции? Какие?
>>1462412>у гоферов есть стокгольмский синдромА то! Ты попробуй их спросить почему в map[int]string дженерики есть, а у тебя только interface{}.
>>1462926Ну вот честно, нахуя они нужны в чистом виде? Вот если подумать? Ну все равно же все пишут <T extends Somethingable> в 99% случаев дженериков, потому что лень отдельный интерфейс выделять, так почему не просто интерфейсами всё писать?
>>1462926>map[int]string дженерики естьХорошо что скоро в школу. Это не дженерики, это параметризованный тип, как string или структура, это часть синтаксиса.В го параметризовать нечего, кроме самописных контейнеров и перегрузки функций для нативных типов.>>1462946<T extends Somethingable>Такое не возможно, так как структуры не полиморфны.Это еще одна причина, почему дженерики не нужны.То есть, тупо негде особо их применять жаба дауну это трудно понять вообще
>>1462955>Хорошо что скоро в школу.И в какой класс ты перешел?>Это не дженерики, это параметризованный тип, как string или структура, это часть синтаксиса.И снова наша любимая тема - обобщенное программирование и все-все-все. map[int]string - это обычный пример обобщенного типа раз уж слово дженерик тебя тригерит. Реализовывать его можно по разному, можно в виде type cast как в Java, можно генерацией специализации в рантайме как в .Net, можно генерацией на этапе компиляции как в Rust. Но концептуально это и там и там - обобщенный тип.>Такое не возможно, так как структуры не полиморфны.В Го не полиморфны, в других языках это не так.>>1462946>Ну вот честно, нахуя они нужны в чистом виде? Вот если подумать?Посмотри тот же Stream API, если бы там не было дженериков то call chaining там бы выглядел так уебищно, что это было бы просто не юзабельно.
>>1463111>это обычный пример обобщенного типаЕсли ты смотришь на машину, а видишь капусту, это же твои проблемы, да? Тебе сказали что это, дальше можешь сидеть в своих маня-шизо-фантазиях и видеть в этом дженерики, лол.>В Го не полиморфны, в других языках это не так.Ты уже близок к тому, чтобы постигнуть эту мысль.Если в го структуры не полиморфны, а в других языках полиморфны, значит в го не может быть как в других языках. Да?>И в какой класс ты перешел?В твой.
>>1463117>Если ты смотришь на машину, а видишь капусту, это же твои проблемы, да? Тебе сказали что это, дальше можешь сидеть в своих маня-шизо-фантазиях и видеть в этом дженерики, лол.Если бы ты еще мог аргументировать, чем же map[int]string принципиально отличается от Map<int, string>Но увы, у тебя в голове одна капуста.>Если в го структуры не полиморфны, а в других языках полиморфны, значит в го не может быть как в других языках. Да?Да, в Го есть проблемы с дизайном языка, но гошники упорно защищают их под лозунгом "ХХХ не нужно".Стокгольсмский синдром как он есть.
>>1463128>Если бы ты еще мог аргументировать, чем же map[int]string принципиально отличается от Map<int, string>Вот тебе параметризированный тип, а вот тебе дженерик с джавы, найди отличие.А ты не очень умён, да?>Да, в Го есть проблемы с дизайном языкаДа всем насрать. Люди просто берут инструмент и работают с ним. Но находятся "ограниченные", которые пытаются воевать с языком, с которым даже не работают. Ты понимаешь что ты просто болен, ты еще больнее тех гоферов которые восхищаются языком?В го порядком больше проблем, чем дженерики на 2-3 случая, ради тормознутой компиляции.
>>1463160Не, в видео речь идёт уже не о примитивах. Примитивы, в своей основной массе - это средства, которые предоставляет пакет sync
>>1463422Нет, сборщик мусора и общая неторопливость go делает его не лучшим выбором для дров.Но в учебных целях, писали. К примеру: https://out.reddit.com/t3_9uorh8?url=https%3A%2F%2Fwww.net.in.tum.de%2Ffileadmin%2Fbibtex%2Fpublications%2Ftheses%2F2018-ixy-go.pdf%3Futm_campaign%3DGolang%2520Ninjas%2520Newsletter%26utm_medium%3Demail%26utm_source%3DRevue%2520newsletter&token=AQAAmCFoXc9yDGe9YnKsm4jgMLmK6lKDId9AVAiXsqng-Ozvsy5t&app_name=mweb2xСетевой драйвер с отличным перфомансом.
>>1463147>А ты не очень умён, да?Аргументы уровня /go/>Но находятся "ограниченные", которые пытаются воевать с языком, с которым даже не работают. Ты понимаешь что ты просто болен, ты еще больнее тех гоферов которые восхищаются языком?Я ради прикола накинул дженериков на вентилятор, даже не думал что гоферы так тригернуться. Мне лично в общем-то насрать, я Го учу по фану, всегда могу дропнуть и пойти ржавого учить.
Как распознаётся переменная окружения GOMAXPROCS ?В любом скомпиленном бинарнике существует дополнительный код, который проверяет переменные окружения?
>>1465124С хера ли ему не быть популярным? Отличный и простой язык под свои задачи, умело под капотом утилизирует ресурсы железа?
>>1465124Все валят в го. Джавистов/шарпистов задолбали шаблоны на шаблонах погоняющие шаблоны и тырпрайзности кода.Скриптовики (питон, руби, пыха) устали от медлительности языков, отсутствия типизации, отсутствия нормальной многопоточности.И го радостно и легко отожрал изрядную долю разработки.
>>1465183Джавистов задолбала бизнес логика размазанная по сотни полу пустых классов, где простая логическая задача, становится сложной не сопровождаемой херней, которую хочется только обернуть в другой фасад и забыть.Я надеюсь когда-нибудь это признают антипаттерном, ну а пока я вкатился в го, где те же задачи решают на месте и в лоб.PS Что насчет котлина, то это та же жаба, точнее это сладкая глазурь, которая покрывает собой большой слой джава-навоза и от этого не легче.
>>1465227Как вы меня задолбали, просто в край как задолбали, как видимо и пайка задолбали, как и core-левелоперов задолбали, что они решились таки добавить контракты.Блять, если вы не можете писать используя интерфейсы, и вместо этого суете пустые, это у вас кривые руки и валите из профессии.
>>1465253А кто говорил, что они пряморукие?У меня пустые интерфейсы разве что в обёртке логгинга есть.Почти везде специфичные интерфейсы.+ кодогенерация
>>1465393Дохуя это сколько? Когда я искал в прошлый раз в мск на hh, то было меньше 60. Плюс в большинстве вакансий он шёл как вспомогательный язык к джаве
>>14653931. Как резон переводит код с джавы на котлин, если там интероп? Чтобы тупо получить дополнительное время компиляции?2. Какой резон пилить сейчас на синхроном языке бэкенд? Без асинк/авэйт?И не надо говорить про корутины, которые получилось убого и поддерживаются 1,5 фреймворком. Причем тот же ктор - реально тормозит по теста. Не понятно это корутины или сам ктор.Самое забавно, это вместо await в IDE подсветка асинхронных функций. Такая неявная привязка к правильной IDE.PS Не вижу я роста энтузиазма на бэкенде, но вижу ослабление jvm языков.
>>1465257>Почти везде специфичные интерфейсыТогда придется всегда юзать подобие геттеров и сеттеров для структур.
>>14655231. Очевидно, чтобы упростить время и увеличить удобство разработки. Тут вот все радуются от перехода на Котлин https://www.reddit.com/r/Kotlin/comments/bj5k4m/kotlin_for_backend_development/2.>Какой резон пилить сейчас на синхроном языке бэкенд? Без асинк/авэйт?Зависит от задач и требований, лол.>И не надо говорить про корутины, которые получилось убого и поддерживаются 1,5 фреймворком. Причем тот же ктор - реально тормозит по теста. Не понятно это корутины или сам ктор.Москва не сразу строилась.
>>1465545>Тут вот все радуютсяКак показывает опыт, недалеких в разработке хватает.К сожалению, опытные и профессиональные разработчики чаще молчат.>Зависит от задач и требований, лол.Синхронный веб, это старый высер больших html страниц.Я бы тут 10 раз подумал между каким-нибудь спрингом и джанго. При учете что по производительности они одинаковы эталон жабо-кодинга, сделать фреймворк, который будет тормозить на хеллоу-вордах как динамико-дрисня, даже с JIT>Москва не сразу строилась.Ты видел их решение по корутинам? Это провал.
>>1465610>>1465628Я мимокрокодил и только в подкасте слушал, как разраб корутин хвастался, что не нужно писать await, так как это все равно в иде подсвечивается. Это правда? Это же пиздец, иде-лок и в код ревью в каком-нибудь гитлабе нихуя понятно не будет.
Насколько реально в го вкатиться, ждуном, без знания других языков ? Вакансий для ждунов - 0, в основном требуется переписывать пыхо говно на го.
>>1465642> Это же пиздец, иде-лок и в код ревью в каком-нибудь гитлабе нихуя понятно не будет. А и не должно быть, у тебя код будет выглядеть "плоским".В этом и есть фишка корутин, то что асинхроный код выглядит как синхронный.То что нет async/await или yield это блять - самое меньшее что должно ебать разраба.Лучше чтобы они под капотом все сделали хорошо.
Поясните мне, пожалуйста, почему комьюнити так плохо отнеслось к try пропозалу? Все равно 95% обработки ошибок - это просто сравнение err с nil и ретерн nil, err, без добавления какой-либо дополнительной информации.Неужели так сложно сделать нормальную обработку ошибок? Например, если я присвоил результат вызова функции с значением и возможной ошибкой всего одной переменной - автоматом возращать ошибку в случае ее не nil-овости?
>>1464799Бинарник так-то содержит не только твой код, но и сам гошный рантайм: сборщик мусора, планировщик, всё такое.
>>1465610>Синхронный веб, это старый высер больших html страниц.Но щас до сих пор почти весь веб синхронный, разве нет? Даже если у тебя SPA, и не надо высирать на каждый запрос большие html-страницы, в большинстве случаев на бэке будет обычный синхронный PHP. И изначальная же цель Котлина afaik - заменить жабу (которая всем остопиздела) везде, где только можно, и на это у него вроде бы есть все шансы, че так все доебались до корутин, я хз.
>>1465724Ну давайте ещё вспомним о том, что большая часть интернета на вордпрессе.Это говорит о том, что нам ничего кроме пыхи и ВП не нужно?Уже много лет, мне не попадалось синхронных проектов. Везде микросервисы, асинхронные коммуникации через groc/http/очереди.И без поддержки этого языками было бы грустно.
>>1465724Как только появился аякс, появилась необходимость высирать не 100-300кб html кода, а маленькие json ответы. И тут пришла проблема синхронности, слишком жирно для очень частых запросов. Поэтому речь тут даже не про SPA. Тупо просто пришла другая эпоха. никто не запрещает тебе клепать синхронные сайтики в старой эпохе, но поезд уйдет все равно без тебя>изначальная же цель Котлина afaik - заменить жабуНельзя что-то заменить, имея основу того что пытаешься заменить. Даже когда долго пишешь на котлине, ощущаешь ту же жабу. Иногда даже путаешься.Котлин ничего не меняет, он просто делает чуть удобнее саму жабу а иногда, кстати, делает хуже Жаба и котлин это эпоха тырпразных монолитов, но эпоха ушла и в кровавый пришла эпоха микросервисов. Да, там жабу пытается втиснуться в это, но с виртмашиной, с интерпретацией байткода, с проблемным JIT, с 100500 настроек GC и виртмашины, и тотальной прожорливостью с жирнеющими фреймворками понятно что тут котлин тебе не поможет - это все не так просто.Есть конечно индивиды, которые пытаются сову на глобус натянуть, но это скорее инерция технологий, а не развитие.Отсюда популярность node.js и отсюда относительная популярность го, это языки новой эпохи несмотря на не лучший дизайн языков, у них есть киллер фичи, дающие им бустТак что мысли эпохами и смотри в будущее. Как бы не были круты паравозы, их все равно заменили электровозы.
>>1465750Если бы они сделали котлин на рантайме го, вы бы офигели от роста нового языка. Но, к сожалению, они установили его на паровоз.
>>1465750Эпоха микросервисов "пришла" только в твоих влажных мечтах.Микросервисы - инструмент, который создаёт проблем не меньше, чем решает. А то и больше.Это (по уровню идиотизма), примерно, как заявить, что на си больше никто не пишет, потому, что наступила эпоха джаваскрипта. И привести в пример какие-нибудь diy-приблуды на контроллерах ESP32, у которых внутри прошит забагованный и тормозной интерпретатор js.>Отсюда популярность node.jsПопулярность node.js оттуда же, откуда популярность js.А потом десятки тысяч смузихлёбов перекатились на него с руби.И забурлила дегенератская движуха.>популярность гоНу нахуй.
>>1465862> Эпоха микросервисов "пришла" только в твоих влажных мечтахНу и пили свои монолиты на пыхе/джаве/все равно.А микросервисы и серверлесс уже здесь и захватывают рынок, вытесняя формошлепов. Это очень славно сказывается на зарплатах.
>>1465870>монолиты>формошлеповТ.е., на микросервисах формы не нужны?Всё само работает?Понятно.А что там с транзакциями на микросервисах?Или это слишком сложно, и ну их нахуй вообще?Не нужно верить всякой хуйне, которую смузихлёбы пишут в интернетах, сынок.У них там своя атмосфера.Например, на днях организаторы отменили европейскую конференцию по php, потому, что туда записались только белые мужчины. О чём пафосно рассказали в твиттере.https://2019.phpce.eu/en/https://wptavern.com/php-central-europe-conference-canceled-due-to-lack-of-speaker-diversityТ.е., для них diversity важнее технологий.Ты сейчас втираешь примерно такую же дичь.Я не пишу на пыхе, если что
>>1465862Какое-то "врёти" получилось.Микросервисы дают масштабируемость как по железу, как по софту, так и по человеческим ресурсам.Превосходство нового подхода для кровавого очевидно.Конечно Васяну одиночке это кажется сложным, да и джава маркетинг проел весь мозг.
>>1465891Тяжёлый рантайм.Я, конечно, знаю эстетов, которые и лямбды (awsные) на джаве пишут, а потом мужественно борются с холодным стартом, нехваткой памяти и замедлением работы.Но как-то на го легче выходит.
>>1465891Когда ты крупная ИТ компания и можешь под каждый инстанс сервак подогнать.А еще холодный старт и слетающий JIT радует.И все равно это синхронная херня получается, с синхронным БД драйвером. И не рассказывайте что где-то гитхламе лежит асинхронные драйвера которые использовали 1,5 человека
>>1465931>> Когда ты крупная ИТ компания и можешь под каждый инстанс сервак подогнатьЭм.Наоборот.Когда ты мелкая - купил ещё пару серверов и все ещё долго хорошо. Растет на пару серверов в год и в ус не дуешь.А на масштабе твоя программа съедает не ного больше памяти, и на кластер уходит на тысячи баксов больше в год.
>>1465942Каждый запус jvm кушает 50-150мб озу только на jvmТуда же попадает вся статика под классы и сам jit и мета информация по jitТам же настраиваешь хип, который еще состоит из поколений.Для всего этого нужно нормальное облако, чтобы запустить хотя бы 3-5 сервисовВсе твои бюджетные мечты улитают в копейку.На го запускаешь с десяток сервисов, под размер одного jvm сервиса, приятно урчишь.
Сап, гоферы.Хочу забить на конторы, которые нанимают народ из восточной Европы для экономии.Пробовал собеседоваться в чисто иностранные конторы - до сих пор потряхивает, невероятно сложно общаться с теми, кто ожидает флуент инглиша. А я по грамматике едва upper-intermediate, с явным провалом в общении.Кто-нибудь ищет/собирается искать работу? Давайте поможем друг-другу, соберём по максимуму вопросов и задач для интервью, и потренеруемся отвечать их на ангельском.Фейкопочта: [email protected]
>>1466044Мм? Ну ок. Скопировал в нужный.Но я размышлял, что гоферам будет легче найти точки соприкосновения.
>>1465982Бесполезное занятие, у всех разные вопросы. Плюс в европах сильный акцент на личных качествах, их реально сильно заботит как ты впишешься в коллектив, что ты за человек и т.д.
>>1465882>Микросервисы дают масштабируемость как по железу, как по софту, так и по человеческим ресурсам.От микросервисов до распределенного монолита - один шаг, ты даже не заметишь тот момент когда ты его сделаешь.Ровно как и грамотно спроектированные монолиты могут прекрасно масштабироваться по железу а сейчас сервер с сотней ядер и гигов оперативы это вообще обыденность
>>1466135А у нас не так же? Но это не значит, что техническая часть не важна.И если рассказ, о том, какой ты пиздатый можно потренировать с преподом английского.А вот погонять по матчасти может только другой программист.
>>1466174>А у нас не так же?У нас в первую очередь смотрят технические скилы, а уже потом смотрят на общечеловеческие качества.В европе же зачастую общечеловеческие качества важнее, компании готовы взять среднего специалиста, но который лучше впишется в команду, чем профессионала про которого они не уверенны, что он впишется в команду. Т.е. речь идет не о том, что откровенных долбоебов не берут это и у нас так, но могут не взять человека в котором они сомневаются: "мы не видим вас частью команды" реальный слова из отказа.>И если рассказ, о том, какой ты пиздатый можно потренировать с преподом английского.Тренировать надо рассказ о своих интересах профессиональных и личных, о том что тебя мотивирует, очень любят вопросы про всякие проблемы на работе и как ты их решал, ну и традиционно "про хобби".>А вот погонять по матчасти может только другой программист.Тут момент. что спрашивать можно сильно разные вещи: одни любят CS вещи - а напишите нам эффективный алгоритм ХХХ, другие теоретические вопросы: чем X отличается от Y, кто-то любит живой кодинг. Мое мнение продуктивней будет походить по реальным собеседованиям, так ты и реальные вопросы услышишь и самое главное - перестанешь бояться собеседований и отказов.
>>1466140Да, да, избавимся от наследия проклятого прошлого.И напишем всё с чистого листа на ассемблере ноде жс.Как-то так это себе смузихлёбы и представляют.
>>1466219Самый лол, что на node js IDE (vscode) работает быстрее чем на java.Это же какого говна надо навернуть чтобы так на статик языке тормозить.
>>1466297Как мне нравится когда школьники (или взрослые со школьным умом) на каком-то внутреннем восприятие понимают некоторые вещи и потом выдают за непоколебимую истину.Типа на джаве ИДЕ такая вся навьюченная, что старт самой ИДЕ и хеллоу-ворда занимает минуты. А мол vscode он типа блокнотика, вот поэтому и быстро.На самом деле нет никакого прецедента стартовать мой хеллоу-ворд проект в java IDE пол дня и потом еще подтормаживать и поддергивать на каждый выпук.Нет бро, джава тормозит и жрет все ресурсы аки слон, даже IDE это доказывают.
>>1466382Хеловорлд можно и в vi написать. Нет, если это твое основное занятие, то ок VS Code твой выбор.Но если ты хочешь, что-то более сложное писать и чтобы IDE тебе и семантику проверяла и инспекции кода делала, и автодополнение везде в том числе в файлах ресурсов и конфигурациях, то VS Code тебе такого не обсепечит даже близко.
https://play.golang.org/p/FJCmy4kcQvjКак сконвертировать str[2], чтобы нормально русская буква распечаталась?
А что будет, если я запущу гошное приложение на системе, которая не поддерживает треды? Будут ли работать горутины? Будут ли они выполняться одновременно?
>>1467787У тебя же нет тредов, как ты параллельно собрался юзать> если я запущу гошное приложение на системе, которая не поддерживает треды?Видимо как сам напишешь рантайм го в этой системе - так и будетвремя тупых вопросов, видимо
Одному мне кажется, что синтаксис у гоши максимально всратый? Хотел перейти, но проблевавшись, сразу понял, что не вынесу этого.
>>1468001Плюсы, джава, пхп, питон. Котлин еще не пробовал (нету задач), но чисто внешне нравится больше гоши.
>>1467940Он апогей императивности, в 2019 это, конечно, воспринимается диковато. Зато техническое исполнение хорошее.
>>1468076Любой у кого есть хотя бы минимальный смшный бэкграунд легко втягивается.А вот тырпрайзникам и любителям метамагии тяжело.
>>1467787Горутины это юзерспейс потоки с переключением контекста, так что будут нормально работать, если не делать системных вызовов.
В какую максимальную ширину строки стараетесь уложиться при написании кода в вашем редакторе? Какая ширина чаще всего рекомендуется для Go?
>>1467940>>1468025Синтаксис - просто полный пиздец.Такое ощущение, что проектировали двачеры из /b.Как на этом goвне можно что-то писать - вообще загадка.
Пишу консольную прогу для линукса. Как в Go принято локаль устанавливать?Короче, нужен аналог сишной setlocale()
>>1468025Дык в плюсах и джаве - охуенный синтаксис! Си-подобные языки в принципе самые красивые имхо.
>>1468480Гугол не умеет в юзабилити, в принципе, вообще никак.Если гугол что-то разрабатывает/покупает - можно быть уверенным, что это неюзабельная хуйня. И даже анти-юзабельная. Даже если она делает что-то реально полезное, основана на охуенных алгоритмах и т.д.Про Goвно всё понятно, я думаю.А теперь они купили Котлин, и вливают в него тонны бабла.Я совершенно не удивлён - Groovy они бы хуй купили, именно потому, что он юзабельный и практичный.
>>1468530Типо гугл это один человек.>А теперь они купили КотлинКто купил? Ты уроки сделал?Котлин скорее всего продвинули внутренняя команда джава-андроид разработки, никаких тайных смыслов тут особо нет.Если же брать гугл как компанию в целом, то думаю этот котлин им нафиг не нужен.С го вышло тоже самое, запили язык под какие-то внутренние нужды и зачем-то опубликовали на самом деле понятно зачем, чтобы активировать сотни бесплатных рукНикто тут никогда не будет работать под высоконагруженными проектами и тем более не будет писать качественный высоконагруженный софт (потому что это еще уметь надо). 90% просадки вашего пет-проекта будет все равно на i/o базы данных и пинга в любых потоках. А 100.000к запросов не уместятся в ширину бюджетного сетевого канала.Этот язык надо было публиковать в восьмидесятых.мимо вебмастер со стажем
>>1469221>С го вышло тоже самое, запили язык под какие-то внутренние нужды и зачем-то опубликовали Я общался с несколькими инженерами из гугла и спросил про основной язык разработки: мне сказали что разрабы предпочитают Java, а SRE - Go.
>>1469260Маленькая выборка.Я знаю гуглера, который пишет только на питоне (не ml)Не знаю, но полагаю, что у Гугла огромная кодовая база на с и плюсах.
>>1469260Была целая санта-барбара с системой поддержкой версии, они объясняли это тем что у них внутри компании монолитный подход и поэтому какой либо пакетный менеджер просто им "ненужон" и значит типа всем тоже, то есть проект вообще не планировался делать под общее применение. Я надеялся что язык будет развиваться после его публикации. Но оказалось всем насрать, проще было написать статью, почему руками обрабатывать ошибки это правильно, а наличие двух типов для строк и тупо сырой поток байт в строке - это вообще инновация и фича сиди страдай с рунами, хоть у тебя по дефолту utf-8 как бы>разрабы предпочитают JavaЕсть целая группа "программистов", которая кроме джавы больше ничего не знает и кроме джавы учить больше ничего не хочет. Тырпрайз есть тырпрайз - там логики нет.
>>1469260Разрабов на какой проект поставят, то они и будут предпочитатьНа С++ они точно пишут, все эти google test, google log не просто так появились.
>>1469221>запили язык под какие-то внутренние нужды и зачем-то опубликовалиТупо двощую. Тоже давно сложилось впечатление, что запилили под свои нужды, а потом набежали маркетологи и начали продвигать его как язык пригодный для всего на свете. И сами создатели языка этому уже не рады.
>>1469320>Не знаю, но полагаю, что у Гугла огромная кодовая база на с и плюсах. Это тоже, всякие системы хранения данных, базы данных и т.п. Но чуваки занимались сервисами для Андроида, жмыла и т.п.>>1469350>Была целая санта-барбара с системой поддержкой версии, они объясняли это тем что у них внутри компании монолитный подход и поэтому какой либо пакетный менеджер просто им "ненужон"И поэтому у них есть тулы которые в автоматическом режиме могут править код при автоматической миграции с одной верии либы, на другую.>Есть целая группа "программистов", которая кроме джавы больше ничего не знает и кроме джавы учить больше ничего не хочет.У кого, у кого, но у гугла выбор кого нанимать есть и таких бы просто не взяли.
Послушал последний подкаст радио-т, проиграл с попоболи умпутуна по поводу го.Есть еще кто в треде, кто настрадался от го?
От самого популярного на Udemy курса по Go у меня из монитора вода полилась, этот препод либо отвлекается, либо одно и то же повторяет, слушать сложно. А в одном видео он так вообще сидел лулзовал с гит-репозитория, где были картинки с гоферами.
>>1470062Идите в тред пхп и джса, и ройте о том, насколько они кривое говно.Гошечка лучшее, что есть на рынке для вебсервисов.
>>1467787>А что будет, если я запущу гошное приложение на системе, которая не поддерживает треды?Сейчас из таких только васм>Будут ли работать горутины? И да и нет. Работать они будут, но не так как ты ожидаешь. Будет ситуация как с тредами в Питоне - в случае I/O ты получаешь буст производительности, а в случае cpu задач - резко хуже чем последовательный однопоточный код>Будут ли они выполняться одновременно? Нет, но в случае I/O это нормально
Как сделать, чтобы gofmt не менял фигурные скобки, которые расположены в одну линию?То есть, например, для if a > b { print(a) }
>>1470318Никак.Для этого и форсанули единый стайлгайд, что бы нормальные люди не ломали глаза о код "эстетов".
>>1470323Блин, если внутри однолинейных фигурных скобок только один оператор, то лучше было бы оставлять как есть. По идее это несложно реализовать: если внутри скобок не встречается точка с запятой, то оставлять в одну линию.
>>1470335Лишние две строки - это слишком много для одного оператора в скобках. Они накапливаются, а я не хочу лишний раз скроллить экран, чтобы окинуть взглядом функцию.gofmt у односточных func f() { return } фигурные скобки не меняет.
>>1470144умпутун то за го, но у него случилась попоболь>ройтеНовый зуммерски тупой сленг, или няша опечаталась?
>>1470325>быстрыйТы не видел еще си, обосаца шустрыйпроигрываю с долбаебов, которым принципиально исполнение функции в 100наносекунд или в 200
>>1470457Это пиздецки важно.Ибо от этого зависит сможет ли функция укладываться в 50мс в 95 перцентиле или нетА так же сколько вы заплатите за вычислительные мощности - x или 2-3 xВ то же время, нельзя писать на всем, тут уже стоимость труда слишком дорогая.И го здесь предстааляется оптимальным выбором между производительностью кода - производительностью разработчиков.
>>1470500>Ибо от этого зависит сможет ли функция укладываться в 50мс в 95 перцентиле или нет>А так же сколько вы заплатите за вычислительные мощности - x или 2-3 xЧто?>стоимость труда слишком дорогая.Ты начинаешь догадываться.Но ты же не платишь программистами ни капли, зачем ты эту фразу воспроизводишь тут?Я знаю, мне маркетинг не победить, но все же ты же понимаешь что твоя программа в среднем простаивает в файловом/сетевом i/o или запросе в бд, где-то 80-95% времени не веришь, иди протестируй и проверь.Почему в начале 2000 все поголовно пересаживались на скриптовые языки? Наверное потому что раньше было лучше и железо производительно да?
>>1470513Мальчик, давай я тебе расскажу, что в есть не только компании, где все крутится на одном старом целероне, а есть такие компании, которые арендуют серваков на сотни тысяч вечнозелёных в месяц.И никто не будет рад тому, что из-за того, что твоя любимая пыха или питончик любят подумать, придется взять в два раза больше серверов.Опять же, видимо у ИП рулона обоева так не принято, пусть посетитель подождёт десять минут загрузки главной, но есть продукты, которым необходимо успеть дать ответ в жёстко заданные рамки времени.И если раньше, нам приходилось мириться с тормозами питона, или другую память как не в себя джаву, то теперь у нас есть замечательный го.Да, раньше скриптовые языки работали. Знаешь почему? Потому что у интернета было полтора пользователя. А сейчас даже захудалый нах никому не нужный сервис должен стоять под напором 1к rpc, потому что теперь это средняя нагрузка.
>>1470513>Почему в начале 2000 все поголовно пересаживались на скриптовые языки? Наверное потому что раньше было лучше и железо производительно да?Накидайте еще айтишных теорий заговора, мне понравилось.
Есть какой-нибудь роадмап с туториалами или курсами, статьями по изучению микросервисов? Складывается впечатление, что по простым вещам, типа сделать базовый API с REST или gRPC много всего, а потом нихуя. И если всплывают темы по лоад-балансингу, логгингу, трейсингу или прокси, то рассказывается в общих словах, что, мол, так можно делать, но без конкретных примеров.
>>1470516>Программа на go не простаивает, а берет и выполняет другую горутинуА если её нет, го программа выдумывает другую горутину, лол.Ты думаешь потоки работают как-то по другому?
>>1470523>а есть такие компании, которые арендуют серваков на сотни тысяч вечнозелёных в месяц.Но ты же не из это компании, давай ты не будешь говорить о том, о чем не знаешь, выдумывая такие вещи, что железо дороже времени разработчиков.
>>1470590Это пища для ума, чтобы заставить задуматься над той самой мнимой производительностью, которую хотят достичь в своих проектах, местные фантазеры а ты не понял
>>1470762Нет, я именно из такой)Мы отдаем кучу денег амазону за то, что бы мы могли гибко масштабироваться под нагрузку и выдерживать sla.И хрен кто согласится писать на джаве, потому что придется резервировать в разы больше памяти под контейнеры, вот кому это надо?Так же мы не миллионеры, что бы позволить сервисам просто так жечт деньги, нужна максимальная утилизация процессора, и опять же у го нет конкурентов. (Ну кроме плюсов, эрланга, раста,... Но на них бы мы писали в разы дольше)Я повторюсь, в твоём ИП на надо - ок, дуй свой кактус, а многим - надо.
>>1470779Ты несешь херню неопытного фантазера, который каким-то местом связан с ИТ, это настолько очевидно, что мне даже лень писать опровержения к твоим фентази-тезисам.Тебе надо работать над своих актерским амплуа.
>>1470781Не пойму, ты Джун с завышенным ЧСВ, который краем уха услышал, что скорость не важна, и не разобравшись считаешь это абсолютной истинной?Или наоборот, уже старый опытный маразмтаик, который не понял, что и веб, и нагрузки изменились, и что "перла под cgi" не хватает?
>>1470783А может он бэтмен??Тебе сказали работать над амплуа.Когда встает вопрос железа, большие дяди о го даже не вспоминают, потому что jit еще рулит (см картинку), а го, не обкатанная игрушка. Твой го тормозит как синхронная джава, и может уделать только питон. что вообще очень странно для асинхронной работыНо никто письками не мериться, потому как все масштабируется и всем насрать, что где-то кто-то у кого-то выиграл пару процентов. Самый главный вопрос - это качество либ и скорость с которой ты можешь взять эти либы и развернуть проект.Блин, в го даже нет вменяемого пакетного менеджера, о какой эволюции качественного кода можно говорить? Те же js-ваннаби программисты на голову впереди я уже молчу что го это сплошной бойлерплейт сам по себе
>>1470792Мне кажется, ты тупой.Значит папу сообщений назад, чистый перфоманс был не важен, а теперь важен? Клал я на этот список, потому как под "топ фреймворков" никуя нет инфраструктуры.И вообще, фантазируй сколько влезет, все аргументы в пользу го я высказал, но видимо ты их даже осознать не можешь, Вт и брызжешь слюной.
Возможно ли вкатиться на вакансию go удаленно, не имея опыта коммерческой разработки на go? В моей мухосрани таких нет, удаленно все требуют с опытом работы на го от года. Сам я джва года на джаве.
https://play.golang.org/p/hsFaejfzzmcКак правильно формат указывать, чтобы верно выводилась дата в формате "yyyy-MM-dd HH:mm:ss"?
>>1470847Этот тест можно в пару кликов запустить у себя.И да, там тестируют не на твоем старом ноуте.
>>1471383Если по остальным спорным моментам можно дискутировать, то с датами у них как будто один человек дорвался до исходников и сделал как ему удобно.
>>1471386А никто не знает,может в каких-нибудь языках такое-же ебанутое форматирование дат?Не могли же они сами эту дичь придумать.
>>1470952Нет, гребу в офисе. Понимаю, что работать на удаленке это отдельный скилл, готов к этому морально.
>>1471362Так работает. Но странно, что в документации нет полного списка всех этих магических констант.
>>1471603Прям в духе js, надо теперь 100500 библиотек, чтобы тупо с датой норм поработать.Как же теперь людям нормально скриптики писать?
>>1470792> Когда встает вопрос железа, большие дяди о го даже не вспоминают, потому что jit еще рулит (см картинку), а го, не обкатанная игрушкаОхуеть, необкатанная игрушка. Учитывая, что гошников сейчас нанимают вообще все крупные конторы. От Амазона и Гугла, до Яндекса, Озона и Авито.
>>1472140Там всех нанимают могут себе позволить, потому что похер на чем микросервис, главное чтобы специалисты были.
>>1471748https://www.reddit.com/r/programming/comments/d2qrx6/this_video_shows_the_most_popular_programming/?utm_source=share&utm_medium=web2x
Имеет ли смысл брать го как второй язык к пистону на бекенд разработку? Вообще когда изучал вопрос удивился, что компилируемого решения для таких задачь нет.
>>1472184Чтобы тупо пострадать?Тебе код писать или нуллы с еггорами сравнивать?К питону имеет смысл подтянуть си и научиться шустрые модули писать для питона, но не как не нырять в клоаку малопопулярных экзотических языков.
>>1472180Хз, я вижу тренд, когда сначала пишется монолит на php (потому что быстро), взлетает, а потом узкие места начинают выносить в сервисы на го. Уже куча крупных компаний пошла по такому пути. С моей т.з. го уже взлетел и поздно об этом спорить.
>>1472280Ну вот столкнулись с ситуацией, когда осталось только масштабировать горизонтально или извращаться со всякими pypy/cython. Хотелось бы некоторые места переписать на чем-то более быстром.
>>1472200Я тебе раскрою тайну.Крупные компании позволяют разным группам программистам брать интересные для них языки, дабы удержать специалистов на рабочем месте (чтобы им было интересно, "модно и молодежно").Агрессивный маркетинг новых языков сильнее и поэтому случается так что кто-то где-то "ручку" (микросервис) написал на го, кто-то на котлине, кто-то ерланге, кто-то на кложе.При учете что даже в пистоне уже есть асинки (ну и в других языках), страдать на го уже не имеет смысла вообще. Получилось так, что его основная фича стала уже не фичей и спустя несколько лет бойлерплейта люди устают от го (как это случилось и у меня) и лично мне кажется его будущее сомнительным.Графики тоже показывают что он достиг определенного максимума. Его "бум" прошел, максимум он не взял.
>>1472290Я как-то тоже был таким юным и глупым. Написал какой-то участок на сях (а все было на пыхе), в общем получился микросервис, который почему-то тормозил больше чем на пхп. Оказалось что быстро писать на быстрых языках надо еще уметь (я делал си обёртки для классических пхп функций). Даже если я и получал прирост, он был незначительным. Оказалось что масштабироваться в ширь, куда эффективнее, чем экономить на спичках.
>>1472200Только что вернулся с доклада от компании Gett. Их история вкратце: написали монолит на руби, потому что руби был на хайпе. Потом начало притормаживать, начали выделять отдельные сервисы. Какой-то критический сервис работал плохо, решили переписать. На выбор был нода и го, го оказался быстрее. Начали писать все на го и переписывать старые сервисы. На данный момент у них 160 сервисов на го и 10 на руби.
>>1472515А когда им не будет хватать го они на ассемблер перейдут? Что за гуманитарное масштабирование?У тебя был удобнейший язык, пришел прирост трафика - ну так масштабируй. Там разница в производительности 2-10 раза (в реальном проекте 2-5), то есть если проект реально быстро растет, то так же быстро они и в го упрутся.На самом деле понятно, это классическое хипстерско-гуманитарное программирование. Был на волне руби - они няшились с ним, тут пришел в моду го, они перебежали, но что бы заглушить ту боль, после рубина, они нашли радость в приросте производительности. Ждем теперь откровений от раста, там боль будет еще сильнее.
>>1472524Не, там было что связанное не с масштабируемостью, а со стабильностью работы вроде как.Короче, их перестал устраивать руби, и они выбрали го, пока что им нравится.
>>1472290Если у тебя не асинхронный фреймворк (aiohttp или всякие до-asyncio'шные торнадо или твистеды), то на большинстве задач, которые решаються выносом функциональности в микросервис ты не получишь прироста производительности, а только увеличишь нагрузку на ioТакже и >извращаться со всякими pypy/cythonЕсть смысл только на числодробилках, т.к. бридж между языками - это всегда дорого.
>>1452808 (OP)Стоит учить Го или Яву или ДжаваСкрипт? Есть опыт С++, 6 лет назад, первый семестр НЕ айти спецухи, сука, как же я его ненавижу.Хочу:а) иметь скиллы на черный деньб) зарабатывать миллионыя гуглил что Го не популярнен, но на МоемКруге, напимер, нужен Го/руби-мидл Рокетбанку с з/п до 200к(до?) - значит ли это, что Го постепенно набирает популярность? в) возмоность заниматься интересными мне темамаи, в идеале геймдев
>>1472958После просто обучения ты никому не нужен будешь ибо каждый год куча студентов программистов добавляется.>>1472958>возмоность заниматься интересными мне темамаи, в идеале геймдевТы во-первых, не понимаешь, что такое геймдев, а во вторых, погуглил бы, какие там языки
>>1472958Гейдев это C++. Вкатываться туда больно и долго. Нужно хорошо знать весь стандартный стэк CS (архитектура компьютера, ОС, ассемблер, алгоритмы и структуры данных, компиляторы и т.д.), понимать collision detection и работу физических движков (я подчеркиваю: это два отдельных топика), устройство видеокарт и графических API, а также математику (линейная алгебра, само собой дискретная математика, и др.).Это если ты хочешь прям программистом в гей дев, а не клепать хуйню на юнити.
>>1472986Ну и да, учить придется не столько язык (в гейдеве многие используют C++ как C с классами по ряду причин), сколько все вышеперечисленное.
>>1473121Для понимания того, как работает opengl, неплохо уметь писать рендереры без него хотя бы на уровне пет проектов.
>>1473231Нет, когда дан массив RGB размером width * height и больше нихуя, все пиши ручками, никаких тебе шейдеров и пайплайнов.>>1473234Это не настолько сложно, при этом ты реально получаешь понимание того, как работает 3D графика.
>>1473244бамп нахуйТы какую-нибудь статью подкинул что ли, а то пока что твое пиздабольство бессмысленное уровня сикпа не впечатляет.
Я тут начал изучать Го, и у меня внезапно возник вопрос. Если указатели у указателей в го нет pointer arithmetic то нахуя их вообще сделали?И второй вопросПочему вот так можно i:=10 ptr:= &i ptr = 10А вот так нельзяtype person struct { name string age int head person}dep[0] = person{ name: "head", age: 10, head: nil, }dep[1] = person{ name: "emp", age: 10, head: &dep[0], }*dep[1].head.name = "head2"Зато можноdep[1].head.name = "head2"
>>1473579Обосрался с разметкойhttps://play.golang.org/p/IpSFG5jNFYyВот так нельзя в общем, хотя с интом работает
>>1473579Указатели нужны, чтобы передавать по ссылке и по значению, что дает возможность в одном случае менять переменную,а в другом работать с ее копией
>>1473581Го сам разыменовывает указатель, если используется точка (x.f).Твой пример не работает, потому что ты разыменовываешь строку, а не структуру, Должно быть (*dep[1].head).name
Тут есть кто-то, кто работает на Go? Новый проект или с чего-то переписываете? Сложно вкатиться? Хочу уйти с ноды в нормальный язык
>>1470048В уроках по микросервисам на Го нет ничего сложнее простейшего роутера на каком-нибудь Mux или Gin и вызова функций на сервисе с клиента через GRPC.Никаких тебе CQRS, Event Sourcing, NATS, Envoy и прочих real-world вещей. Только очередной туторитал с CRUD Do-To.Чтобы чему-то научиться, нужно работать в компании с опытными программистами
>>1474474Как, впрочем. и с любой другой технологией. 90% статей на том же медиуме - скам, обсасывающий одни и те же хеллоуворлды.
>>1452808 (OP)> https://www.golang-book.com/,> https://github.com/dariubs/GoBooks, > ,> ,Это тест такой? На СМЕКАЛОЧКУ???Нюфаня, решил немножко вкотится и поговнокодить на Го. И у меня недопонимание с присваиванием значения.Сначала сам, чисто интуитивно, по аналогии с пистоном, решил присвоить куче переменных одно значение. Словил ошибку компиляции, и забыл об этом.Сейчас читал книгу, из списка рекомендованных на главном сайте, и заметил пик 2 в примерах. Книга 2017 года. Вопрос: Это у меня что-то с компилятором, или множественное присваивание одного значения убрали?
>>1475592На втором пике exists типа bool принимает значение True, если в мапе был создан такой ключ, иначе false. Power же принимает значение по ключу если такого ключа не было, то принимает значение по умолчанию в соответствии со своим типом, в данном случае 0Считай, что ты присваиваешь результат функции с двумя выходными значениями.
>>1475616> 0 falseУ меня в первый раз не скомпилилось вообще, а сейчас да, вижу. Плохой пример был.Значит я не могу в го присвоить, куче, переменных, одно = значение
>>1475667Ничего страшного. присвоить, трем, переменным = значение1, значение2, значение3Вообще, пример хороший, но мб надо было показать его как на пикрил
И еще одному нюфане нужна помощь.Имеется библиотека php для работы с соц сетью.Нужно брать оттуда некоторые данные, и отображать на страничке.Сервер на го. Как вообще это будет выглядеть? Подскажите
>>1475722И как бы ему в его вопросе помогло переворачивание списков? Нет бы документацию языка почитать и реальный пет проект начать.
>>1475729Ему нужно не умение переворачивать списки, а привыкнуть к языку. Пет проект для новичка будет тяжелой ношей и, скорее всего, он его забросит.Как обычно: сколько людей, столько и мнений
>>1475732Мое мнение такое, что пиление чего-то реально работающего держит интерес лучше, чем монтонные упражнения.
>>1475722>литкоде>>1475729>пет проектСпасибо за советы. Вяло пилю свою программулинку на питоне, по лингвистике. Со стандартными гуями и сторонней библиотекой для проигрывания аудио. Есть желание переписать её на го, чтобы сразу компилировать в исполняемый файл, не играясь с сомнительными костылями. Вот и решил пока поучить синтаксис
>>1475877Утраиваю этого гофера, должно быть стыдно такие вопросы задавать. В любом гайде по го или тем более в туре это освещяется.
>>1475856Получается, что так. Похоже мне придётся как то запускать php скрипты с сервера и обрабатывать их. Это вообще можно нормально реализовать?
>>1475990Это скорее всего не нужно реализовывать таким образом. Если тебе нужен доступ к соцсети, то найди такую же библиотеку на го и используй её (ну или напиши/сгенерируй свою это несложно, если нужен просто апи клиент).Но если бы у тебя гипотетически была библиотека, которая существует только и исключительно на php, не имеет аналогов и не воспроизводится на других языках - то стоило бы php-шные вызовы этой библиотеки обернуть в апи, сделав таким образом микросервис.
>>1476160>стоило бы php-шные вызовы этой библиотеки обернуть в апи, сделав таким образом микросервисМожно об этом поподробнее? Если я правильно понял, то предлагаешь сделать микросервисы на пыхе и го и через запросы производить обмен данными? Похоже, что я какую то чушь написал..
>>1476196До сих пор топчусь на месте. Понятно, что php скрипт должен возвращать данные в json серверу go. Но как запустить сам скрипт.. Скорее всего не туда я копаю как баран
>>1476240Тебе скорее в тред по php, но отвечу тебе пока здесь.Классическая схема работы php - это в паре с сервером (nginx) и php-fpm, когда сервер удерживает коннекты и через php-fpm запускает, собственно, скрипты (гугли примеры, их дофига).Если ты используешь докер (а если нет, то стоило бы), то можешь взять, как пример, вот это (статей и примеров миллион, но этот хотя бы выглядит адекватно) - http://geekyplatypus.com/dockerise-your-php-application-with-nginx-and-php7-fpm/Если тебе нужно просто заставить это крутиться локально, без усложнений, то в php есть простенький встроенный сервер, вызывай `php -S 127.0.0.1:8000 ~/path/to/script.php`, а внутри script.php уже читай запрос и отдавай ответ.
>>1474387Работаю на крупную контору в Штатах. Энтерпрайз, десятки микросервисов на Го (и не только) Поддерживаю/допиливаю старые, пишу новые.
Как думаешь программач, пщ хороший язык для изучения после питона и жс? Думаю поковырять ещё какие-нибудь языки, всё-таки одним питоном сыт не будешь. Думаю может стоит взять какой-нибудь со строгой типизацией, но пщ как и питон в душу запал.
>>1479155Нет, просто хочу расширить так сказать кругозор и подстелить соломы если вдруг питон будет загнивать. Или если вдруг захочу в тырпрайз, сисярп не хочу из-за M$, а жаву просто не хочу.
>>1479161>>Хочу уйти с ноды>Молодец.Зачем уходить с ноды? Она рано или поздно станет для людей, а он к тому времени будет прожженным ветераном нарасхват.
>>1479409Ты либо становишься экспертом в одном языке, либо становишься "так себе"-спецом, но уже с несколькими языками.Не верь в расширение кругозора, ресурсы, в том числе и время, всегда ограничены. То что ты мог потратить на углубление одного языка, ты тратишь на поверхностное уже нескольких языков.Знание языка это не только его синтаксис, это знание его экзосистемыСамый лол, что ты боишься судьбы питона, выбирая менее популярный язык с сомнительным будущем. Гуманитарный программист как есть.
>>1479644В языке мало что есть. Нет даже перегрузки функций.Из-за этого код сплошной бойлерплейт. О какой читаемости вообще речь?Особенно читаем формат даты.
>>1479654А что, это мешает тебе прочитать код? Или понять, что тут выход из функции в случае ошибки?>>1479659>Нет даже перегрузки функций.А она нужна?
>>1479666Это мне реально мешает читать код.>А она нужна?Да, когда функция делает одно и тоже, но с разными аргументами, я хочу иметь единое название и вменяемое APIdo(String s)do(Strint s, Int i)А не doString(String s)doStringInt(String s, Int i)
>>1458717Фатальная ошибка котлина совсем другая - его соновная платформа, т.е. JVM, в которой нет грин тредов, а большая часть экосистемы это блокирующее легаси-говно, а та часть которая ну хоть как-то написано с асинкам едет каждая на своём велосипеде, кто на netty, кто на akka, кто на новых корутинах котлина. Суммарно всё равно говно, поэтому котлин это десткая хуйня и игрушка на фоне го. при всех его недостатках.
>>1479783Забавно что асинхронное программирование в действительности нужно местному анону в 1 случае из 1000
>>1479613Не слушай этого мудака. Смысл в расширении кругозора есть, просто потому, что новые языки - это новые концепции, которые во-первых, дают тебе больше опыта (вдруг столкнёшься), а во-вторых позволяют взглянуть на то, как ты решаешь свои текущие задачи на своёс текущем ЯПе под другим углом, что повышает твои навыки решать их. Ну и с медицинской точки зрения очень полезно, изучение новых концепций означает выстраивание новых нейронных связей в мозгу, что повышает эффективность твоей умственной деятельности.Го как раз неплохой вариант для "поиграться", потому как очень прост. Можно за неделю пройти тур и написать несколько приложений, уже достаточно для того, чтобы понять, как работают горутины, типизация и всё такое.
>>1480563>новые языки - это новые концепцииЛол, какие? Решение одной и той же задачи, но с либами у которых другое название или положение аргументов?Охереть расширитель кругозора. Это никак не развивает вообще, скорее засоряет мозги.>Ну и с медицинской точки зрения очень полезно, изучение новых концепций означает выстраивание новых нейронных связей в мозгуОй, да у нас тут доктор наук. То что тебе не нужно, моментом обнулиться в мозгу. А новый язык, обычно, нужен тебе как пятое колесо. То есть, чтобы не застрять на уровне хелло-вордов, надо постоянно подогревать знания, по сути, просто так, потому что какой-то хер в интернете так говорит.Не тратьте время на то, что не будете явно использовать в будущем, тем более на мало-популярные языки, нельзя запастись знаниями наперед, будете только программировать через вечный поиск и StackOverflow.
>>1480580Котлиндаун, ты?Ну да, плюсы, эрланг, питон, хаскель и го - охуенно похожие языки, ничего нового ты не встретишь.
>>1480098постоянно нужно, на работе все задачи связаны с ИО и интеграцией различных систем. вообще весь веб и сетевые штуки - это сполошной асинк.
>>1480663Зачем именно нужно, без это абстракции, типа "у меня тут веб и значит надо асинхронно". Реальный пример, когда по синхронному встрял.
>>1480610>Расширить кругозор>С++Очень смешно.>питонЭто просто эталон того, как скопировать из других языков и при этом сделать все тоже самое, но по своему.как ты вообще рядом привел си синтаксис и говнопитон>эрланг, хаскельНескучные языки подъехали.Ты можешь теперь внятно объяснить зачем их учить, как тебе это поможет развиваться? Особенно это ненужная экзотика? Или мне засчитывать слив?
>>1480664Да запросто, нужно записать что-то в кэш после обновления либо отправить письмо посредине какой-то операции. Либо Нет никакого смысла выполняить эти оперции синхронно, можно продолжать выполнять бизнес-логику или уже отдавать ответ.
>>1480676Я, мне казалось, объяснил уже. Программирование - это построение логических моделей реального мира, на самом деле. Каждая новая концепция показывает тебе ещё один способ выразить что-то логически.Сидя на питоне ты не поймёшь, как всё работает на низком уровне, пока не попробуешь си либо плюсы. Не поймешь, что именно делает за тебя сборщик мусора и зачем он нужен. Не поймешь, что делают планировщики и зачем они вообще нужны, пока сам треды не попрограммируешь.Без тех же плюсов либо скалы ты не поймешь силы действительно развитого метапрограммирования и чего лишены гошники и многие другие.Сидя на питоне и не попробовав го, ты не поймешь, что такое горутины и как можно мыслить ассинхронно, учитывая планировщик.Сидя на питоне и не попробовав эрланг ты не поймешь, к примеру, акторной модели и в итоге так и будешь сидеть, думая, что ООП - это наследование (спойлер: нет, ООП - это про объекты, посылающие друг другу сообщения).Сидя на питоне, и не попробовав функциональщину, ты не поймешь, зачем вообще нужны чистые функции и в чём красота чистого кода, что такое монады и как можно элегантно обрабатывать, к примеру, нулевые значения (и почему джава с её null'ами сосёт с проглотом).Не посидев на джаве или котлине, ты не сможешь попробовать действительно хорошую реализацию rx и не поймешь, в чём прикол представлять бизнес-модель как потоки данных и насколько удобно это обрабатывать.А вот поигравшись со всем этим, ты сможешь рассмотреть любую бизнес-задачу с разных сторон и отобразить её технически наиболее удачным способом (расширяемость, поддерживаемость и вот это всё). Подобрать язык для микросервиса, способ закодировать сложную бизнес-логику и так далее.А если сидеть и всю жизнь сидеть на одном стеке, не высовывая голову из задницы, то в итоге окажешься рабом только одного способа мышления, потому что всё есть гвозди, когда в руках кроме молотка ничего никогда и не было.При этом, понятно, что нельзя поизучать всё подряд и объявлять себя уберсеньором, ты можешь и должен выбрать для себя специализацию и развивать в первую очередь в ней, в глубину. Но также верно и то, что нельзя забывать о кругозоре.На этом я умолкаю, потому что заебался повторять одни и те же прописные истины. Если тебе интересно дрочить только свою ссаную на самом деле нет, нормальная технология, если не объявлять её божественной джаву - то пожалуйста, играйся. Главное, новичкам мозги не засоряй.
>>1480719Так и знал что фантазер и маня архитектор.>Да запросто, нужно записать что-то в кэш после обновления либо отправить письмо посредине какой-то операцииВешать таск задачи на потоки с бизнес логикой, я бы тебя уволил сразу (на том же го решается +1 микросервисом, в монолите отдельным потоком очередей с тасками, но лучше микросервисом). >можно продолжать выполнять бизнес-логику или уже отдавать ответ.Произошла ошибка, а клиент думает что все ок, но видит некорректный результат (или вообще ничего не видит). Чистая магия, которая противоречит юзабельности.Маня архитектор как есть, выдумал прям на коленке.Не нужны тебе асинхронные задачи, ты же смело можешь положить второстепенными вычислениями основные рабочие потоки.
>>1480730>плюсов> метапрограммированияТут лучше посоветовать посмотреть D, в плюсах от него ничего кроме боли и страданий получить не получится. Кроме 3-х часовой компиляции.> скалыДаже на плюсах это метапрограммирование легче поддерживать после написания, лол.>и не попробовав го, ты не поймешь, что такое горутины и как можно мыслить ассинхронно,Вот этот пункт ещё дырявый, сейчас почти во всех языках +- похожая модель асинхронности, только без встраивания в язык и с другой терминологией (вроде того же GCD в эпловских продуктах), гринтреды не новинка уже давно.>и не попробовав го, ты не поймешь, что такое горутины и как можно мыслить ассинхронно,обжс тебе махает рукой кстати.
>>1480730Классический гуманитарный программист. Абстрактные мечты и ничего по делу.>А вот поигравшись со всем этим, ты сможешь рассмотреть любую бизнес-задачу с разных сторон и отобразить её технически наиболее удачным способомКак я смогу это сделать, если ты только что сказал, что в одном языке что-то есть, а в другом нету? Я могу знать как писать хеллоуворды на многострочных лямбдах, но если у меня питон, что мне делать?Ты сам же себе противоречишь. И весь твой текст не техническое изложение, а просто творческий нелогичный выпук.
>>1480664Ты упоролся? У тебя сервер принимает входящие соединения. На каждое соединение будешь выделять системный тред? А потом дополнительный треды на соединения до других эндпойнтов, например баз или проксирование. Пиздец
>>1480760Кого бы ты там уволил, лол. Ты джун без опыта, если тебе про асинк и грин треды надо пояснять.
>>1481340Прикинь тебе джун без опыта, не знающий про асинки по твоим словам тебе объясняет за правильную архитектору и что ты тупо не смог обосрался.Это в двойне обидно.
>>1480841Морально устаревшая хуйня, даже блять модуль в саб-директорию не перенести без очумелой ебли. Работать дальше хеллоу-ворлда с ним невозможно, да и не нужно, когда есть современный эликсир со всеми фичами эрланга и возможностью вызывать нативный эрланг код.
>>1480760>Произошла ошибка, а клиент думает что все ок, но видит некорректный результат (или вообще ничего не видит). Чистая магия, которая противоречит юзабельности.А лучше когда клиент висит десятки секунд в ожидании ответа и потом разрывает соединение по таймауту?
>>1481660Если не понял почему не правильно, то лучше спроси, не стоит дальше высирать чушь и позориться.Почему вообще у тебя клиент запускает таску которая идет десятки секунд??
>>1481754Представь себе в вебе есть задачи посложнее перекладывания джсонов, и, зачастую, выполнение таких задач может занимать продолжительное время. Сервер в свою очередь как раз таки и предназначаен для обработки запросов от клиентов. Хотя может в твоем понимании веба сервер сам себе создает задачи и сам же их выполняет.>Если не понял почему не правильно" то лучше спроси, не стоит дальше высирать чушь и позориться.Если подъедут аргументы, то сниму шляпу и извинюсь, а пока я не услышал ничего кроме пустого пиздежа на кривом русском языке.
>>1481804Тебе это и говорили, маняврятор ты джуновый. Тебе и сказали что нельзя ложить таски в поток с бизнес-логикой. У го нет никакой возможности отделить мух от котлет, кроме как еще микросервис подымать.Сейчас ты берешь и мне рассказываешь то, на чем я тебя подловил, лол.
>>1481927Ты не мне отвечал в том сообщении, шизик.>Произошла ошибка, а клиент думает что все ок, но видит некорректный результат (или вообще ничего не видит). Чистая магия, которая противоречит юзабельности.Я вообще тебя только насчёт этого спрашивал. Какие у тебя есть решения данной проблемы
>>1481932Снова какие-то маневры.Решение простое - по бизнес-логике отвечаем клиенту полностью.Если в запросе нужно задействовать таску о которой пишем/не пишем и отдельно запускаем таску (микросервис который может возвращать статус).В бизнес логике никакие числодробилки не юзаем, даже если ватемарочку добавляешь (4 таких запроса для 4 ядер и веб сервер сосёт полностью).Асинхронное программирование не серебряная пуля, она имеет и плюсы и недостатки, положить весь тред, с тысячью корутин - нефиг делать
>>1482329>Если в запросе нужно задействовать таску о которой пишем/не пишем и отдельно запускаем таску (микросервис который может возвращать статус).Как это поможет решить эту проблему:>Произошла ошибка, а клиент думает что все ок, но видит некорректный результат (или вообще ничего не видит). Чистая магия, которая противоречит юзабельности.>В бизнес логике никакие числодробилки не юзаем, даже если ватемарочку добавляешь (4 таких запроса для 4 ядер и веб сервер сосёт полностью) и дальше пиздеж про асинхронщинуЭто вообще к чему? Кто-то предлагал решать cpu-bound задачи с помощью асинхронщины?
>>1482431>Как это поможет решить эту проблему:Что именно?Если например идет сохранение документа, то вешается ответ что идет процесс сохранения.Нельзя же юзеру сказать что все ок, хотя на серваке сохранение не может произойти. Надо уведомить, пускай тогда сохранит хотя бы у себя или повторит позже.Веб-морда всегда должна взаимодействовать с клиентом, даже если ошибка не у тонкого клиента.Иначе начинается магия.