Этого треда уже нет.
Это копия, сохраненная 1 мая 2021 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред про лучший в мире язык GO №13 /go/ 1876438 В конец треда | Веб
Тред про лучший в мире язык 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)
2 1876594
>>1876232 →
А в чем профит писать такое на перле? Только из-за того, что там регулярки более продвинутые чем в Го? Я думаю это незначительный плюс, с учетом того, что в го я могу импортнуть компоненты компилятора на самом деле не совсем, но для некоторых internal пакетов есть паблик аналоги и работать с уже с готовым ast и прочими абстракциями.
3 1876597
Lol no exceptions.
4 1876603
>>876594
Не, ну есть ast парсить и т.п., то да.
Я думал просто в текстах искать - перл в этом деле вне конкуренции.
Только его нужно знать, конечно.
5 1876629
>>1876247 →
В туре только совсем базовые вещи. По хорошему нужно еще знать что в стандартной библиотеке находиться, ну и по диагонали пролистать golang.org/x/* , это практически тоже stdlib, только без гарантий 1.x совместимости.

Но как я понимаю - ты проходишь на Степике курс по го?
Тогда пройди сначала курс, там в общем-то дается вся информация, чтобы пройти их задачи.
6 1876632
>>876629
Спиздил вебинары от отуса пройдя перед этим тур, есть ощущение, что лучше бы книгу Донована из шапки прочил, чем все это
7 1876806
По-моему на го можно сесть и макакить обычнопроекты сходу
8 1876945
>>876806
Go - это такой компилируемый аналог пхп.
9 1877340
Сап Гофаны,

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

Или лучше не лезь оно тебя сожрет оставаться на ноде?
10 1877346
>>877340
Для твоей задачи более чем хватит ноды, на самом деле. Рекомендую использовать typescript и nest, базарю еще захочешь.

На го аналогичный проект выйдет у тебя в 3 раза больше строк кода, и дело тут не в ручной обработке ошибок. Нужно оно тебе? Какие профиты ты с этого получишь?
11 1877367
>>877346

> профиты


Соморозвитие наверное

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

Алсо как раз Нест с ТС и использую, мимо-ангуляр дивилопир
12 1877552
>>877340
Да, хватит
13 1877715
>>877340
Приколы какие-то у тебя
Гошечке-то для рестика с вебсокетом + скл пул на такое количество юзверов и 128мб за глаза должно хватить. И вообще в го и гц максимальная латенси ориентация, а не бендвизная. Твои боязни скорее можно применить к котлину, нежели пщ
Подводных практически никаких, кроме стандартного месяца тупижа, свойственного при перекате на любой новый язык
14 1877742
Почему в обучающих материалах сначала пишут main, а потом послее него определение всех функций, не логичнее наоборот?
15 1877750
>>877742
Нет, не логичнее.
16 1877751
>>877742
в каких? https://www.golang-book.com/books/intro/13#section7
люди читают текст программы сверху вниз, и логично функции, которые исполняются первыми, разместить выше.
17 1877752
>>877750
Почему? Гораздо лучше, когда ты видишь, что делает и возвращает каждая функция сначала, перед ее использованием.

>>877751
В готуре и в книжке из шапки.
18 1877754
>>877742
>>877752
Не ищи логику в этом языке. Здесь свой путь, в который ты должен просто верить, на время забыв про практику других языков и здравый смысл.
19 1877774
>>877754
Язык охуенен, на самом деле.
Надеюсь, дженериками его не сильно испортят.

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

А люди всё равно пытаются писать на го, как на питоне, джаве, си, а потом ещё и сюда пишут, лол.
20 1877787
>>877774

> Чтобы на уровне подсознания было разделение.


Обычно для такого уже достаточно того, что стандартная библиотека другая. Уже это заставляет думать, что язык другой и со своими правилами, даже если они похожи синтаксисом, как жаба и сярп.
21 1877800
Я правильно понял, что компилятор считает вар арги как один аргумент? И из-за благодаря этому в операнды можно закинуть только один спред?
Можно как-нибудь заапендить несколько байт слайсов подряд?
22 1877808
>>877800

> вар арги как один аргумент


синтоксический сахар вместо слайса

>Можно как-нибудь заапендить несколько байт слайсов подряд


bytes.Join([][]byte{a, b}, nil)
23 1877820
>>877800
Можно использовать рефлексию, и ебашить слайсы в любые функции вообще:
https://stackoverflow.com/questions/17555857/go-unpacking-array-as-arguments/17556146

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

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

А если не байты, то можно и append использовать.
25 1878019
>>877752

>Почему? Гораздо лучше, когда ты видишь, что делает и возвращает каждая функция сначала, перед ее использованием.


Нет не лучше.
26 1878041
>>878019
Пайк, иди нахуй
27 1878092
>>878041
Если гоферов выгнать из собственного треда, они в жаба-тред набегут.
28 1878100
>>878092
Наоборот же.
Я (>>1877844 →) вот, например, хочу убежать в го.
Заебало реально.
Хочется чётких и дерзких микросервисов и прочих модных вещей.
29 1878109
>>878100
Достаточно переехать на спринг бут, а джава ЕЕ 6 заебёт кого угодно.
30 1878282
>>877821

>the_j_


>2 years ago



>Go 2 is a myth to try to placate the people who want new features.

31 1878395
Чому у меня с горутинами не просирается и\о?
Принчу и ос (*file) врайчу, ничего не оверлапится, пишется как будто синхронно
Мутекс и вейтгруппа дёргаются только на входе и выходе из функции, к и\о отношения не имеют
Это какой-то волшебный рантайм или где-то обосрался?
Гринтреды вроде спавнятся и крутятся нормально
32 1878424
>>878395

>Мутекс


Думаю, дело в этом.
Его надо дёргать в горутине, не не до того как.
33 1878474
>>878424
И вправду я тормоз и за счёт мутексения буффера у меня там ничего не может при конкуренте зафейлиться, лол
Но попробовал прогнать без него и всё равно os.*file write вроде не отличается

И вообще почему те же принты не оверлапятся в stdout?
По годокам вроде не тред-сейфовые
https://play.golang.org/p/_LCu_cHahGf
34 1878510
>>878474
Что за хуйню ты написал?
Что ты хотел получить в результате?
35 1878531
>>878474
Залез сейчас во внутренности работы с файлами и да, Write действительно защищен мьютексом. https://golang.org/src/internal/poll/ , смори файл fd.go с суффиксом твоей ОС
36 1878542
>>878510
Ожидал что может быть "HuuHoooo"
Я не очень во всякие буферы с флашеми, что-то вот вспомнил свои выстрелы по ногам раньше, вроде в С
Правда сейчас нагуглил, что даже в С форк копирует дискрипторы и еще что-то там системное, не знаю, что я там раньше делал, лол
37 1878543
>>878474
Я понимаю что это просто пример, но пустой цикл это -ядро в рантайме, лучше использовать пустой select, а еще лучше <-context.Context.Done() или wait/errorgroup.Wait()
38 1878551
>>878531
Ты думал у тебя буквы в словах перемешаются при параллельной печати из горутин?
Это было бы слишком, я думаю.

Хочешь чего-то такого - сделай свой "принт", который будет печатать в заранее созданный длинный массив байтов. Потом - выведи заполненный массив в текстовый файл. Всё сразу увидишь.
39 1878570
>>878543

>пустой select, а еще лучше <-context.Context.Done() или wait/errorgroup.Wait()


Можешь переписать с этими штуками плизки7
Я вроде уже пишу штуки который даже работают, но ещё далеко до нащупывания бест практисов
41 1878770
Как фиксить
expected 'STRING', found '{'
тут:
import {
"golang.org/x/tour/tree"
"fmt"
}
42 1878772
>>878770
Всё понял.
43 1878904
>>878570
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
44 1878920
Аноны, что думаете о реализации actor модели в пщ? Паралельно учу akka в университете и заинтерисовался, если akka настолько успешна, то почему в го это никого не интересует?
45 1878925
>>878920
Я думаю что все уже наелись колбеков в js, python twisted и асинхронной джаве.
46 1878931
>>878920
Акторы - довольно спорная вещь.
Как и успешность Akka.
47 1878940
>>878920
Как дженерики завезут - попробую github.com/ReactiveX/RxGo, до этого даже пытаться не буду во что-то подобное. Я лучше буду писать кучу однотипного кода, чем работать с пустыми интерфейсами.
48 1878943
Кому и зачем нужно Rx, если это не GUI?
49 1878946
>>878943
Ну, big data там, всякое такое.
50 1878948
>>878943
А в GUI оно зачем? Вывод: Rx - хуйня без задач.
51 1878991
>>878948
Золотые слова.

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

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

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

В общем, всё это весьма нишевая хуйня, реально нужная весьма немногим.
52 1879136
Почему в го нет конструкции типа implements InterfaceName в джаве?
Т.е. в коде совершенно непонятно, какой именно интерфейс реализует та или иная функция.

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

И есть ли какой-то стандартный комментарий, чтобы отмечать это в своём коде? По типу тегов javadoc?
53 1879725
>>879136
пользуйся нормальной ide
54 1879822
>>878943
В веб-фреймворке nest.js можно использовать Rx для вебсокет-соединений. Сам не пробовал, но вроде как это единственно правильный способ готовить там вебсокеты.
55 1879825
>>879136

> Почему в го нет конструкции типа implements InterfaceName в джаве?


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

> И есть ли какой-то стандартный комментарий, чтобы отмечать это в своём коде? По типу тегов javadoc?


В стандартной либе практически над каждым методом, который реализует интерфейс это обозначено, но вроде никто вне стандартной либы так не делает.
Если сильно хочется - пиши конструкции вида var _ IfaceName = new(TypeName), голанд даже может указать на недостающие методы и предложит их создать.
56 1879832
>>879725
Чувак, про иде я в курсе. Я джаваёб со стажем, если что.
Вопрос был не об этом.
А о том, почему такой красивый простой язык, с великолепно читаемым кодом, имеет такой неожиданный изъян.

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

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

>>879822
Да, такое ощущение, Rx только в JS и прижился.
И, в основном, на фронте, хотя бывают и исключения, как видим.
Ну, может, ещё в дотнете, т.к. это изначально мелкомягкое поделие, но, я туда не хожу, и хз что там вообще.
57 1879837
>>879825
Лол, пока писал свою простыню, уже ещё раз ответили.

>Это осознанное решение разработчиков языка


Да, я так и предположил.

>var _ IfaceName = new(TypeName),


Это будет оптимизировано компилятором, т.е. выкинуто из бинарника?
58 1879915
кто что юзает для валидации структур?
59 1879941
>>879136

>Т.е. в коде совершенно непонятно, какой именно интерфейс реализует та или иная функция.


Потому что одна функция может реализовывать сразу несколько интерфейсов?
60 1880154
>>879136
Это изъян только с точки зрения джаваёба
61 1880186
>>879915
структур или, например, запросов по структурам?
мимо веб-макака, gin.Context.ShoudBindJSON(&struct)
62 1880187
Есть работа с модулями как с pip или npm? Типа файл в котором прописано всё, я просто делаю xxx install module_file.txt и мне все зависимости скачиваются и я рад?
А то видел только, что всё руками надо go get, но это хз для кого сделано.
63 1880194
>>880187
Go mod, пишешь зависимости в файле с версиями, запускаешь сборку, всё качается само.
64 1880213
>>880154
Нет.
Ты, видимо, ваннаби-вкатыш, и не писал ничего сложнее хелловорлда в своей жизни.

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

Если функция соответствует нескольким интерфейсам, то надо писать либо их все, если они известны в данный момент, или тот, который подразумевается разработчиком в момент написания этой функции.
image.png7 Кб, 329x328
65 1880222
>>879136
Потому что уподобились утиной типизации из динамикодрисни. Мол, не важно, что тип формально реализует какой-то интерфейс, важно только наличие в нём указанных методов.
Вот только на практике неприятно выяснять, что нет нужного метода, только в тот момент, когда уже пытаешься вызвать, потому что до этого нет возможности проверить соблюдение контакта. Спасибо ещё, что это ошибка компиляции, а не "не найден нужный метод!!1" в рантайме.
66 1880257
>>880222
А, вон оно что.
Я просто до этого (interface{Methoc()}) не дошёл пока.

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

>неприятно выяснять


Ну, в джаве с интерфейсом было бы то же самое - ошибка компиляции.
Так что, всё нормально.
67 1880282
>>880186
интересует именно валидация структур после анмаршалинга из жсона. смотрел на gin, но обратил внимание на то, что тамошний валидатор рефлексию использует. может ли это быть узким местом?

искал решения на основе кодогенерации, но таковым смог похвастаться только swagger, а это в моем случае оверхэд - тащить ради одной валидации инструмент, предназначенный для другой цели вообще
68 1880433
>>880282
Сам напиши, тем более - ради одной валидации.

И, в джаве я бы использовал рефлексию, с кешированием методов и т.п. для скорости.
В го оно всяко не медленне должно быть же?
69 1880746
>>880222
Так в момент вызова или при компиляции всё-таки? Определись пожалуйста
>>879915
Что ты понимаешь под этим? Что в жсоне нет полей, которых нет в твоей структуре? Или наоборот? Или что значения допустимые?
sage 70 1880753
>>880746
В момент вызова при компиляции.
71 1881079
Нашел лютейшую книжку.
Hands-On Software Engineering with Golang.
Anagnostopoulos Achilleas

Прямо, читать — не перечитать! Есть на трекере, но можно и за 50 бачей взять, не так уж и много за такую годноту.
72 1881098
>>879136
потому что интерфейсы либо настолько общеизвестные вроде райтера/хттпхендлера, что по методам понятно. либо потому что они настолько специализированные, уникальные для проекта, что юзеры и так список методов в голове будут держать, если собираются ими пользоваться. ты лучше пример дай, а то похоже на "никаквжаве!!"
73 1881168
>>881079
Ты что, книжки от пакт первый раз видишь? Это очень своебразная контора, я бы поостерегся с выводами до детального ознакомления.
74 1881170
>>881168

>Это очень своебразная контора


Хм, а по подробнее можно ?
75 1881174
>>881170
У них фича это нахуярить поскорее тайтлов на хайповые темы и срубить бабла, пока не подтянулись большие издатели (если вообще). Зачастую берут в работу каких-то индусов-чучмеков без крепкого знания инглиша, и потом так и выпускают без особого QC.
Бывают иногда и хорошие книги, но это пиздец лотерея. Короче, эдакий удеми от книжек.
76 1881288
>>881174

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

Про эту книжку неоднозначные отзывы на amazon.
Но, хороших больше.
А в плохом написано, что поверхностная хуита для ньюфагов.
Там такое пишут про многие книги пакта.
77 1881290
>>881288
Блядь, ссылки на посты перепутал местами, ну, вы поняли.
быстрофикс
78 1881347
>>881288

>что поверхностная хуита для ньюфагов


Ну кому как, я так-то нюфаг в го, но после прочтения главы, если она была достаточно интересной, стараюсь копать глубже, разбираюсь, пробую тд. На одних контейнерах застрял на 3 месяца в другой книге, столько всякой хуйни написал что пздц. Даже не представляю какая книга должна быть, чтобы описать все сценарии использования и нюансы отдельно взятой темы. Может быть такая есть, что посоветуете ?
79 1881366
>>881347
Да нет таких всеобъемлющих книг, наоборот надо искать по конкретным темам.

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

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

Вот книжка, если кому надо:
https://scanlibs.com/hands-software-engineering-golang-programming/
Вот отзывы на amazon:
https://www.amazon.com/dp/1838554491/#customerReviews
80 1881730
Сап, суслики. Есть тут кроме вкатывальщиков кто? Есть вопрос с подвохом, так сказать.
Исходные:
Микросервис, который принимает по ~100 сообщений в секунду из mqtt, далее сообщение обрабатывается каштомный бинарный протокол, ебать его в сраку и по мере обработки в отдельный канал пуляется структура с задачей на запись. Так уж получилось, что нет возможности укладывать 1 сообщение = 1 запись в БД. Так вот, далее в горутине крутится цикл, который разбирает этот канал и пишет уже задачу в БД. БД Postgres, либа pgx. Пулл в ограничен в 10 подключений. Прикол в том, что заняты не более 3-5 подключений и запросы тормозятся. Со временем их накапливается в очереди много. Для запуска запросов использую "изкоробочную" pgxpool.Pool.Exec(). Вроде бы не такой уж маняхайлоад, чтобы тормозило. Кто поопытнее поясните пожалуйста, где я проебался. В своей конторе и спросить некого, го больше никто не знает.
81 1881786
>>881174
двачую, повелся на эту хуйню летом и купил "Golang для профи". лучше бы просто пропил 1,5к, которые потратил на нее
82 1881789
>>881730

>нет возможности укладывать 1 сообщение = 1 запись в БД


Что это значит?

Кстати, чем вообще тестируют такую хуйню?
В смысле - чем давать нагрузку? Есть какие-то специальные инструменты, или своё колхозить?
83 1881792
>>881786
Про этого автора очень плохие отзывы везде.
Не надо покупать вслепую в наше время.
84 1881800
>>881789

>Что это значит?


Пока обрабатывается сообщение улетает несколько запросов в БД (запись).

>В смысле - чем давать нагрузку? Есть какие-то специальные инструменты, или своё колхозить?


Тулы наверняка есть, но я не интересовался, у меня тут и без того хватает нагрузки. Своё наколхозить за пару минут можно. Цикл, который будет создавать N горутин, в которых будет какой-то запрос в БД, вот тебе и хайлоад на БД, если ты об этом.
85 1881838
>>881730

> 100 сообщений в секунду


Для постгреса это вообще ничто для insert'a. Какой запрос в бд летит? EXPLAIN ANALYSE что выдает?

У тебя где сообщения стопорятся? Мб твой йоба бинарный обработчик тупо захлебывается? Ты хоть какие-то дебаг данные дай, или нам тебе на кофейной гуще нагадать твой боттлнек?
86 1881842
>>881800
Я имел в виду, скорее, отправку множества сообщений.
Понятно, что несложно это самому сделать, но, я думал, может есть какие-то особые штуки для этого.

Ты, кстати, отдельно именно работу пула БД проверял?
Смог полностью загрузить все 10 соединений?
87 1881844
>>881800

> Пока обрабатывается сообщение улетает несколько запросов в БД (запись).


Почему не заворачиваешь в транзакцию?
88 1881888
>>881838
Эксплейн в пикрелейтед.

> Мб твой йоба бинарный обработчик тупо захлебывается?


Сам первым делом на него грешил, но тут прикол в том, что нужно отвечать сразу же после обработки, я замерил время ответа и нет, с обработчиком всё ок, отрабатывает как положено. Посмотрел каналы, там никаких очередей не образовывается.
В общем, на каждый клиент на связи открывается канал, который ждёт структуры с данными из обработчика, как только приходит, дёргает одну из функций "модели", которая запускает запрос на апдейт/инсерт (пик 2), в функциях sql и аргументы из входящих данных, которые уходят в пик 3. И на этом месте начинается тупняк.
>>881842

>Ты, кстати, отдельно именно работу пула БД проверял?


Ну как "проверял". Вот статы смотрел, в либе самой (pgx) не ковырялся.
10 соединений забиваются если дёргать pgxpool.Pool.Query() а не Exec(), но на этом дедлокаются.
Запросы простецкие, базовые апдейты/инсерты.
>>881844
Да вот думаю как раз, что стоит попробовать. Раньше не сделал, потому что лень было транзакцию тягать, флаги слать когда создавать, когда коммитить.
89 1882039
>>881888

> 383ms


Чет жирно для обычного апдейта, что в `get_or_create_object...` функции? С такими таймингами (ты еще и говоришь, что на одну запись несколько вызовов бд идет) и правда может БД быть горлышком.
image.png5 Кб, 274x67
90 1882063
>>882039
Да, конкретно это самый жирный запрос. Остальные в пределах такого.
А в процедурке там йоба-поиск по разным таблицам и в случае отсутствия такого серийника добавление строк с дефолтными значениями в несколько таблиц
91 1882075
>>882063
Попробуй индексы захуярить, чтобы шустрее функция бд читала. Тебе нужно запрос оптимизировать, либо мощностей добавлять (т.н. потоков и подключений к бд). У тебя считай 3 запроса и уже на секунду зависло все действо. А их у тебя под сотню в секунду, вот и гг.
92 1882078
>>882075
Вообще, да, напишу-ка я под этот сервис отдельную процедуру. Эта легаси бородатых годов, которая которая допиливалась напильником.
93 1882221
Когда я делаю go mod init huy, то ставит модули глобально?
94 1882231
>>882221
Что значит "глобально"? Кладёт зависимости всех проектов в общий локальный репозиторий, а не качает каждый раз с нуля для каждого проекта, вроде дрисни npm? Тогда да.
95 1882240
>>882231
Хуево.
96 1882241
>>882240
Почему?
97 1882269
>>882221
>>882231
Да, "глобально". Но если ты про версии - нет, разные версии не будут конфликтовать на одной машине. А если сильно надо - можешь вендор делать прямо в директорию проекта, не скачивая их в общий каталог.
98 1882273
>>882269
А что то вроде virtualenv тут нет?
мимо перекатывальщик с пистона
99 1882279
>>882273

> А что то вроде virtualenv тут нет?


Неа, такого нет. Сосешь хуй с локальной версией голэнга, либо можно поставить несколько версий языка, но вот что при этом будет с зависимостями - я хуй знает.
100 1882283
>>882279
А если нужны разные версии для разных проектов, то что делать?
101 1882284
>>882283
разные версии модулей
фикс
102 1882286
>>882284
Я же написал

> Да, "глобально". Но если ты про версии - нет, разные версии не будут конфликтовать на одной машине.


Разные версии пакетов одновременно скачиваются, так сказать. Конфликтовать не будет ничего.
103 1882289
>>882286
>>882284
Более того, если ты шизик - ты можешь даже в одном проекте одновременно 2 разных версии пакета юзать, нужно ток прописать в mod файле replace свой на каждую версию.
104 1882295
>>882289
А есть какой-нибудь мастхев список по инструментарию для го?
С более актуальными библиотеками, а не как в awesome go, где большая часть либ заброшена авторами
105 1882297
>>882295
Roadmap глянь
106 1882306
>>882279
А разве нельзя добиться чего-то подобного меняя переменные окружения?
107 1882307
>>882306
Хз, не сталкивался, нужно нагуглить с другой стороны похуй на пакеты, go get хуяришь и будь что будет)))))0
108 1882313
>>882297
Начал глядеть, увидел http/https и призадумался, что значит знать это. Структура пакета? Методы и коды ответа? Стратегии кеширования? Знание части заголовков? Понимание как работают сертификаты?
109 1882318
>>882313

> Структура пакета


Достаточно "Здесь версия хттп, дальше хедеры с новой строки, дальше тело запроса/ответа".

> Методы и коды ответа


Знать основные.

> Стратегии кеширования


Похуй.

> Знание части заголовков


Да, знать десяток самых основных.

> Понимание как работают сертификаты


На уровне знания, что это такое и как их скормить http-фреймворку.
110 1882324
>>881888
В какой предметной области эта задача, если не секрет?
Что за девайсы шлют сообщения?
111 1882330
О, я думал что бы написать такого. Напишу тулзу, которая бинарник в бандл на макоси собирает.
112 1882587
>>882324
Да нет, не секрет. Как ты понял, это IoT. Собственная разработка компании, но суть -- ардуина, к которой прикручены те или иные модули. Может быть использована где угодно в зависимости от обвязки. Конкретно это дальнометры с акселлерометром.
113 1882590
>>882587
А подключение по какому каналу?
IP прямо на ардуине поднят?
114 1882594
>>882590
Там не ардуина, но суть та же. GSM-модули в бутерброде.
115 1882982
Ну что там, дженерики завезли, посоны?
Мимонеписалнаэтойпарашеужедвагода
116 1882986
>>882982
В Go 2, который выйдет хуй знает когда.
117 1883158
>>876438 (OP)
Hands-On GUI Application Development in Go
Есть у кого такая херь или подбное? Интересует fyne.
118 1883229
>>883158

>fyne


Может кто разбирается в этой шляпе
Как ловить инпут входящий по всему шиднову?
Ковырял когда-то, костыльнул проблему добавлением таппабл инпута на весь размер окна, лол
И может есть какое-то решение для неподдерживающих unresizable и похожие окно-опционные штуки wm?

мимокрок
119 1883373
>>883229
Там Tappable интерфейс есть, его реализуешь и в методы будет прилетать объект, где можешь координаты пиздить.

Подробнее в одном из их примеров можешь глянуть: https://github.com/fyne-io/life/
120 1884226
>>883158
Эта книжка есть на scanlibs.com

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

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


Да. Но все равно рекомендую писать это не в основном коде, а в *_test.go, т.к. это поможет избежать циклического импорта в некоторых случаях.
122 1885631
Что стабильнее под го, gtk или qt?
123 1885636
>>885631
Мне кажется, это не очень правильный вопрос.
Тут надо смотреть - что само по себе стабильнее?
Я думаю, что Qt.
https://www.linux.org.ru/forum/general/14754708

По поводу Го - правильный вопрос - что удобнее использовать в Го?
Я ответа не знаю, но, можно посмотреть примеры кода.
124 1885641
>>885631
Чем брать фанатские биндинги, лучше используй Gp по назначению или не используй.
Пытался тыкать их где-то год назад. Инструкции на гитхабе выглядят просто, но у меня не заработало, оба валились с ошибками, которые не гуглились. Проще на крестах писать, чем ебаться с этим говном.
126 1885643
>>885641
Проще на питоне.
127 1885645
>>885643
Тогда уж сразу говноэлектрон.
128 1885707
>>885641
Вот я и пишу на крестах qt, а хотел попробовать на го.
129 1887191
>>884226
Спасибо нашел
130 1887335
Анон, очень срочный вопрос, почему в го проверку ошибок не пишут в одну строку, когда это можно?

if err != nil { return nil, err }

вместо

if err != nil {
return nil, err
}
131 1887381
>>887335

> очень срочный вопрос


Ты рофлишь?

> почему в го проверку ошибок не пишут в одну строку


Потому что решили насильно установить единый кодстайл. Другого ответа ты не услышишь.
132 1887389
>>887381
А где найти упоминание о таком кодстайле? Я ничего не смог нагуглить.
133 1887391
>>887389
gofmt - насильно навязанный кодстайл от создателей самого языка. Ты вчера родилася?
134 1887403
>>887391
Ну че ты злой такой? Понял я все
135 1889810
Привет, гоферы. Кому нужна работа?
В компании, более-менее известной под брендом "мой офис" требуются разработчики бекенда. Пишем микросервисную распределённую отказоустойчивую корпоративную систему общения и документооборота, а если проще то убийцу ms exchange, ms active directory.
Почитать подробнее можно в блоге на хабре: https://habr.com/ru/company/ncloudtech/blog/

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

Из неформального могу сказать, что рабочий процесс в конторе поставлен хорошо, то есть нет управленческого хаоса, мнение рядового разраба слышат - то есть если ты аргументированно предлагаешь технологию или подход, то её вредят. Работы много, на годы вперёд.
Пишите в телегу @toorneps, после испытательного срока попилим бонус за найм. Если не хотите пилить - откликайтесь на вакансию на хх.
Отвечу на ваши вопросы.
136 1889814
>>889810

> Внедрят


Фикс
image.png29 Кб, 655x441
137 1889918
>>876438 (OP)
Какие компетенции нужно иметь в Go(с примерами), чтобы претендовать на работу пикрил и не облажаться в ней?

дайте дорожную карту, рукава я уже засучил
138 1889936
>>889918
Так может стоит сначала джуновские/мидловые вакансии обуздать, так сказать?
139 1889937
>>889810

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


Это типа безвозмездный подгон брату анону? Звучит слишком хорошо, зачем тебе вообще делиться?
140 1889940
>>889936
Ну так дай список:
- джун должен уметь делать это:
- мидл должен уметь делать это и поддерживать это:
- претендент на 10к баксов в ДС должен уметь создавать с нуля это:
141 1889944
>>889940
Ты должен быть способен написать на голэнге приложение из нескольких микросервисов и подвязать всё это в каком-нибудь кубернетусе. Если сможешь - ты джун.
142 1889946
>>889937
Да, безвозмездный, потому что я делюсь не своими деньгами. При этом в моем отделе, как впрочем и в других, нужны люди. Если ты отсобеседуешься на рядового программиста и пройдёшь испытательный срок, то получишь что-то типа 15к. Не такие деньги, чтобы я не мог с тобой поделиться.
143 1889949
>>889946

> что-то типа 15к


А, я думал там более существенные суммы, тогда лан.
144 1890380

>>1890128


Да, рублей. Чего вы к этому бонусу прицепились, это вообще третьесепенное обстоятельство.

Это не госкомпания. Половиной доли владеет лаборатория Касперского, остальными - другие частные лица.
145 1890408
>>889810
Вакансия хорошая но носклы страшные
146 1890484
>>889810

> "мочь внятно рассуждать на темы многопоточности, сетевого взаимодействия и эффективности". Я вкатился прочитав Кернигана Донована и написав пет-проект.



Это джун позиция чтоль? Ты бы подробнее написал че надо то им по опыту и т.д. Нет ссылки на хх?
147 1890660
Как у вас накатаюываются миграции? Отдельной такой в сисд, джобой в кубе или самой аппой при старте? Почему?
148 1890775
>>890484
От джуна и выше, нужны все. Я описал минимальный уровень, если ты продвинулся дальше - тоже возьмём.
https://hh.ru/vacancy/28417466
Вот вакансия.
149 1890784
>>890775
Тут надо уточнить, что у нас нет формальных лычек джун-мидл-синьор
150 1890815
>>890775
Пишут про опыт серверной от 3х лет, не совсем джуна хотят, кек.
151 1890848
>>890815
Когда я нанимался, у меня был опыт серверной разработки в несколько месяцев на одном проекте, где я был единственным сотрудником.
Я был удивлён, но найти гошников, которые отличают односвязный список от хеш-мапы оказалось непросто, поэтому отклонение твоего опыта от описанного в вакансии допускается в значительных пределах.
152 1890870
>>890848
Я язык голубого суслика не для чтобы какие-то ссаные структуры данных крутить.
153 1890973
Хардкорный разработчик на С++ ( 12 лет ) ИТТ.
Скажите, как на вашей хуйне писать что-то не имея, ладно ООП, это соглы. хуйня, но как без шаблонов обойтись?
154 1891020
Нормуль.
Как человек с сишным бжкграундом, не чувствую никакого дискомфорта.
155 1891021
>>890973

> шаблонов


Дженерики скоро подвезут или нет
156 1891063
>>890973
Сишники обходятся void⚹ и генерацией через макросы #define, вот и здесь обходятся interface{} и васянской кодогенерацией. Выжить можно, жить нельзя, это как питаться только дошираком.
157 1891248
>>890973

>не имея ООП


Зачем вбрасывать унылый жир
В этом треде многие на самом деле не могут осилить
158 1891257
>>889944
Найс троллинг
159 1891349
>>891257
Где троллинг? Анон все верно написал. Тебя не гугл написать требуют, даже блог сойдет, если ты его хотя-бы парочкой свзянных микросервисов сделаешь в кубере. Если ты не способен такое сделать на го - то ты не джун, ты трейни.
160 1891422
>>880213
Профессионал бля, Goland купи и не серь своей шизой тут больше.
161 1891641
Чому сегодня до сих пор можно выбрать рест вместо grpc?
162 1891647
>>891641
Толсто.
image.png47 Кб, 600x315
163 1891869
>>876438 (OP)
Насколько уверенно нужно шарить в Докере и Кубернетесе, чтобы вкатиться на норм позицыю гофера? Если мой верх - это написать докер-компоуз/докерфайл и в общих чертах поднять это всё с каким-то traefik, а кубер я вообще боюсь как огня - я тварь дрожащая или право имею?
164 1891885
>>891869

> позицыю


позицию* быстрофикс

> это написать докер-компоуз/докерфайл и в общих чертах поднять это всё с каким-то traefik


Ну и еще добавлю, что смогу там автотесты всякие и ci/cd простейший в гитлабе или гитхабе настроить с ssh.
165 1891913
Недавно попробовал пописать на го лабы по одному из курсов в унике. В целом понравилось, но выглядит очень сыро, как будто язык задумывался как первоапрельский троллинг от гугла, но вдруг люди стали им пользоваться и пилится он с большой неохотой. Вопрос такой: как же правильно обрабатывать ошибки? Наверное уже неоднократно задавался, но всеже. Мне кажется максимально уродско выглядит вставка ифов с ретерном еррора после каждой строчки. Можно конечно присваивать ошибку непосредственно в условии, но это не работает если мне нужно что то помимо еррора получить из функции, так как же быть?
166 1891917
>>891913

>так как же быть?


Никак, ты уже перечислил оба варианта.
167 1891918
>>891913

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


Тебе не кажется, это действительно выглядит уродско. Альтернатив в Go нет и в обозримом будущем не будет.
168 1891927
>>891918
понятно. ну деды на си же как то прогали даже без описаний ошибок, получая тупо -1, так что это еще куда ни шло
169 1891930
>>891927
Не, в сишке тоже описания ошибок были (и есть). Почти в любой либе имеется какой-нибудь getlasterror(ctx_ptr), глобальная переменная с кодом ошибки (errno) или прокидывание кодов ошибок с последующей передачей в errmsgfromcode(err_code).
170 1891933
>>891930
хм, ок. особо глубоко в си не погружался и не знал про это
171 1891945
>>891933
Этот долбаеб тебя наебал, в си ошибки еще более примитивны (а точнее это тупо цифры), чем в Go, не говоря уже о их обработке. Также в голэнге ты можешь нагрузить ошибки как хочешь, даже стектрейсы строить, если необходимо. Но да, это не эксепшены и чудес от этой системы не жди, зато работает шустро. Не баг а фича, блять.

>>891930
Не путай адекватную систему ошибок с поддержкой достаточно всрато реализованных функций в либах (причем даже в стдлиб считай только числами себя в рот ебешь). В го есть интерфейс, с помощью которого ты можешь реализовать любой сложности объект ошибки, хоть уссысь, тот же контекст - это стдлиб в голэнге. Не сравнивай говно с мочой, что в сях, что в го - обработка ошибок это примитивная хуйня, выдуманная в угоду производительности.
172 1891954
>>891945
Блять, я не говорил, что в сишке то же, что и в Go, я просто написал, что там не "тупо -1". В остальном согласен.
173 1891960
>>891954
Извини за маты, не хотел. Я думал ты нападаешь на лучший язык в мире.
174 1891997
>>891422
Да, я профессионал.
А ты - нет. И не стесняешься это демонстрировать.
Отличная иллюстрация эффекта Даннинга-Крюгера.

>>889949

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


Не удивительно, что у вас проблемы с поиском специалистов.

>>891913
Язык охуенен.
А первоапрельским троллингом было твоё зачатие.
176 1892133
>>891913
Ты же понимаешь, насколько жалко выглядит твой школьный анализ?
177 1892180
>>891913
а, это ты недавно в конфе Go-Go тупые вопросы для своей лабы задавал? Узнал тебя по твоим шизоидным высерам

Чем обработка ифами отличается от try-catch в плане громоздкости синтаксической конструкции?
178 1892260
>>892180

> Чем обработка ифами отличается от try-catch в плане громоздкости синтаксической конструкции?



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

Я, если что, не за применение эксепшенов в гоу, просто это самый очевидный из аргументов, которые можно привести. Да и его оспорить можно.
179 1892266
привет
скажите, пожалуйста, го как первый язык - до сих пор плохая идея?
во всех этих ваших статься он топ-1 in demand
180 1892268
>>892266
не отвечайте на мой долбаебский вопрос, уже все нашел
181 1892312
>>891997

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


> Да, я профессионал.


А теперь зайди САМ в std и чекни, что и как там комментят.
182 1892319
>>892266
А у меня тот же вопрос, мне ответьте пожалуйста! мне понравился маскот
image.jpeg7 Кб, 179x282
183 1892334
>>892260
>>879136
Соревнование на самый вонючий пук?
Засрать даже готред. Сосака воистину лягушатник дегенератов с даунами
184 1892336
>>892266
Возможно, это даже лучший вариант из всех.

Главное не зацикливаться на одном языке.
185 1892341
>>892336
Как-то толстенько (не?)
Я сам живу в Европе и на джуна 2.5 вакансии только с ГО
В РФ вообще только Озон, судя по всему
186 1892342
>>892319
Да, начинать с го - хуёвая идея. Очень очень хуёвая идея.
187 1892343
>>892341
Ну да, джуниоры на го особо не нужны, хотя вакансий на миддлов дохуя.
Ящитаю это хороший первый язык для обучения

>>892342
Почему? Жесткий кодстайл, хороший тулинг, очень прост в освоении
188 1892346
>>892343

> Почему? Жесткий кодстайл, хороший тулинг, очень прост в освоении



Если ты предлагаешь тупо для начала обучения - то плохой вариант. Процендурный язык это вообще плохой план. Речь не о том, что го плох, а о том, что после него будет сложно с другими не процедурными языками работать. Наилучший вариант - это вкатиться в С++, не сильно глубоко, а просто ООП изучить и к типам привыкнуть. После плюсов уже любой язык будет проще изучить
189 1892351
>>892342
>>892343
>>892346
Спасибо за ответы
Я, собственно, не очень хочу разводить флуд и прочую срань не по теме
Как-то пытался вкатиться в ГО по курсере от mail.ru, но охуел на первых темах с командной строкой и прочим, так как последние несколько лет сижу на маке по рабочим причинам
Но вдруг захотелось сменить свою работу бизнес-аналитика на ч-тото серьезное и полезное, а возвращаться в РФ не очень хочется блядь
но для вакатыша выглядит гиперамбициозно
190 1892355
>>892346

> Наилучший вариант - это вкатиться в С++


В голосину. Ты хотел выбрать язык в котором есть вообще все концепты?

После любого языка следующий учить проще. Нужно просто охватить первыми 3-4 языками наибольшее число парадигм.
191 1892357
>>892351

> Как-то пытался вкатиться в ГО по курсере от mail.ru, но охуел на первых темах с командной строкой и прочим


Как человек, который перекатился в фултайм го с другого языка - я в первые дни изучения вообще чуть ли не ПТСД словил от GOPATH и подобной дичи. Забей, после этапа фрустрации придет понимание, что это говно и правда говно, но жить с ним можно. Вообще, советую настроиться на то, что мириться придется с очень большим кол-вом вещей в языке, это часть go-way, так сказать. Потом возможно даже будешь с пеной у рта доказывать, что дженерики и правда не нужны, ведь есть генераторы и руки.
192 1892359
>>892357
ой, ну учитывая, что я только базово знаю swift, мне до таких тем как до Китая
193 1892369
>>892351
На маке с командной строкой всё очень хорошо.

>>892357

>это говно и правда говно, но жить с ним можно


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

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

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

>>892334
Это не ты пару дней назад засрал хуйнёй про Vue весь жс тред?
Твоя жизнь настолько ничтожна, что ты вынужден симулировать самоутверждение на бордах? Так иди в /b - там все твои друзья.
194 1892384
>>892369

> Говно - это когда "особенные" решения не мотивированы.


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

> А что годится? Питон, Си, Джава.


Опять не согласен. Давай по порядку.

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

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

А вот насчет Джавы - да, если не сломаешь себе ноги пока дойдешь до первого фреймворка - отличный и очень жирный язык, который научит страданиям строгости, ООП, и выйдешь после него блаженным просветленным умом (номер палаты может красивый выдадут. Шутка).
195 1892424
>>892351
Можем вкатываться вместе
Правда для меня го не первый язык
196 1892439
>>892424
звучит неплохо, сенсей, но..
объективно, я не хочу быть якорем и тормозить чей-то прогресс
197 1892491
>>892424
Кидай тележку, мой тоже не первый и уже в процессе переката
image.png16 Кб, 215x234
198 1892504
>>892439
Да давай, организуем пункт сопротивления гей-пати вкатунов с двача
199 1892650
>>892504
ну ладно, давай
image.png641 Кб, 500x747
200 1892659
>>892650
>>892424
>>892439

Лан, я сам тогда телегу скину: @mrsetk
201 1892718
>>892659
Пофиксил телегу, теперь можете найти*
202 1892719
>>892384
Питон более вменяем, все же. Чего там в питоне нет, приватных методов? А нахуй они нужны? Единственное предназначение - жестко контролировать корпоративных макак.

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

Адепты ООП заебали читать свои мантры.
Нахуй оно не всралось, из всего ООП по-настоящему нужен только полиморфизм, который можно получить и другими способами(интерфейсы, трейты, тайпклассы)
203 1892732
>>892719
С го питон нахуй не нужон
204 1892734
>>892369

>Эксепшны - серьёзный мину по производительности, например.


Не такая серьёзная. А если учесть затраты на то, чтобы обойти отсутствие эксепшенов, то вся производительность улетучивается.

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

Можно писать, в Си тоже нет исключений. Но только у Go есть явный акцент на системные вещи, на сети, файлы и т.п., где ошибки штатная вещь и актуальность их обработки очень велика.
205 1892755
>>892734
Ошибку возвращать гораздо правильнее и проще для обработки, чем иметь ожидать что любой метод может взорваться и кинуть эксепшон. Эта хуйня по сути ломает и типизацию, и control flow
206 1893642
>>892734

> Вот и остаётся, что узкая область low level задач


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


> современный прикладной язык без эксепшенов это какой-то нонсенс


> у Go есть явный акцент на системные вещи, на сети, файлы


Что за чушь я прочитал?
207 1893645
>>893642
У автора просто undefined behaviour головного мозга.
208 1893656
>>892755

> проще


Легко:
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(
209 1893686
>>893656
Чувак, error - это _значение_.
Слово "монада" ты слышал когда-нибудь?
210 1893696
>>893686

> error - это _значение_


Хуёво, что тут сказать.

> монада


Слышал, это в тех языках, где даже логгер для дебага нельзя вызвать посреди функции, ибо ряя побочный эффект, и в результате все функции пишутся с IO-монадами и превращается в процедурщину.
211 1893702
>>893696
Уровень познаний впечатляет: "слышал звон да не знаешь где он"
212 1893706
>>893702
А вот передёргивать не надо, мань.
213 1893711
>>893696
Я написал про монады, а подумал, что, скорее всего, в го фп-паттерны будут не очень удобно использовать.
214 1893712
>>893711
а потом подумал

быстрофикс
215 1893732
>>893706
Монады - крайне гибкая абстракция, позволяющая программировать поток управления, а не "IO процедурщина кокококостыль"
>>893711
Нормально они в го используются. Единсивенное, что, в отличие от других языков, все монады остаются в кресле
216 1893799
>>893711

>не очень удобно использовать


Всё включая функции валойобное, а больше ничего и не надо
Правда лезть дальше "написанных в стиле фп" траверсов с композами смысла не вижу
image.png532 Кб, 768x500
217 1893808
>>893732

>Нормально они в го используются.


Постой, ты говоришь в го нормально монады используются? Это где и как они используются.
218 1893809
219 1893820
>>893808
Да вон >>893656 сам погляди, это же типичная монада Either/Error ( https://hackage.haskell.org/package/base-4.14.1.0/docs/src/Data.Either.html#line-155 ), просто без пидорских абстракций
image.png8 Кб, 223x65
220 1893953
>>876438 (OP)
>>892659
>>876438 (OP)

Создали микроконфу двачеров старая мертва, вкатуны, перекатуны, и им сочувствующие - добро пожаловать, снова: https://t.me/golang2chgayparty
image.png23 Кб, 717x435
221 1893983
Почему этот код не работает? Почему первая горутина даже не вызывается? Ведь GOMAXPROCS(1) лишь ограничивает приложение одним ядром процессора, горутин же может быть много на одном ядре, нет? А если реально только одна горутина может быть на одном ядре (чегобля?), то почему вечный цикл не блокирует главную горутину и не выполняет вторую? Объясните дауну, плиз.

func main() {
runtime.GOMAXPROCS(1)

done := false

go func() {
done = true
}()

for !done {
}
fmt.Println("finished")
}
222 1893988
>>893983
Добавлю, что если вместо цикла с !done проставлю time.Sleep - работает всё как я и ожидаю, ибо слип блокирует выполнение главной горутины. Какого хуя цикл не блокирует то блять маму ебал того роба пайка в анус (вроде же цикл без условия как раз блочит, нет?).

Моя догадка: таки цикл с условием нихуя не блокирует. Но даже если так, какого хуя горутина КОНКУРЕНТНО на одном ядре не выполняется, они же должны хоть тыщами штук летать в однопоточном режиме, грубо говоря.
223 1894022
>>893988

Планировщик, который переключает рутины, делает это не абы когда, а в ключевых точках. Одной из таких точек является вызов функции и возврат из нее, как в случае с тацм.слип
Цикл - не такая точка. Поэтому планировщик просто никогда не проснется чтобы переключить рутины.
Одним из ответов на вопрос является добавление в цикл вызова планировщика принудительно
224 1894028
>>894022
А почему горутина не выполняется КОНКУРЕНТНО? По логике результат кода не должен отличаться от GOMAXPROCS(2)
image.png20 Кб, 409x453
225 1894061
>>894028
Вот, например если так написать, то обе горутины выполняются одновременно: https://play.golang.org/p/k4ApVZeZ9UJ

Так почему тогда код выше вытворяет такую хуйню? Помогите аноны, уже мозг болит.
226 1894096
>>894061
чувак, иди проспись и начни новый день с разбора работы планировщика. сразу вс понятно станет
227 1894100
>>894096

> начни новый день с разбора работы планировщика.


Так ты объясни лучше, я в общих чертах знаю как он работает и про точки тоже знаю. Но я бы все понял, если бы код работал одинаково с GOMAXPROCS(1) и GOMAXPROCS(>1), но при одном ядре горутина тупо никогда не вызывается, хотя по идее должна. Объясни этот момент.
228 1894102
>>894100

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


Почему тогда он просыпается, когда доступно больше одного ядра?
229 1894103
>>894100
Да с хуяли ей вызываться, если планировщик никогда не запускается? Кто её вызовет? Такое уже всё объяснили
230 1894104
>>893983
Вопрос устарел с выходом 1.14 https://golang.org/doc/go1.14#runtime

>>894028

>По логике результат кода не должен отличаться от GOMAXPROCS(2)


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

С первой ссылки нашёл одну из тех более-менее содержательных презинтаций, случайно тыкнув - попал ровно на такой же пример со старой версии. это судьба
https://youtu.be/4U3EaVufuW4?t=792 ~13:14
231 1894105
>>894102
Потому что использование слова go тоже триггерная точка для него. Но в случае с одним ядром он решает, что основная рутина важнее
232 1894118
>>894104

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


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

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


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

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

>>894105

> Но в случае с одним ядром он решает, что основная рутина важнее


Это ведь пиздец, нет?
233 1894125
>>894061
Во первый они выполнятся не одновременно, а последовательно, если что. Вторая горутина отрабатывает следом за первой, если бы они выполнялись одновременно, то могли бы быть ситуации когда "second done" выведется раньше чем "first done".

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

В третьих это работает так, на го 1.13 и раньше, в 1.14 сделали вытесняющую многопоточность, и если ты запустить не в go playground, а на своем локальном компе с go 1.14+ все отработает даже с runtime.GOMAXPROCS(1)
image.png4 Кб, 387x54
234 1894129
>>894125

> Во первый они выполнятся не одновременно


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

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



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

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



Так в плейграунде ведь go1.14.13
235 1894134
>>894118
ой бля, вкладку нужно почаще обновлять, но ты похоже не обучаемый, всмысле блять по другому, когда у тебя два ядра, они выполняются параллельно, не конкурентно, а именно параллельно, там ничего и не переключается, они на разных ядрах находятся
Снимок экрана 2020-12-29 в 00.36.06.png41 Кб, 978x272
236 1894136
Вот 1.14.5
237 1894141
>>894118

>Т.е. в голэнге переключение горутин с одним ядром - работает иначе, чем с несколькими? Т.е. если одно ядро - то переключается только на точках, а если два ядра - то можно и не только на точках переключиться, а и с циклом? В чем логика?


Ты ни одного артикуля не прочитал?
Рантайм раздупляет по процессу на каждое ядро P, кажое из которых условно пакуется в более абстрактный тред M. Между М могут перекидываться горутины
Если у тебя один "процесс-ядро" - будет один М, которому распределять горутины некуда

>Я тестирую это на 1.14


Ну хуй знает я посмотрел гоплейграунд и вправду дедлочится хотя рантайм версия пишет 15.6
На моей машине 15.3 всё работает, может онлайн штуки запускают в режиме интерпритатора - хз

Тайм слип это другое, как минимум потому что нижний слип у тебя ожидающий канал
238 1894147
>>894129

>конкурентно они выполняются


Да, видимо, не знаешь. Они выполняются не конкурентно, а последовательно, конкурентно они буду выполняться, когда там будут системные вызовы, а планировщик будет переключать горутины.
image.png10 Кб, 570x78
239 1894148
>>894136
Короче переключился на линь, ибо впизду, тоже версия младше плейграундовской корректно и ожидаемо выполнила. Короче понятно. Плейграунд как всегда всех обыграл, ебаный роб пайк и команда, сука.

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

>>894141
Да я знаю как должно работать, я знаю и читал как шелдуер назначает горутины и т.д. (мб не досконально, но достаточно, чтобы ахуеть с того, что происходило в плейграунде). То, что выдает на локальной машине - для меня ожидаемо и понятно. Какого хуя это все ведет себя так в плейграунде - для меня теперь большой вопрос.
240 1894150
>>894147

> Да, видимо, не знаешь.


Они запускаются последовательно, но выполняются они конкурентно.
241 1894156
>>894150
сука, как они могут выполняться конкурентно, если контекст не переключается?

> 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


Тут же все выполняется по порядку
242 1894160
>>894156
Как они могут выполняться последовательно, если слип в обеих отсчитывается одновременно? Ты можешь подробнее свои мысли изъяснять, а не просто аксиомы короткие высирать?
243 1894163
>>894160
нет не могу. Про слип совсем забыл, тогда действительно конкурентно
244 1894164
>>894163

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


Ты рофлишь? Че вы такие чсв пидоры, я же логичные вопросы задаю.
245 1894379
>>893656
В общем случае надо не просто кидать ошибку вверх, а разбирать и обрабатывать в зависимости от её типа. Тогда получится ненамного короче.

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

Где ? значит то самое if err != nil return err
246 1894397
>>894156

>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


Самое бесполезное определение в истории
247 1894398
>>893656

>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;
}

Пофиксил, не благодари
248 1894993
ну что вы, гоферы? есть майндмапа по вкату в вашу парашу в 2к21?
249 1895008
>>894993

> в вашу парашу в 2к21


Пока только для 2020 года есть. Проходи, присаживайся под шконкой у нашей параши, будем вместе дженерики ждать.
250 1895018
>>894993
Вкатывайся в C#, с появлением кора Go больше не нужен.
Стикер319 Кб, 512x512
251 1895034
>>895018

>Go больше не нужен

252 1895078
>>895018
На арене цирка - шарпоблядь с рекламой нишевого проприетарного языка.
253 1895082
>>895078

> нишевого


> проприетарного


Как там в 2010?
254 1895132
>>895082
Шарп сосат
255 1895134
>>895018

> с появлением кора Go больше не нужен.


Но у шарпистов даже зеленых тредов нет, о чем вообще речь? Сейчас бы сидеть руками хуярить многопоточность и следить, чтобы твоя зависшая хуйня не крашнулась из-за утечек памяти, пытаться менеджить л кэши проца и просто анально ебать себе анус, когда мог бы просто написать ключевое слово 'go' и жить не тужить
256 1895138
>>895018

> Вкатывайся в C#


Когда из него все потихоньку выкатываются? Даже по достаточно демократическому tiobe - шарп сосет с проглотом и теряет в популярности

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

А гошка вообще другие задачи решает
257 1895353
>>895018
Шарписты похожи на сектантов со своим кором. Кстати, ну что, сынку, помог тебе твой .NET5?
258 1895681
>>893820

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

https://dpaste.com/88YBCXS6Z
260 1895907
>>876438 (OP)
Объясните, зачем нужны всякие green threads, goroutines и т.п, если есть обычные ядерные треды? Экономия на спичках переходах в kernel mode?
261 1895921
>>895907
Экономия на памяти. Это нихуя не экономия на спичках, обычный тред у тебя отжирает по мегабайту памяти, когда гринтред всего пару килобайт, и если за количеством созданнвх нативнвх тредов надо следить, но гринтреды хоть тоннами создавай.
262 1895922
>>895907
И сука, в каждом уголке интернета, где всплывает подобный вопрос, звучит дибильный аргумент про размер стека. Какая вообще, блять, разница, сколько у тебя выделено под стек, если везде on-demand paging, а 2^64 байт адресного пространства - это, мягко говоря, неисчерпаемое количество.
263 1895923
>>895681
Предыдущий пост не читал, да? Слишком тонко оказалось для гофера?
264 1895924
>>895921
Тред отжирает столько, сколько реально использует (с точностью до размера страницы)
265 1895943
>>895907
Думаю, дело больше в сложности и медленности управления полноценными тредами, по сравнению с.
266 1895947
>>895922

> 2^64 байт


У тебя 16 миллионов терабайт ОЗУ? Молодец, но ты такой один.

На жабе достаточно создать 1000 тредов, чтобы свалилось с OutOfMemory на какой-нибудь персональной ЭВМ.
267 1895949
>>895947
"Виртуальная память", слышал такие слова?
268 1895950
>>895947
Причем тут вообще жаба?
269 1895954
>>895947
Я не сталкивался с пердолингом тредов, но ты по-моему несёшь какую-то хуйню
270 1895959
>>895907

Хорошо накинул, братишь, от души
271 1895960
>>895907
Горутины это абстракция над ядерными тредами.

Горутин можно дохуя наспавнить и не потерять в производительности - за количеством ядерных тредов по которым распределяются горутины следит рантайм. Ядерные треды кушают немного больше памяти и значительно тяжелее переключаются
272 1895964
>>895960
Тяжелее переключаются - верю. Почему они должны кушать больше памяти?
273 1895967
>>895949

> Виртуальная память


Те же 16 миллионов терабайт, наверное, на любой жёсткий диск влезут. И работать будут, наверное, со скоростью ОЗУ.

>>895950
Это пример, где "обычные" треды, на которые так дрочит тот анон.
274 1895969
>>895967
Зачем свопить на жесткий диск страницы, которые не использовались?
275 1895971
>>895969
А зачем тогда треды нцжны? Не нужны.
276 1895972
>>895971
Какая тут связь?
277 1895979
>>895972
Нет связи никакой. Я и говорю.
278 1895982
>>895964
Если интуитивно - то о большем количестве вещей может позаботится гошный рантайм.

Горутины 2кб минимально занимают, треды, емнип, 16кб.
1мб это наебка.
279 1895990
>>895979

>Те же 16 миллионов терабайт, наверное, на любой жёсткий диск влезут. И работать будут, наверное, со скоростью ОЗУ.


Нахера на жестком диске место под страницы, которых в памяти никогда не было? (и не будет)
280 1896005
>>895982
Но ведь чтобы рантайму "заботиться" об этих вещах тоже нужна память, нет?
281 1896060
>>896005
Но он память может эффективно шарить, тредам c этим сложнее. Алсо, вроде стэки тредов не могут потом обратно выделенную память отдать.
Жаль что я устройство линукса понимаю очень смутно.

Неплохой вопрос чтобы унижать вкатывальщиков на собесах, если подумать.
282 1896091
>>895907
>>895943
>>895924

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

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

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

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

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

>жирный оптимизированный планировщик, который следит за всеми деталями и производительностью


Маркетинговый буллшит

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


Вот я и интересуюсь, если это правда, то откуда это берётся.

>огромная скорость создания и уничтожения горутины


Маркетинговый буллшит Так ли долго создаются системные треды? И опять же, если это всё так, то за счёт чего это достигается? Почему глупые разрабы ядра не смогли это всё сделать в ядре?
284 1896163
>>896091
И вопрос был не Го-специфичный, просто у Го это главная строчка в рекламе.
285 1896167
>>896060

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


Ну и ладно, всё равно вакансий нет)
286 1896172
>>896157

> Маркетинговый буллшит


Нет. Шелдуер опен сорсный, как и весь гоу - пиздуй читай, просвящайся.

> Вот я и интересуюсь, если это правда, то откуда это берётся.


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

> Так ли долго создаются системные треды?


Проблема не в создании, проблема в том, что памяти они отжирают дохуя при создании. Я даже хз понимаешь ли ты хоть половину от того, что я пишу, но попробую пояснить. Есть по сути 2 вида операций - CPU-bound (т.е. вычисление, io и в таком роде), а есть нетворк баунд (ну и не только). Если ты сделаешь 5 параллельных запросов в сеть на реальных потоках в сеть - то скорее всего будет оверхед на контекст свитчи, выделение памяти (но тут есть исключения, например в некоторых процессорах есть отдельный network для таких операций, голэнг кстати умеет горутины туда кидать тоже) и т.д., а ведь это простейшие операции. Если ты их КОНКУРЕНТНО на грин тредах распределишь - то ты выпустишь эти 5 грин тредов, и сможешь забить на них хуй и занять процессор более полезной работой, пока ждешь пересылки битиков по проводу и ответа с той стороны.
287 1896205
>>896167
Дохуя же, всего в два раза меньше, чем на Питоне дс2
288 1896705
>>896205
Надо отфильтровать гоу-гоу танцовщиц
289 1896755
>>896172

>Есть по сути 2 вида операций - CPU-bound (т.е. вычисление, io и в таком роде), а есть нетворк баунд (ну и не только)


Network - это и есть IO.

Всё, что ты пишешь, на уровне ядра работает так же. Ядро не оставляет на процессоре поток, который заблокировался в IO syscall'е.
290 1896761
>>896755
>>896172

И остается только оверхед на контекст свитчи, при том, что контекст свитчи в юзерспейс-шедулере никто не отменял, хоть они и дешевле.
291 1896768
>>896761

>хоть они и дешевле


В этом то и вся соль. Они блять на много дешевле, ебаный свич между потоками ОС стоит 12 тысяч инструкций, в то время как планировщик Го, переключает горутины за 2 тысячи инструкций используя один поток, который всегда занят и не простаивает на свитчах.
292 1896827
А где почитать про все эти потоки, выделение памяти, шедулеры, сисколы, контексты?
293 1896829
>>896705
Не, я пролистал, там все вакансии именно го разрабов
294 1896831
>>896827
В университете на Computer Science, или в гугле
295 1896838
>>896827
Эх, ленивые нынче люди пошли, или просто не очень сообразительные?
1) https://habr.com/ru/post/478168/
2) https://habr.com/ru/post/489862/
3) https://habr.com/ru/post/502506/
Читать именно в таком порядке. Перевод - говно полное, но для общего понимания сойдет, можешь поискать на eng. Плюс гугли понятия в вики.
296 1896840
>>896755

> Network - это и есть IO.


Да, промазал тут немного

> Всё, что ты пишешь, на уровне ядра работает так же


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

Гринтреды - это по сути просто слой абстракции над натив тредами и их оптимизация конкретно под язык.
297 1896844
>>896838

> Эх, ленивые нынче люди пошли


Если что - те 3 статьи немного устарели. Одно из главных изменений после 14й гошки - планировщик больше не кооперативный, если раньше шелдуер "влезал" в процесс на определенных сейф поинтах - ключевое слово go, блокировки всякие, цикл гц, сисколлы, то в новой версии он уже влезает с определенной переодичностью и шустрее. Раньше были проблемы с узкими циклами (долгие или даже бесконечные циклы, в которых не было возможности встроиться шелдуеру), то теперь это все работает адекватно и думать о такой хуйне больше не нужно.
298 1896850
>>896844
Вот тут подробнее про новую реализацию:
- https://medium.com/a-journey-with-go/go-asynchronous-preemption-b5194227371c
- А тут оригинальный док по предложению с изменением: https://github.com/golang/proposal/blob/master/design/24543-non-cooperative-preemption.md
299 1896854
>>896844
В том то и дело, что я указал в каком порядке читать. Сначала ОС, потом го<1.14 и в конце объяснят, как именно поменялся планировщик в го 1.14. По поводу планировщика, сам вроде разобрался, но не тестил. Как по мне, програмст сам должен решать, нужно планировщику переключать свитч, или не нужно.
300 1896860
>>896854
А, точно. Я просто увидел 3 статьи, ткнул на одну - увидел там перевод той 3х томной статьи по старому шелдуеру и подумал, что это просто те 3 статьи. Тогда ок
301 1896865
>>896854

> Как по мне, програмст сам должен решать, нужно планировщику переключать свитч, или не нужно.


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

>Как по мне, програмст сам должен решать, нужно планировщику переключать свитч, или не нужно


Пиннакол пр клоунады
303 1896915
>>896894

> Пиннакол пр клоунады


Это, блять, что вообще такое, нахуй? Объяснись, животное!
304 1897670
Оказывается у плейграунда чуть ли не своя спецификация
Дедлок NN постов назад происходит из-за фейковремени
305 1897698
>>897670
Ебал Роба Пайка в рот, паскуду такую. Сколько анальной боли этот ебаный плейграунд принес, ну его нахуй
306 1897775
>>897698
Нахуй его вообще использовать? Там даже подсветку не завезли как в условном яндекс коде хотя бы
307 1897782
>>897775
Подсветку не завезли намеренно, как дженерики.
image.png55 Кб, 1130x930
308 1897821
>>897698
Покажи хоть одно онлайн сдк, где можно крутануть сервер\фс импортнув проект по ссылке на гитхаб
>>897775

>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 включая фронт
309 1897824
>>897782
Пайк же сам признавался, что отсутствие дженериков в Го - это уход от проблемы.
310 1897829
>>897824
Уход от проблемы, которую женерики не решают.
311 1897880
>>897821

> Кода выйдет от силы на строчек 50 включая фронт


Главное в интернет не выводить, иначе пизда твоему хосту, нужно в виртуальном окружении все поднять
312 1898109
>>897821

> онлайн сдк, где можно крутануть сервер


Но в плейграунде нельзя этого сделать, лол.
313 1898133
Аноны, а вы как-то настраивали цветовую схему редактора?
В vscode гошка как-то хуево подсвечивается, слишком монотонный текст.
Я не мог понять, что с ней не так, почему тяжело бегло читать, а потом понял, что слишком мало конструкций акцентируется и/или акцентируется неудачно. Начал перебирать темы, где-то акценты правильные, но цвета вырвиглазные, где-то наоборот. Остановился на Monokai Dimmed. Но все равно, хрень какая-то. Раньше в редакторах с темами ситуация как-будто получше была.

Я хз, это проблема вс-кода (до этого на саблайме сидел) или проблема схем для го. Короче, может я не один такой и че посоветуете?
314 1898199
>>898133
Покажи скрин, мб у тебя там рил залупа. Мне вполне зашла стандартная подсветка.
316 1898577
>>897829
Дженерики не решают проблему zero runtime cost-полиморфизма?
317 1898578
>>898577
>>897829
(без копипасты, естественно)
318 1898602
>>876438 (OP)
Что скажете насчёт этого сайта? https://go101.org/article/101.html
Норм?
319 1898646
>>898415
А, так это очевидно. Я думал ты имел в виду открыть порт во вне и работать не из той же программы.
320 1898713
>>898133
Бля, вот лол 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/, только зафоршеное корпорацией.
321 1898769
>>898713
У тебя жопа просто горит, что на этом "поделии" джуны 170к получают, вот ты и бесишься.
322 1898795
>>898769

>джуны 170к получают


Прохладная история.
(я не он и к Го отношусь нормально)
323 1898797
>>898795
Поч? Просто в го джун - это мидл с другого языка
324 1898803
>>898797
Типа Го - настолько требовательный язык, что с него невозможно начать?
325 1898805
326 1898806
>>898803
Типа на весь рашкованский рынок существует всего пара-тройка компаний, которые вляпались в го и теперь они готовы брать без знания, но не полных джунов.
327 1898832
>>898803
Нет, просто голэнг в основном используется на жирных проектах с кучей технологий и микросервисами, где джуну будет по сути невозможно ничего сделать, если он не будет иметь хотя-бы базовое представление о всем этом. Поэтому в гошку проще из других более общенаправленных языков перекатиться, когда ты уже знаешь много всего помимо самого языка.

>>898806
Да дохуя их, на том же хх вакансий гопетухов всего в два раза меньше питхона, а это дохуя для низкоуровнего языка, который по факту и юзается только под определенные задачи.
328 1898833
>>898769
Ага, держи в курсе. Открой хх и узри тонны говнарей из вб, с годом опыта на го, которые хотят зп 60-80к
329 1898834
>>898833
А зачем считать говнарей, которых никуда не возьмут? Речь о новичке, который способен получить работу не на ИП Рога и копыта с пхп.
330 1898835
>>898833

> Ага, держи в курсе. Открой хх и узри тонны говнарей из вб, с годом опыта на [подставь абсолютно любой язык/технологию], которые хотят зп 60-80к



Нихуя не изменится. Говнари на то и говнари, что их везде дохуя.
331 1898841
>>898835
То что ты не говнарь тебе твоя мамка сказала?
332 1898845
>>898832

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


Учитывая, что джунов без базового представления обо всем этом сейчас ни на один язык не берут, аргумент так себе.
333 1898847
Само по себе рассуждение о хороших местах - звоночек об отсутстви харизмы в деле
image.png108 Кб, 276x183
334 1898848
Забавно наблюдать на хейт Го. Причем хейт какой-то озлобленный, непонятно откуда исходящий. Ну не нравится язык - ну окей, зачем в треде срать то? По гошке одни из самых высоких зп, и этого достаточно. Язык не настолько всрат как какой-нибудь раст и опыт работы с ним пригодится даже если завтра он полностью рухнет и все бинарники превратятся в пыль - достаточно будет просто изучить новый язык, стек останется тем-же. Нахуя вы вообще так все циклируетесь на языках? У меня за плечами говнопехапе, затем джава, а сейчас вот гошка, и спокойно прыгал и менял даже целые стэки без особых колебаний по доходу. То, что кто-то так озлоблен просто на сам факт существования чего-то что ему не нравится - глуп и несчастен внутри, вы ничем не отличаетесь от "хохлов", "урапотреотов" и любого другого слепого быдла. Я все сказал, всех чмокаю в лобик :*

Кстати, оголтелые фанаты ГОвна - точно такое же деграднутое быдло как и вы, возводят в культ язык, пытаясь оправдать очевидные минусы и с трудом поддающиеся критике. Ждем дженериков и не пищим, пидорасы.
335 1898893
>>898834
Ну так новичок не получит работу за 170к, думаю максимум за 140. А вот мидлы из других языков скорее будут устраиваться на мидла
336 1898937
>>898848

>Язык не настолько всрат как какой-нибудь раст


Чем он всрат, мне например как питонисту раст кажется очень лаконичным языком, го же дает меньше сахара и фич.
337 1898963
>>898937

> как питонисту раст кажется очень лаконичным


Это троллинг?
338 1898970
>>898963
Нет, нотации типо почти 1 в 1 как в питоне, ООП такое же урезанное как в го, async/await как в питоне. В расте только есть ебля из ручного управления памятью, ну и неявный return считается заебись, а в остальном нареканий нет.
339 1898971
>>898970

>нотации типо


типов*
340 1898976
>>898970
>>898971
Мне кажется ты только первую страничку какого-то онлайн гайда прошел. Пишу на расте год и это многократно более сложный язык не то, что чем питон (это вообще смехотворное сравнение с твоей стороны), но и куда сложнее говна.
341 1898980
>>898976
Так мы говорим не сложности, а о всратости языка. Причем тут сложность вообще?
342 1898990
>>898963
Показал бы код, где раст выглядит хуже каких-нибудь крестов
мимокрок
343 1899000
>>898980
>>898990
Так речь о читаемости или просто как выглядит? Я пробовал гошку немного и на нем я в разы быстрее напишу тот же код, что и на расте ток на расте, если не проебусь - будет сильно быстрее в большинстве случаев, раст очень вербозный, сахара я там не заметил чтобы прям много, я бы назвал срвнение раста с го и сравнение джавы с питоном - примерно одного разряда по контрасту языков. Но я не спец в го, ток пару сервисов на коленке писал, но вроде на нем большие проекты и не пишут я бы себе мозги вынес, если бы пришлось на расте писать то, что пишут на питхонах
344 1899009
>>899000
Под всратостью я подразумеваю решения на уровне синтаксиса, я сам не эксперт в го, думаю выбрать его как альтернативу для написания бэкендов. Просто сейчас смотрю что в го нет таких простых вещей как объявление обычного энума или функциональных выражений для тех же коллекций. Мне это кажется очень странным для современного языка.
345 1899024
>>899009

> Мне это кажется очень странным для современного языка.


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

Мимо 2 года пилю микросервисы с миллиардами рпс в микро секунду на голэнге и иногда вляпываюсь в немножечко питона
346 1899027
>>899024
А могут просто взять и ничего не вводить, потому что могут.
347 1899045
>>899027
Ну тогда будем терпеть, как владыка велел. Нинужна - значит нинужна ))))))
349 1899170
>>899161
Лучше так, чем по полгигабайта node_modules в каждом проекте.

мимо хейтер
350 1899174
>>899161
А как должно быть ?
351 1899177
>>899174

> Go 95 kB

352 1899185
>>899177
Ну хуйни third-party не качай тогда
353 1899240
>>899174
Никак, но все равно дохуя, я даж немного прихуел когда увидел. Причем 40% там из старых версий
354 1899307
>>894397
Нормальное определение. Ты, вероятно, ни разу учебника по гуманитарной науке не открывал.
355 1899491
>>876438 (OP)
Считается ли в Го нормальным использовать горутины с каналами в однопоточном коде - в качестве генераторов?
356 1899516
357 1899623
>>899491

> в качестве генераторов?


Например? Ты про аналог yield? Чисто алгоритмически - да, будет работать. Главное не забудь сделать механизм высвобождения горутины, закрыв канал/nil, иначе память утечет. Но лучше реализуй через замыкания и анонимку, ибо плодить горутину и обеспечить её уничтожение - лишняя забота и код.
358 1899800
Призываю байтоебов, кто нибудь может объяснить, когда стоит передавать/возвращать из функции указатель, а когда просто структуру. Речь не про очевидные вещи, а именно про байтоебство. Например что лучше:
someFunc() (SomeStruct, error)
или
someFunc() (*SomeStruct, error)
image.png1,8 Мб, 1200x1200
359 1899862
>>899800

> когда стоит передавать/возвращать из функции указатель, а когда просто структуру.


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

> Например что лучше


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

Короче если проще - зависит от твоей цели, если нужно именно скопировать - передаешь так, если нужно оставить одну "копию" и просто вернуть из функции ссылку на неё - возвращаешь ссылку. Тут нет "правильного", зависит от того че ты хочешь.
360 1899880
>>899800
Очевидно всегда пассуй по значению
361 1899904
>>899800
Ну смотри, адрес = 8 байтов. Структура = Х байтов. Следовательно, если Х > 8 то возвращай адрес, в противоположно случае структуру. Размер структуры = сумма в байтах всех полей.
362 1899919
Вот у меня вопрос, правильно ли я делаю что, возвращаю не ошибку, а просто работаю с panic/recover.
Вот код, если произойдет ошибка, то defer сработает и разлочит мьютекс. Но сам вызов анлока мютекса в defer меня напрягает, как будто что-то неправильно и следует просто сделать через return err.
https://play.golang.org/p/urb25xa5UE1
363 1899920
>>899623
Поясни про уничтожение горутины, пожалуйста. Так норм:
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)
}
}
365 1899924
>>899862
Спасибо за подробный ответ, но я немного про другое скорее спрашивал. Я про то, что если возвращать ссылку, то переменная гарантировано будет в хипе, что не очень то и быстро, а вот если возвращать саму структуру, то может и на стеке выделяться. Так вот есть например функция маппер, которая принимает одну структуру, а вовзращает другую, то есть если вернуть не ссылку, то у тебя будет две этих новый структуры. Кажется, в чем проблема, возвращай всегда ссылку да и все, НО вот что меня смущает:
- хз, что быстрее, два раза выделить память внутри стека горутины, или один раз в хипе
- гонял бенч, и вроде как получилось что возврщать ссылку быстрее, уже не помню результаты, но время работы gc тоже замерял
- один голанг-архитектор, говорил что лучше возвращать структуру по значению, если она не сильно вложена и нет каких то тяжелых ресурсов, которые нельзя копировать

Вот поэтому мне интересно, не долбоеб ли я, что всегда по ссылке возвращаю. Ну и да, пассую я тоже часто по ссылке, проблема в том что значение может мутироваться?
366 1899925
>>899919
Вызов анлока в defer - это совершенно идиоматично. В других языках такие вещи обычно пишут в finally или деструкторе/ScopeGuard'e
367 1899928
>>899904
Это да, тут скорее вопрос не быстрее выделить ли на стеке эти X байтов, чем гарантировано в хипе
368 1899932
>>899919
>>899925
Я тут немного побайтоебю, defer имеет задержу перед вызовом, совершенно мизерную конечно, но лучше вызывать явно, если есть возможность. В данной функции ничего плохого не произойдет, но копипаста такого мьютекса может привести к тому, что сам мьютекс используется не эффективно, разлочивается не сразу когда появилась такая возможность. Желательно чтобы блокировка мьюткса была максимально короткой
369 1899934
>>899919
А, ну и да, лучше не использовать panic, особенно для такого кейса, это просто ошибка
370 1899935
>>899919
Обычная же обработка логики, выкидывать тут паники будет какой-то совсем хуйнёй
371 1899942
>>899932
Я со своей стороны посоветую defer в качестве дефолтного решения, потому что потому что это тупо проще и надежнее, если функция имеет несколько точек возврата.
372 1899945
>>899921
я другой анон, и хз что он имел ввиду, но вот

> 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.

373 1899946
>>899934
>>899935
В целом согласен, сделал через panic так как решил поэкспериментировать с recover. Вроде бы это даже удобнее чем возвращать ошибку.
https://play.golang.org/p/tnD9Hki3IBR
374 1899956
>>899946
Ерроры можно закомпозить, получится практический такой же код
Если UserServer это отдельный доменный микросервис, то творение такой хуйни особо не страшно, но и смысла особого не вижу
375 1899991
>>899924

> Вот поэтому мне интересно, не долбоеб ли я, что всегда по ссылке возвращаю.


По сути похуй. Пока структура небольшая - это сравнение мочи с говном, как говорится. Твой архитектор правильно говорил.
376 1900003
>>899924

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


Пахнет говнокодом если чессно
377 1900144
>>899945
Я имел в виду, что чтобы не забросить горутину навсегда - нужна доп логика по разблокировке, тот же селект

>>899921
Ты не понял. Если никто не будет читать из канала - твоя горутина тупо вечно будет ждать. Почитай про селект и паттерны гошные
378 1900457
>>900144
Ты про отмену говоришь, понял.
379 1901021
>>900457
Как угодно можно назвать, еще есть context, тоже ознакомься, в стандартном серваке го и большинстве библиотек он находится в реквесте, соответственно можно его учитывать и обрывать долгие и затратные операции, если на том конце юзер оборвал соединение и в таком роде. В мелких проектах на это все похуй, и даже похуй на горутины, которые в воздухе навечно заблочились, но когда твой сервис обрабатывает большое кол-во запросов (не только сетевых, это может быть и твоя библиотека тупо) - то через неделю ахуеть от полуживого ПО будет очень неприятно. GC их не во всех вариантах сможет определить и уничтожить самостоятельно.
380 1901274
Аноны, насколько быстро можно вкатиться в Go после Python? Хочу какой-нибудь компилируемый язык освоить.
381 1901290
>>901274

> Аноны, насколько быстро можно вкатиться в Go после Python?


Месяца за 2, если задротить. Синтаксис простой, но много мелочей с типами, конкуренси, обособленными патернами, стдлибом. Но зависит от тебя, если ты на питоне crud для веб сайтиков писал - будет сложнее, а если что-то дельное делал с различными технологиями - другой вопрос.
382 1901527
>>901021
Спасибо, читанул.
383 1901665
Поясните для стремящихся какими инструментами можно сгенерить нормальный обработчик http запросов (без разницы какой фреймворк, даже для стандартного http модуля) из документации swagger. Я хочу, чтобы из swagger'а мне сгенерился интерфейс и прочий серверный бойлерплейт (типо валидации тела запроса, параметров и все такое) и несколько интерфейсов, например:

>type Service interface {


>func AddSomething(request Request) (Response, error)


> ...


> }



Все, что я видел, насколько я понимаю, парсит только тело запроса и аргументы в лучшем случае, а вот с ответом - пошел на хуй, как говорится, какой-то generic response со строкой вместо нормальной структуры ответа.
7413223477c200.jpg25 Кб, 344x550
384 1902386
Приветствую, товарищи двачеры!
В айти вошёл давненько, но есть желание пересесть поближе к разработке. В связи с этим вопросы: стоит ли влезать в го, чтобы потом претендовать на джуна?
Так ли велИк запрос на гошников сейчас?
Во многих вакансиях обязательное требование от года разработки на Java/Python/PHP/C#. Это реально нужно?
385 1902398
>>902386
Что такое реально нужно? Открой hh и посмотри сколько там вообще джун вакансий. Не буду утверждать, что на ГОвне не нужны джуны, потому что есть вероятность, что могут и на мидл позицию взять джуна, но сильно сомневаюсь что это будет не студент топ вуза
386 1902403
>>876438 (OP)
Скиньте оригинал второго комикса из оп поста.
387 1902409
>>902398

>Что такое реально нужно?


Можно ли вкатиться в го-джуны без опыта вебни на других языках?

>Открой hh и посмотри сколько там вообще джун вакансий


Это понятно. Картина на хэхэ не всегда репрезентативна, последнее время там один мусор публикуют. Интересует реальное положение дел.
388 1902432
>>902409
Ну смотри, мне все таки кажется, что по хх можно делать какие то выводы. Я вот нашел там 0 ваканский для джуна

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

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

имхо на жабу вкатиться легче
389 1902590
>>902432
шел 2021 год, долбаебы все еще пытались вкатиться через вакансии "junior". Для вас специально повторю - джун != трейни. Без знаний и опыта (т.е. пет проект небольшой) вы не вкатитесь никуда. А в голэнге прям джуны не нужны, ибо нужен релевантный опыт по всяким очередям, мониторингу, докеру и всему вот этому.
390 1902840
>>902590
Двачую. 100% рабочий план для вката в программирование за деньги на любом языке (не благодарите): изучаешь язык на минимально рабочем уровне, изучаешь некий минимальный набор востребованных сейчас технологий, делаешь от одного до бесконечности бесполезных проектов возрастающей сложности с использованием того, что выучил. Готово, вы погромист.
391 1902851
>>902590

> шел 2021 год, долбаебы все еще пытались вкатиться через вакансии "junior".


Абсолютно согласен, вкатываться надо на миддлов, там требования ниже
392 1902938
>>902840
Так все и есть. Хватит парочки пет проектов. Главное на актуальном в языке говне. Проблема в том, что вкатуны и этого не понимают.

>>902851
При чем здесь это? Кидать отклики нужно везде, где четко не прописано прямо в тексте требование коммерческого опыта и не ищут спецом middle+. Вот и весь секрет. А то, что долбаебы находят с трудом 3 вакансии идеальных с "без опыта", думая, что это все, куда они могут отозваться - это путь долбаеба. Рынок гораздо проще устроен. Просто некоторые дурачки типа тебя привыкли, что подготовился к зачету - сдал на 5 и заебись, в реальном мире так не работает, все работает куда проще, по релевантному опыту и пользе, которую принесешь.
393 1902945

>Для вката в Go читай:



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

Серьезно, блять, посоветуйте актуальную книжку для вката.
394 1902957
>>902945

> актуальную книжку



Официальная документация, плейграунд и официальный блог. Вот тебе и книжка, долбаеб.
395 1902959
>>902957
Да долбоеб твой отец, вафел.
396 1902961
>>902959
Ну тогда иди вкатывайся полтора года, чтобы в итоге соснуть хуй и пойти за еду в первую же веб студию. Твой выбор.
397 1902965
>>902961
Ты чего вылез вообще, придурок, я тебя что-ли спрашивал?
398 1902974
>>902965
Да, меня. Чем тебе не нравится ответ? Книжки в основном устаревшее говно, если ты будешь читать в РУ варианте - то еще более устаревшее. Книга намного хуже офф документации, плейграунда и блога го (в нем почти все концепты с примерами разобраны). Книги можно советовать только по конкретным темам, в которых ты хочешь углубиться лучше, например по Concurency. Читать книги именно по вкату в язык - пустое и глупое занятие.

так понятнее или ты дурак?
photo2021-01-0410-26-44.jpg20 Кб, 1280x172
399 1902982

>Вы ведь знаете, что в го надо аккуратно с переменными из 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
400 1902984
>>902982
Да, знаем. Это в каждом гайде и на каждом собеседовании спрашивают. Также и в for лупа аналогичная ситуация. А сказать что хотел? И пост оформить мог нормально?
401 1902987
>>902432
ок, спасиб за ответ. в жабу не легче, я уже пробовал несколько лет назад.
402 1902991
>>902590
>>902938
вот отвечаете по существу вроде бы, но столько этого вашего блядь раздувшегося самомнения, блевать хочется. самим от себя не противно?
хотя да, это ж двач
403 1902995
>>902991

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


Это я один отвечал. Просто я заранее в атакующую позу встаю, т.к. общее мнение среди двачеров которые естественно нигде кроме веб студии не работали, что в айти вкатиться неимоверно сложно. А на деле же на личном опыте и опыте собеседований и общения с другими людьми - все в разы проще, просто многие совершают банальные ошибки типа отсечения вакансий, где стоит метка "1-3 года опыта" или везде, где не написано "готовы взять за еду", ну и еще многие просто тупые. Скорее всего щас опять набежит какой-нибудь очередной пояснятель про айтипузырь и в таком роде, это рак программача, эти шизики даже бе засирают этими тредами.
404 1903253
>>902974
Чувак, это твое мнение. Я лично не считаю официальные гайды хорошими, они сумбурные, размазаные, сухие и неполные. Брошюра в виде последовательного гайда была бы гораздо более эффективной.
Что касается блога, то это вообще не в тему, читать эти статьи на этапе вката бессмысленно.

И да, го не первый мой язык, я примерно понимаю что такое хорошая документация и какова стоимость входа.
405 1903256
>>902995

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


Что ты против студий имеешь. Самый качественный опыт дают студии. После них любая продуктовая команда (и уж тем более крупные конторы) кажется вчерашним днем.
406 1903310
>>903256
Веб студии не дадут тебе того, что даст нормальная компания. Кафки и кубернетнсы в студии не нужны, как и большинство других вещей, достаточно конвеерно говнокод писать и все.
407 1903324
>>903310

>Кафки и кубернетнсы в студии не нужны


По своему опыту знаешь
408 1903337
>>903324
Да, в моем случае в студии вообще ничего не нужно было кроме mysql/nodejs/angular
Другой анон
409 1903339
А че в голенге по сокрытию типов? Если мне нужно гетерогенное хранилище для какого-то ограниченного (небольшого) набора типов, можно это как-то без торчащего наружу interface{} запилить? Вроде рефлексия есть, должно быть как-то не сложно информацию о типе сохранить и восстановить ее, но шото сходу не нашел способа. То я хочу иметь какую-то структуру, которая инкапсулировала бы данные и информацию о типе переданного ей в конструктор объекта и по необходимости типобезопасно собирала бы мне назад переданный объект, при том, желательно, с минимальным оверхедом.

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

Я в примере для простоты тип указываю явно, но есть возможность через визитора это делать обобщенно и не думать, какой у меня тип в конкретном объекте. Вот хотелось бы что-то подобное и чтобы оно не очень костыльно было (костыльно я и сам могу)
410 1903512
Почему Windows Defender ругается, если делать автозапуск программы при помощи этой штуки?
Никакого вредоносного кода нету же.
https://github.com/emersion/go-autostart
411 1903513
>>903339

> А че в голенге по сокрытию типов? Если мне нужно гетерогенное хранилище для какого-то ограниченного (небольшого) набора типов, можно это как-то без торчащего наружу interface{} запилить? Вроде рефлексия есть, должно быть как-то не сложно информацию о типе сохранить и восстановить ее, но шото сходу не нашел способа. То я хочу иметь какую-то структуру, которая инкапсулировала бы данные и информацию о типе переданного ей в конструктор объекта и по необходимости типобезопасно собирала бы мне назад переданный объект, при том, желательно, с минимальным оверхедом.


А теперь всю эту хуйню напиши в двух словах.
412 1903520
>>903339

>А че в голенге по сокрытию типов?


>Я пытаюсь натянуть тонну рандомного говна отовсюду на языкнейм


>Не имея конкретной проблемы, которую это говно должно решать

413 1903527
привет друзья как настроение
414 1903535
>>903339

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


Т.е. ты хочешь дженерики с union типами. Боже, столько расписал, пыжился, а в итоге ничерта не понятно что ты хочешь.

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

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


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

Отучайся от такого говна, плюсы за это и не любят, что все подряд понапихали, даже вот такие узкие вещи, и теперь язык - монстр какой-то получился.
415 1903540
Где ещё можно спросить кроме этого треда?
Не думаю что это только с го связано.
>>903512
416 1903541
>>903324
Ну да, по своему опыту. А есть вопросы? Веб студия нацелена на то, чтобы побыстрее сделать да забыть, лол. Вместо монги какой-нибудь въебешь по быстрому sql, вместо редиса - вьебешь кеш через БД, если вообще не лень будет, на scalability вообще забьешь хуй, ведь не надо да и запарно, о докере вообще можно забыть - по ssh за пять минут чтобы просто работало и можно было поскорее сдать проект. В нормальной фирме, даже ПХП формошлеп будет выкладывать свой код через настроенный пайплайн, писать тесты, будет обязательный код ревью и АГИЛзапрещенная в РФ организация, дадут пощупать новые технологии, какой-нибудь эластик подрубят, rabbitmq, еще и мониторинг с графаной да прометеусом и логсташем. А это уже пиздец какой буст, тебе и код писать придется нормальный, иначе на код ревью засмеют. Веб студия - это стагнация тебя, как специалиста.
417 1903544
>>903540

> кидает ссылку на пакет в гитхабе, с которым ошибка


> Где ещё можно спросить кроме этого треда?



Очевидно - создать issue и спросить у создателя пакета, мы то откуда знаем? На проде никто в автозапуски винды не кладет гошные сервисы, лол, это либо systemd на линухе, либо кубер/докер с авторетраями. Я не думаю, что здесь кто-то вообще на винде с голэнгом работает.
418 1903546
>>903544
В пакете нет ошибки, Дефендер просто начинает ругаться и удалять программу, если её ярлык в Startup создавать (через этот пакет, но не думаю что это важно).
Так вот, в каком треде про такое спрашивать?
419 1903549
>>903546
Хз, здесь не тред винды, и, как я сказал - скорее всего тут нет человека, который разрабатывает го на винде. Иди в тред операционных систем, я даже хз. На форуме в инете спроси.
420 1903551
>>903540
Плюсовики могут знать.
Неоднократно сталкивался с таким, что некоторые антивирусы реагировали на мои программы. Решения не нашёл.
421 1903553
>>903544
Вообще достаточно забавно когда го или питон начают юзать в винде, а потом начинают спрашивать почему не работает.
422 1903563
>>903553
Да лан, ничего забавного. Гошка полнофункциональна на винде, просто мало кто пишет именно под неё, ибо нинужно, но я писал достаточно сложные штуки с opengl на гошке и на винде все прекрасно заводилось, главное заранее определить, что будешь поддерживать винду, т.к. сторонние либы могут без поддержки быть и ток с линуксовыми и макосевыми сисколлами работать.
423 1903578
>>903563

>линукс


Бесполезная хуйня для умственно отсталых, ты хотел сказать.
424 1903599
>>903578
Ох бида бида, не поихрать на серваке
425 1903620
>>903578

> Бесполезная хуйня для умственно отсталых, ты хотел сказать.


Абсолютно похуй. Линукс стоит на серверах и большинство ПО, соответственно, для разработки и удобства - заточено именно под линукс, это рабочий инструмент. Для игр и виндоПО (хотя я в них не играю) у меня есть дуалбут винда. Зацикливаться как ты на одной ОСи как школьник - это глупо, и ты сейчас на весь тред показал свою некомпетентность и тупость.
image.png1,8 Мб, 1920x1080
426 1903629
>>903599

>не поихрать


Чому?
427 1903649
>>903629
Ив хуйня же

Мимо играл несколько лет
428 1903668
>>903578
Ох, если это даже так, то на РАБотке тебя все равно заставят, через пот и слёзы, как суку последнюю. Тебе не избежать писания конфигов.
429 1903682
>>903668
Скорее без знаний пердолинга базового вообще даже не возьмут
430 1903683
>>903682
Хотя какого нахуй базового, для того же го ты должен достаточно хорошо линух знать
431 1903710
>>903649
Ну вроде можно рмтшить без вложений, мне бы интрнет раз в месяц оплачивать
432 1903712
>>903710
Хз, кроме корпы нихуя там интересного для себя не нашел, репетативная штука, нужно быть особым видом аутиста, чтобы в соло кайф ловить. Хотя я и прелестей песочниц уже не понимаю, постарел...
433 1903742
>>903324
Подписываюсь под каждым словом
3 года в этом говне проработал, вот только осенью ушел в крупную контору
434 1903744
Все гоферы бывшие пхпшники что-ли?
435 1903746
>>903744
В мире нет, в России определенно
436 1903750
>>903744
Лично я из ноды пришел, до этого опыт питона и сисадминства. Но да, очень многие гоферы, которых я знаю - имею опыт PазHоPабочим
437 1903822
>>903744
Ну да, и что ты мне сделаешь?
438 1903949
>>903535
Откуда инфа, что дженерики скоро подвезут? Я видел какой-то доклад Пайка, где он говорил, что все эти документы с вариантами улучшения - это даже не пропозалы, и никаких гарантий нет.
439 1903950
>>903535

>Этот функционал (именно variant, а не юнион) это лютый трудночитаемый костыль


Чем отличается variant от union'a в в твоём понимании?
(другой анон)
440 1903955
>>903746
В мире тоже (не все, но много)
441 1903964
>>903950
variant - это конкретная реализация вариантного типа, а юнион - способ группировки в дженериках

>>903949

> это даже не пропозалы, и никаких гарантий нет


Пайк раньше вообще еретиков сжигал одним взглядом за это слово. Обещают в 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
442 1903978
>>903535

> скоро подвезут

443 1903982
>>903978
Ну да, в рамках такой фичи в целом языке - годик это не такой большой срок.
444 1903992
Похуй на женерики, лучше эксепшены дайте.
445 1903995
>>903992
НИНУЖНЫ
446 1904000
>>903995
Если нет эксепшенов, то язык не тьюринг-полный.
447 1904013
>>904000

> тьюринг-полный


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

Да я сам не против эксепшенов, но то, в каком виде есть сейчас - ТЕРПИМО, так что похуй.
448 1904095
>>904013
Здесь есть большая разница. Да, в го обработка ошибок многословнее. Зато в го ты можешь добавить в контекст ошибки любую херню, какая тебе нужна и это будет менее многословно, чем отлавливать на каждый чих исключения. Смотри за руками:

(предположим, что 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: ......`
448 1904095
>>904013
Здесь есть большая разница. Да, в го обработка ошибок многословнее. Зато в го ты можешь добавить в контекст ошибки любую херню, какая тебе нужна и это будет менее многословно, чем отлавливать на каждый чих исключения. Смотри за руками:

(предположим, что 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: ......`
449 1904099
>>904095
Или может даже
`post, err := findLastUserPost(@user.ID)` из последнего примера, ну ты понел
450 1904114
>>904095
Хз, ты хуйню написал. В джабе можно эксепшены оборачивать в стэк, и точно также сделать вывод ошибки. Ты к чему? Ну и эксепшены свои тоже можно создавать и логику на них накладывать дополнительную. Я не вижу именно преимуществ err от эксепшенов. Это просто более вербозный и более явный вид обработки. Хорошо это или плохо - мне сказать не хватает экспертизы, хоть я и мидл, это просто немного другое и более заебное. В джаве трай кетчем сверху пукнул и у тебя ультра стабильный код, так сказать.

если что я тот же, кому ты отвечаешь
451 1904119
>>904095
Единственное что отличает ошибки го от эксепшенов - способ их "выбрасывания", и все. Эксепшены это синтаксический сахар над ручной обработкой. Тащемта и все. Робу Пайку, как я понял, они не нравятся тем, что инкапсулируют много всего и добавляют в код неявную логику. Хотя я с ним бы поспорил, но поебать.
452 1904228
>>903744
Нет, я из жабы. Да и в команде ни одного пыхера, есть питонисты, жсер, и чувак который просто сразу в ГОвно наступил
453 1904244
>>903520
Схуяли ты решил, что у меня нет конкретной проблемы? Ты думаешь, я этим говном занимаюсь, потому что больше нечем?
454 1904245
>>903535
Я хочу сокрытие типа, именно это я и написал. Если гетерогенное хранилище -- это специфика и сложная терминология, то сорян, я думал, есть голенгеры, которые шото кроме готутора видели.

> varian это трудночитаемы костыль
Это не так, лул. Не, ну разработчики буста, а вслед за ними весь комитет, конечно, глупее среднего анона с двача, но мне кажется, что ты тут не прав. Типа я не сомневаюсь, что у голенгеров не возникает обычно задач, где вариант нужен, потому я и привел конкретный пример, проблема в том, что мне он нужен, я спрашиваю не твое охуенное мнение о шарпе, яве и плюсах и не о том, как мне решать задачу, которою я тут не описывал, а о том, как мне сокрытие типов нормальное сделать, я работаю в той области, где такая задача актуальна
455 1904250
>>904245
Попробуй общаться без пассивной агрессии - тогда глядишь и ответы перестанут такими быть.
456 1904251
>>904250
А шо, в сообщении с вопросом была пассивная агрессия? А то я вместо ответа узнал, что мне это, оказывается, не нужно
457 1904252
>>904251
Да, чувствуется немного, терминами бросаешься, мне пришлось даже зависнуть, чтобы вспомнить гетерогенные контейнеры что такое (есть бэк в плюсах), ибо такие понятия не используют часто, про костыли говоришь и очень специфичный функционал плюсов хочешь реализовать. По поводу твоего вопроса - нет, такого из коробки в го нет и, надеюсь, не будет, ибо это очень специфические штуки. Голэнг повыше уровнем абстракции гораздо.
458 1904253
>>904251
Опиши конкретный юз кейс, мне даже интересно стало что ты там наворотить хочешь такое страшное.
459 1904280
>>904253
У меня переодически всплывают подобные задачи, приведу самую классическую: есть много типов структур с данными, которые тащатся хуй пойми как и откуда, при том в большом количестве. Их нужно обрабатывать на лету, по возможности экономя ресурсы. Есть много потребителей, которые хотят получать определенные типы структур, вытягивать из них данные. Потребители могут подключаться, могут отключаться рандомно. Переодически также приходится решать, какие объекты выкинуть из памяти, какие оставить, какие сохранить до лучших времен в бд или шото еще. То есть мне нужно максимально абстрагироваться от типа структуры, просто понимать, что это какое-то говно с данными, которое кому-то когда-то может понадобиться.
460 1904334
>>904252

> Голэнг повыше уровнем абстракции гораздо


это что за мантра, вы так себя успокаиваете чи шо?
461 1904346
>>904334
Шарписты и Джависты тоже успокаивают? В питоне вообще типов нет. Это ты какой-то шиз.
462 1904348
>>904280
Ты не ответил на вопрос. Я конкретный юзкейс спросил, ты опять абстрактные вещи пишешь. Как аналог варианта тебе даст абстрагироваться от типа? Зачем тебе абстрагироваться от него? Конкретный юзкейс приведи.
463 1904357
>>904346
Ну что ты дергаешься, во первых твоя методичка устарела - типы можно аннотировать в питоне, причем в качестве преимуществ указывается чистота архитектуры и уменьшение ошибок - прикинь. Во вторых я спросил - что это за мантра, ты можешь её расшифровать без истерики?
464 1904359
>>904357
Аннотация игнорируется интерпретатором. На уровне языка на них похуй и ты можешь переменные вертеть как хочешь.
465 1904360
>>904357
Нет никакой мантры. Поэтому нет, не смогу расшифровать несуществующую вещь.
466 1904371
>>904348
Он хочет коллекцию, в которой можно хранить структуры разных типов, так чтобы это было типобезапасно, без interface{}.
В Го так не выйдет. Клодёшь в interface{}, потом кастуешь на тайп свитчах структуру обратно когда достаёшь.

Ебать он косноязычный, конечно, можно мыслить только в терминах плюсов и надо чтобы было как в плюсах. С++ - убийца разума.
467 1904468
>>904371
Так я на плюсах шкодил раньше, и то его не до конца понимаю. Не думаю, что он про то, что ты говоришь, иначе бы обошелся одним термином шаблоны или дженерики. А так он очень много специфики и конкретики набросал, что хуй поймешь что нужно в итоге.
468 1904593
Go 2 хотя бы в 2022 релизнут? Или Goвно похоронено?
469 1904604
>>904359

> Аннотация игнорируется интерпретатором


А зачем типы проверять в рантайме? Ну сделай скрипт который перед запуском приложения будет mypy вызывать и при наличие ошибок падать.
470 1904696
>>904604

> А зачем типы проверять в рантайме?


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

Если что я сам на Питоне пишу, так что твои аргументы про ррряяяя бамбит - мимо. Естественно это все обложено анализаторами и линтерами, но таки хочется и рантайм чеков.
471 1904700
>>904593
Вроде как решили забить хуй на 2 и просто развивать существующий. Дегенерики думают в бетах 1.18й версии подвезти, а это где-то под конец года этого.
472 1904756

> но таки хочется и рантайм чеков.


Для чего? Питон язык со строгой типизацией, строку и число один хуй не сложить.
473 1904765
>>904756
Ты сильную типизацию со строгой перепутал
474 1904766
>>904765
Синонимы по сути.
3F3F3F3F3F.jpg5 Кб, 254x198
475 1904774
>>904766

>Сильная и строгая типизация синонимы

476 1904777
>>904756

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


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

> Для чего?


Чтобы улучшить общую культуру кода и его стабильности.

> Питон язык со строгой типизацией


Не строгой, а сильной, как выше анон поправил, в языке со строгой типизацией запрещены изменения типа переменной в течение времени ее жизни.
477 1904805
>>904774
>>904777
Строгая и сильная типизации это синонимы, откройте вики. Вы путаете с динамической и статической типизацией.
478 1904809
>>904805
Не путаем. Сильная - подвид строгой, более простое понятие. Строгая требует полной строгости типа, в том числе и переменной. Например питон сильно и не строго типизированный язык.
479 1904810
>>904809
>>904805
В любом случае похуй, эти термины расплывчаты, каждый по разному описывает. Но суть не в названиях, в любом случае.
480 1904943
Сап, решил запрофайлить свой говно-сервак. Ну значит, сначала проверил cpu, вроде все ок. А вот такое говнище я получил при проверке кучи.
И собственно вопрос, что мне с этим делать ? И что я делаю не так ? Профайлить пробовал через "net/http/pprof" и "runtime/pprof", результат не меняется.
481 1904948
>>904943
Неужели у меня выделяется < 512KB и runtime.MemProfile просто не вызевается ?
482 1904950
>>904948
>>904943
Пиздец, я ответил на свой же вопрос. После того как протестировал на 100+ подключениях, заработало.
483 1904952
>>904948
>>904943
О, профайлим через либу прям в коде? Ммм, говнецооооо. Любишь обмазываться перед сном говном? Наверное утром когда просыпаешься любишь засохшую коргу из говна отрывать и кушать. Да, говномаз? Даааа, я знаю что любишь, ммм
484 1904961
>>904952
Все именно так, написал же >говно-сервак.
Как делать чтобы не обмазыватся говном. Ну или хотябы, чтобы не воняло ?
485 1904963
>>904961
Да я пошутил. Естессно с либой. Можешь еще прям в лайв режиме через "net/http/pprof" профайлить, будет по роуту "/debug/pprof/" тебе в лайв режиме всю инфу высирать, и часть для pprof скачать даст. Сервер дебажить самое оно, но можно и не сервер, главное мух поднять самому тогда.
486 1904964
>>904961
Про trace еще слышал? Тоже чудная штука
487 1904966
>>904114
>>904119

Нихуя. Ещё раз:
В джаве по дефолту вы на верхнем уровне получите только ошибку с нижнего + стектрейс.
В случае иерархии
- foo("hello")
-- bar("motherfucker")
--- baz("!!!)
---- httpcall("111")

ты и получишь что-то вроде:
```
java.lang.RuntimeException: "500 error"
at func httpcall
at func baz
at func bar
at func foo
```

А в то же время в го в контексте ошибок у тебя будут ещё и промежуточные значения:
`can't foo ("hello"): can't bar ("motherfucker"): can't baz ("!!!"): can't httpcall ("111"): 500 error`
(то есть, в тексте ошибки будут аргументы промежуточных функций: "hello", "motherfucker", "!!!", "111"

В джаве же по дефолту будут только значения с низкого уровня + стектрейс.
Не по дефолту (то есть добавлять значение в контекст на каждом уровне) можно, но тогда во первых у тебя будет мерзкий код (множесто try-catch'ей), а во-вторых у тебя будет создаваться новый объект исключения со стектрейсом на каждом уровне, что больно. В данном случае я правда говорю больше про первую проблему.
488 1904967
>>904966

> Нихуя. Ещё раз:


> В джаве по дефолту вы на верхнем уровне получите только ошибку


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

> А в то же время в го в контексте ошибок у тебя будут ещё и промежуточные значения


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

> можно, но тогда во первых у тебя будет мерзкий код


Так в го тебе и так придется врапать на каждом логическом уровне ошибку. Все твои can't huy - нужно врапать самому. Или ты о чем?
489 1904974
Начал учить пхп, сейчас вот наткнулся на этот тред, да и раньше слышал что пхпшники уходят на Го. Так чем же так хорош этот язык? Может мне сразу стоит начинать вкатываться с него.
490 1904977
>>904974

> Так чем же так хорош этот язык?


Хуй знает чиста пацаны с работы в студии посоветовали ну я и перекатился чиста пишем там мелкие проги всякие я хз особо не разбирался чиста гайд прочитал и хуярю чета там профи какие-то чето хз ваще похуй работает нармас можно сайтики писать тока типы какието сложные хз зачем добавили лучше бы как в пхп можно было без типов и с ними так сказать свобода чтобы была разработческая вот воот
491 1904980
>>904967
Бля. В третий раз говорю, ты можешь сделать кастомные эксепшены, но чтобы залогать "motherfucker" или "!!!" из моего примера, тебе придётся оборачивать вызов baz() в try-catch.
То есть код вместо последовательных
res, err := do()
if err != nil { return fmt.Errorf("foo: %w")}

превращается в последовательные
Res res;
try {
res = do()
} catch (e Exception) {
throw NextLevelExeption("foo", e)
}

> Так в го тебе и так придется врапать на каждом логическом уровне ошибку. Все твои can't huy - нужно врапать самому. Или ты о чем?


Как раз о том же. Что в го если ты врапаешь и контекстуализируешь каждую ошибку, то это смотрится менее уродливо, чем на исключениях, если бы ты try-catch'ил каждую ошибку.
492 1904981
>>904980
Да ну, однохуйственно. Шо то хуйня шо это хуйня, но трайкетч более гибкий.
493 1904997
>>904977
Капец, я так понимаю ГО -- это язык для отсталых...
494 1905014
>>904997
Слыш епта ково отсталым назвал, пес ебаный, а ну бля адрес свой диктуй сучий сын блять приедем всем отделом веб студии тебе ебучку за твои слова бить, ахуеть бля епта
495 1905052
>>904997

> двач -- это сайт для отсталых...


Я пофиксил а долбоебы везде бывают
496 1905060
>>905052
Слыш, это ты че это бля быканул я не понел
497 1905118
>>904981
Ну если для тебя это одно и то же, то тогда обсуждение можно прекращать впрочем ещё пару постов назад надо было, я одну ту же мысль 3 или 4 раза повторял, прежде чем ты её понял, пиздец, все гошники такие тупые?
498 1905124
>>905118
Твою мысль все поняли с первого раза и пояснили, что разницы большой нет. То, что ты её три раза повторил - твоя проблема. В твоем коде ничего кроме блока трай кетч на го не поменяется, если ты сейчас утверждаешь, что это не так - ты ебнутый. /thread
499 1905211
test
500 1905213
ПЕРЕКАТ: https://2ch.hk/pr/res/1905210.html (М)

ПЕРЕКАТ: https://2ch.hk/pr/res/1905210.html (М)

ПЕРЕКАТ: https://2ch.hk/pr/res/1905210.html (М)

ПЕРЕКАТ: https://2ch.hk/pr/res/1905210.html (М)

Привел шапку в божеский вид наконец, пиздец.
image.png1,6 Мб, 4000x2067
501 1905216
502 1909590
>>877742
Чистый код читай. Если коротко - весь файл целеком ты все равно не запомнишь, неважно, там 2-3 экрана текста или 15, да и детали реализации методов не важны, пока ты не знаешь где и при каких условиях они вызываются (см любой доклад Григория Петрова, например вот https://www.youtube.com/watch?v=z5WkDQVeYU4). Тебе в любой момент времени, когда ты смотришь на код, важнее как методы между собой взаимодействуют, а на вопрос - что они сами, непосредственно, делают, тебе в значительной мере должно ответить имя метода. Если же нужно поподробнее - тогда переходишь в скоуп определения функции и уже там повторяешь эти же действия. В большинстве случаев ты , вызывая fmt.Printf думаешь о том, что он выведет тебе что-то в терминал, а не о том, что оно распарсит строку формата, для каждого аргумента чекнет, имплементит ли он один из 3-х методов, меняющих поведение преобразование их в стрингу, в случае дефолтного флага из строки темплейта, если он отличается от дефолтного, скорректировать так же приведение к стринге и на его основании, составит из этого всего слайс байт и запишет этот слайс в специальный файл операционной системы, чтобы результат вывелся на экран.
503 1945696
>>904000
Проиграл. Надо автору Брейнфака рассказать, чтобы добавил.
Тред утонул или удален.
Это копия, сохраненная 1 мая 2021 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски