Программирование

Ответить в тред Ответить в тред
Тред про лучший в мире язык GO №13 /go/ Аноним 09/12/20 Срд 12:28:44 18764381
image.png 55Кб, 640x365
640x365
image.png 45Кб, 535x281
535x281
Тред про лучший в мире язык GO №13 /go/


Для вката в Go читай:
- Донован, Керниган "Язык программирования Go"
- https://www.golang-book.com/
- книги из списка https://github.com/dariubs/GoBooks
- а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw

Пэкеджи можно искать тут https://github.com/avelino/awesome-go


Сремся за отсутствие дженериков и ООП, смеемся с реализации дженериков в go2, спорим о том, какими скобочки должны быть на самом деле, пробрасываем ошибки, пытаемся понять почему код с каналами и многопоточностью работает медленнее, чем однопоточный код, находим по каждому крупному багу и косяку в языке пост в блоге го, который объясняет, что это фича, ищем обоснование, зачем дженерики не нужны, смеемся над оопэшниками, которые не могут жить без ексепшенов и DDD, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериков

Прошлый тред >>1743955 (OP)
Аноним 09/12/20 Срд 14:58:32 18765942
>>1876232 →
А в чем профит писать такое на перле? Только из-за того, что там регулярки более продвинутые чем в Го? Я думаю это незначительный плюс, с учетом того, что в го я могу импортнуть компоненты компилятора на самом деле не совсем, но для некоторых internal пакетов есть паблик аналоги и работать с уже с готовым ast и прочими абстракциями.
Аноним 09/12/20 Срд 15:01:11 18765973
Lol no exceptions.
Аноним 09/12/20 Срд 15:11:02 18766034
>>1876594
Не, ну есть ast парсить и т.п., то да.
Я думал просто в текстах искать - перл в этом деле вне конкуренции.
Только его нужно знать, конечно.
Аноним 09/12/20 Срд 15:43:41 18766295
>>1876247 →
В туре только совсем базовые вещи. По хорошему нужно еще знать что в стандартной библиотеке находиться, ну и по диагонали пролистать golang.org/x/* , это практически тоже stdlib, только без гарантий 1.x совместимости.

Но как я понимаю - ты проходишь на Степике курс по го?
Тогда пройди сначала курс, там в общем-то дается вся информация, чтобы пройти их задачи.
Аноним 09/12/20 Срд 15:45:39 18766326
>>1876629
Спиздил вебинары от отуса пройдя перед этим тур, есть ощущение, что лучше бы книгу Донована из шапки прочил, чем все это
Аноним 09/12/20 Срд 18:54:19 18768067
По-моему на го можно сесть и макакить обычнопроекты сходу
Аноним 09/12/20 Срд 21:54:26 18769458
>>1876806
Go - это такой компилируемый аналог пхп.
Аноним 10/12/20 Чтв 15:37:18 18773409
Сап Гофаны,

Задал тот же вопрос в Котлин треде. Пытаюсь выбрать между Котоином и Го для серверной разработки. Есть опыт с нодой но не нравится.
Короч думаю попробовать запилить небольшой проект в учебных целях. Веб сокеты, полсотни юзеров, база данных и круд уровня списка товарных позиций. В моём случае проблема ещё в том, что хотелось бы чтобы это всё крутилось на недорогом VPS в докере. Собственно вопрос хватит ли Гошечке 2Gb оперативки под обозначенную выше задачу (вклад базу/докер/фронтенд и мониторинг)?

Или лучше не лезь оно тебя сожрет оставаться на ноде?
Аноним 10/12/20 Чтв 15:42:37 187734610
>>1877340
Для твоей задачи более чем хватит ноды, на самом деле. Рекомендую использовать typescript и nest, базарю еще захочешь.

На го аналогичный проект выйдет у тебя в 3 раза больше строк кода, и дело тут не в ручной обработке ошибок. Нужно оно тебе? Какие профиты ты с этого получишь?
Аноним 10/12/20 Чтв 16:00:35 187736711
>>1877346
> профиты
Соморозвитие наверное

Лан, на деле я не знаю. Прост за 8 лет жээса он мне надоел и хочется новых ощущений лел.

Алсо как раз Нест с ТС и использую, мимо-ангуляр дивилопир
Аноним 10/12/20 Чтв 19:56:43 187755212
Аноним 10/12/20 Чтв 22:55:39 187771513
>>1877340
Приколы какие-то у тебя
Гошечке-то для рестика с вебсокетом + скл пул на такое количество юзверов и 128мб за глаза должно хватить. И вообще в го и гц максимальная латенси ориентация, а не бендвизная. Твои боязни скорее можно применить к котлину, нежели пщ
Подводных практически никаких, кроме стандартного месяца тупижа, свойственного при перекате на любой новый язык
Аноним 11/12/20 Птн 00:02:13 187774214
Почему в обучающих материалах сначала пишут main, а потом послее него определение всех функций, не логичнее наоборот?
Аноним 11/12/20 Птн 00:24:17 187775015
Аноним 11/12/20 Птн 00:28:05 187775116
Аноним 11/12/20 Птн 00:29:12 187775217
>>1877750
Почему? Гораздо лучше, когда ты видишь, что делает и возвращает каждая функция сначала, перед ее использованием.

>>1877751
В готуре и в книжке из шапки.
Аноним 11/12/20 Птн 00:32:06 187775418
>>1877742
>>1877752
Не ищи логику в этом языке. Здесь свой путь, в который ты должен просто верить, на время забыв про практику других языков и здравый смысл.
Аноним 11/12/20 Птн 01:17:47 187777419
>>1877754
Язык охуенен, на самом деле.
Надеюсь, дженериками его не сильно испортят.

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

А люди всё равно пытаются писать на го, как на питоне, джаве, си, а потом ещё и сюда пишут, лол.
Аноним 11/12/20 Птн 01:34:56 187778720
>>1877774
> Чтобы на уровне подсознания было разделение.
Обычно для такого уже достаточно того, что стандартная библиотека другая. Уже это заставляет думать, что язык другой и со своими правилами, даже если они похожи синтаксисом, как жаба и сярп.
Аноним 11/12/20 Птн 02:10:42 187780021
Я правильно понял, что компилятор считает вар арги как один аргумент? И из-за благодаря этому в операнды можно закинуть только один спред?
Можно как-нибудь заапендить несколько байт слайсов подряд?
Аноним 11/12/20 Птн 02:45:55 187780822
>>1877800
> вар арги как один аргумент
синтоксический сахар вместо слайса
>Можно как-нибудь заапендить несколько байт слайсов подряд
bytes.Join([][]byte{a, b}, nil)
Аноним 11/12/20 Птн 04:34:32 187782023
>>1877800
Можно использовать рефлексию, и ебашить слайсы в любые функции вообще:
https://stackoverflow.com/questions/17555857/go-unpacking-array-as-arguments/17556146

Можно сделать так, как сказал >>1877808
Прямо в скобках при вызове функции. Только в конце добавить …

Мне кажется (точно не нашёл ответа), что это по затратам памяти будет то же самое, как если бы можно было сделать unpack нескольких слайсов.

А если не байты, то можно и append использовать.
Аноним 11/12/20 Птн 04:41:53 187782124
Аноним 11/12/20 Птн 13:36:09 187801925
>>1877752
>Почему? Гораздо лучше, когда ты видишь, что делает и возвращает каждая функция сначала, перед ее использованием.
Нет не лучше.
Аноним 11/12/20 Птн 13:59:07 187804126
Аноним 11/12/20 Птн 14:46:12 187809227
>>1878041
Если гоферов выгнать из собственного треда, они в жаба-тред набегут.
Аноним 11/12/20 Птн 15:03:47 187810028
>>1878092
Наоборот же.
Я (>>1877844 →) вот, например, хочу убежать в го.
Заебало реально.
Хочется чётких и дерзких микросервисов и прочих модных вещей.

Аноним 11/12/20 Птн 15:18:11 187810929
>>1878100
Достаточно переехать на спринг бут, а джава ЕЕ 6 заебёт кого угодно.
Аноним 11/12/20 Птн 18:58:26 187828230
>>1877821
>the_j_
>2 years ago

>Go 2 is a myth to try to placate the people who want new features.
Аноним 11/12/20 Птн 21:18:56 187839531
Чому у меня с горутинами не просирается и\о?
Принчу и ос (*file) врайчу, ничего не оверлапится, пишется как будто синхронно
Мутекс и вейтгруппа дёргаются только на входе и выходе из функции, к и\о отношения не имеют
Это какой-то волшебный рантайм или где-то обосрался?
Гринтреды вроде спавнятся и крутятся нормально
Аноним 11/12/20 Птн 21:46:47 187842432
>>1878395
>Мутекс
Думаю, дело в этом.
Его надо дёргать в горутине, не не до того как.
Аноним 11/12/20 Птн 23:11:26 187847433
>>1878424
И вправду я тормоз и за счёт мутексения буффера у меня там ничего не может при конкуренте зафейлиться, лол
Но попробовал прогнать без него и всё равно os.*file write вроде не отличается

И вообще почему те же принты не оверлапятся в stdout?
По годокам вроде не тред-сейфовые
https://play.golang.org/p/_LCu_cHahGf
Аноним 12/12/20 Суб 00:10:02 187851034
>>1878474
Что за хуйню ты написал?
Что ты хотел получить в результате?
Аноним 12/12/20 Суб 00:50:43 187853135
>>1878474
Залез сейчас во внутренности работы с файлами и да, Write действительно защищен мьютексом. https://golang.org/src/internal/poll/ , смори файл fd.go с суффиксом твоей ОС
Аноним 12/12/20 Суб 01:11:38 187854236
>>1878510
Ожидал что может быть "HuuHoooo"
Я не очень во всякие буферы с флашеми, что-то вот вспомнил свои выстрелы по ногам раньше, вроде в С
Правда сейчас нагуглил, что даже в С форк копирует дискрипторы и еще что-то там системное, не знаю, что я там раньше делал, лол
Аноним 12/12/20 Суб 01:11:50 187854337
>>1878474
Я понимаю что это просто пример, но пустой цикл это -ядро в рантайме, лучше использовать пустой select, а еще лучше <-context.Context.Done() или wait/errorgroup.Wait()
Аноним 12/12/20 Суб 01:14:45 187855138
>>1878531
Ты думал у тебя буквы в словах перемешаются при параллельной печати из горутин?
Это было бы слишком, я думаю.

Хочешь чего-то такого - сделай свой "принт", который будет печатать в заранее созданный длинный массив байтов. Потом - выведи заполненный массив в текстовый файл. Всё сразу увидишь.
Аноним 12/12/20 Суб 02:02:44 187857039
>>1878543
>пустой select, а еще лучше <-context.Context.Done() или wait/errorgroup.Wait()
Можешь переписать с этими штуками плизки7
Я вроде уже пишу штуки который даже работают, но ещё далеко до нащупывания бест практисов
Аноним 12/12/20 Суб 02:06:16 187857340
Аноним 12/12/20 Суб 17:35:55 187877041
Как фиксить
expected 'STRING', found '{'
тут:
import {
"golang.org/x/tour/tree"
"fmt"
}
Аноним 12/12/20 Суб 17:37:10 187877242
Аноним 12/12/20 Суб 20:43:53 187890443
>>1878570
select - https://play.golang.org/p/7Uzle2jTsIS
ctx - https://play.golang.org/p/5PXIDpUBuIT
wg - https://play.golang.org/p/CjYO5H87gMe - в случаях, когда количество горутин-воркеров заранее известно - лучше не вызывать в цикле wg.Add(1), а сразу перед циклом сделать wg.Add(100). Важный момент - wg.Add должен быть вызван до wg.Wait, по этому лучше всего его вызывать в той же горутине где и wg.Wait, а не в той, где wg.Done
Аноним 12/12/20 Суб 21:08:48 187892044
Аноны, что думаете о реализации actor модели в пщ? Паралельно учу akka в университете и заинтерисовался, если akka настолько успешна, то почему в го это никого не интересует?
Аноним 12/12/20 Суб 21:11:20 187892545
>>1878920
Я думаю что все уже наелись колбеков в js, python twisted и асинхронной джаве.
Аноним 12/12/20 Суб 21:17:17 187893146
>>1878920
Акторы - довольно спорная вещь.
Как и успешность Akka.
Аноним 12/12/20 Суб 21:37:20 187894047
>>1878920
Как дженерики завезут - попробую github.com/ReactiveX/RxGo, до этого даже пытаться не буду во что-то подобное. Я лучше буду писать кучу однотипного кода, чем работать с пустыми интерфейсами.
Аноним 12/12/20 Суб 21:45:19 187894348
Кому и зачем нужно Rx, если это не GUI?
Аноним 12/12/20 Суб 21:48:53 187894649
>>1878943
Ну, big data там, всякое такое.
Аноним 12/12/20 Суб 21:52:44 187894850
>>1878943
А в GUI оно зачем? Вывод: Rx - хуйня без задач.
Аноним 12/12/20 Суб 22:44:58 187899151
>>1878948
Золотые слова.

Не так уж давно, Manning собрался издать книжку Grokking Reactive Programming - про RxJava.
Они даже начали продавать её по MEAP, ещё до завершения.
И я даже её купил, сдуру.

Но, в процессе написания, книжка превратилась в RxJava for Android Developers.
Т.е., помимо андроида про Rx на джаве и написать-то нечего оказалось.
Такие дела.

Также, я, в своё время, прочёл маннинговскую же Functional Reactive Programming.
Там не про Rx, а вообще, на примере самодельного фреймворка.
Было охуенно познавательно, но, практического применения, помимо UI и подобных вещей, я не увидел.

В общем, всё это весьма нишевая хуйня, реально нужная весьма немногим.
Аноним 13/12/20 Вск 06:02:40 187913652
Почему в го нет конструкции типа implements InterfaceName в джаве?
Т.е. в коде совершенно непонятно, какой именно интерфейс реализует та или иная функция.

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

И есть ли какой-то стандартный комментарий, чтобы отмечать это в своём коде? По типу тегов javadoc?
Аноним 13/12/20 Вск 23:21:16 187972553
>>1879136
пользуйся нормальной ide
Аноним 14/12/20 Пнд 00:33:53 187982254
>>1878943
В веб-фреймворке nest.js можно использовать Rx для вебсокет-соединений. Сам не пробовал, но вроде как это единственно правильный способ готовить там вебсокеты.
Аноним 14/12/20 Пнд 00:38:34 187982555
>>1879136
> Почему в го нет конструкции типа implements InterfaceName в джаве?
Это осознанное решение разработчиков языка, в целом имеет больше плюсов, чем минусов, на мой вкус.
> И есть ли какой-то стандартный комментарий, чтобы отмечать это в своём коде? По типу тегов javadoc?
В стандартной либе практически над каждым методом, который реализует интерфейс это обозначено, но вроде никто вне стандартной либы так не делает.
Если сильно хочется - пиши конструкции вида var _ IfaceName = new(TypeName), голанд даже может указать на недостающие методы и предложит их создать.
Аноним 14/12/20 Пнд 00:48:43 187983256
>>1879725
Чувак, про иде я в курсе. Я джаваёб со стажем, если что.
Вопрос был не об этом.
А о том, почему такой красивый простой язык, с великолепно читаемым кодом, имеет такой неожиданный изъян.

Полагаю, что дело в том, что, фактически, в го нет имплементации интерфейсов, как таковой. Т.е. если есть 2 интерфейса с методом Zalupa(), то 1 тип может их оба сразу имплементировать, просто реализовав этот метод.

Но, я бы писал это в комментариях к фукнциям всё равно.
Типа //@implements ZalupaProvider
И мне странно, почему такую простую вещь никто не делает.
Хотя, может и делают. Я пока книжки и туториалы читаю, в основном, реальных исходников видел немного.

>>1879822
Да, такое ощущение, Rx только в JS и прижился.
И, в основном, на фронте, хотя бывают и исключения, как видим.
Ну, может, ещё в дотнете, т.к. это изначально мелкомягкое поделие, но, я туда не хожу, и хз что там вообще.
Аноним 14/12/20 Пнд 00:52:17 187983757
>>1879825
Лол, пока писал свою простыню, уже ещё раз ответили.

>Это осознанное решение разработчиков языка
Да, я так и предположил.

>var _ IfaceName = new(TypeName),
Это будет оптимизировано компилятором, т.е. выкинуто из бинарника?
Аноним 14/12/20 Пнд 01:38:51 187991558
кто что юзает для валидации структур?
Аноним 14/12/20 Пнд 02:19:45 187994159
>>1879136
>Т.е. в коде совершенно непонятно, какой именно интерфейс реализует та или иная функция.
Потому что одна функция может реализовывать сразу несколько интерфейсов?
Аноним 14/12/20 Пнд 12:51:56 188015460
>>1879136
Это изъян только с точки зрения джаваёба
Аноним 14/12/20 Пнд 13:38:35 188018661
>>1879915
структур или, например, запросов по структурам?
мимо веб-макака, gin.Context.ShoudBindJSON(&struct)
Аноним 14/12/20 Пнд 13:41:04 188018762
Есть работа с модулями как с pip или npm? Типа файл в котором прописано всё, я просто делаю xxx install module_file.txt и мне все зависимости скачиваются и я рад?
А то видел только, что всё руками надо go get, но это хз для кого сделано.
Аноним 14/12/20 Пнд 13:50:17 188019463
>>1880187
Go mod, пишешь зависимости в файле с версиями, запускаешь сборку, всё качается само.
Аноним 14/12/20 Пнд 14:34:12 188021364
>>1880154
Нет.
Ты, видимо, ваннаби-вкатыш, и не писал ничего сложнее хелловорлда в своей жизни.

Это затрудняет понимание кода.
Выше пишут, что в стандартной библиотеке комментируют имплементации. Потому, что профессионалы, и понимают такие вещи.

Если функция соответствует нескольким интерфейсам, то надо писать либо их все, если они известны в данный момент, или тот, который подразумевается разработчиком в момент написания этой функции.
Аноним 14/12/20 Пнд 14:52:42 188022265
image.png 7Кб, 329x328
329x328
>>1879136
Потому что уподобились утиной типизации из динамикодрисни. Мол, не важно, что тип формально реализует какой-то интерфейс, важно только наличие в нём указанных методов.
Вот только на практике неприятно выяснять, что нет нужного метода, только в тот момент, когда уже пытаешься вызвать, потому что до этого нет возможности проверить соблюдение контакта. Спасибо ещё, что это ошибка компиляции, а не "не найден нужный метод!!1" в рантайме.
Аноним 14/12/20 Пнд 15:40:34 188025766
>>1880222
А, вон оно что.
Я просто до этого (interface{Methoc()}) не дошёл пока.

Ну, ничего плохого в этом не вижу.
В TypeScript такое тоже есть, например.

>неприятно выяснять
Ну, в джаве с интерфейсом было бы то же самое - ошибка компиляции.
Так что, всё нормально.
Аноним 14/12/20 Пнд 16:07:55 188028267
>>1880186
интересует именно валидация структур после анмаршалинга из жсона. смотрел на gin, но обратил внимание на то, что тамошний валидатор рефлексию использует. может ли это быть узким местом?

искал решения на основе кодогенерации, но таковым смог похвастаться только swagger, а это в моем случае оверхэд - тащить ради одной валидации инструмент, предназначенный для другой цели вообще
Аноним 14/12/20 Пнд 18:50:49 188043368
>>1880282
Сам напиши, тем более - ради одной валидации.

И, в джаве я бы использовал рефлексию, с кешированием методов и т.п. для скорости.
В го оно всяко не медленне должно быть же?
Аноним 14/12/20 Пнд 23:44:15 188074669
>>1880222
Так в момент вызова или при компиляции всё-таки? Определись пожалуйста
>>1879915
Что ты понимаешь под этим? Что в жсоне нет полей, которых нет в твоей структуре? Или наоборот? Или что значения допустимые?
14/12/20 Пнд 23:54:05 188075370
>>1880746
В момент вызова при компиляции.
Аноним 15/12/20 Втр 14:31:24 188107971
Нашел лютейшую книжку.
Hands-On Software Engineering with Golang.
Anagnostopoulos Achilleas

Прямо, читать — не перечитать! Есть на трекере, но можно и за 50 бачей взять, не так уж и много за такую годноту.
Аноним 15/12/20 Втр 15:22:59 188109872
>>1879136
потому что интерфейсы либо настолько общеизвестные вроде райтера/хттпхендлера, что по методам понятно. либо потому что они настолько специализированные, уникальные для проекта, что юзеры и так список методов в голове будут держать, если собираются ими пользоваться. ты лучше пример дай, а то похоже на "никаквжаве!!"
Аноним 15/12/20 Втр 16:43:41 188116873
>>1881079
Ты что, книжки от пакт первый раз видишь? Это очень своебразная контора, я бы поостерегся с выводами до детального ознакомления.
Аноним 15/12/20 Втр 16:45:43 188117074
>>1881168
>Это очень своебразная контора
Хм, а по подробнее можно ?
Аноним 15/12/20 Втр 16:51:21 188117475
>>1881170
У них фича это нахуярить поскорее тайтлов на хайповые темы и срубить бабла, пока не подтянулись большие издатели (если вообще). Зачастую берут в работу каких-то индусов-чучмеков без крепкого знания инглиша, и потом так и выпускают без особого QC.
Бывают иногда и хорошие книги, но это пиздец лотерея. Короче, эдакий удеми от книжек.
Аноним 15/12/20 Втр 18:47:27 188128876
>>1881174

Двачую вот этого: >>1881079

Про эту книжку неоднозначные отзывы на amazon.
Но, хороших больше.
А в плохом написано, что поверхностная хуита для ньюфагов.
Там такое пишут про многие книги пакта.
Аноним 15/12/20 Втр 18:48:22 188129077
>>1881288
Блядь, ссылки на посты перепутал местами, ну, вы поняли.
быстрофикс
Аноним 15/12/20 Втр 19:22:21 188134778
>>1881288
>что поверхностная хуита для ньюфагов
Ну кому как, я так-то нюфаг в го, но после прочтения главы, если она была достаточно интересной, стараюсь копать глубже, разбираюсь, пробую тд. На одних контейнерах застрял на 3 месяца в другой книге, столько всякой хуйни написал что пздц. Даже не представляю какая книга должна быть, чтобы описать все сценарии использования и нюансы отдельно взятой темы. Может быть такая есть, что посоветуете ?
Аноним 15/12/20 Втр 19:47:03 188136679
>>1881347
Да нет таких всеобъемлющих книг, наоборот надо искать по конкретным темам.

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

Короче - спасибо за подгон.

Вот книжка, если кому надо:
https://scanlibs.com/hands-software-engineering-golang-programming/
Вот отзывы на amazon:
https://www.amazon.com/dp/1838554491/#customerReviews
Аноним 16/12/20 Срд 10:51:56 188173080
Сап, суслики. Есть тут кроме вкатывальщиков кто? Есть вопрос с подвохом, так сказать.
Исходные:
Микросервис, который принимает по ~100 сообщений в секунду из mqtt, далее сообщение обрабатывается каштомный бинарный протокол, ебать его в сраку и по мере обработки в отдельный канал пуляется структура с задачей на запись. Так уж получилось, что нет возможности укладывать 1 сообщение = 1 запись в БД. Так вот, далее в горутине крутится цикл, который разбирает этот канал и пишет уже задачу в БД. БД Postgres, либа pgx. Пулл в ограничен в 10 подключений. Прикол в том, что заняты не более 3-5 подключений и запросы тормозятся. Со временем их накапливается в очереди много. Для запуска запросов использую "изкоробочную" pgxpool.Pool.Exec(). Вроде бы не такой уж маняхайлоад, чтобы тормозило. Кто поопытнее поясните пожалуйста, где я проебался. В своей конторе и спросить некого, го больше никто не знает.
Аноним 16/12/20 Срд 12:36:19 188178681
>>1881174
двачую, повелся на эту хуйню летом и купил "Golang для профи". лучше бы просто пропил 1,5к, которые потратил на нее
Аноним 16/12/20 Срд 12:42:04 188178982
>>1881730
>нет возможности укладывать 1 сообщение = 1 запись в БД
Что это значит?

Кстати, чем вообще тестируют такую хуйню?
В смысле - чем давать нагрузку? Есть какие-то специальные инструменты, или своё колхозить?
Аноним 16/12/20 Срд 12:48:47 188179283
>>1881786
Про этого автора очень плохие отзывы везде.
Не надо покупать вслепую в наше время.
Аноним 16/12/20 Срд 12:58:55 188180084
>>1881789
>Что это значит?
Пока обрабатывается сообщение улетает несколько запросов в БД (запись).

>В смысле - чем давать нагрузку? Есть какие-то специальные инструменты, или своё колхозить?
Тулы наверняка есть, но я не интересовался, у меня тут и без того хватает нагрузки. Своё наколхозить за пару минут можно. Цикл, который будет создавать N горутин, в которых будет какой-то запрос в БД, вот тебе и хайлоад на БД, если ты об этом.
Аноним 16/12/20 Срд 13:37:06 188183885
>>1881730
> 100 сообщений в секунду
Для постгреса это вообще ничто для insert'a. Какой запрос в бд летит? EXPLAIN ANALYSE что выдает?

У тебя где сообщения стопорятся? Мб твой йоба бинарный обработчик тупо захлебывается? Ты хоть какие-то дебаг данные дай, или нам тебе на кофейной гуще нагадать твой боттлнек?
Аноним 16/12/20 Срд 13:39:00 188184286
>>1881800
Я имел в виду, скорее, отправку множества сообщений.
Понятно, что несложно это самому сделать, но, я думал, может есть какие-то особые штуки для этого.

Ты, кстати, отдельно именно работу пула БД проверял?
Смог полностью загрузить все 10 соединений?
Аноним 16/12/20 Срд 13:40:26 188184487
>>1881800
> Пока обрабатывается сообщение улетает несколько запросов в БД (запись).
Почему не заворачиваешь в транзакцию?
Аноним 16/12/20 Срд 14:30:16 188188888
image.png 48Кб, 1215x185
1215x185
image.png 64Кб, 673x396
673x396
image.png 58Кб, 1208x313
1208x313
>>1881838
Эксплейн в пикрелейтед.
> Мб твой йоба бинарный обработчик тупо захлебывается?
Сам первым делом на него грешил, но тут прикол в том, что нужно отвечать сразу же после обработки, я замерил время ответа и нет, с обработчиком всё ок, отрабатывает как положено. Посмотрел каналы, там никаких очередей не образовывается.
В общем, на каждый клиент на связи открывается канал, который ждёт структуры с данными из обработчика, как только приходит, дёргает одну из функций "модели", которая запускает запрос на апдейт/инсерт (пик 2), в функциях sql и аргументы из входящих данных, которые уходят в пик 3. И на этом месте начинается тупняк.
>>1881842
>Ты, кстати, отдельно именно работу пула БД проверял?
Ну как "проверял". Вот статы смотрел, в либе самой (pgx) не ковырялся.
10 соединений забиваются если дёргать pgxpool.Pool.Query() а не Exec(), но на этом дедлокаются.
Запросы простецкие, базовые апдейты/инсерты.
>>1881844
Да вот думаю как раз, что стоит попробовать. Раньше не сделал, потому что лень было транзакцию тягать, флаги слать когда создавать, когда коммитить.

Аноним 16/12/20 Срд 18:02:33 188203989
>>1881888
> 383ms
Чет жирно для обычного апдейта, что в `get_or_create_object...` функции? С такими таймингами (ты еще и говоришь, что на одну запись несколько вызовов бд идет) и правда может БД быть горлышком.
Аноним 16/12/20 Срд 18:49:42 188206390
image.png 5Кб, 274x67
274x67
>>1882039
Да, конкретно это самый жирный запрос. Остальные в пределах такого.
А в процедурке там йоба-поиск по разным таблицам и в случае отсутствия такого серийника добавление строк с дефолтными значениями в несколько таблиц
Аноним 16/12/20 Срд 19:11:31 188207591
>>1882063
Попробуй индексы захуярить, чтобы шустрее функция бд читала. Тебе нужно запрос оптимизировать, либо мощностей добавлять (т.н. потоков и подключений к бд). У тебя считай 3 запроса и уже на секунду зависло все действо. А их у тебя под сотню в секунду, вот и гг.
Аноним 16/12/20 Срд 19:16:14 188207892
>>1882075
Вообще, да, напишу-ка я под этот сервис отдельную процедуру. Эта легаси бородатых годов, которая которая допиливалась напильником.
Аноним 16/12/20 Срд 22:41:59 188222193
Когда я делаю go mod init huy, то ставит модули глобально?
Аноним 16/12/20 Срд 22:49:08 188223194
>>1882221
Что значит "глобально"? Кладёт зависимости всех проектов в общий локальный репозиторий, а не качает каждый раз с нуля для каждого проекта, вроде дрисни npm? Тогда да.
Аноним 16/12/20 Срд 23:03:04 188224095
Аноним 16/12/20 Срд 23:12:13 188224196
Аноним 17/12/20 Чтв 00:06:35 188226997
>>1882221
>>1882231
Да, "глобально". Но если ты про версии - нет, разные версии не будут конфликтовать на одной машине. А если сильно надо - можешь вендор делать прямо в директорию проекта, не скачивая их в общий каталог.
Аноним 17/12/20 Чтв 00:11:23 188227398
>>1882269
А что то вроде virtualenv тут нет?
мимо перекатывальщик с пистона
Аноним 17/12/20 Чтв 00:17:34 188227999
>>1882273
> А что то вроде virtualenv тут нет?
Неа, такого нет. Сосешь хуй с локальной версией голэнга, либо можно поставить несколько версий языка, но вот что при этом будет с зависимостями - я хуй знает.
Аноним 17/12/20 Чтв 00:20:08 1882283100
>>1882279
А если нужны разные версии для разных проектов, то что делать?
Аноним 17/12/20 Чтв 00:20:43 1882284101
>>1882283
разные версии модулей
фикс
Аноним 17/12/20 Чтв 00:22:05 1882286102
>>1882284
Я же написал

> Да, "глобально". Но если ты про версии - нет, разные версии не будут конфликтовать на одной машине.
Разные версии пакетов одновременно скачиваются, так сказать. Конфликтовать не будет ничего.
Аноним 17/12/20 Чтв 00:25:15 1882289103
>>1882286
>>1882284
Более того, если ты шизик - ты можешь даже в одном проекте одновременно 2 разных версии пакета юзать, нужно ток прописать в mod файле replace свой на каждую версию.
Аноним 17/12/20 Чтв 00:35:20 1882295104
>>1882289
А есть какой-нибудь мастхев список по инструментарию для го?
С более актуальными библиотеками, а не как в awesome go, где большая часть либ заброшена авторами
Аноним 17/12/20 Чтв 00:38:56 1882297105
Аноним 17/12/20 Чтв 00:44:37 1882306106
>>1882279
А разве нельзя добиться чего-то подобного меняя переменные окружения?
Аноним 17/12/20 Чтв 00:46:18 1882307107
>>1882306
Хз, не сталкивался, нужно нагуглить с другой стороны похуй на пакеты, go get хуяришь и будь что будет)))))0
Аноним 17/12/20 Чтв 00:54:09 1882313108
>>1882297
Начал глядеть, увидел http/https и призадумался, что значит знать это. Структура пакета? Методы и коды ответа? Стратегии кеширования? Знание части заголовков? Понимание как работают сертификаты?
Аноним 17/12/20 Чтв 01:05:52 1882318109
>>1882313
> Структура пакета
Достаточно "Здесь версия хттп, дальше хедеры с новой строки, дальше тело запроса/ответа".
> Методы и коды ответа
Знать основные.
> Стратегии кеширования
Похуй.
> Знание части заголовков
Да, знать десяток самых основных.
> Понимание как работают сертификаты
На уровне знания, что это такое и как их скормить http-фреймворку.
Аноним 17/12/20 Чтв 01:11:15 1882324110
>>1881888
В какой предметной области эта задача, если не секрет?
Что за девайсы шлют сообщения?
Аноним 17/12/20 Чтв 01:23:39 1882330111
О, я думал что бы написать такого. Напишу тулзу, которая бинарник в бандл на макоси собирает.
Аноним 17/12/20 Чтв 12:59:13 1882587112
>>1882324
Да нет, не секрет. Как ты понял, это IoT. Собственная разработка компании, но суть -- ардуина, к которой прикручены те или иные модули. Может быть использована где угодно в зависимости от обвязки. Конкретно это дальнометры с акселлерометром.
Аноним 17/12/20 Чтв 13:02:36 1882590113
>>1882587
А подключение по какому каналу?
IP прямо на ардуине поднят?
Аноним 17/12/20 Чтв 13:05:11 1882594114
>>1882590
Там не ардуина, но суть та же. GSM-модули в бутерброде.
Аноним 17/12/20 Чтв 19:39:44 1882982115
Ну что там, дженерики завезли, посоны?
Мимонеписалнаэтойпарашеужедвагода
Аноним 17/12/20 Чтв 19:45:09 1882986116
>>1882982
В Go 2, который выйдет хуй знает когда.
Аноним 18/12/20 Птн 00:30:29 1883158117
>>1876438 (OP)
Hands-On GUI Application Development in Go
Есть у кого такая херь или подбное? Интересует fyne.
Аноним 18/12/20 Птн 03:14:44 1883229118
image2.png 12Кб, 766x529
766x529
image.png 69Кб, 1119x476
1119x476
>>1883158
>fyne
Может кто разбирается в этой шляпе
Как ловить инпут входящий по всему шиднову?
Ковырял когда-то, костыльнул проблему добавлением таппабл инпута на весь размер окна, лол
И может есть какое-то решение для неподдерживающих unresizable и похожие окно-опционные штуки wm?


мимокрок
Аноним 18/12/20 Птн 12:35:18 1883373119
>>1883229
Там Tappable интерфейс есть, его реализуешь и в методы будет прилетать объект, где можешь координаты пиздить.

Подробнее в одном из их примеров можешь глянуть: https://github.com/fyne-io/life/
Аноним 19/12/20 Суб 00:20:15 1884226120
>>1883158
Эта книжка есть на scanlibs.com

>>1882982
Дженерики не нужны.
Go 2 не будет, го будет асимптотически стремиться к версии 2.

Аноним 20/12/20 Вск 16:20:49 1885481121
>>1879837
>Это будет оптимизировано компилятором, т.е. выкинуто из бинарника?
Да. Но все равно рекомендую писать это не в основном коде, а в *_test.go, т.к. это поможет избежать циклического импорта в некоторых случаях.
Аноним 20/12/20 Вск 19:35:44 1885631122
Что стабильнее под го, gtk или qt?
Аноним 20/12/20 Вск 19:44:01 1885636123
>>1885631
Мне кажется, это не очень правильный вопрос.
Тут надо смотреть - что само по себе стабильнее?
Я думаю, что Qt.
https://www.linux.org.ru/forum/general/14754708

По поводу Го - правильный вопрос - что удобнее использовать в Го?
Я ответа не знаю, но, можно посмотреть примеры кода.
Аноним 20/12/20 Вск 19:49:03 1885641124
>>1885631
Чем брать фанатские биндинги, лучше используй Gp по назначению или не используй.
Пытался тыкать их где-то год назад. Инструкции на гитхабе выглядят просто, но у меня не заработало, оба валились с ошибками, которые не гуглились. Проще на крестах писать, чем ебаться с этим говном.
Аноним 20/12/20 Вск 19:49:09 1885642125
Аноним 20/12/20 Вск 19:50:00 1885643126
Аноним 20/12/20 Вск 19:52:47 1885645127
>>1885643
Тогда уж сразу говноэлектрон.
Аноним 20/12/20 Вск 21:28:53 1885707128
>>1885641
Вот я и пишу на крестах qt, а хотел попробовать на го.
Аноним 22/12/20 Втр 16:23:44 1887191129
Аноним 22/12/20 Втр 18:11:37 1887335130
Анон, очень срочный вопрос, почему в го проверку ошибок не пишут в одну строку, когда это можно?

if err != nil { return nil, err }

вместо

if err != nil {
return nil, err
}
Аноним 22/12/20 Втр 18:45:01 1887381131
>>1887335
> очень срочный вопрос
Ты рофлишь?

> почему в го проверку ошибок не пишут в одну строку
Потому что решили насильно установить единый кодстайл. Другого ответа ты не услышишь.
Аноним 22/12/20 Втр 18:52:41 1887389132
>>1887381
А где найти упоминание о таком кодстайле? Я ничего не смог нагуглить.
Аноним 22/12/20 Втр 18:55:53 1887391133
>>1887389
gofmt - насильно навязанный кодстайл от создателей самого языка. Ты вчера родилася?
Аноним 22/12/20 Втр 19:06:13 1887403134
>>1887391
Ну че ты злой такой? Понял я все
Аноним 24/12/20 Чтв 21:46:17 1889810135
Привет, гоферы. Кому нужна работа?
В компании, более-менее известной под брендом "мой офис" требуются разработчики бекенда. Пишем микросервисную распределённую отказоустойчивую корпоративную систему общения и документооборота, а если проще то убийцу ms exchange, ms active directory.
Почитать подробнее можно в блоге на хабре: https://habr.com/ru/company/ncloudtech/blog/

Стек: го, rethink DB, arangodb, grpc, docker. Кодогенерацию любим. Офис в центре ДС, сейчас удалёнка, после ковида обещают частичную удалёнку в каком-то виде.
Вилку мне публиковать запретили, но могу сказать, что в опросах на Хабре вы сможете быть в высших процентилях.
Требования: иметь опыт программирования на чем-нибудь, ориентироваться в го на уровне "мочь внятно рассуждать на темы многопоточности, сетевого взаимодействия и эффективности". Я вкатился прочитав Кернигана Донована и написав пет-проект.

Из неформального могу сказать, что рабочий процесс в конторе поставлен хорошо, то есть нет управленческого хаоса, мнение рядового разраба слышат - то есть если ты аргументированно предлагаешь технологию или подход, то её вредят. Работы много, на годы вперёд.
Пишите в телегу @toorneps, после испытательного срока попилим бонус за найм. Если не хотите пилить - откликайтесь на вакансию на хх.
Отвечу на ваши вопросы.
Аноним 24/12/20 Чтв 21:47:57 1889814136
Аноним 24/12/20 Чтв 22:55:36 1889918137
image.png 29Кб, 655x441
655x441
>>1876438 (OP)
Какие компетенции нужно иметь в Go(с примерами), чтобы претендовать на работу пикрил и не облажаться в ней?

дайте дорожную карту, рукава я уже засучил
Аноним 24/12/20 Чтв 23:24:55 1889936138
>>1889918
Так может стоит сначала джуновские/мидловые вакансии обуздать, так сказать?
Аноним 24/12/20 Чтв 23:26:01 1889937139
>>1889810
> после испытательного срока попилим бонус за найм
Это типа безвозмездный подгон брату анону? Звучит слишком хорошо, зачем тебе вообще делиться?
Аноним 24/12/20 Чтв 23:29:09 1889940140
>>1889936
Ну так дай список:
- джун должен уметь делать это:
- мидл должен уметь делать это и поддерживать это:
- претендент на 10к баксов в ДС должен уметь создавать с нуля это:
Аноним 24/12/20 Чтв 23:30:48 1889944141
>>1889940
Ты должен быть способен написать на голэнге приложение из нескольких микросервисов и подвязать всё это в каком-нибудь кубернетусе. Если сможешь - ты джун.
Аноним 24/12/20 Чтв 23:32:29 1889946142
>>1889937
Да, безвозмездный, потому что я делюсь не своими деньгами. При этом в моем отделе, как впрочем и в других, нужны люди. Если ты отсобеседуешься на рядового программиста и пройдёшь испытательный срок, то получишь что-то типа 15к. Не такие деньги, чтобы я не мог с тобой поделиться.
Аноним 24/12/20 Чтв 23:34:21 1889949143
>>1889946
> что-то типа 15к
А, я думал там более существенные суммы, тогда лан.
Аноним 25/12/20 Птн 11:55:07 1890380144
>>1890128
Да, рублей. Чего вы к этому бонусу прицепились, это вообще третьесепенное обстоятельство.

Это не госкомпания. Половиной доли владеет лаборатория Касперского, остальными - другие частные лица.
Аноним 25/12/20 Птн 12:27:17 1890408145
>>1889810
Вакансия хорошая но носклы страшные
Аноним 25/12/20 Птн 13:29:21 1890484146
>>1889810
> "мочь внятно рассуждать на темы многопоточности, сетевого взаимодействия и эффективности". Я вкатился прочитав Кернигана Донована и написав пет-проект.

Это джун позиция чтоль? Ты бы подробнее написал че надо то им по опыту и т.д. Нет ссылки на хх?
Аноним 25/12/20 Птн 15:55:53 1890660147
Как у вас накатаюываются миграции? Отдельной такой в сисд, джобой в кубе или самой аппой при старте? Почему?
Аноним 25/12/20 Птн 18:01:17 1890775148
>>1890484
От джуна и выше, нужны все. Я описал минимальный уровень, если ты продвинулся дальше - тоже возьмём.
https://hh.ru/vacancy/28417466
Вот вакансия.
Аноним 25/12/20 Птн 18:08:07 1890784149
>>1890775
Тут надо уточнить, что у нас нет формальных лычек джун-мидл-синьор
Аноним 25/12/20 Птн 18:31:15 1890815150
>>1890775
Пишут про опыт серверной от 3х лет, не совсем джуна хотят, кек.
Аноним 25/12/20 Птн 18:57:38 1890848151
>>1890815
Когда я нанимался, у меня был опыт серверной разработки в несколько месяцев на одном проекте, где я был единственным сотрудником.
Я был удивлён, но найти гошников, которые отличают односвязный список от хеш-мапы оказалось непросто, поэтому отклонение твоего опыта от описанного в вакансии допускается в значительных пределах.
Аноним 25/12/20 Птн 20:03:03 1890870152
>>1890848
Я язык голубого суслика не для чтобы какие-то ссаные структуры данных крутить.
Аноним 25/12/20 Птн 23:29:23 1890973153
Хардкорный разработчик на С++ ( 12 лет ) ИТТ.
Скажите, как на вашей хуйне писать что-то не имея, ладно ООП, это соглы. хуйня, но как без шаблонов обойтись?
Аноним 26/12/20 Суб 01:10:06 1891020154
Нормуль.
Как человек с сишным бжкграундом, не чувствую никакого дискомфорта.
Аноним 26/12/20 Суб 01:11:02 1891021155
>>1890973
> шаблонов
Дженерики скоро подвезут или нет
Аноним 26/12/20 Суб 01:49:53 1891063156
>>1890973
Сишники обходятся void⚹ и генерацией через макросы #define, вот и здесь обходятся interface{} и васянской кодогенерацией. Выжить можно, жить нельзя, это как питаться только дошираком.
Аноним 26/12/20 Суб 08:29:14 1891248157
>>1890973
>не имея ООП
Зачем вбрасывать унылый жир
В этом треде многие на самом деле не могут осилить
Аноним 26/12/20 Суб 09:32:30 1891257158
Аноним 26/12/20 Суб 13:04:15 1891349159
>>1891257
Где троллинг? Анон все верно написал. Тебя не гугл написать требуют, даже блог сойдет, если ты его хотя-бы парочкой свзянных микросервисов сделаешь в кубере. Если ты не способен такое сделать на го - то ты не джун, ты трейни.
Аноним 26/12/20 Суб 14:33:05 1891422160
>>1880213
Профессионал бля, Goland купи и не серь своей шизой тут больше.
Аноним 26/12/20 Суб 19:05:01 1891641161
Чому сегодня до сих пор можно выбрать рест вместо grpc?
Аноним 26/12/20 Суб 19:08:16 1891647162
Аноним 26/12/20 Суб 23:11:35 1891869163
image.png 47Кб, 600x315
600x315
>>1876438 (OP)
Насколько уверенно нужно шарить в Докере и Кубернетесе, чтобы вкатиться на норм позицыю гофера? Если мой верх - это написать докер-компоуз/докерфайл и в общих чертах поднять это всё с каким-то traefik, а кубер я вообще боюсь как огня - я тварь дрожащая или право имею?
Аноним 26/12/20 Суб 23:18:34 1891885164
>>1891869
> позицыю
позицию* быстрофикс

> это написать докер-компоуз/докерфайл и в общих чертах поднять это всё с каким-то traefik
Ну и еще добавлю, что смогу там автотесты всякие и ci/cd простейший в гитлабе или гитхабе настроить с ssh.
Аноним 27/12/20 Вск 00:14:08 1891913165
Недавно попробовал пописать на го лабы по одному из курсов в унике. В целом понравилось, но выглядит очень сыро, как будто язык задумывался как первоапрельский троллинг от гугла, но вдруг люди стали им пользоваться и пилится он с большой неохотой. Вопрос такой: как же правильно обрабатывать ошибки? Наверное уже неоднократно задавался, но всеже. Мне кажется максимально уродско выглядит вставка ифов с ретерном еррора после каждой строчки. Можно конечно присваивать ошибку непосредственно в условии, но это не работает если мне нужно что то помимо еррора получить из функции, так как же быть?
Аноним 27/12/20 Вск 00:20:43 1891917166
>>1891913
>так как же быть?
Никак, ты уже перечислил оба варианта.
Аноним 27/12/20 Вск 00:21:18 1891918167
>>1891913
> Мне кажется максимально уродско выглядит вставка ифов с ретерном еррора после каждой строчки
Тебе не кажется, это действительно выглядит уродско. Альтернатив в Go нет и в обозримом будущем не будет.
Аноним 27/12/20 Вск 00:36:01 1891927168
>>1891918
понятно. ну деды на си же как то прогали даже без описаний ошибок, получая тупо -1, так что это еще куда ни шло
Аноним 27/12/20 Вск 00:43:23 1891930169
>>1891927
Не, в сишке тоже описания ошибок были (и есть). Почти в любой либе имеется какой-нибудь getlasterror(ctx_ptr), глобальная переменная с кодом ошибки (errno) или прокидывание кодов ошибок с последующей передачей в errmsgfromcode(err_code).
Аноним 27/12/20 Вск 00:45:52 1891933170
>>1891930
хм, ок. особо глубоко в си не погружался и не знал про это
Аноним 27/12/20 Вск 00:58:32 1891945171
>>1891933
Этот долбаеб тебя наебал, в си ошибки еще более примитивны (а точнее это тупо цифры), чем в Go, не говоря уже о их обработке. Также в голэнге ты можешь нагрузить ошибки как хочешь, даже стектрейсы строить, если необходимо. Но да, это не эксепшены и чудес от этой системы не жди, зато работает шустро. Не баг а фича, блять.

>>1891930
Не путай адекватную систему ошибок с поддержкой достаточно всрато реализованных функций в либах (причем даже в стдлиб считай только числами себя в рот ебешь). В го есть интерфейс, с помощью которого ты можешь реализовать любой сложности объект ошибки, хоть уссысь, тот же контекст - это стдлиб в голэнге. Не сравнивай говно с мочой, что в сях, что в го - обработка ошибок это примитивная хуйня, выдуманная в угоду производительности.
Аноним 27/12/20 Вск 01:08:41 1891954172
>>1891945
Блять, я не говорил, что в сишке то же, что и в Go, я просто написал, что там не "тупо -1". В остальном согласен.
Аноним 27/12/20 Вск 01:21:33 1891960173
>>1891954
Извини за маты, не хотел. Я думал ты нападаешь на лучший язык в мире.
Аноним 27/12/20 Вск 02:21:16 1891997174
>>1891422
Да, я профессионал.
А ты - нет. И не стесняешься это демонстрировать.
Отличная иллюстрация эффекта Даннинга-Крюгера.

>>1889949
>Половиной доли владеет лаборатория Касперского, остальными - другие частные лица.
Не удивительно, что у вас проблемы с поиском специалистов.

>>1891913
Язык охуенен.
А первоапрельским троллингом было твоё зачатие.
Аноним 27/12/20 Вск 07:23:42 1892079175
Аноним 27/12/20 Вск 10:46:50 1892133176
>>1891913
Ты же понимаешь, насколько жалко выглядит твой школьный анализ?
Аноним 27/12/20 Вск 11:46:11 1892180177
>>1891913
а, это ты недавно в конфе Go-Go тупые вопросы для своей лабы задавал? Узнал тебя по твоим шизоидным высерам

Чем обработка ифами отличается от try-catch в плане громоздкости синтаксической конструкции?
Аноним 27/12/20 Вск 14:30:07 1892260178
>>1892180
> Чем обработка ифами отличается от try-catch в плане громоздкости синтаксической конструкции?

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

Я, если что, не за применение эксепшенов в гоу, просто это самый очевидный из аргументов, которые можно привести. Да и его оспорить можно.
Аноним 27/12/20 Вск 14:46:18 1892266179
привет
скажите, пожалуйста, го как первый язык - до сих пор плохая идея?
во всех этих ваших статься он топ-1 in demand
Аноним 27/12/20 Вск 14:50:39 1892268180
>>1892266
не отвечайте на мой долбаебский вопрос, уже все нашел
Аноним 27/12/20 Вск 15:41:05 1892312181
>>1891997
> Выше пишут, что в стандартной библиотеке комментируют имплементации. Потому, что профессионалы, и понимают такие вещи.
> Да, я профессионал.
А теперь зайди САМ в std и чекни, что и как там комментят.
Аноним 27/12/20 Вск 15:45:17 1892319182
>>1892266
А у меня тот же вопрос, мне ответьте пожалуйста! мне понравился маскот
Аноним 27/12/20 Вск 15:57:58 1892334183
image.jpeg 7Кб, 179x282
179x282
>>1892260
>>1879136
Соревнование на самый вонючий пук?
Засрать даже готред. Сосака воистину лягушатник дегенератов с даунами
Аноним 27/12/20 Вск 16:03:53 1892336184
>>1892266
Возможно, это даже лучший вариант из всех.

Главное не зацикливаться на одном языке.
Аноним 27/12/20 Вск 16:11:03 1892341185
>>1892336
Как-то толстенько (не?)
Я сам живу в Европе и на джуна 2.5 вакансии только с ГО
В РФ вообще только Озон, судя по всему
Аноним 27/12/20 Вск 16:14:30 1892342186
>>1892319
Да, начинать с го - хуёвая идея. Очень очень хуёвая идея.
Аноним 27/12/20 Вск 16:15:29 1892343187
>>1892341
Ну да, джуниоры на го особо не нужны, хотя вакансий на миддлов дохуя.
Ящитаю это хороший первый язык для обучения

>>1892342
Почему? Жесткий кодстайл, хороший тулинг, очень прост в освоении
Аноним 27/12/20 Вск 16:17:23 1892346188
>>1892343
> Почему? Жесткий кодстайл, хороший тулинг, очень прост в освоении

Если ты предлагаешь тупо для начала обучения - то плохой вариант. Процендурный язык это вообще плохой план. Речь не о том, что го плох, а о том, что после него будет сложно с другими не процедурными языками работать. Наилучший вариант - это вкатиться в С++, не сильно глубоко, а просто ООП изучить и к типам привыкнуть. После плюсов уже любой язык будет проще изучить
Аноним 27/12/20 Вск 16:25:51 1892351189
>>1892342
>>1892343
>>1892346
Спасибо за ответы
Я, собственно, не очень хочу разводить флуд и прочую срань не по теме
Как-то пытался вкатиться в ГО по курсере от mail.ru, но охуел на первых темах с командной строкой и прочим, так как последние несколько лет сижу на маке по рабочим причинам
Но вдруг захотелось сменить свою работу бизнес-аналитика на ч-тото серьезное и полезное, а возвращаться в РФ не очень хочется блядь
но для вакатыша выглядит гиперамбициозно
Аноним 27/12/20 Вск 16:30:11 1892355190
>>1892346
> Наилучший вариант - это вкатиться в С++
В голосину. Ты хотел выбрать язык в котором есть вообще все концепты?

После любого языка следующий учить проще. Нужно просто охватить первыми 3-4 языками наибольшее число парадигм.
Аноним 27/12/20 Вск 16:31:15 1892357191
>>1892351
> Как-то пытался вкатиться в ГО по курсере от mail.ru, но охуел на первых темах с командной строкой и прочим
Как человек, который перекатился в фултайм го с другого языка - я в первые дни изучения вообще чуть ли не ПТСД словил от GOPATH и подобной дичи. Забей, после этапа фрустрации придет понимание, что это говно и правда говно, но жить с ним можно. Вообще, советую настроиться на то, что мириться придется с очень большим кол-вом вещей в языке, это часть go-way, так сказать. Потом возможно даже будешь с пеной у рта доказывать, что дженерики и правда не нужны, ведь есть генераторы и руки.
Аноним 27/12/20 Вск 16:32:32 1892359192
>>1892357
ой, ну учитывая, что я только базово знаю swift, мне до таких тем как до Китая
Аноним 27/12/20 Вск 16:48:14 1892369193
>>1892351
На маке с командной строкой всё очень хорошо.

>>1892357
>это говно и правда говно, но жить с ним можно
Это не говно.
Говно - это когда "особенные" решения не мотивированы.
А здесь, кроме как к отступам в 8 пробелов, всерьёз и доебаться не к чему. Ну, после ознакомительного периода, когда говном кажется вообще всё.

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

И именно поэтому Go совершенно не годится на роль первого языка.
А что годится? Питон, Си, Джава.

>>1892334
Это не ты пару дней назад засрал хуйнёй про Vue весь жс тред?
Твоя жизнь настолько ничтожна, что ты вынужден симулировать самоутверждение на бордах? Так иди в /b - там все твои друзья.
Аноним 27/12/20 Вск 16:59:52 1892384194
>>1892369
> Говно - это когда "особенные" решения не мотивированы.
Анон, не буду отвечать на твои предъявы, иначе начнем бесполезный срач о том, что конкретно говно, а что не говно и терпимо. Благодарю за понимание. Сколько срачей не веди о голэнге - все заканчивается вкусовщиной и киданием говн друг в друга.

> А что годится? Питон, Си, Джава.
Опять не согласен. Давай по порядку.

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

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

А вот насчет Джавы - да, если не сломаешь себе ноги пока дойдешь до первого фреймворка - отличный и очень жирный язык, который научит страданиям строгости, ООП, и выйдешь после него блаженным просветленным умом (номер палаты может красивый выдадут. Шутка).
Аноним 27/12/20 Вск 17:22:41 1892424195
>>1892351
Можем вкатываться вместе
Правда для меня го не первый язык
Аноним 27/12/20 Вск 17:28:13 1892439196
>>1892424
звучит неплохо, сенсей, но..
объективно, я не хочу быть якорем и тормозить чей-то прогресс
Аноним 27/12/20 Вск 17:50:03 1892491197
>>1892424
Кидай тележку, мой тоже не первый и уже в процессе переката
Аноним 27/12/20 Вск 17:57:42 1892504198
image.png 16Кб, 215x234
215x234
>>1892439
Да давай, организуем пункт сопротивления гей-пати вкатунов с двача
Аноним 27/12/20 Вск 19:39:02 1892650199
Аноним 27/12/20 Вск 19:45:07 1892659200
image.png 641Кб, 500x747
500x747
Аноним 27/12/20 Вск 20:28:53 1892718201
>>1892659
Пофиксил телегу, теперь можете найти*
Аноним 27/12/20 Вск 20:29:23 1892719202
>>1892384
Питон более вменяем, все же. Чего там в питоне нет, приватных методов? А нахуй они нужны? Единственное предназначение - жестко контролировать корпоративных макак.

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

Адепты ООП заебали читать свои мантры.
Нахуй оно не всралось, из всего ООП по-настоящему нужен только полиморфизм, который можно получить и другими способами(интерфейсы, трейты, тайпклассы)
Аноним 27/12/20 Вск 20:38:30 1892732203
>>1892719
С го питон нахуй не нужон
Аноним 27/12/20 Вск 20:40:47 1892734204
>>1892369
>Эксепшны - серьёзный мину по производительности, например.
Не такая серьёзная. А если учесть затраты на то, чтобы обойти отсутствие эксепшенов, то вся производительность улетучивается.

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

Можно писать, в Си тоже нет исключений. Но только у Go есть явный акцент на системные вещи, на сети, файлы и т.п., где ошибки штатная вещь и актуальность их обработки очень велика.
Аноним 27/12/20 Вск 21:03:20 1892755205
>>1892734
Ошибку возвращать гораздо правильнее и проще для обработки, чем иметь ожидать что любой метод может взорваться и кинуть эксепшон. Эта хуйня по сути ломает и типизацию, и control flow
Аноним 28/12/20 Пнд 17:05:20 1893642206
>>1892734
> Вот и остаётся, что узкая область low level задач
> чтобы обойти отсутствие эксепшенов, то вся производительность улетучивается
> современный прикладной язык без эксепшенов это какой-то нонсенс
> у Go есть явный акцент на системные вещи, на сети, файлы
Что за чушь я прочитал?
Аноним 28/12/20 Пнд 17:08:45 1893645207
>>1893642
У автора просто undefined behaviour головного мозга.
Аноним 28/12/20 Пнд 17:16:01 1893656208
>>1892755
> проще
Легко:
a_result, err = a();
if err != nil { return nil, err }
b_result, err = b(a_result);
if err != nil { return nil, err }
c_result, err = c(b_result);
if err != nil { return nil, err }
d_result, err = d(c_result);
if err != nil { return nil, err }
e_result, err = e(d_result);
if err != nil { return nil, err }

Ыыы слажн:
try {
return e(d(c(f(a()));
} catch (err: error) {
throw err;
}
f(
Аноним 28/12/20 Пнд 17:31:28 1893686209
>>1893656
Чувак, error - это _значение_.
Слово "монада" ты слышал когда-нибудь?
Аноним 28/12/20 Пнд 17:37:21 1893696210
>>1893686
> error - это _значение_
Хуёво, что тут сказать.
> монада
Слышал, это в тех языках, где даже логгер для дебага нельзя вызвать посреди функции, ибо ряя побочный эффект, и в результате все функции пишутся с IO-монадами и превращается в процедурщину.
Аноним 28/12/20 Пнд 17:41:52 1893702211
>>1893696
Уровень познаний впечатляет: "слышал звон да не знаешь где он"
Аноним 28/12/20 Пнд 17:43:41 1893706212
>>1893702
А вот передёргивать не надо, мань.
Аноним 28/12/20 Пнд 17:45:11 1893711213
>>1893696
Я написал про монады, а подумал, что, скорее всего, в го фп-паттерны будут не очень удобно использовать.
Аноним 28/12/20 Пнд 17:45:53 1893712214
>>1893711
а потом подумал

быстрофикс
Аноним 28/12/20 Пнд 17:59:50 1893732215
>>1893706
Монады - крайне гибкая абстракция, позволяющая программировать поток управления, а не "IO процедурщина кокококостыль"
>>1893711
Нормально они в го используются. Единсивенное, что, в отличие от других языков, все монады остаются в кресле
Аноним 28/12/20 Пнд 19:20:27 1893799216
>>1893711
>не очень удобно использовать
Всё включая функции валойобное, а больше ничего и не надо
Правда лезть дальше "написанных в стиле фп" траверсов с композами смысла не вижу
Аноним 28/12/20 Пнд 19:31:20 1893808217
image.png 532Кб, 768x500
768x500
>>1893732
>Нормально они в го используются.
Постой, ты говоришь в го нормально монады используются? Это где и как они используются.
Аноним 28/12/20 Пнд 19:31:39 1893809218
Аноним 28/12/20 Пнд 19:42:44 1893820219
Аноним 28/12/20 Пнд 21:14:15 1893953220
image.png 8Кб, 223x65
223x65
Аноним 28/12/20 Пнд 21:40:48 1893983221
image.png 23Кб, 717x435
717x435
Почему этот код не работает? Почему первая горутина даже не вызывается? Ведь GOMAXPROCS(1) лишь ограничивает приложение одним ядром процессора, горутин же может быть много на одном ядре, нет? А если реально только одна горутина может быть на одном ядре (чегобля?), то почему вечный цикл не блокирует главную горутину и не выполняет вторую? Объясните дауну, плиз.

func main() {
runtime.GOMAXPROCS(1)

done := false

go func() {
done = true
}()

for !done {
}
fmt.Println("finished")
}
Аноним 28/12/20 Пнд 21:45:52 1893988222
>>1893983
Добавлю, что если вместо цикла с !done проставлю time.Sleep - работает всё как я и ожидаю, ибо слип блокирует выполнение главной горутины. Какого хуя цикл не блокирует то блять маму ебал того роба пайка в анус (вроде же цикл без условия как раз блочит, нет?).

Моя догадка: таки цикл с условием нихуя не блокирует. Но даже если так, какого хуя горутина КОНКУРЕНТНО на одном ядре не выполняется, они же должны хоть тыщами штук летать в однопоточном режиме, грубо говоря.
Аноним 28/12/20 Пнд 22:23:29 1894022223

>>1893988

Планировщик, который переключает рутины, делает это не абы когда, а в ключевых точках. Одной из таких точек является вызов функции и возврат из нее, как в случае с тацм.слип
Цикл - не такая точка. Поэтому планировщик просто никогда не проснется чтобы переключить рутины.
Одним из ответов на вопрос является добавление в цикл вызова планировщика принудительно
Аноним 28/12/20 Пнд 22:31:49 1894028224
>>1894022
А почему горутина не выполняется КОНКУРЕНТНО? По логике результат кода не должен отличаться от GOMAXPROCS(2)
Аноним 28/12/20 Пнд 23:13:34 1894061225
image.png 20Кб, 409x453
409x453
>>1894028
Вот, например если так написать, то обе горутины выполняются одновременно: https://play.golang.org/p/k4ApVZeZ9UJ

Так почему тогда код выше вытворяет такую хуйню? Помогите аноны, уже мозг болит.
Аноним 29/12/20 Втр 00:02:57 1894096226
>>1894061
чувак, иди проспись и начни новый день с разбора работы планировщика. сразу вс понятно станет
Аноним 29/12/20 Втр 00:06:07 1894100227
>>1894096
> начни новый день с разбора работы планировщика.
Так ты объясни лучше, я в общих чертах знаю как он работает и про точки тоже знаю. Но я бы все понял, если бы код работал одинаково с GOMAXPROCS(1) и GOMAXPROCS(>1), но при одном ядре горутина тупо никогда не вызывается, хотя по идее должна. Объясни этот момент.
Аноним 29/12/20 Втр 00:08:57 1894102228
>>1894100
> Поэтому планировщик просто никогда не проснется чтобы переключить рутины.
Почему тогда он просыпается, когда доступно больше одного ядра?
Аноним 29/12/20 Втр 00:09:13 1894103229

>>1894100
Да с хуяли ей вызываться, если планировщик никогда не запускается? Кто её вызовет? Такое уже всё объяснили
Аноним 29/12/20 Втр 00:09:58 1894104230
>>1893983
Вопрос устарел с выходом 1.14 https://golang.org/doc/go1.14#runtime

>>1894028
>По логике результат кода не должен отличаться от GOMAXPROCS(2)
Должен по крайней мере отсутствием возможности перекинуть горутины между M тредами, например
Задачи идут в обычное queue, у тебя на нулевом индексе уже выполняется мейн, горутина пошла на первый индекс и ждёт своей очереди. Поскольку у тебя бесконечный цикол, M никогда не освободится от уже начатых вычислений, пока ты сам не скажешь ей свичнуться на следующую горутину Gosched'om (или не обновишься до 1.14+, где компилютор научился распозновать это дерьмо)
>>1894061
Это вообще никак не относится к твоей проблеме

С первой ссылки нашёл одну из тех более-менее содержательных презинтаций, случайно тыкнув - попал ровно на такой же пример со старой версии. это судьба
https://youtu.be/4U3EaVufuW4?t=792 ~13:14
Аноним 29/12/20 Втр 00:10:38 1894105231
>>1894102
Потому что использование слова go тоже триггерная точка для него. Но в случае с одним ядром он решает, что основная рутина важнее
Аноним 29/12/20 Втр 00:24:38 1894118232
>>1894104
> Должен по крайней мере отсутствием возможности перекинуть горутины между M тредами
Т.е. в голэнге переключение горутин с одним ядром - работает иначе, чем с несколькими? Т.е. если одно ядро - то переключается только на точках, а если два ядра - то можно и не только на точках переключиться, а и с циклом? В чем логика?

> или не обновишься до 1.14+, где компилютор научился распозновать это дерьмо)
Я тестирую это на 1.14, в плейграунде как раз она, и ничего не распознается само с одним ядром

>>1894103
Долбаебина, вопрос не в том почему не вызывается вообще, вопрос в том, почему не вызывается с ОДНИМ ЯДРОМ. Какого хуя вообще в голэнге в таком случае планировщик тупо бездействует?

>>1894105
> Но в случае с одним ядром он решает, что основная рутина важнее
Это ведь пиздец, нет?
Аноним 29/12/20 Втр 00:29:12 1894125233
>>1894061
Во первый они выполнятся не одновременно, а последовательно, если что. Вторая горутина отрабатывает следом за первой, если бы они выполнялись одновременно, то могли бы быть ситуации когда "second done" выведется раньше чем "first done".

Во вторых >>1894022 этот не прав, при вызове функции горутина не переключается, иначе вот это https://play.golang.org/p/4ICORpcOEK5 выводило бы "finished". Переключение контекста происходит во время системных вызовов, time.Sleep как раз системный вызов.

В третьих это работает так, на го 1.13 и раньше, в 1.14 сделали вытесняющую многопоточность, и если ты запустить не в go playground, а на своем локальном компе с go 1.14+ все отработает даже с runtime.GOMAXPROCS(1)
Аноним 29/12/20 Втр 00:32:50 1894129234
image.png 4Кб, 387x54
387x54
>>1894125
> Во первый они выполнятся не одновременно
Да я знаю, конкурентно они выполняются, нет задержки в 2 секунды между первым и вторым сообщением, т.к. отсчет начинается примерно в одно время.

> В третьих это работает так, на го 1.13 и раньше, в 1.14 сделали вытесняющую многопоточность

Я это знаю, там и с for {} можно было переключение триггерить, если не ошибаюсь.

> если ты запустить не в go playground, а на своем локальном компе с go 1.14+ все отработает даже с runtime.GOMAXPROCS(1)

Так в плейграунде ведь go1.14.13
Аноним 29/12/20 Втр 00:34:23 1894134235
>>1894118
ой бля, вкладку нужно почаще обновлять, но ты похоже не обучаемый, всмысле блять по другому, когда у тебя два ядра, они выполняются параллельно, не конкурентно, а именно параллельно, там ничего и не переключается, они на разных ядрах находятся
Аноним 29/12/20 Втр 00:36:22 1894136236
Снимок экрана 2[...].png 41Кб, 978x272
978x272
Вот 1.14.5
Аноним 29/12/20 Втр 00:39:39 1894141237
>>1894118
>Т.е. в голэнге переключение горутин с одним ядром - работает иначе, чем с несколькими? Т.е. если одно ядро - то переключается только на точках, а если два ядра - то можно и не только на точках переключиться, а и с циклом? В чем логика?
Ты ни одного артикуля не прочитал?
Рантайм раздупляет по процессу на каждое ядро P, кажое из которых условно пакуется в более абстрактный тред M. Между М могут перекидываться горутины
Если у тебя один "процесс-ядро" - будет один М, которому распределять горутины некуда
>Я тестирую это на 1.14
Ну хуй знает я посмотрел гоплейграунд и вправду дедлочится хотя рантайм версия пишет 15.6
На моей машине 15.3 всё работает, может онлайн штуки запускают в режиме интерпритатора - хз

Тайм слип это другое, как минимум потому что нижний слип у тебя ожидающий канал
Аноним 29/12/20 Втр 00:45:55 1894147238
>>1894129
>конкурентно они выполняются
Да, видимо, не знаешь. Они выполняются не конкурентно, а последовательно, конкурентно они буду выполняться, когда там будут системные вызовы, а планировщик будет переключать горутины.
Аноним 29/12/20 Втр 00:49:46 1894148239
image.png 10Кб, 570x78
570x78
>>1894136
Короче переключился на линь, ибо впизду, тоже версия младше плейграундовской корректно и ожидаемо выполнила. Короче понятно. Плейграунд как всегда всех обыграл, ебаный роб пайк и команда, сука.

>>1894134
Чмошник, блять, и где твой бог теперь?

>>1894141
Да я знаю как должно работать, я знаю и читал как шелдуер назначает горутины и т.д. (мб не досконально, но достаточно, чтобы ахуеть с того, что происходило в плейграунде). То, что выдает на локальной машине - для меня ожидаемо и понятно. Какого хуя это все ведет себя так в плейграунде - для меня теперь большой вопрос.
Аноним 29/12/20 Втр 00:50:48 1894150240
>>1894147
> Да, видимо, не знаешь.
Они запускаются последовательно, но выполняются они конкурентно.
Аноним 29/12/20 Втр 01:04:12 1894156241
>>1894150
сука, как они могут выполняться конкурентно, если контекст не переключается?
> In computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome
Тут же все выполняется по порядку
Аноним 29/12/20 Втр 01:21:43 1894160242
>>1894156
Как они могут выполняться последовательно, если слип в обеих отсчитывается одновременно? Ты можешь подробнее свои мысли изъяснять, а не просто аксиомы короткие высирать?
Аноним 29/12/20 Втр 01:26:31 1894163243
>>1894160
нет не могу. Про слип совсем забыл, тогда действительно конкурентно
Аноним 29/12/20 Втр 01:27:43 1894164244
>>1894163
> Про слип совсем забыл, тогда действительно конкурентно
Ты рофлишь? Че вы такие чсв пидоры, я же логичные вопросы задаю.
Аноним 29/12/20 Втр 09:56:24 1894379245
>>1893656
В общем случае надо не просто кидать ошибку вверх, а разбирать и обрабатывать в зависимости от её типа. Тогда получится ненамного короче.

Алсо, в нормальных языках можно сделать что-то вроде
a_result = a()?

Где ? значит то самое if err != nil return err
Аноним 29/12/20 Втр 10:43:40 1894397246
>>1894156
>In computer science, concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome
Самое бесполезное определение в истории
Аноним 29/12/20 Втр 10:45:18 1894398247
>>1893656
>try {
return e(d(c(f(a()));
} catch (err: error) {
throw err;
}

try {
return e(d(c(f(a()));
} catch (err: error1) {
throw err;
}
catch (err: error2) {
throw err;
}
catch (err: error3) {
throw err;
}
catch (err: error4) {
throw err;
}
catch (err: error5) {
throw err;
}

Пофиксил, не благодари
Аноним 29/12/20 Втр 23:46:16 1894993248
ну что вы, гоферы? есть майндмапа по вкату в вашу парашу в 2к21?
Аноним 30/12/20 Срд 00:15:16 1895008249
>>1894993
> в вашу парашу в 2к21
Пока только для 2020 года есть. Проходи, присаживайся под шконкой у нашей параши, будем вместе дженерики ждать.
Аноним 30/12/20 Срд 00:27:30 1895018250
>>1894993
Вкатывайся в C#, с появлением кора Go больше не нужен.
Аноним 30/12/20 Срд 00:59:38 1895034251
Стикер 319Кб, 512x512
512x512
Аноним 30/12/20 Срд 03:34:14 1895078252
>>1895018
На арене цирка - шарпоблядь с рекламой нишевого проприетарного языка.
Аноним 30/12/20 Срд 03:42:31 1895082253
>>1895078
> нишевого
> проприетарного
Как там в 2010?
Аноним 30/12/20 Срд 05:01:41 1895132254
Аноним 30/12/20 Срд 05:03:48 1895134255
>>1895018
> с появлением кора Go больше не нужен.
Но у шарпистов даже зеленых тредов нет, о чем вообще речь? Сейчас бы сидеть руками хуярить многопоточность и следить, чтобы твоя зависшая хуйня не крашнулась из-за утечек памяти, пытаться менеджить л кэши проца и просто анально ебать себе анус, когда мог бы просто написать ключевое слово 'go' и жить не тужить
Аноним 30/12/20 Срд 05:14:51 1895138256
image.png 1Кб, 411x46
411x46
image.png 2Кб, 514x42
514x42
image.png 1Кб, 508x32
508x32
image.png 2Кб, 487x39
487x39
>>1895018
> Вкатывайся в C#
Когда из него все потихоньку выкатываются? Даже по достаточно демократическому tiobe - шарп сосет с проглотом и теряет в популярности

Шарп - это пережиток целой эпохи. Его участь - это участь Java, вот только в случае Java там JVM обеспечила ей непоколебимое закрепление на рыночке, а в случае шарпа - кор это как последнее издыхание, в попытке выползти из могилы. Мелкософты очень поздно одумались.

А гошка вообще другие задачи решает
Аноним 30/12/20 Срд 09:01:28 1895353257
>>1895018
Шарписты похожи на сектантов со своим кором. Кстати, ну что, сынку, помог тебе твой .NET5?
Аноним 30/12/20 Срд 15:05:15 1895681258
>>1893820

Ты долбоеб, монада это и есть та самая абстракция, а используются они в стандартной библиотеке, сходу помню в сканнере и где-то там же рядом, погугли то ли Пайк, то ли Cheney про это где-то рассказывали.
Аноним 30/12/20 Срд 17:27:31 1895845259
По совпадению вчера в говночатике зашла речь о гоеррорах на хаскелле
Узнал, что ерроры оказывается можно враппать, лол
Не вижу каких-то проблем с интерпретацией еррора как идиом монады пока писоешь на го, но кому это нужно не знаю

https://dpaste.com/88YBCXS6Z
Аноним 30/12/20 Срд 18:40:35 1895907260
>>1876438 (OP)
Объясните, зачем нужны всякие green threads, goroutines и т.п, если есть обычные ядерные треды? Экономия на спичках переходах в kernel mode?
Аноним 30/12/20 Срд 18:56:05 1895921261
>>1895907
Экономия на памяти. Это нихуя не экономия на спичках, обычный тред у тебя отжирает по мегабайту памяти, когда гринтред всего пару килобайт, и если за количеством созданнвх нативнвх тредов надо следить, но гринтреды хоть тоннами создавай.
Аноним 30/12/20 Срд 18:57:38 1895922262
>>1895907
И сука, в каждом уголке интернета, где всплывает подобный вопрос, звучит дибильный аргумент про размер стека. Какая вообще, блять, разница, сколько у тебя выделено под стек, если везде on-demand paging, а 2^64 байт адресного пространства - это, мягко говоря, неисчерпаемое количество.
Аноним 30/12/20 Срд 18:57:52 1895923263
>>1895681
Предыдущий пост не читал, да? Слишком тонко оказалось для гофера?
Аноним 30/12/20 Срд 18:58:20 1895924264
>>1895921
Тред отжирает столько, сколько реально использует (с точностью до размера страницы)
Аноним 30/12/20 Срд 19:10:08 1895943265
>>1895907
Думаю, дело больше в сложности и медленности управления полноценными тредами, по сравнению с.
Аноним 30/12/20 Срд 19:10:58 1895947266
>>1895922
> 2^64 байт
У тебя 16 миллионов терабайт ОЗУ? Молодец, но ты такой один.

На жабе достаточно создать 1000 тредов, чтобы свалилось с OutOfMemory на какой-нибудь персональной ЭВМ.
Аноним 30/12/20 Срд 19:13:13 1895949267
>>1895947
"Виртуальная память", слышал такие слова?
Аноним 30/12/20 Срд 19:14:08 1895950268
>>1895947
Причем тут вообще жаба?
Аноним 30/12/20 Срд 19:16:21 1895954269
>>1895947
Я не сталкивался с пердолингом тредов, но ты по-моему несёшь какую-то хуйню
Аноним 30/12/20 Срд 19:20:09 1895959270
>>1895907

Хорошо накинул, братишь, от души
Аноним 30/12/20 Срд 19:20:56 1895960271
>>1895907
Горутины это абстракция над ядерными тредами.

Горутин можно дохуя наспавнить и не потерять в производительности - за количеством ядерных тредов по которым распределяются горутины следит рантайм. Ядерные треды кушают немного больше памяти и значительно тяжелее переключаются
Аноним 30/12/20 Срд 19:22:37 1895964272
>>1895960
Тяжелее переключаются - верю. Почему они должны кушать больше памяти?
Аноним 30/12/20 Срд 19:23:56 1895967273
>>1895949
> Виртуальная память
Те же 16 миллионов терабайт, наверное, на любой жёсткий диск влезут. И работать будут, наверное, со скоростью ОЗУ.

>>1895950
Это пример, где "обычные" треды, на которые так дрочит тот анон.
Аноним 30/12/20 Срд 19:26:56 1895969274
>>1895967
Зачем свопить на жесткий диск страницы, которые не использовались?
Аноним 30/12/20 Срд 19:28:07 1895971275
>>1895969
А зачем тогда треды нцжны? Не нужны.
Аноним 30/12/20 Срд 19:28:56 1895972276
Аноним 30/12/20 Срд 19:32:10 1895979277
>>1895972
Нет связи никакой. Я и говорю.
Аноним 30/12/20 Срд 19:34:12 1895982278
>>1895964
Если интуитивно - то о большем количестве вещей может позаботится гошный рантайм.

Горутины 2кб минимально занимают, треды, емнип, 16кб.
1мб это наебка.
Аноним 30/12/20 Срд 19:36:30 1895990279
>>1895979
>Те же 16 миллионов терабайт, наверное, на любой жёсткий диск влезут. И работать будут, наверное, со скоростью ОЗУ.
Нахера на жестком диске место под страницы, которых в памяти никогда не было? (и не будет)
Аноним 30/12/20 Срд 19:43:07 1896005280
>>1895982
Но ведь чтобы рантайму "заботиться" об этих вещах тоже нужна память, нет?
Аноним 30/12/20 Срд 20:30:58 1896060281
>>1896005
Но он память может эффективно шарить, тредам c этим сложнее. Алсо, вроде стэки тредов не могут потом обратно выделенную память отдать.
Жаль что я устройство линукса понимаю очень смутно.

Неплохой вопрос чтобы унижать вкатывальщиков на собесах, если подумать.
Аноним 30/12/20 Срд 21:05:23 1896091282
>>1895907
>>1895943
>>1895924

пиздец, че за шарписты и сишники тупые пришли, пиздуйте хоть матчасть изучите

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

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

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

В конечном остатке плюсы и си будут в любом случае быстрее, если отбросить кривые руки разрабов и дать время на хорошую реализацию.
Аноним 30/12/20 Срд 22:07:59 1896157283
>>1896091
>жирный оптимизированный планировщик, который следит за всеми деталями и производительностью
Маркетинговый буллшит
>возможность создать в десятки тысяч раз больше виртуальных потоков
Вот я и интересуюсь, если это правда, то откуда это берётся.
>огромная скорость создания и уничтожения горутины
Маркетинговый буллшит Так ли долго создаются системные треды? И опять же, если это всё так, то за счёт чего это достигается? Почему глупые разрабы ядра не смогли это всё сделать в ядре?
Аноним 30/12/20 Срд 22:10:34 1896163284
>>1896091
И вопрос был не Го-специфичный, просто у Го это главная строчка в рекламе.
Аноним 30/12/20 Срд 22:13:56 1896167285
>>1896060
>Неплохой вопрос чтобы унижать вкатывальщиков на собесах, если подумать.
Ну и ладно, всё равно вакансий нет)
Аноним 30/12/20 Срд 22:22:57 1896172286
>>1896157
> Маркетинговый буллшит
Нет. Шелдуер опен сорсный, как и весь гоу - пиздуй читай, просвящайся.

> Вот я и интересуюсь, если это правда, то откуда это берётся.
Из-за того, что в голэнге не кооперативный preemptive планировщик - виртуальные потоки, которые пинают хуй, но не явно (если явно - то в натив треде будет свитч, но чаще бывает не явный стейт Waiting, а обычно все висит в Executable). Плюс есть дохуя оптимизация типа work stealing, и лоад балансер, шелдуер следит, чтобы горутины как можно реже перегонялись между реальными тредами, чтобы не тачить кэши в проце, и много чего еще. Почему это не реализовано на уровне ОС? ОС не может полностью предугадать какой машинный код будет выполняться, грин треды - очень специфичная хуйня, по сути ты делаешь фейковую многопоточность на одном реальном ядре. Если сам голэнг знает когда ему лучше переключить контексты (например когда знает, что идет вызов функции и есть достаточно времени), то ОС придется все это дополнительно чекать, предугадывать и т.д. Правильная реализация грин тредов зависит от исполняемого окружения, грубо говоря.

> Так ли долго создаются системные треды?
Проблема не в создании, проблема в том, что памяти они отжирают дохуя при создании. Я даже хз понимаешь ли ты хоть половину от того, что я пишу, но попробую пояснить. Есть по сути 2 вида операций - CPU-bound (т.е. вычисление, io и в таком роде), а есть нетворк баунд (ну и не только). Если ты сделаешь 5 параллельных запросов в сеть на реальных потоках в сеть - то скорее всего будет оверхед на контекст свитчи, выделение памяти (но тут есть исключения, например в некоторых процессорах есть отдельный network для таких операций, голэнг кстати умеет горутины туда кидать тоже) и т.д., а ведь это простейшие операции. Если ты их КОНКУРЕНТНО на грин тредах распределишь - то ты выпустишь эти 5 грин тредов, и сможешь забить на них хуй и занять процессор более полезной работой, пока ждешь пересылки битиков по проводу и ответа с той стороны.
Аноним 30/12/20 Срд 22:50:41 1896205287
image.png 29Кб, 553x390
553x390
image.png 29Кб, 556x389
556x389
>>1896167
Дохуя же, всего в два раза меньше, чем на Питоне дс2
Аноним 31/12/20 Чтв 12:54:07 1896705288
>>1896205
Надо отфильтровать гоу-гоу танцовщиц
Аноним 31/12/20 Чтв 14:17:16 1896755289
>>1896172
>Есть по сути 2 вида операций - CPU-bound (т.е. вычисление, io и в таком роде), а есть нетворк баунд (ну и не только)
Network - это и есть IO.

Всё, что ты пишешь, на уровне ядра работает так же. Ядро не оставляет на процессоре поток, который заблокировался в IO syscall'е.
Аноним 31/12/20 Чтв 14:22:35 1896761290
>>1896755
>>1896172

И остается только оверхед на контекст свитчи, при том, что контекст свитчи в юзерспейс-шедулере никто не отменял, хоть они и дешевле.
Аноним 31/12/20 Чтв 14:31:43 1896768291
>>1896761
>хоть они и дешевле
В этом то и вся соль. Они блять на много дешевле, ебаный свич между потоками ОС стоит 12 тысяч инструкций, в то время как планировщик Го, переключает горутины за 2 тысячи инструкций используя один поток, который всегда занят и не простаивает на свитчах.
Аноним 31/12/20 Чтв 15:37:21 1896827292
А где почитать про все эти потоки, выделение памяти, шедулеры, сисколы, контексты?
Аноним 31/12/20 Чтв 15:38:03 1896829293
>>1896705
Не, я пролистал, там все вакансии именно го разрабов
Аноним 31/12/20 Чтв 15:38:28 1896831294
>>1896827
В университете на Computer Science, или в гугле
Аноним 31/12/20 Чтв 15:42:39 1896838295
Аноним 31/12/20 Чтв 15:42:47 1896840296
>>1896755
> Network - это и есть IO.
Да, промазал тут немного

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

Гринтреды - это по сути просто слой абстракции над натив тредами и их оптимизация конкретно под язык.
Аноним 31/12/20 Чтв 15:45:23 1896844297
>>1896838
> Эх, ленивые нынче люди пошли
Если что - те 3 статьи немного устарели. Одно из главных изменений после 14й гошки - планировщик больше не кооперативный, если раньше шелдуер "влезал" в процесс на определенных сейф поинтах - ключевое слово go, блокировки всякие, цикл гц, сисколлы, то в новой версии он уже влезает с определенной переодичностью и шустрее. Раньше были проблемы с узкими циклами (долгие или даже бесконечные циклы, в которых не было возможности встроиться шелдуеру), то теперь это все работает адекватно и думать о такой хуйне больше не нужно.
Аноним 31/12/20 Чтв 15:49:30 1896850298
Аноним 31/12/20 Чтв 15:51:55 1896854299
>>1896844
В том то и дело, что я указал в каком порядке читать. Сначала ОС, потом го<1.14 и в конце объяснят, как именно поменялся планировщик в го 1.14. По поводу планировщика, сам вроде разобрался, но не тестил. Как по мне, програмст сам должен решать, нужно планировщику переключать свитч, или не нужно.
Аноним 31/12/20 Чтв 15:53:48 1896860300
>>1896854
А, точно. Я просто увидел 3 статьи, ткнул на одну - увидел там перевод той 3х томной статьи по старому шелдуеру и подумал, что это просто те 3 статьи. Тогда ок
Аноним 31/12/20 Чтв 15:57:14 1896865301
>>1896854
> Как по мне, програмст сам должен решать, нужно планировщику переключать свитч, или не нужно.
В голэнге решили эту абстракцию полностью закрыть. Там даже в доках всегда пишут, что нужно разрабатывать так, будто нет никакой гарантии какая из горутин запустится первой, кроме main и в таком роде. Имхо этим как раз горутины в го и удобны - очень простой интерфейс без большого кол-ва эдж правил. Тут скорее не о производительности, а о скорости разработки мультипотоковых сервисов.
Аноним 31/12/20 Чтв 16:33:08 1896894302
>>1896854
>Как по мне, програмст сам должен решать, нужно планировщику переключать свитч, или не нужно
Пиннакол пр клоунады
Аноним 31/12/20 Чтв 16:51:05 1896915303
>>1896894
> Пиннакол пр клоунады
Это, блять, что вообще такое, нахуй? Объяснись, животное!
Аноним 01/01/21 Птн 13:53:38 1897670304
Оказывается у плейграунда чуть ли не своя спецификация
Дедлок NN постов назад происходит из-за фейковремени
Аноним 01/01/21 Птн 14:33:14 1897698305
>>1897670
Ебал Роба Пайка в рот, паскуду такую. Сколько анальной боли этот ебаный плейграунд принес, ну его нахуй
Аноним 01/01/21 Птн 15:18:37 1897775306
>>1897698
Нахуй его вообще использовать? Там даже подсветку не завезли как в условном яндекс коде хотя бы
Аноним 01/01/21 Птн 15:20:57 1897782307
>>1897775
Подсветку не завезли намеренно, как дженерики.
Аноним 01/01/21 Птн 16:10:30 1897821308
image.png 55Кб, 1130x930
1130x930
>>1897698
Покажи хоть одно онлайн сдк, где можно крутануть сервер\фс импортнув проект по ссылке на гитхаб
>>1897775
>Syntax highlighting is juvenile. When I was a child, I was taught arithmetic using colored rods
>(http://en.wikipedia.org/wiki/Cuisenaire_rods). I grew up and today I use monochromatic numerals.
Ну и мочебекграунд отдающий дань уважения к олдовым проектам
Ничто не мешает прикрутить какую-нибудь хрому для локального плейграунда. Кода выйдет от силы на строчек 50 включая фронт
Аноним 01/01/21 Птн 16:12:18 1897824309
>>1897782
Пайк же сам признавался, что отсутствие дженериков в Го - это уход от проблемы.
Аноним 01/01/21 Птн 16:16:00 1897829310
>>1897824
Уход от проблемы, которую женерики не решают.
Аноним 01/01/21 Птн 17:05:03 1897880311
>>1897821
> Кода выйдет от силы на строчек 50 включая фронт
Главное в интернет не выводить, иначе пизда твоему хосту, нужно в виртуальном окружении все поднять
Аноним 01/01/21 Птн 21:24:08 1898109312
>>1897821
> онлайн сдк, где можно крутануть сервер
Но в плейграунде нельзя этого сделать, лол.
Аноним 01/01/21 Птн 22:07:14 1898133313
Аноны, а вы как-то настраивали цветовую схему редактора?
В vscode гошка как-то хуево подсвечивается, слишком монотонный текст.
Я не мог понять, что с ней не так, почему тяжело бегло читать, а потом понял, что слишком мало конструкций акцентируется и/или акцентируется неудачно. Начал перебирать темы, где-то акценты правильные, но цвета вырвиглазные, где-то наоборот. Остановился на Monokai Dimmed. Но все равно, хрень какая-то. Раньше в редакторах с темами ситуация как-будто получше была.

Я хз, это проблема вс-кода (до этого на саблайме сидел) или проблема схем для го. Короче, может я не один такой и че посоветуете?
Аноним 01/01/21 Птн 23:27:49 1898199314
>>1898133
Покажи скрин, мб у тебя там рил залупа. Мне вполне зашла стандартная подсветка.
Аноним 02/01/21 Суб 08:55:45 1898415315
Аноним 02/01/21 Суб 14:09:53 1898577316
>>1897829
Дженерики не решают проблему zero runtime cost-полиморфизма?
Аноним 02/01/21 Суб 14:10:31 1898578317
Аноним 02/01/21 Суб 14:28:34 1898602318
Аноним 02/01/21 Суб 15:21:28 1898646319
>>1898415
А, так это очевидно. Я думал ты имел в виду открыть порт во вне и работать не из той же программы.
Аноним 02/01/21 Суб 16:39:43 1898713320
>>1898133
Бля, вот лол https://groups.google.com/g/golang-nuts/c/hJHCAaiL0so/m/kG3BHV6QFfIJ

Это типа официальная позиция динозавра из 80-х (https://en.wikipedia.org/wiki/Sam_(text_editor)), который считает, что подсветка не нужна.
И тут же находятся сектанты, которые уже как свое мнение выдают, что да, так удобнее, ничего не отвлекает от кода.

Пиздец. Это просто показательный факт, который иллюстрирует всю суть Go - вот он такой во всем. От него веет пет-проджектом и 90-ми. Сырой, своеобразный, странный, то тут то чего-то не хватает. Потому что это не язык для индустрии, а язык-инструмент конкретного человека. Как вот это поделие https://www.parser.ru/, только зафоршеное корпорацией.
Аноним 02/01/21 Суб 17:53:26 1898769321
>>1898713
У тебя жопа просто горит, что на этом "поделии" джуны 170к получают, вот ты и бесишься.
Аноним 02/01/21 Суб 18:06:58 1898795322
>>1898769
>джуны 170к получают
Прохладная история.
(я не он и к Го отношусь нормально)
Аноним 02/01/21 Суб 18:08:17 1898797323
>>1898795
Поч? Просто в го джун - это мидл с другого языка
Аноним 02/01/21 Суб 18:18:56 1898803324
>>1898797
Типа Го - настолько требовательный язык, что с него невозможно начать?
Аноним 02/01/21 Суб 18:19:48 1898805325
Аноним 02/01/21 Суб 18:23:20 1898806326
>>1898803
Типа на весь рашкованский рынок существует всего пара-тройка компаний, которые вляпались в го и теперь они готовы брать без знания, но не полных джунов.
Аноним 02/01/21 Суб 19:06:43 1898832327
>>1898803
Нет, просто голэнг в основном используется на жирных проектах с кучей технологий и микросервисами, где джуну будет по сути невозможно ничего сделать, если он не будет иметь хотя-бы базовое представление о всем этом. Поэтому в гошку проще из других более общенаправленных языков перекатиться, когда ты уже знаешь много всего помимо самого языка.

>>1898806
Да дохуя их, на том же хх вакансий гопетухов всего в два раза меньше питхона, а это дохуя для низкоуровнего языка, который по факту и юзается только под определенные задачи.
Аноним 02/01/21 Суб 19:07:31 1898833328
>>1898769
Ага, держи в курсе. Открой хх и узри тонны говнарей из вб, с годом опыта на го, которые хотят зп 60-80к
Аноним 02/01/21 Суб 19:08:39 1898834329
>>1898833
А зачем считать говнарей, которых никуда не возьмут? Речь о новичке, который способен получить работу не на ИП Рога и копыта с пхп.
Аноним 02/01/21 Суб 19:09:19 1898835330
>>1898833
> Ага, держи в курсе. Открой хх и узри тонны говнарей из вб, с годом опыта на [подставь абсолютно любой язык/технологию], которые хотят зп 60-80к

Нихуя не изменится. Говнари на то и говнари, что их везде дохуя.
Аноним 02/01/21 Суб 19:15:47 1898841331
>>1898835
То что ты не говнарь тебе твоя мамка сказала?
Аноним 02/01/21 Суб 19:17:27 1898845332
>>1898832
>джуну будет по сути невозможно ничего сделать, если он не будет иметь хотя-бы базовое представление о всем этом
Учитывая, что джунов без базового представления обо всем этом сейчас ни на один язык не берут, аргумент так себе.
Аноним 02/01/21 Суб 19:18:25 1898847333
Само по себе рассуждение о хороших местах - звоночек об отсутстви харизмы в деле
Аноним 02/01/21 Суб 19:18:29 1898848334
image.png 108Кб, 276x183
276x183
Забавно наблюдать на хейт Го. Причем хейт какой-то озлобленный, непонятно откуда исходящий. Ну не нравится язык - ну окей, зачем в треде срать то? По гошке одни из самых высоких зп, и этого достаточно. Язык не настолько всрат как какой-нибудь раст и опыт работы с ним пригодится даже если завтра он полностью рухнет и все бинарники превратятся в пыль - достаточно будет просто изучить новый язык, стек останется тем-же. Нахуя вы вообще так все циклируетесь на языках? У меня за плечами говнопехапе, затем джава, а сейчас вот гошка, и спокойно прыгал и менял даже целые стэки без особых колебаний по доходу. То, что кто-то так озлоблен просто на сам факт существования чего-то что ему не нравится - глуп и несчастен внутри, вы ничем не отличаетесь от "хохлов", "урапотреотов" и любого другого слепого быдла. Я все сказал, всех чмокаю в лобик :*

Кстати, оголтелые фанаты ГОвна - точно такое же деграднутое быдло как и вы, возводят в культ язык, пытаясь оправдать очевидные минусы и с трудом поддающиеся критике. Ждем дженериков и не пищим, пидорасы.
Аноним 02/01/21 Суб 19:45:43 1898893335
>>1898834
Ну так новичок не получит работу за 170к, думаю максимум за 140. А вот мидлы из других языков скорее будут устраиваться на мидла
Аноним 02/01/21 Суб 20:02:29 1898937336
>>1898848
>Язык не настолько всрат как какой-нибудь раст
Чем он всрат, мне например как питонисту раст кажется очень лаконичным языком, го же дает меньше сахара и фич.
Аноним 02/01/21 Суб 20:19:08 1898963337
>>1898937
> как питонисту раст кажется очень лаконичным
Это троллинг?
Аноним 02/01/21 Суб 20:23:33 1898970338
>>1898963
Нет, нотации типо почти 1 в 1 как в питоне, ООП такое же урезанное как в го, async/await как в питоне. В расте только есть ебля из ручного управления памятью, ну и неявный return считается заебись, а в остальном нареканий нет.
Аноним 02/01/21 Суб 20:24:01 1898971339
>>1898970
>нотации типо
типов*
Аноним 02/01/21 Суб 20:28:33 1898976340
>>1898970
>>1898971
Мне кажется ты только первую страничку какого-то онлайн гайда прошел. Пишу на расте год и это многократно более сложный язык не то, что чем питон (это вообще смехотворное сравнение с твоей стороны), но и куда сложнее говна.
Аноним 02/01/21 Суб 20:30:13 1898980341
>>1898976
Так мы говорим не сложности, а о всратости языка. Причем тут сложность вообще?
Аноним 02/01/21 Суб 20:36:37 1898990342
>>1898963
Показал бы код, где раст выглядит хуже каких-нибудь крестов
мимокрок
Аноним 02/01/21 Суб 20:43:37 1899000343
>>1898980
>>1898990
Так речь о читаемости или просто как выглядит? Я пробовал гошку немного и на нем я в разы быстрее напишу тот же код, что и на расте ток на расте, если не проебусь - будет сильно быстрее в большинстве случаев, раст очень вербозный, сахара я там не заметил чтобы прям много, я бы назвал срвнение раста с го и сравнение джавы с питоном - примерно одного разряда по контрасту языков. Но я не спец в го, ток пару сервисов на коленке писал, но вроде на нем большие проекты и не пишут я бы себе мозги вынес, если бы пришлось на расте писать то, что пишут на питхонах
Аноним 02/01/21 Суб 20:51:18 1899009344
>>1899000
Под всратостью я подразумеваю решения на уровне синтаксиса, я сам не эксперт в го, думаю выбрать его как альтернативу для написания бэкендов. Просто сейчас смотрю что в го нет таких простых вещей как объявление обычного энума или функциональных выражений для тех же коллекций. Мне это кажется очень странным для современного языка.
Аноним 02/01/21 Суб 21:01:26 1899024345
>>1899009
> Мне это кажется очень странным для современного языка.
Согласен. Уверен придет со временем, после предстоящей революции дженериков. Я вообще не понимаю фанбоев голэнга, которые везде орут НИНУЖНА. Я бы еще понял, если бы это отсутствие сахара консистентно бы было и ровным слоем размазано, так ведь нет - в одних местах какой-то лютый сахар, в других ты как долбаеб чуть ли не на уровне битов оперируешь. Я думаю со временем этот нищий майндсет уйдет, ибо го популярность набирает и им уж хочешь не хочешь - придется и опциональных параметров ввести, и что только еще.

Мимо 2 года пилю микросервисы с миллиардами рпс в микро секунду на голэнге и иногда вляпываюсь в немножечко питона
Аноним 02/01/21 Суб 21:03:17 1899027346
>>1899024
А могут просто взять и ничего не вводить, потому что могут.
Аноним 02/01/21 Суб 21:16:23 1899045347
>>1899027
Ну тогда будем терпеть, как владыка велел. Нинужна - значит нинужна ))))))
Аноним 02/01/21 Суб 23:29:20 1899161348
image.png 6Кб, 363x94
363x94
image.png 159Кб, 583x616
583x616
Аноним 02/01/21 Суб 23:37:19 1899170349
>>1899161
Лучше так, чем по полгигабайта node_modules в каждом проекте.

мимо хейтер
Аноним 02/01/21 Суб 23:44:42 1899174350
Аноним 02/01/21 Суб 23:47:41 1899177351
Аноним 03/01/21 Вск 00:09:10 1899185352
>>1899177
Ну хуйни third-party не качай тогда
Аноним 03/01/21 Вск 01:02:46 1899240353
>>1899174
Никак, но все равно дохуя, я даж немного прихуел когда увидел. Причем 40% там из старых версий
Аноним 03/01/21 Вск 02:52:28 1899307354
>>1894397
Нормальное определение. Ты, вероятно, ни разу учебника по гуманитарной науке не открывал.
Аноним 03/01/21 Вск 14:30:07 1899491355
>>1876438 (OP)
Считается ли в Го нормальным использовать горутины с каналами в однопоточном коде - в качестве генераторов?
Аноним 03/01/21 Вск 15:08:55 1899516356
Аноним 03/01/21 Вск 17:27:29 1899623357
>>1899491
> в качестве генераторов?
Например? Ты про аналог yield? Чисто алгоритмически - да, будет работать. Главное не забудь сделать механизм высвобождения горутины, закрыв канал/nil, иначе память утечет. Но лучше реализуй через замыкания и анонимку, ибо плодить горутину и обеспечить её уничтожение - лишняя забота и код.
Аноним 03/01/21 Вск 20:48:06 1899800358
Призываю байтоебов, кто нибудь может объяснить, когда стоит передавать/возвращать из функции указатель, а когда просто структуру. Речь не про очевидные вещи, а именно про байтоебство. Например что лучше:
someFunc() (SomeStruct, error)
или
someFunc() (*SomeStruct, error)
Аноним 03/01/21 Вск 21:32:45 1899862359
image.png 1857Кб, 1200x1200
1200x1200
>>1899800
> когда стоит передавать/возвращать из функции указатель, а когда просто структуру.
Очевидно, когда хочешь, чтобы вернулся указатель или копия. Для экономии памяти стоит вернуть ссылкой.

> Например что лучше
Если кратко - когда ты пишешь pizda := &Somestruct{} внутри метода, ты создаешь переменную пизда, которая хранит в себе адрес структуры. Вернешь ты из функцию не структуру, а адрес на неё. В языках типа плюсов - ты соснешь хуйца, в голэнге за тебя дядя Роб Пайк и команда позаботились, что ты адрес не потеряешь после окончания этой функции. Соответственно если отдаешь адрес - компилятор тебя обезопасит отпроебов, плюс ты передашь совсем немного информации, скопируется только пизда с адресом, а не вся структура, структур как раз улетит в хип на хранение, так сказать. Если же ты напишешь pizda := Somestruct{} и вернешь значение - то у тебя получится 2 копии структуры (заметь, если у структуры есть поля типа ссылок - они не скопируются, т.к. ссылка будет вести на область в памяти, грубо говоря), ты немножко потеряешь на памяти и сборщик мусора потом выебет тебя в жопу сам удалит копию, которая осталась в контексте функции.

Короче если проще - зависит от твоей цели, если нужно именно скопировать - передаешь так, если нужно оставить одну "копию" и просто вернуть из функции ссылку на неё - возвращаешь ссылку. Тут нет "правильного", зависит от того че ты хочешь.
Аноним 03/01/21 Вск 21:39:24 1899880360
>>1899800
Очевидно всегда пассуй по значению
Аноним 03/01/21 Вск 21:44:48 1899904361
>>1899800
Ну смотри, адрес = 8 байтов. Структура = Х байтов. Следовательно, если Х > 8 то возвращай адрес, в противоположно случае структуру. Размер структуры = сумма в байтах всех полей.
Аноним 03/01/21 Вск 21:52:24 1899919362
Вот у меня вопрос, правильно ли я делаю что, возвращаю не ошибку, а просто работаю с panic/recover.
Вот код, если произойдет ошибка, то defer сработает и разлочит мьютекс. Но сам вызов анлока мютекса в defer меня напрягает, как будто что-то неправильно и следует просто сделать через return err.
https://play.golang.org/p/urb25xa5UE1
Аноним 03/01/21 Вск 21:53:21 1899920363
>>1899623
Поясни про уничтожение горутины, пожалуйста. Так норм:
func f() <-chan int {
c := make(chan int)
go func() {
c <- 0
c <- 1
c <- 2
close(c)
}()
return c
}

func main() {
for i := range f() {
fmt.Println(i)
}
}
Аноним 03/01/21 Вск 21:54:10 1899921364
Аноним 03/01/21 Вск 21:59:10 1899924365
>>1899862
Спасибо за подробный ответ, но я немного про другое скорее спрашивал. Я про то, что если возвращать ссылку, то переменная гарантировано будет в хипе, что не очень то и быстро, а вот если возвращать саму структуру, то может и на стеке выделяться. Так вот есть например функция маппер, которая принимает одну структуру, а вовзращает другую, то есть если вернуть не ссылку, то у тебя будет две этих новый структуры. Кажется, в чем проблема, возвращай всегда ссылку да и все, НО вот что меня смущает:
- хз, что быстрее, два раза выделить память внутри стека горутины, или один раз в хипе
- гонял бенч, и вроде как получилось что возврщать ссылку быстрее, уже не помню результаты, но время работы gc тоже замерял
- один голанг-архитектор, говорил что лучше возвращать структуру по значению, если она не сильно вложена и нет каких то тяжелых ресурсов, которые нельзя копировать

Вот поэтому мне интересно, не долбоеб ли я, что всегда по ссылке возвращаю. Ну и да, пассую я тоже часто по ссылке, проблема в том что значение может мутироваться?
Аноним 03/01/21 Вск 22:00:15 1899925366
>>1899919
Вызов анлока в defer - это совершенно идиоматично. В других языках такие вещи обычно пишут в finally или деструкторе/ScopeGuard'e
Аноним 03/01/21 Вск 22:00:57 1899928367
>>1899904
Это да, тут скорее вопрос не быстрее выделить ли на стеке эти X байтов, чем гарантировано в хипе
Аноним 03/01/21 Вск 22:05:33 1899932368
>>1899919
>>1899925
Я тут немного побайтоебю, defer имеет задержу перед вызовом, совершенно мизерную конечно, но лучше вызывать явно, если есть возможность. В данной функции ничего плохого не произойдет, но копипаста такого мьютекса может привести к тому, что сам мьютекс используется не эффективно, разлочивается не сразу когда появилась такая возможность. Желательно чтобы блокировка мьюткса была максимально короткой
Аноним 03/01/21 Вск 22:07:09 1899934369
>>1899919
А, ну и да, лучше не использовать panic, особенно для такого кейса, это просто ошибка
Аноним 03/01/21 Вск 22:07:27 1899935370
>>1899919
Обычная же обработка логики, выкидывать тут паники будет какой-то совсем хуйнёй
Аноним 03/01/21 Вск 22:11:05 1899942371
>>1899932
Я со своей стороны посоветую defer в качестве дефолтного решения, потому что потому что это тупо проще и надежнее, если функция имеет несколько точек возврата.
Аноним 03/01/21 Вск 22:14:03 1899945372
>>1899921
я другой анон, и хз что он имел ввиду, но вот
> Another note: Channels aren't like files; you don't usually need to close them. Closing is only necessary when the receiver must be told there are no more values coming, such as to terminate a range loop.
Аноним 03/01/21 Вск 22:17:38 1899946373
>>1899934
>>1899935
В целом согласен, сделал через panic так как решил поэкспериментировать с recover. Вроде бы это даже удобнее чем возвращать ошибку.
https://play.golang.org/p/tnD9Hki3IBR
Аноним 03/01/21 Вск 22:28:25 1899956374
>>1899946
Ерроры можно закомпозить, получится практический такой же код
Если UserServer это отдельный доменный микросервис, то творение такой хуйни особо не страшно, но и смысла особого не вижу
Аноним 03/01/21 Вск 23:19:00 1899991375
>>1899924
> Вот поэтому мне интересно, не долбоеб ли я, что всегда по ссылке возвращаю.
По сути похуй. Пока структура небольшая - это сравнение мочи с говном, как говорится. Твой архитектор правильно говорил.
Аноним 03/01/21 Вск 23:35:53 1900003376
>>1899924
>гонял бенч, и вроде как получилось что возврщать ссылку быстрее
Пахнет говнокодом если чессно
Аноним 04/01/21 Пнд 05:13:39 1900144377
>>1899945
Я имел в виду, что чтобы не забросить горутину навсегда - нужна доп логика по разблокировке, тот же селект

>>1899921
Ты не понял. Если никто не будет читать из канала - твоя горутина тупо вечно будет ждать. Почитай про селект и паттерны гошные
Аноним 04/01/21 Пнд 14:10:30 1900457378
>>1900144
Ты про отмену говоришь, понял.
Аноним 04/01/21 Пнд 22:11:38 1901021379
>>1900457
Как угодно можно назвать, еще есть context, тоже ознакомься, в стандартном серваке го и большинстве библиотек он находится в реквесте, соответственно можно его учитывать и обрывать долгие и затратные операции, если на том конце юзер оборвал соединение и в таком роде. В мелких проектах на это все похуй, и даже похуй на горутины, которые в воздухе навечно заблочились, но когда твой сервис обрабатывает большое кол-во запросов (не только сетевых, это может быть и твоя библиотека тупо) - то через неделю ахуеть от полуживого ПО будет очень неприятно. GC их не во всех вариантах сможет определить и уничтожить самостоятельно.
Аноним 05/01/21 Втр 06:57:06 1901274380
Аноны, насколько быстро можно вкатиться в Go после Python? Хочу какой-нибудь компилируемый язык освоить.
Аноним 05/01/21 Втр 09:17:09 1901290381
>>1901274
> Аноны, насколько быстро можно вкатиться в Go после Python?
Месяца за 2, если задротить. Синтаксис простой, но много мелочей с типами, конкуренси, обособленными патернами, стдлибом. Но зависит от тебя, если ты на питоне crud для веб сайтиков писал - будет сложнее, а если что-то дельное делал с различными технологиями - другой вопрос.
Аноним 05/01/21 Втр 15:27:10 1901527382
Аноним 05/01/21 Втр 17:19:09 1901665383
Поясните для стремящихся какими инструментами можно сгенерить нормальный обработчик http запросов (без разницы какой фреймворк, даже для стандартного http модуля) из документации swagger. Я хочу, чтобы из swagger'а мне сгенерился интерфейс и прочий серверный бойлерплейт (типо валидации тела запроса, параметров и все такое) и несколько интерфейсов, например:

>type Service interface {
>func AddSomething(request Request) (Response, error)
> ...
> }

Все, что я видел, насколько я понимаю, парсит только тело запроса и аргументы в лучшем случае, а вот с ответом - пошел на хуй, как говорится, какой-то generic response со строкой вместо нормальной структуры ответа.
Аноним 06/01/21 Срд 14:14:14 1902386384
7413223477c200.jpg 25Кб, 344x550
344x550
Приветствую, товарищи двачеры!
В айти вошёл давненько, но есть желание пересесть поближе к разработке. В связи с этим вопросы: стоит ли влезать в го, чтобы потом претендовать на джуна?
Так ли велИк запрос на гошников сейчас?
Во многих вакансиях обязательное требование от года разработки на Java/Python/PHP/C#. Это реально нужно?
Аноним 06/01/21 Срд 14:25:46 1902398385
>>1902386
Что такое реально нужно? Открой hh и посмотри сколько там вообще джун вакансий. Не буду утверждать, что на ГОвне не нужны джуны, потому что есть вероятность, что могут и на мидл позицию взять джуна, но сильно сомневаюсь что это будет не студент топ вуза
Аноним 06/01/21 Срд 14:29:16 1902403386
>>1876438 (OP)
Скиньте оригинал второго комикса из оп поста.
Аноним 06/01/21 Срд 14:32:53 1902409387
>>1902398
>Что такое реально нужно?
Можно ли вкатиться в го-джуны без опыта вебни на других языках?

>Открой hh и посмотри сколько там вообще джун вакансий
Это понятно. Картина на хэхэ не всегда репрезентативна, последнее время там один мусор публикуют. Интересует реальное положение дел.
Аноним 06/01/21 Срд 14:46:27 1902432388
>>1902409
Ну смотри, мне все таки кажется, что по хх можно делать какие то выводы. Я вот нашел там 0 ваканский для джуна

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

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

имхо на жабу вкатиться легче
Аноним 06/01/21 Срд 16:02:36 1902590389
>>1902432
шел 2021 год, долбаебы все еще пытались вкатиться через вакансии "junior". Для вас специально повторю - джун != трейни. Без знаний и опыта (т.е. пет проект небольшой) вы не вкатитесь никуда. А в голэнге прям джуны не нужны, ибо нужен релевантный опыт по всяким очередям, мониторингу, докеру и всему вот этому.
Аноним 06/01/21 Срд 17:56:18 1902840390
>>1902590
Двачую. 100% рабочий план для вката в программирование за деньги на любом языке (не благодарите): изучаешь язык на минимально рабочем уровне, изучаешь некий минимальный набор востребованных сейчас технологий, делаешь от одного до бесконечности бесполезных проектов возрастающей сложности с использованием того, что выучил. Готово, вы погромист.
Аноним 06/01/21 Срд 18:03:48 1902851391
>>1902590
> шел 2021 год, долбаебы все еще пытались вкатиться через вакансии "junior".
Абсолютно согласен, вкатываться надо на миддлов, там требования ниже
Аноним 06/01/21 Срд 19:06:22 1902938392
>>1902840
Так все и есть. Хватит парочки пет проектов. Главное на актуальном в языке говне. Проблема в том, что вкатуны и этого не понимают.

>>1902851
При чем здесь это? Кидать отклики нужно везде, где четко не прописано прямо в тексте требование коммерческого опыта и не ищут спецом middle+. Вот и весь секрет. А то, что долбаебы находят с трудом 3 вакансии идеальных с "без опыта", думая, что это все, куда они могут отозваться - это путь долбаеба. Рынок гораздо проще устроен. Просто некоторые дурачки типа тебя привыкли, что подготовился к зачету - сдал на 5 и заебись, в реальном мире так не работает, все работает куда проще, по релевантному опыту и пользе, которую принесешь.
Аноним 06/01/21 Срд 19:24:25 1902945393
>Для вката в Go читай:

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

Серьезно, блять, посоветуйте актуальную книжку для вката.
Аноним 06/01/21 Срд 19:42:16 1902957394
>>1902945
> актуальную книжку

Официальная документация, плейграунд и официальный блог. Вот тебе и книжка, долбаеб.
Аноним 06/01/21 Срд 19:46:20 1902959395
>>1902957
Да долбоеб твой отец, вафел.
Аноним 06/01/21 Срд 19:49:21 1902961396
>>1902959
Ну тогда иди вкатывайся полтора года, чтобы в итоге соснуть хуй и пойти за еду в первую же веб студию. Твой выбор.
Аноним 06/01/21 Срд 19:55:46 1902965397
>>1902961
Ты чего вылез вообще, придурок, я тебя что-ли спрашивал?
Аноним 06/01/21 Срд 20:03:54 1902974398
>>1902965
Да, меня. Чем тебе не нравится ответ? Книжки в основном устаревшее говно, если ты будешь читать в РУ варианте - то еще более устаревшее. Книга намного хуже офф документации, плейграунда и блога го (в нем почти все концепты с примерами разобраны). Книги можно советовать только по конкретным темам, в которых ты хочешь углубиться лучше, например по Concurency. Читать книги именно по вкату в язык - пустое и глупое занятие.

так понятнее или ты дурак?
Аноним 06/01/21 Срд 20:15:32 1902982399
photo2021-01-04[...].jpg 20Кб, 1280x172
1280x172
>Вы ведь знаете, что в го надо аккуратно с переменными из for-range обращаться, да?

Наверное каждый хоть раз обжигался о
for k, v := range foo {
go func() { run(k,v) }()
}

>или что-то похожее, где "захватывается" значение в кложуре. >Есть даже пропозал, что давайте от этого уйдём (в го2, когдатотам) https://github.com/golang/go/issues/20733

>Там забавный комент добавили, может слышали, Let's Encrypt недавно откатили 3М+ сертификатов. Угадайте из-за чего)))

https://github.com/letsencrypt/boulder/pull/4690/files#diff-d02067a9f9a2bed1110fd4e98641c2effcf5d1d5f18461e35d6ac1535f6e2c21L1411-R1414

https://t.me/oleg_log/3984
Аноним 06/01/21 Срд 20:17:46 1902984400
>>1902982
Да, знаем. Это в каждом гайде и на каждом собеседовании спрашивают. Также и в for лупа аналогичная ситуация. А сказать что хотел? И пост оформить мог нормально?
Аноним 06/01/21 Срд 20:24:26 1902987401
>>1902432
ок, спасиб за ответ. в жабу не легче, я уже пробовал несколько лет назад.
Аноним 06/01/21 Срд 20:30:59 1902991402
>>1902590
>>1902938
вот отвечаете по существу вроде бы, но столько этого вашего блядь раздувшегося самомнения, блевать хочется. самим от себя не противно?
хотя да, это ж двач
Аноним 06/01/21 Срд 20:34:24 1902995403
>>1902991
> вот отвечаете по существу вроде бы, но столько этого вашего блядь раздувшегося самомнения, блевать хочется. самим от себя не противно?
Это я один отвечал. Просто я заранее в атакующую позу встаю, т.к. общее мнение среди двачеров которые естественно нигде кроме веб студии не работали, что в айти вкатиться неимоверно сложно. А на деле же на личном опыте и опыте собеседований и общения с другими людьми - все в разы проще, просто многие совершают банальные ошибки типа отсечения вакансий, где стоит метка "1-3 года опыта" или везде, где не написано "готовы взять за еду", ну и еще многие просто тупые. Скорее всего щас опять набежит какой-нибудь очередной пояснятель про айтипузырь и в таком роде, это рак программача, эти шизики даже бе засирают этими тредами.
Аноним 07/01/21 Чтв 00:55:08 1903253404
>>1902974
Чувак, это твое мнение. Я лично не считаю официальные гайды хорошими, они сумбурные, размазаные, сухие и неполные. Брошюра в виде последовательного гайда была бы гораздо более эффективной.
Что касается блога, то это вообще не в тему, читать эти статьи на этапе вката бессмысленно.

И да, го не первый мой язык, я примерно понимаю что такое хорошая документация и какова стоимость входа.
Аноним 07/01/21 Чтв 00:59:07 1903256405
>>1902995
>естественно нигде кроме веб студии не работали
Что ты против студий имеешь. Самый качественный опыт дают студии. После них любая продуктовая команда (и уж тем более крупные конторы) кажется вчерашним днем.
Аноним 07/01/21 Чтв 02:48:49 1903310406
>>1903256
Веб студии не дадут тебе того, что даст нормальная компания. Кафки и кубернетнсы в студии не нужны, как и большинство других вещей, достаточно конвеерно говнокод писать и все.
Аноним 07/01/21 Чтв 03:31:23 1903324407
>>1903310
>Кафки и кубернетнсы в студии не нужны
По своему опыту знаешь
Аноним 07/01/21 Чтв 05:37:19 1903337408
>>1903324
Да, в моем случае в студии вообще ничего не нужно было кроме mysql/nodejs/angular
Другой анон
Аноним 07/01/21 Чтв 05:39:51 1903339409
А че в голенге по сокрытию типов? Если мне нужно гетерогенное хранилище для какого-то ограниченного (небольшого) набора типов, можно это как-то без торчащего наружу interface{} запилить? Вроде рефлексия есть, должно быть как-то не сложно информацию о типе сохранить и восстановить ее, но шото сходу не нашел способа. То я хочу иметь какую-то структуру, которая инкапсулировала бы данные и информацию о типе переданного ей в конструктор объекта и по необходимости типобезопасно собирала бы мне назад переданный объект, при том, желательно, с минимальным оверхедом.

Если шо, я из плюсов прикатился, у нас там есть std::variant который с этим отлично справляется:
https://onlinegdb.com/rJBKmxVAv

Я в примере для простоты тип указываю явно, но есть возможность через визитора это делать обобщенно и не думать, какой у меня тип в конкретном объекте. Вот хотелось бы что-то подобное и чтобы оно не очень костыльно было (костыльно я и сам могу)
Аноним 07/01/21 Чтв 13:38:50 1903512410
Почему Windows Defender ругается, если делать автозапуск программы при помощи этой штуки?
Никакого вредоносного кода нету же.
https://github.com/emersion/go-autostart
Аноним 07/01/21 Чтв 13:39:25 1903513411
>>1903339
> А че в голенге по сокрытию типов? Если мне нужно гетерогенное хранилище для какого-то ограниченного (небольшого) набора типов, можно это как-то без торчащего наружу interface{} запилить? Вроде рефлексия есть, должно быть как-то не сложно информацию о типе сохранить и восстановить ее, но шото сходу не нашел способа. То я хочу иметь какую-то структуру, которая инкапсулировала бы данные и информацию о типе переданного ей в конструктор объекта и по необходимости типобезопасно собирала бы мне назад переданный объект, при том, желательно, с минимальным оверхедом.
А теперь всю эту хуйню напиши в двух словах.
Аноним 07/01/21 Чтв 13:41:44 1903520412
>>1903339
>А че в голенге по сокрытию типов?
>Я пытаюсь натянуть тонну рандомного говна отовсюду на языкнейм
>Не имея конкретной проблемы, которую это говно должно решать
Аноним 07/01/21 Чтв 13:46:22 1903527413
привет друзья как настроение
Аноним 07/01/21 Чтв 13:56:32 1903535414
>>1903339
> То я хочу иметь какую-то структуру, которая инкапсулировала бы данные и информацию о типе переданного ей в конструктор объекта и по необходимости типобезопасно собирала бы мне назад переданный объект, при том, желательно, с минимальным оверхедом.
Т.е. ты хочешь дженерики с union типами. Боже, столько расписал, пыжился, а в итоге ничерта не понятно что ты хочешь.

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

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

Отучайся от такого говна, плюсы за это и не любят, что все подряд понапихали, даже вот такие узкие вещи, и теперь язык - монстр какой-то получился.
Аноним 07/01/21 Чтв 14:03:23 1903540415
Где ещё можно спросить кроме этого треда?
Не думаю что это только с го связано.
>>1903512
Аноним 07/01/21 Чтв 14:03:31 1903541416
>>1903324
Ну да, по своему опыту. А есть вопросы? Веб студия нацелена на то, чтобы побыстрее сделать да забыть, лол. Вместо монги какой-нибудь въебешь по быстрому sql, вместо редиса - вьебешь кеш через БД, если вообще не лень будет, на scalability вообще забьешь хуй, ведь не надо да и запарно, о докере вообще можно забыть - по ssh за пять минут чтобы просто работало и можно было поскорее сдать проект. В нормальной фирме, даже ПХП формошлеп будет выкладывать свой код через настроенный пайплайн, писать тесты, будет обязательный код ревью и АГИЛзапрещенная в РФ организация, дадут пощупать новые технологии, какой-нибудь эластик подрубят, rabbitmq, еще и мониторинг с графаной да прометеусом и логсташем. А это уже пиздец какой буст, тебе и код писать придется нормальный, иначе на код ревью засмеют. Веб студия - это стагнация тебя, как специалиста.
Аноним 07/01/21 Чтв 14:05:18 1903544417
>>1903540
> кидает ссылку на пакет в гитхабе, с которым ошибка
> Где ещё можно спросить кроме этого треда?

Очевидно - создать issue и спросить у создателя пакета, мы то откуда знаем? На проде никто в автозапуски винды не кладет гошные сервисы, лол, это либо systemd на линухе, либо кубер/докер с авторетраями. Я не думаю, что здесь кто-то вообще на винде с голэнгом работает.
Аноним 07/01/21 Чтв 14:07:17 1903546418
>>1903544
В пакете нет ошибки, Дефендер просто начинает ругаться и удалять программу, если её ярлык в Startup создавать (через этот пакет, но не думаю что это важно).
Так вот, в каком треде про такое спрашивать?
Аноним 07/01/21 Чтв 14:09:35 1903549419
>>1903546
Хз, здесь не тред винды, и, как я сказал - скорее всего тут нет человека, который разрабатывает го на винде. Иди в тред операционных систем, я даже хз. На форуме в инете спроси.
Аноним 07/01/21 Чтв 14:10:50 1903551420
>>1903540
Плюсовики могут знать.
Неоднократно сталкивался с таким, что некоторые антивирусы реагировали на мои программы. Решения не нашёл.
Аноним 07/01/21 Чтв 14:12:05 1903553421
>>1903544
Вообще достаточно забавно когда го или питон начают юзать в винде, а потом начинают спрашивать почему не работает.
Аноним 07/01/21 Чтв 14:17:52 1903563422
>>1903553
Да лан, ничего забавного. Гошка полнофункциональна на винде, просто мало кто пишет именно под неё, ибо нинужно, но я писал достаточно сложные штуки с opengl на гошке и на винде все прекрасно заводилось, главное заранее определить, что будешь поддерживать винду, т.к. сторонние либы могут без поддержки быть и ток с линуксовыми и макосевыми сисколлами работать.
Аноним 07/01/21 Чтв 14:39:27 1903578423
>>1903563
>линукс
Бесполезная хуйня для умственно отсталых, ты хотел сказать.
Аноним 07/01/21 Чтв 14:54:11 1903599424
>>1903578
Ох бида бида, не поихрать на серваке
Аноним 07/01/21 Чтв 15:21:44 1903620425
>>1903578
> Бесполезная хуйня для умственно отсталых, ты хотел сказать.
Абсолютно похуй. Линукс стоит на серверах и большинство ПО, соответственно, для разработки и удобства - заточено именно под линукс, это рабочий инструмент. Для игр и виндоПО (хотя я в них не играю) у меня есть дуалбут винда. Зацикливаться как ты на одной ОСи как школьник - это глупо, и ты сейчас на весь тред показал свою некомпетентность и тупость.
Аноним 07/01/21 Чтв 15:28:45 1903629426
image.png 1889Кб, 1920x1080
1920x1080
Аноним 07/01/21 Чтв 15:44:19 1903649427
>>1903629
Ив хуйня же

Мимо играл несколько лет
Аноним 07/01/21 Чтв 15:53:40 1903668428
>>1903578
Ох, если это даже так, то на РАБотке тебя все равно заставят, через пот и слёзы, как суку последнюю. Тебе не избежать писания конфигов.
Аноним 07/01/21 Чтв 16:08:05 1903682429
>>1903668
Скорее без знаний пердолинга базового вообще даже не возьмут
Аноним 07/01/21 Чтв 16:08:38 1903683430
>>1903682
Хотя какого нахуй базового, для того же го ты должен достаточно хорошо линух знать
Аноним 07/01/21 Чтв 16:43:05 1903710431
>>1903649
Ну вроде можно рмтшить без вложений, мне бы интрнет раз в месяц оплачивать
Аноним 07/01/21 Чтв 16:46:20 1903712432
>>1903710
Хз, кроме корпы нихуя там интересного для себя не нашел, репетативная штука, нужно быть особым видом аутиста, чтобы в соло кайф ловить. Хотя я и прелестей песочниц уже не понимаю, постарел...
Аноним 07/01/21 Чтв 17:27:34 1903742433
>>1903324
Подписываюсь под каждым словом
3 года в этом говне проработал, вот только осенью ушел в крупную контору
Аноним 07/01/21 Чтв 17:33:31 1903744434
Все гоферы бывшие пхпшники что-ли?
Аноним 07/01/21 Чтв 17:38:46 1903746435
>>1903744
В мире нет, в России определенно
Аноним 07/01/21 Чтв 17:54:12 1903750436
>>1903744
Лично я из ноды пришел, до этого опыт питона и сисадминства. Но да, очень многие гоферы, которых я знаю - имею опыт PазHоPабочим
Аноним 07/01/21 Чтв 19:12:53 1903822437
>>1903744
Ну да, и что ты мне сделаешь?
Аноним 07/01/21 Чтв 20:33:04 1903949438
>>1903535
Откуда инфа, что дженерики скоро подвезут? Я видел какой-то доклад Пайка, где он говорил, что все эти документы с вариантами улучшения - это даже не пропозалы, и никаких гарантий нет.
Аноним 07/01/21 Чтв 20:34:21 1903950439
>>1903535
>Этот функционал (именно variant, а не юнион) это лютый трудночитаемый костыль
Чем отличается variant от union'a в в твоём понимании?
(другой анон)
Аноним 07/01/21 Чтв 20:37:49 1903955440
>>1903746
В мире тоже (не все, но много)
Аноним 07/01/21 Чтв 20:44:30 1903964441
>>1903950
variant - это конкретная реализация вариантного типа, а юнион - способ группировки в дженериках

>>1903949
> это даже не пропозалы, и никаких гарантий нет
Пайк раньше вообще еретиков сжигал одним взглядом за это слово. Обещают в 1.18 уже завезти:

>Generics
> The next feature on everyone’s minds is of course generics. As we mentioned above, we published the latest design draft for generics back in June. Since then, we’ve continued to refine rough edges and have turned our attention to the details of implementing a production-ready version. We will be working on that throughout 2021, with a goal of having something for people to try out by the end of the year, perhaps a part of the Go 1.18 betas.

Пруф пост ноябрьский: https://blog.golang.org/11years
Аноним 07/01/21 Чтв 21:03:30 1903978442
Аноним 07/01/21 Чтв 21:05:43 1903982443
>>1903978
Ну да, в рамках такой фичи в целом языке - годик это не такой большой срок.
Аноним 07/01/21 Чтв 21:17:12 1903992444
Похуй на женерики, лучше эксепшены дайте.
Аноним 07/01/21 Чтв 21:18:53 1903995445
Аноним 07/01/21 Чтв 21:22:04 1904000446
>>1903995
Если нет эксепшенов, то язык не тьюринг-полный.
Аноним 07/01/21 Чтв 21:39:22 1904013447
>>1904000
> тьюринг-полный
В голэнге стакать ошибки можно, так что полный. Эксепшены это просто сахар к возврату ошибок. Да, удобнее захуярить сверху трай кетч и забыть, в гошке же придется ошибку отдавать и стакать наверх, но работает по сути как эксепшены, только не в "портал" улетает, а в явном виде передается вверх по стеку вызовов.

Да я сам не против эксепшенов, но то, в каком виде есть сейчас - ТЕРПИМО, так что похуй.
Аноним 07/01/21 Чтв 22:51:09 1904095448
>>1904013
Здесь есть большая разница. Да, в го обработка ошибок многословнее. Зато в го ты можешь добавить в контекст ошибки любую херню, какая тебе нужна и это будет менее многословно, чем отлавливать на каждый чих исключения. Смотри за руками:

(предположим, что findUserByName и findLastUserPost это rpc запросы и ты не сможешь сразу вытащить join'ом что тебе надо)

```go
func foo(name string) error {
user, err := findUserByName(name)
if err != nil {
return fmt.Errorf("can't find user by name %q: %w", name, err)
}
post, err := findLastUserPost(user.ID)
if err != nil {
return fmt.Errorf("can't find last user %q post: %w", user.ID, err)
}

// do something with post
return nil
}
```

```java-like
public class MyClass {
public static void foo(String name) {
User user;
try {
user = Users.FindByName(name)
} catch (e Exception) {
throw new Exception("Can't find user by name " + name, e)
}

Post post;
try {
post = Posts.FindLatestByUser(user.id)
} catch (e Exception) {
throw new Exception("Can't find latest post for user " + user.id, e)
}

// do something with post
}
}
```

Понимаешь, да? Представим, что у тебя какие-то проблемы конкретно с базой юзеров. С исключениями ты или получишь наверху ебаный "Http call exception: 500 Internal sever error for <IP>", или тебе придётся try-catch'ить каждую строку отдельно (ну или тело каждой функции, лол), что тот ещё пиздец.

А в го ты с меньшими затратами получишь полный контекст и няшную ошибку вида:
`Can't save post: can't check blacklist "banned_users": can't find user "pidor": called <IP>: 500 Internal server error`

Самым идеальным было бы, если бы в го был какой-то аналог checked exceptions через скажем объединения типов с выводом результирующих типов для лямбд и при этом с возможностью аннотировать любую переменную, как добавляемую в контекст текущей ошибки.

Чтобы было что-то вроде:
```go
func foo(@name string) error | CustomError {
user, err := findUserByName(name)
try(err)
@user.id
post, err := findLastUserPost(user.ID)
try(err)
// do something with post
return nil
}
```
Здесь try возвращает ошибку если она не nil, а @ перед переменной доклеивает её в строковом виде к текущей ошибке.
Такая функция вернула бы `foo ("pidor"): findUserByName ("<IP>", "500"): httpcall: ......`
Аноним 07/01/21 Чтв 22:54:52 1904099449
>>1904095
Или может даже
`post, err := findLastUserPost(@user.ID)` из последнего примера, ну ты понел
Аноним 07/01/21 Чтв 23:17:29 1904114450
>>1904095
Хз, ты хуйню написал. В джабе можно эксепшены оборачивать в стэк, и точно также сделать вывод ошибки. Ты к чему? Ну и эксепшены свои тоже можно созда