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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред про лучший в мире язык GO №14 /go/ 1905210 В конец треда | Веб
Тред про лучший в мире язык GO №14 /go/

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

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

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

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

Полезные дополнения:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/

Обновляемый список с пакетами: https://github.com/avelino/awesome-go

Небольшой канал треда: t.me/golang2ch

Предыдущий тред умирает здесь: >>1876438 (OP)
Шаблон шапки: https://pastebin.com/iRaveWbC
2 1905217
Первыйнах
3 1905400
>>1905217
Красава, получается
4 1905509
Отлично, наконец-то без тупоебского хомяка на оп-пике.
5 1905518
>>1903992 →
Эксепшнов никогда не будет скорее всего, а вот писать каждый раз 6 строк, чтобы сравнить два слайса по содержимому - это невесело.
6 1905758
>>1905518

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


Дженерики не только для всякой специфичной хуйни полезны. Например тот-же банальный пагинатор без дженериков не запилить без бойлерплейтов и с тайпсейфти. Да достаточно много небайтоебских полезностей привнесут. А по поводу эксепшенов - да, скорее всего не добавят, ибо слишком уж въелся в язык нынешний вид ошибок. Уже сподвижки начались в сторону нормального стекания ошибок, можно надеяться, что выдумают что-то более менее человеческое из всего этого.
image.png53 Кб, 1122x463
7 1905776
>>1905758

> пагинатор


Кстати, еще забыл упомянуть, что ебал мать Роба Пайка

я знаю, что есть костыль с созданием переменной с типом []interface{} и заполнить её по одному собаками, но блять, втф?
8 1905777
Нормальную кодогенерацию собираютя завезти? Или придется еще шаблончики (например из стандартной либы "text/temlpate") юзать?
9 1905779
>>1905777
собираются
template
10 1905790
>>1905777
Кодогенерация, макросы, препроцессоры и транспайлеры - это в целом лютые костыли, созданные из-за скудности и примитивности синтаксисов языков. "Нормальным" это быть просто не может.
11 1905791
>>1905776
Это фича
12 1905796
>>1905791
Роб, ты?
13 1905804
>>1905790

То-то же в Расте макросы из-за того что его синтаксис примитивнее чем у императивной Жабы в которую pattern matching не завезли.
14 1905815
>>1905804
Ну так в расте даже эксепшенов нет.
15 1905817
Кодогенерация - это прием статического полиморфизма если что. Для Го в котором нет дженериков, это единственный способ без копипаста кода писать generic code.
16 1905833
>>1905815

Плюс один special case, синтаксический костыль к декларациям функций вместо очевидного типа Result, который возвращают функции с исключениями. Я бы не назвал это плюсом.
17 1905839
>>1905815

Зато есть pattern matching, where clauses, блоки-выражения.
18 1905843
>>1905758
Сравнить два слайса - это не специфичная хуйня, а повседневное программирование так-то, причем вне зависимости от того, что ты программируешь.
19 1905845
>>1905790
На мой взгляд синтаксические макросы - в принципе, норм, главное меру знать. Явно лучше, чем какая-нибудь Boost.Hana.
20 1905848
>>1905776
Вариантность захотел, забыл на чем программируешь?)
21 1905850
>>1905758
Имхо, с обработкой ошибок в Го всё нормально.
22 1905878
>>1905776

> interface{}



Типобезопасненько. А главное - не нужно дополнительного бойлерплейта...
23 1905881
>>1905878
Ну, можешь Animal там прописать и будет типобезопасненько. Хыч хыч улыбочку
24 1905890
>>1905848

На хуйне по сравнению с которой даже php выглядит более выразительным языком.
25 1905912
>>1905890

> даже php выглядит


php почти копия джавы, один из самых ООП фулл языков (лол), там даже сраные трейты есть. Не стоит сравнивать языки тупо по функционалу, иначе тогда тот же питон соснет хуйца даже у пхп (речь о функционале из коробке, а не либах). Язык это инструмент, а не тупо набор функционала.
26 1905916
>>1905890
>>1905912
Нахуя вообще сравнивать go с высокоуровневыми языками? По выразительности и плюсы хуй соснут у php, блять. В байтоебском языке по определению не может быть слишком много сахара, иначе получится C++, в который понапихали столько, что выучить его нормально и жизни не хватит теперь, а на го ты через месяц уже сможешь написать 300кк рпс в наносек без утечек памяти и с многопоточностью.
27 1905929
Когад го перестал быть высокоуровневым языком с сахаром
28 1905936
>>1905929
А когда он им был? Та же сишка, но с батарейками и парой приколюх.
29 1905942
>>1905929

> Когад го перестал быть высокоуровневым языком с сахаром


Ну кроме абстракции над многопоточностью там сахара нет особо, можешь руками память чистить с вырубленным gc, поинтеры это реальные поинтеры в память, а не просто сахар и т.д. и т.п. Естественно он не такой низкоуровневый как плюсы или раст, он скорее что-то среднее между шарпом/жавой и сями.
30 1905948
>>1905942
С++ - байтоебский язык, сахара много. Что-то не сходится.
31 1906016
>>1905948
Go тоже байтоебский. Весь функционал буквально на типе byte основан
.jpg780 Кб, 2550x3506
32 1906053
33 1906151
>>1905916
Да высокоуровневый го язык, вы заебали уже. Ты будешь ебаться с байтами только если сам хочешь или пишешь свою бд или там json энкодер какой-нибудь. 99% времени ты делаешь то же, что и в php и в джаве и где угодно ещё: принимаешь запрос, валидируешь аргументы, пихаешь их в функцию бизнес логики, оттуда лезешь в базу, собираешь ответ, отдаешь его обратно.

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

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

>>1906016
Лолчто, ебли с байтами нет, если ты не затачиваешь приложение под супер ультра мега хайлоад. В реальном бою ты максимум встретишь []byte, сконвертишь его в string и забудешь о том, что видел изначально.
34 1906156
Пробампую здесь, а то в джава треде тихо:
>>1905425 →
>>1905709 →

В двух словах - как перекатился, что пилил на джаве, что пилишь на го?
35 1906159
>>1906156
Блд, увидел ответ (>>1906157 →), хз куда смотрел до этого.
В общем, всё понятно.

Если кто-то ещё поделится подробностями переката из джавы в го - буду признателен.
36 1906177
>>1906151
На плюсах ты точно также можешь этим заниматься. Уровень языка определяет не то, что на нем иногда делают. В го ты будешь ебаться с тюнингом того-же латенси как чорт, если ты не работаешь в говноконторе (а на го их меньше, чем нормального хайлоада) - ты как раз будешь заниматься конкретно что байтоебством, при чем с обязательным знанием как тот-же gc и шелдуер внутри работает.
37 1906206
>>1906177
Да нихуя. Сколько уже людей приходили на конфы и говорили: нам был нужен перформанс, мы короч взяли го и просто написали нормально, ничего специально не задрачивали - и сразу попали в SLA.

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

В го есть ряд вещей, которые реально тюнятся:
- аллокатор, так в го сравнительно "дорогие" аллокации из-за того, что сборщик мусора не перемещающий, в итоге с дефрагментацией они на аллокациях борятся, решается переиспользованием объектов в узких местах через sync.Pool;
- планировщик, если у тебя прям слишком много горутин. Решается профилированием и пулами горутин;
- гц иногда захлебывается из-за слишком большого количества указателей, решается в первую очередь правильным их использованием (чтобы не держать миллионные мапы структур с указателями в памяти к примеру); И только если у тебя нужно хранить в рантайме десятки гигабайт, то нужно будет скрывать эту память гц с помощью магии.

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

Как видишь, байтоёбства я не упомянул.

Может ещё можно вспомнить уже совсем конкретные оптимизации типа использования []byte вместо string из-за иммутабельности и лишних указателей, но это совсем мелочи.

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


Если ты не джун - то ты и так должен этого знать.
38 1906220
>>1906206
Слыш, ты умный самый, чертила? Нахуй иди. Я сказал байтоебский - значит байтоебский.

> попали в SLA


Что это значит и как относится к байтоебству, если это контракт между сервисами просто?
39 1906226
>>1906220

> Что это значит и как относится к байтоебству, если это контракт между сервисами просто?


Ну грубо говоря, вы договорились, что твой сервис выдерживает 5000rps, а ты написал на php и он выдерживает только 500rps. Ты такой просто переписал его на go и даже не сильно тюнил, и он сразу вынес 10000rps, так что ты сходу выполнил договорённости, без лишнего байтоёбства.
40 1906228
>>1906226
Так надо сначала узнать сколько выдержит, а потом уже обещать. Ну ты и пидрила, чисто в крысу наебщик епта.
41 1906232
>>1906228
Лол, ну давай, к тебе придёт клиент и скажет "я короч хочу сайт, чтобы он там миллион пользователей одновременно мог выдержать, а то опять тормозное говно мне сделаете". Если ты ему ответишь "давай я сначала накодю, а потом померяем", то он тебя нахуй пошлёт и меня наймёт и правильно сделает. Потому что я подумаю и выдаем ему реалистичное число, которое потом мы в контракт и напишем (прямо над чеком в миллион баксов лично мне). Бизнес логику напишу на чём угодно, а узкие места на том же го сделаю и нормально будет.
42 1906234
>>1905776
Что ты хотел этим продемонстрировать?
Ты типа только вчера для себя открыл го, или что?
Книжку хоть одну прочёл?

Да, нету дженериков, и что?
Надеюсь, что и не будет никогда.
Нравятся дженерики - пиши на шарпе.
43 1906239
>>1906234

> Книжку хоть одну прочёл?


Нет, я в озоне работаю уже больше года. Продемонстрировал одну из неочевидных фич и в шутку выебал Роба Пайка, а что не нравится? Могу себе позволить, т.к. знаю все такие детали языка.
44 1906241
>>1906239
Твой высер показал что детали языка ты не знаешь
45 1906246
>>1906241
Нет, не показал.
46 1906286
>>1906239
Как я понял, тут дело в том, что массивы (и слайсы) в го хранят объекты, а не ссылки на них. Т.е. нужно знать размер объекта, чтобы делать то, что ты хочешь.
Поэтому, тут никакие дженерики не помогут.

>>1906241
Но, почему то же самое не работает с указателями?
У указателей тоже разный размер, или что?
47 1906294
>>1906286

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


Не совсем так, в массивах и слайсах можно хранить как объекты, так и ссылки.

>Поэтому, тут никакие дженерики не помогут.


Это же типичная ситуация, когда дженерики как раз и помогают
>>1906286
Указатели все имеют одинаковый размер, а вот интерфейсное значение и указатель - разное. Такой дизайн сделан сознательно, чтобы не прятать за магию операцию, требующую О(n) алокаций интерфейсных значений. Если тебе реально нужно преобразовать слайс объектов в слайс интерфейсных значений - сам напишешь лишние 5 строчек.
48 1906420
>>1906286
Лол, дженерики именно для этого и нужны, по большому счёту.
49 1906421
Как в Го получить ассерты, бесплатные в релиз-версии?
50 1906428
>>1906420
Удваиваю.
Хорошо, что дженерики таки будут.

btw, можно было бы сделать так, чтобы можно было сделать []interface{}([]Object) вместо ручных for'ов. Хотя дженерики и это решат.
51 1906438
>>1906421
Чего? Какие ассерты?
52 1906440
>>1905210 (OP)
после Сишки, Го кажется уебищным языком, это норма? к этому привыкаешь? Есть тут бывшие сишники, поделитесь успехом...
53 1906441
>>1906428
Нет, иди нахуй. Будешь заполнять в цикле, как остальные крестьяне. Вон этому отшибленному в кайф это делать из раза в раз >>1906294
54 1906442
>>1906440
После сишки даже плюсы кажутся уебищным языком. Привыкай.
55 1906445
>>1906438
>>1906421
Спасибо, уже нашел, оказывается, в Го таки есть условная компиляция.
56 1906446
>>1905942

>поинтеры это реальные поинтеры в память, а не просто сахар



Не совсем: https://golang.org/doc/faq#stack_or_heap . TL;DR : арифметика указателей инкапсулирована в самих конструкциях языка. Переменные созданные в скоупе функции, лежат на стеке если они хранят небольшое количество байт и на них нет указателей или они есть но не выходят за пределы скоупа функций. Иначе переменная создается в куче. Вот в C/C++, Rust есть голые указатели которые дают полный контроль над памятью.
57 1906447
Какой же ебанутый майндсет. https://golang.org/doc/faq#assertions
"Глупые программистишки не отличают ошибки, которые нужно обрабатывать, от дебажных ассертов, поэтому мы их не сделали))0"
58 1906449
>>1906445
Объясни что такое бесплатные ассерты в го, блять.
59 1906450
>>1906449
Которые не проверяются в релизной версии
60 1906451
>>1906446

Алсо Java JIT похожим образом оптимизирует аллокации. См. escape analysis
61 1906452
>>1906450
>>1906447
А зачем они нужны? Не проще код просто писать так, чтобы значения не пидорасило в разные стороны? По идее ты можешь написать функцию эту сам, или я ошибаюсь и ассерт - это больше, чем тупо функция, кидающая панику при неверном кондишене в её аргументе?

Если что у меня нет бэкграунда в сях, просто рил интересно
62 1906453
>>1906446

Иначе можно договориться что и ЖС "байтоебский язык" ведь в нем есть указатели.
63 1906455
>>1906446
Почему не совсем? То, что хипа/стек определяется автоматически - не значит, что поинтер это не поинтер. Го это язык со сборщиком мусора, поэтому логично, что тебе не нужно руками в память писать. Но ты можешь спокойно сам аллоцировать память (правда в обход GC, т.е. придется еще позаботиться о том, чтобы за собой убрать), есть целые техники в го даже с этим связанные. Но если тебя не ебет перформанс в рот - проще довериться gc, он умён не по годам, так сказать.

>>1906451
В го это тоже escape analysis
64 1906456
>>1906453
В жс не поинтеры, там референсы, как в том-же ПХП. Просто имитация на уровне интерпретатора. Го например аллоцирует все на реальной куче и стеке, а жс вообще интерпретируется, там столько абстракций, что ахуеешь.
65 1906463
Я конечно дика извиняюсь, но у меня с члена капает при виде каловых масс? Это запах романтики...

с ув. maxmol
66 1906467
>>1906456
мне не интересно
мазохизм какой-то
зачем аллоцировать все на реальной куче?

с ув. калцоур
67 1906469
>>1906463
Ты заебал уже, весь сосач засрал своей молявфренией.
68 1906470
>>1906469
в курсе его мать родная в унитах хотела смыть жаль не поместился и пришлось по старинки ебашить кирпичом по голове но он почему то выжил и даже научился копировать хелло ворлды на луа и выдавать за свой аддон
69 1906472
>>1906467
Мать твою оталлоцировал на куче, чмо
70 1906474
>>1906472
ей не впервой брателла грря гучигенг)

с ув. шмакалявко
71 1906475
>>1906472
Покажи мне человека который этого не делал, лол.
72 1906477
вы далбёбы на луа песать надо
тут дух старой школы живёт скрря
выне паньмаете что гоу это мазохищм нахуй???

с ув. шлакомол
73 1906478
>>1906477
Калцуровсратого молявошнобеля с калопластомой головного мозга забыть спросили.
image.png8 Кб, 287x136
74 1906482
75 1906483
>>1906482
обосрался
76 1906484
>>1906483
а можна я чиркаль со штанов сгризу м)
я очнь галодний меня в макдудльсе забанили за перееданее

с ув. копромол
77 1906489
78 1906491
>>1905942

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


Можно подробнее? Или это просто :
n := &T{}
n = nil
?
79 1906496
>>1906482
Как тема называется?
1610282279565.png1 Кб, 134x48
81 1906501
>>1906499
ахахахахаха
похуй не важно спс
82 1906502
>>1906501
Наоборот чувствуешь себя master, на которого нигирийцы работают и тему на блюдечке подносят, не шаришь.
83 1906532
>>1906446
Гошный компилятор намного продвинутее чем кажется
Многие почему-то думают что слайсы значит хип
84 1906537
>>1906532
Никто не спорит, компилятор и инлайнинги делает и кучу разных оптимизаций, пока до машинного кода дойдет - твоя программа вообще может быть не похожа по синтаксису на то, что ты изначально в своей ide наговношлепил.
85 1906606
>>1906455

>То, что хипа/стек определяется автоматически - не значит, что поинтер это не поинтер



Правильно. Это значит что поинтер - не прямой поинтер в ОЗУ в отличие от звездочки в Си/Крестах (хотя и выглядит также).

>>1906456

Референсы - это поинтеры, которые компилятор/интерпретатор дереференсит за тебя в контекстах их использования.

> а жс вообще интерпретируется



Это если JIT компилятору не удалось угадать типы аргументов и локальных переменных функции. Интерпретируемость никак не относится к тому, как выделяется память в языке. В ЖС различаются stack allocated vs heap allocated variables, и это также достигается escape analysis-ом как и в Го-шке.
86 1906611
>>1906606

Точнее, stack vs heap allocation of data.
87 1906667
>>1906606

>Это значит что поинтер - не прямой поинтер в ОЗУ в отличие от звездочки в Си/Крестах (хотя и выглядит также).


Не прямой поинтер - это как?
88 1906671
>>1906606
От того, что появляется сборщик мусора, поинтеры не перестают быть поинтерами.
89 1906676
>>1906421
А в чём проблема сделать 2 функции

// +build default

func assert(callback func() bool) {
if callback() {
panic("assertion failed")
}
}

и

// +build prod

func assert(_ func() bool) {}

??
И при компиляции пустая функция просто скипнется.
90 1906724
>>1906676
Зачем ты байтоебу отвечаешь? Он в прошлом треде доебывал почему это его любимого Variant нет в го.
91 1906746
>>1906724
Это был не я, лол.
>>1906676
Да, я уже нашел, спс.
92 1907296
>>1906501
Негры пашут ради барина, а он еще и не рад, тьфу
93 1907446
>>1906151

> Да высокоуровневый го язык



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

> просят пояснить за связный список


> кучу байтоебских вещей


жс макака, ты?
TjKEhtklXIU.jpg36 Кб, 600x626
95 1907868
Прохожу тур по го.

>методы и прочее, 22 из 26


>Implement a Reader type that emits an infinite stream of the ASCII character 'A'.


>Реализуйте тип Reader, который испускает бесконечный поток символа ASCII «A».


>Нихуя не понял, бился 3 часа в попытках честно написать код самостоятельно.


>2 года не курил, снова начал


>Заебало, загуглил


>реализация метода https://gist.github.com/rndD/5ba3c7c9883de396a4ea оказывается должна считать количество символов А, которыми заполняется массив



Объясните мне это блядство пожалуйста.
Я уже по горло сыт этими ебучими условиями и омерзительной подачей материала
16090810627330.png8 Кб, 215x234
96 1907990
>>1906482
Надо следующий тред с этой картинки начать
97 1907995
>>1907868
Да, это довольно не очевидный момент - ридер это тип, который не просто имплементит метод, но еще и соответствует 6 абзацам комментариев над интерфейсом https://golang.org/pkg/io/#Reader
98 1908016
>>1907700

> жс макака, ты?


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



Ты сразу же обосрался, ибо если бы хоть немного шарил в теме - понял бы, что связный список и проблемы с кешами - это один общий логический блок. В итоге ты половину фразы вырвал и обосрался.
99 1908018
>>1907995
>>1907868

> Объясните мне это блядство пожалуйста.


А что не понятно то? Тебе просто нужно высрать 'A' в переданный массив байтов, вот и все. Проблема то в чем?
100 1908024
>>1907868
Ну ты не понял сути ридер интерфейса как и не смог в чтение спецификации методов, лол
1577046415idealnaja-grust-perfect-blue-anime-58.jpg149 Кб, 1440x900
101 1908120
>>1908018
Под блядством я подразумевал омерзительную подачу материала.
Это же тур по го, верно? Обязательный для вкатывающихся, как описано в шапке, да?
Кал говна ёбаный.
Материал нормально подается вплоть до описания методов. Потом кучкой идет чисто теория, где тебе надо посмотреть код и прожать кнопку далее и никакого закрепления работы с указателями, методов, интерфейсов нет. А это 80% от этапа по количеству шагов. Остальные 20% - это уже новый материал, краткий пример работы с ним или вообще его отсутствие и непонятное описание того, что от тебя хотят в шаге упражнения.

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

Существует нормальная замена этому туру по го?
Я дошел до rot13Reader и вообще ничего не понял.
Я могу гуглить примеры, но это не то, как должно проходить обучение, ящитаю.
102 1908123
>>1907446
Это всех просят пояснить. Это базовая компьютерная грамотность.
103 1908226
>>1908120
Так тур - это просто вводное ознакомления. Он и не создан для того, чтобы ты вышел из него топ знатоком голэнга.
104 1908228
>>1908123
Питонистов и Джавистов не просят
105 1908231
>>1908123
Компьютерсаенс-шиз, ты?
106 1908239
>>1908120

> Существует нормальная замена этому туру по го?


Так он ахуенный же. По всем основам языка галопом пробегаются. Это же не онлайн курс, тур предполагает как раз ТУР, т.е. ОЗНАКОМЛЕНИЕ с языком. Если что не понятно - нужно гуглить, а не надеяться, что тебе в коротком туре объяснят все до самых мелочей.

А ридеры и райтеры - это тема специфичная, ты её поймешь только после пары крупных статей и самостоятельного дрочева.
107 1908244
>>1908239
Спасибо, приободрил.
Но вообще это выглядит как требование решать рокетсаенс после биквадратных уравнений.
Чуствуешь себя, будто отвлекся на минуту и пропустил объяснение, а объяснения и не было. Зачем тогда там упражнения...
Ладно, я просто попозже вернусь к этому.
108 1908256
>>1908244
Да я сам ахуевал с этих reader/writer. Т.е. как работают понимал, но нахуй настолько низкоуровневая абстракция нужна - не понимал. А когда код начинаешь писать и встречать их везде - понимаешь, что это ахуенный способ перенаправлять потоки байтовой/строковой информации, например os.stdout это readwriter, как и файл. Короче очень удобная хуйня, когда начнешь с stdlib разбираться подробнее.
109 1908381
>>1908256
Классика же, а какую абстракцию потоков байтов ты ожидал увидеть?
110 1908426
>>1908381
Ну я не видел ничего подобного в других языках (не считая чтения с файла), в го впервые столкнулся с настолько аскетичным решением и настолько утвержденным интерфейсом на всю экосистему.
111 1908589
>>1908426
Чтение из файла - это фундаментальная абстракция в unix-like осях, на которой работает все
image.png187 Кб, 985x857
112 1908823
>>1905210 (OP)
ДЖЕНЕРИКИ

Начался процесс апрува последнего диз документа для дженериков :https://blog.golang.org/generics-proposal

Обсуждение вынесено в соответствующий issue на гитхабе: https://github.com/golang/go/issues/43651

Если кратко - в результате этого процесса принимается окончательное решение принимать ли диздок к ИСПОЛНЕНИЮ, поставить на паузу, или полностью отклонить. Отклонять конкретно данное изменение не будут, по сути сейчас происходит процесс окончательного утверждения дизайндока, возможно отправится на доработку.
113 1908829
>>1908823
Скоро в го останется не 100500 вещей, над которыми можно орать, а всего 100499
image.png1,3 Мб, 1189x1189
114 1908830
115 1908831
>>1908829
В твоей мамаше места под хуй не останется зато
116 1908887
>>1908823

> func F[T any](p T) { ... }


Здравый смысл восторжествовал, и типы теперь не в уебанских круглых скобках.
117 1908913
Лампово тут у вас, поцоны. Подпишусь, пожалуй.

мамкин киберсекс с кризисом среднего возраста, решивший на старости лет вяло перетечь в погроммисты из говна безопасности
118 1909078
>>1908887
Чую кучу говнокода не читаемого теперь будет
119 1909079
>>1909078
Лучше, чем костыли с кодогенерацией через vasyan tool.
120 1909105
>>1909079
Как мне теперь оправдывать свое хуепинание? Раньше говорил, что ПРОВЕРЯЮ БЕЗОПАСНОСТЬ КОДОГЕНЕРАТОРА :(((
121 1909592
>>1877742 →
Чистый код читай. Если коротко - весь файл целеком ты все равно не запомнишь, неважно, там 2-3 экрана текста или 15, да и детали реализации методов не важны, пока ты не знаешь где и при каких условиях они вызываются (см любой доклад Григория Петрова, например вот https://www.youtube.com/watch?v=z5WkDQVeYU4).[РАСКРЫТЬ] Тебе в любой момент времени, когда ты смотришь на код, важнее как методы между собой взаимодействуют, а на вопрос - что они сами, непосредственно, делают, тебе в значительной мере должно ответить имя метода. Если же нужно поподробнее - тогда переходишь в скоуп определения функции и уже там повторяешь эти же действия. В большинстве случаев ты , вызывая fmt.Printf думаешь о том, что он выведет тебе что-то в терминал, а не о том, что оно распарсит строку формата, для каждого аргумента чекнет, имплементит ли он один из 3-х методов, меняющих поведение преобразование их в стрингу, в случае дефолтного флага из строки темплейта, если он отличается от дефолтного, скорректировать так же приведение к стринге и на его основании, составит из этого всего слайс байт и запишет этот слайс в специальный файл операционной системы, чтобы результат вывелся на экран.
122 1910429
>>1908823
Ну ещё годик и завезут
123 1910900
Кто-то пилил voip (voice over ip) сервер на го? Расскажите что да как, с какими проблемами сталкивались?
124 1910961
Вопрос вообще по хаскелю, но его тред мертв и в нем тоже зеленые треды и думаю, они работают одинаково.
Вот у шарпах и джсах есть async await. Когда есть длинная IO операция, например скачать файл, то чтобы не лочить основной поток, ты просто передаешь лямбду которая в качестве аргумента примет тот файл. В результате в этом же потоке можно выполнять другой код, а когда файл скачается, то что-то где-то запустит твою лямбду.
А что с этими зелеными потоками? Они тоже эту задачу решают? Потому что в моем понимании, если вызвать такой поток с ио операцией, то у тебя просто будет два потока, один из которых просто будет простаивать и ждать закачки файла. Или рантайм дохуя умный, поймет что поток нихуя не делает и засуспендит его? А откуда он тогда будет знать, когда файл скачается и что надо снова запустить поток?
sage 125 1910975
>>1910961

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


а джс откуда знает, маня? вот и гошечка оттуда же

мимо сениор энтерпрайз goфер
126 1910976
>>1910961
Ну смотри, есть процесс, у него есть очередь с горутинами, он берет из нее горутину и выполняет её в отдельном ос-треде, если горутина переходит в режим ожидания, то планировщик перемещает её обратно в очередь, переключает контекст и берет следующую. Так работает планировщик в го, если у тебя один процесс. В случае ели процессов несколько, то происходит кража горутин и тд. Как это работает в хачкеле, хз.
127 1911014
>>1910961

> А что с этими зелеными потоками? Они тоже эту задачу решают?


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

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


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

Мимо ГОвноеб миддл разработчик
128 1911018
Kek
129 1911057
>>1910975

> мя завут апущенный дауненак=)


В следующий раз как будешь подписываться используй курсив.
130 1911350
>>1911014
То есть когда в гринпотоке запускается ио операция, он помечается "спящим", но также создается и каллбэк, при вызове которого поток перестает быть спящим, и значит рантайм его в скором времени запустит, да?

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

И какие преимущества/недостатки у потоков? Я вижу только плюс - не надо помечать каждую функцию асинхронной, рантайм сам поймет какой поток спит.
131 1911352
>>1911350

> не надо помечать каждую функцию асинхронной


Я про то, что в шарпе для каждой io функции есть асинхронный дубликат, типа File.Read() и File.ReadAsync(). Ну и если я придумаю свою асинхронную либу для хаскеля, то мне придется писать обертки для КАЖДОЙ io функции, тогда как с гринтредами тупо пишешь forkIO <youriofunction> и оно сработает.
132 1911366
>>1911350

> То есть когда в гринпотоке запускается ио операция, он помечается "спящим"


Ну если грубо - то да, так.

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


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

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

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


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

> И какие преимущества/недостатки у потоков?


Чего? Что с чем сравниваешь, недостатки в сравнении с чем?

>Я вижу только плюс - не надо помечать каждую функцию асинхронной, рантайм сам поймет какой поток спит.


Я тебя не понимаю, что помечать, какой поток спит? Что в шарпе что в ГОвне работает все примерно одинаково, просто конструкции языка разные и в ГОвне это все очень просто реализовано, в шарпе больше головной боли, когда дело доходит до взаимодействия между несколькими потоками.
132 1911366
>>1911350

> То есть когда в гринпотоке запускается ио операция, он помечается "спящим"


Ну если грубо - то да, так.

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


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

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

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


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

> И какие преимущества/недостатки у потоков?


Чего? Что с чем сравниваешь, недостатки в сравнении с чем?

>Я вижу только плюс - не надо помечать каждую функцию асинхронной, рантайм сам поймет какой поток спит.


Я тебя не понимаю, что помечать, какой поток спит? Что в шарпе что в ГОвне работает все примерно одинаково, просто конструкции языка разные и в ГОвне это все очень просто реализовано, в шарпе больше головной боли, когда дело доходит до взаимодействия между несколькими потоками.
133 1911369
>>1911352

> типа File.Read() и File.ReadAsync()


Нет, в ГОвне ты можешь любую функцию в любой момент времени выпустить в отдельный тред. Естественно если ты будешь пытаться одновременно писать и читать из файла - получишь пиздов, но я думаю это и так очевидно.
134 1911380
>>1911352
>>1911350
Я допер что ты хочешь. Если кратко - обе модели асинхронности (грин тредов) заебись, в шарпе сильно сложнее, но гораздо больше возможностей по настройке, а в голэнге прям очень простая, но и вариантов тюнинга очень мало. По скорости шо то шо это примерно одинаковы на дженерик задачах, но в шарпе потенциально в некоторых случаях можно выиграть, если будет специфичный сценарий, а в голенге дальше горутин не залезть по сути.
135 1911397
>>1911366

>Я не знаю что ты имеешь в виду под коллбэком.


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

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


Ну я же про это и говорю! В го ты перед тем что хочешь запустить асинхронно пишешь 'go', в хаскеле 'forkIO' или async, если стороннюю либу юзать

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


Простой пример - он быстрее когда твоя задача потенциально асинхронная. Типа есть функция 'if (hasInCache) return fromCache else await returnFromDb()'; В го при вызове такой функции ты по любому создашь гринтред, тогда как в шарпе, с ValueTask если обьект все таки есть в кеше, даже на кучу нихуя выделять не придется.
136 1911432
1. Зачем в го возможность объявлять получателя метода по указателю и без? Почему всегда не передавать указатель на получателя в метод? Метод, привязанный не к указателю всегда будет получать копию структуры. Но какой это имеет смысл, если из-за этого теряется вся идея ООП-моделирования объектов с изменяемым внутренним состоянием? Если мне так нужны иммутабельные объекты, то мне все равно придется руками возвращать из функции копию объекта с новым состоянием. Два способа объявления методов только запутывают, тем более это странно для языка, который позиционирует себя как максимально простой и недвусмысленный.
2. Насколько вообще оправдано использование указателей? Когда я первый раз услышал, что в го есть и гц и указатели, мне это сразу показалось странным. Любые большие объекты - строки, слайсы, мапы - все равно передаются по указателям (ну или около того, главное, что их содержимое целиком не копируется) и на них и так работает гц. В то же время, любой возвращенный по указателю объект создает нагрузку на гц и эта нагрузка порой очень значительна. По-факту получается, что, скажем, гонять структуры между горутинами через каналы выгоднее полным копированием, потому что их передача по указателям просаживает перфоманс. Или я не прав? Во всяком случае мои простые бенчмарки показывают, что между двумя горутинами в канале быстрее передаются копии структур, а не указатели. В то же время невозможность через интерфейс вызвать метод с получателем-указателем не у указателя (преобразование, которое без интерфейсов делает компилятор) заставляет все объекты, скрытые за интерфейсами возвращать по указателям. Из-за этого частично мой 1-й вопрос: почему нельзя было убрать нафиг привязку методов к разным получателям, всегда передавать указатель на объект в метод (разумеется, гц тут задействован бы не был) и убрать вообще указатели целиком в unsafe? В коде бы стало гораздо меньше бардака и больше предопределенности.
137 1911462
>>1911432

> Зачем в го возможность объявлять получателя метода по указателю и без?


Шоб было.

> Но какой это имеет смысл, если из-за этого теряется вся идея ООП-моделирования объектов с изменяемым внутренним состоянием?


А голэнг и не ООП язык, в нем всё - тип.

> Если мне так нужны иммутабельные объекты, то мне все равно придется руками возвращать из функции копию объекта с новым состоянием.


Ну да, как и во всех других языках, лол. А ты что хочешь?

> Два способа объявления методов только запутывают


Чем? Ресивер без поинтера - это аналог статическим методам в других языках. Чем тебя это запутывает? Или ты про то, что человек, использующий метод - не знает четко какой ресивер, пока не посмотрит? Так ему и не нужно знать детали имплементации в большинстве случаев, а когда надо - он все равно полезет в доки, а в голэнге документирование функции происходит прямо над методом. Соответственно любой, кто не знает что метод делает - сразу же все поймет глянув поп ап в IDE.

> Насколько вообще оправдано использование указателей?


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

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


Но ГЦ есть во многих языках с указателями, почему только в ГО тебе это показалось странным? Нужно не на сам факт ГЦ грешить, а на то, что он медленно подбирает с хипы аллокации такие, в шарпе тоже гц их собирает, но гораздо шустрее.

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


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

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


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

> заставляет все объекты, скрытые за интерфейсами возвращать по указателям


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

На самом деле мне вообще не нравится сахар в го, когда дереференс автоматически происходит, мне было бы гораздо удобнее самому дереференсить и интерфейсы и возвращаемые ссылки, ибо как раз из-за такого сахара и появляются недопонимания типа твоего. Интерфейс в го - это тип, конкретный такой тип, и относиться к нему нужно как и к другим типам, никакой магии особой за ним нет, кроме компилятора.
137 1911462
>>1911432

> Зачем в го возможность объявлять получателя метода по указателю и без?


Шоб было.

> Но какой это имеет смысл, если из-за этого теряется вся идея ООП-моделирования объектов с изменяемым внутренним состоянием?


А голэнг и не ООП язык, в нем всё - тип.

> Если мне так нужны иммутабельные объекты, то мне все равно придется руками возвращать из функции копию объекта с новым состоянием.


Ну да, как и во всех других языках, лол. А ты что хочешь?

> Два способа объявления методов только запутывают


Чем? Ресивер без поинтера - это аналог статическим методам в других языках. Чем тебя это запутывает? Или ты про то, что человек, использующий метод - не знает четко какой ресивер, пока не посмотрит? Так ему и не нужно знать детали имплементации в большинстве случаев, а когда надо - он все равно полезет в доки, а в голэнге документирование функции происходит прямо над методом. Соответственно любой, кто не знает что метод делает - сразу же все поймет глянув поп ап в IDE.

> Насколько вообще оправдано использование указателей?


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

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


Но ГЦ есть во многих языках с указателями, почему только в ГО тебе это показалось странным? Нужно не на сам факт ГЦ грешить, а на то, что он медленно подбирает с хипы аллокации такие, в шарпе тоже гц их собирает, но гораздо шустрее.

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


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

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


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

> заставляет все объекты, скрытые за интерфейсами возвращать по указателям


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

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

>лучший в мире язык


Обосраться просто. "Лучший в мире язык"
Полистал тут на досуге мануал по Го и охуел. Что это за уебство? Язык сам по себе мощный засчет свой многопоточной модели но сам код это что-то с чем-то.
Вот что за наркоман придумал экспортировать имена по заглавной букве блять? Что это и главное - нахуя? Почему я не могу как нормальный человек писать export перед переменной?
Можно делать "голый return" блять, в любом нормальном языке конструкция return без ничего возвращает null, тут же она блять вернет объявленные в теле функции переменные, ебануться, подозреваю за такие return-ы без ничего надо сразу увольнять нахуй потому что обмудку видите ли было лениво записать явно переменные
var можно писать при объявлении а можно и хуй забить, заебись, TS на норм проектах уже давно не скомпилится если такое вытворишь, но в "лучшем в мире языке" это с какого-то хуя является фичей
ООП парадигма не юзается, только вот и функциональщина тоже на уровне говна

Лучше уж останусь на ноде и TS
139 1911906
>>1911891

> Язык сам по себе мощный засчет свой многопоточной модели но сам код это что-то с чем-то.


Так на хаскель переходи, там тоже гринпотоки. И дженерики есть, круче чем в любом другом языке.
140 1911907
>>1911891
На мнение такой жалкой хуйни как ты мне абсолютно похуй, жаль твою мать что она не смыла тебя в туалет когда ты кубарем вывалился из её пизды
141 1911908
>>1911891

> я хасю жрать гавно уааа!!


Я тебя услышал, а теперь закрой тред и пиздуй делать уроки, школьник залётный.
142 1911909
>>1911907
Погори еще, чухоня
nodejs господин тебе разрешил
143 1911925
>>1911891

> голый return


Наверняка это говно заимствовано из чего-то вроде паскаля, там вообще функция_нейм := возвращаемое_значение.
144 1911966
>>1911909
Своей гнилодырой шалаве мамаше будешь указывать, говно, которая высрала тебя на этот свет в диком алкоугаре пока я её пиздил по пузу
145 1912020
>>1911891
Про голый return действительно хуёво вышло, по всему остальному сразу понятно, что даже не пытался что-то писать.
1610809574914.png145 Кб, 512x512
146 1912025
>>1912020
Зачем ты отвечаешь залётному школьнику с разумом мартышки?
Очевидно же, что он только оканчивает девятый класс.
147 1912501
>>1912020
а что хуевого-то? в сигнатуре функции же объявляется название возвращаемой переменной. не говоря уже о том, что можно сделать непустой return, явно присвоим значение возвращаемой переменной. имхо, удобно
148 1912775
>>1912501

> имхо, удобно


Нет, добавляет лишний вектор внимания. Ни разу не видел, чтобы использовали такой возврат в коде.
149 1912958
>>1905210 (OP)
нахуй нужен го если есть пайтон
150 1912965
>>1912958

> пайтон


Это который медленный, с GIL и динамической типизацией?
151 1913263
>>1912958

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

152 1913289
>>1912965
Да.Это тот, в котором в 2021м году можно сложить числа в массиве и при этом не насрать 30 строк
153 1913309
>>1913289

> сложить числа в массиве


> в питоне нет массивов



Хуя познавший вселенную затирает про свой любимый питон. Шизик, ты бы хоть типы в своем языке выучил, прежде чем сраться за то, кто где лучше. Хотя сам факт, что ты пришел серить в чужой тред этой хуйней - говорит о тебе, как о человеке низкого интеллекта. Так уж и быть, на первый раз простим блаженного, но больше не пиши сюда, чмок :*
154 1913319
>>1913289
Так часто массивы суммируешь? Понимаю, хаскеллисты вон вообще факториалы любят считать.
image.png6 Кб, 336x146
155 1913364
>>1913289

> в 2021м году можно сложить числа в массиве и при этом не насрать 30 строк



Долбаеб, совсем ебнулся там уже в своем загоне ПАЙТОН РАЗРАБОТЧИКОВ?
156 1913386
>>1913289
Зато конкурентность и паралелизм удобно имплементировать. А в питоне такая ебень с этим asyncio, так ещё и GIL, пиздец просто, постоянно приходится узкие места на С переписывать, я бы тебя понял если бы ты противопоставил Джаву какую нибудь. А про сумму ты вообще хуйню написал, в ML алгоритмах её конечно часто используют, но мы тут байтоёбим и круды шлепаем, кто-то сервисы всякие интересные пилит, пока что ни разу не приходилось использовать сумму массива, на столько часто, чтобы мне понадобилась функция sum. Покормил зелёного.
157 1913438
>>1912501
Партия считает, что это сомнительная конструкция https://github.com/golang/go/wiki/CodeReviewComments#naked-returns
158 1913611
>>1913364

>это цикл for для суммы массива...


Блять, пистонисты и го-дрочеры совсем там уже пизданулись и отучились прогать как белые люди?
жс-бог решает такую задачу максимально нативно в 1 reduce
159 1913621
>>1913611

> пистонисты


Как насчёт более "нативного" решения в один sum?
160 1913623
>>1913309

> в питоне нет массивов


Это бы ты для начала подучил хоть сколько-нибудь матчасть. Охуеешь узнав что list на самом деле нихуя не linked list а динамический массив блять
161 1913658
>>1913623

> матчасть


Хуясть. С точки зрения программиста на питоне это именно список, а implementation-specific детали - это не про синтаксис языка, а про его реализацию. Так можно дойти до того, что и массивов как отдельной сущности не существует, это просто несколько ячеек подряд в памяти.
162 1913665
>>1913623

> динамический массив


Какой же ты тупой... Список в Питоне не является массивом, даже динамическим. В питоне это не динамический массив, а кастомная хэш мапа с хэш функцией, это даже не массив значений, это массив ссылок на значения, а из-за типизации питона сам масив уже начнет появляться чуть ли не на уровне интерпретатора d6. Да, где-то там на каком-то из нижних уровней это действительно динамический массив, но только после нескольких шагов нормализации, да и не может там не быть массива, даже под хэш массивами пхп в Си уже идут массивы с аллокациями, лол.
image.png23 Кб, 642x195
163 1913674
>>1913621
>>1913611
Как там сосется, когда даже если обложился линтерами и тестами по самые яйца - твой код может в любой момент послать тебя нахуй, да и то только в рантайме на проде? Чисто ловите кайф там наверное, когда каждый пук надо дебажить через принт, чтобы ей богу все нормально работало :3
164 1913900
>>1913438
переобуваюсь, извините
165 1913903
Пиздец, стоило мне просто добавить fmt.Spritf(...) с одним параметром и я от пик1 перешёл в пик2. Это что за залупа? В самой программе просто гоняю байты по каналам, а с помощью spritf форматирую.
166 1913908
>>1913674
Обоссанец, мне похуя че там в пистоне. Я на TS пишу, смекаешь?
Как сосется?
167 1913909
>>1913903
Если форматирование простое - можешь использовать вместо этого strings.Join/Builder, если сложное - темплейты.
168 1913946
>>1913909
Спасибо, частично проблему решило, но потом заметил что у меня горутины утекают.
169 1913951
>>1913908
Ну тогда только пожалеть тебя могу, юродивый жс макакен с пародией на нормальный язык.
170 1913952
>>1913903

> От пик1 в пик2



Т.е. ускорил программу? Чегоблять?
171 1913961
>>1913952
Использование памяти с приблизительно логарифма перешло в экспоненту
Screenshot20210118105549.png53 Кб, 1172x332
172 1913972
>>1913908
Ну, Jedem das Seine

Я лично свичнулся из TS в Go и очень доволен. Есть, конечно, в TS вещи, которые мне реально очень нравятся - например, перегрузки методов - такого никогда не будет в Go, но это нормально, что языки не похожи между собой, в этом-то и суть создания нового языка.
К слову о перегрузках в TS - они там работают не так, как в каких-нибуть крестах, где на каждый перегруз своя реализация. Нет, в TS - у тебя на уровне типов несколько сигнатур, а на уровне реализации - эта одна и та же функция. Это очень удобно, когда тебе в метод нужно передать либо один аргумент, а второй - оставить пустым, либо - наоборот. В итоге правильность вызова твоего метода проверяет компилятор и тебе не нужно отдельно внутри метода проверять, все ли правильно передали и падать, если нет.
173 1914007
>>1913665

>В питоне это не динамический массив, а кастомная хэш мапа с хэш функцией


Чиво?) Хоть понимаешь что такое HashMap, вкатун?
174 1914040
>>1913674
Линтерами обложился а про тайпинг забыл
как линтер что-то покажет связанное с типами если ты эти типы не указал? первый раз с динамической типизацией дело имеешь?
175 1914061
>>1914040
Какой тайпинг? В питоне его нет, есть только аннотации, игнорируемые интерпретатором и доступные через рефлексию. Даже в пхп тайпинга больше, чем в Питоне. Под линтерами и статический анализатор понимается, если ты не в курсе. Иди пердантик подтягивай да юнит тестами обкладывайся, манька.

Мимо питонист+го боярин
176 1914572
>>1914007
Подожди, не мешай человеку позориться.
177 1914580
>>1905210 (OP)
Какой тонкий намёк любителям русека
178 1914583
>>1914580
Хотя это происходит при выборе любого языка
179 1914623
>>1914580
Ну да, учите английский, кек :3
180 1915289
>>1914580
На крайняк можно на убекче пройти.
181 1915911
Гофаны, там ioutil депрекейтнули https://github.com/golang/go/issues/42026
182 1915925
>>1915911
Жду, когда выпустят Go 2 с полностью сломанной обратной совместимостью, чтобы все ещё сильнее охуели, чем с Python 2 и 3.
183 1915944
>>1915925
Сломанной совместимости НЕ БУ ДЕТ
184 1915945
>>1915944
Потому что не будет Go 2?))0
185 1915984
>>1915945
У нас к концу года ток 1.18 бета с дегенериками, вот там как заживём, какой Go2, НИНУЖОН!
186 1915988
>>1915911
Ээээ блять куда ты лезешь лол тебя сожрёт, что за нахуй? Норм же пакет был. Нужно почитать что там нахуевертили. Чую без Роба Пайка щас революцию устроят и весь язык перелопатят.
187 1915993
>>1915911
>>1915988
Почитал ишью. Тогда заебись, раз перенесли в более подходящий пакет методы. Сам постоянно ахуевал почему в ioutill столько хуйни разной.
188 1917711
>>1915993

>Сам постоянно ахуевал почему в ioutill столько хуйни разной.


А по тому что это сама суть helper/utill файлов/пакетов - это всегда ебаное нагромождение никак не связанной между собой хуйни, хорошо если оно хотя бы достаточно абстрактное и универсальное но зачастую - нет.
У меня на проекте тимлид если такое видит - не позволяет замержить PR, и правильно делает.
189 1918244
>>1917711
Не позволяет юзать эту встроенную либу? Хуя дикий тимлид.
190 1918787
>>1918244
Не позволяет создавать helper/util пакеты
191 1919314
>>1918787
А, ну эт правильно
192 1919438
>>1918787
С такими названиями типа?
193 1919676
>>1919438
Речь не только о названии, а вообще о идее пакета с абстрактными хелперами без какой-либо тематики
194 1922353
Бля пизда, бугурт от ТИМЛИДОВ 16-го года выпуска из универа.
Предложили собес на позицию го-разраба. В вакансии было "знание основ python". Ну да бог с ним, хули там знать.
Созвон с якобы техлидом команды. С самого начала были звоночки охуенные в виде "30% на го, 25% на питоне, остальное - девопс". Ну ладно, тоже схавал, хули нам развернуть кубер с нжинкс. Дальше пошли охуительные вопросы в виде "как интерфейсы го на уровне компилятора работают", "что такое рантайм после моей тирады о компайл тайме и ран тайме он сказал, что имел ввиду runtime либу...", "системные вызовы gc". И ещё куча охуительных вопросов уровня "я вчера это узнал, доебу кандидата теперь" которые никаким нахуй боком к реальной разработке не относятся. Ответ о том, что мне предпочли другого кандидата поступил не через пару дней, а неделю. Охуеть. Чекнул профиль этого тимлида. Выпустился из вуза в 16-17 году, в пет проектах на тру щщах моды к каким-то ноунейм играм, стек языков мама не горюй, там начиная от java, заканчивая Lua, R и Хаскелем. На собесе было видно, что чувак не в курсе го ни капли, слов go-way и best practices не слышал явно. Я ещё с ним успел поспорить, он там где-то явно обосрался. Слава богу не прошел.
195 1923131
Как написать свой первый проект? На работах везде просят в тех задании завести http + grpc говно, как это научиться самому делать? Я могу только смотреть на код, который друг делает и по памяти его писать, это же не понимание ни разу. Алсо вот эти все роутеры-хуёутеры, middleware, как вообще вы в голове выстраиваете логику? Бекграунд: вкатываюсь в го с августа, делал перерыв на сдачу сессии, в вузе учат железкам и немного(совсем немного) С/С++. Немного дрочил питон, когда надо было по численным методам задачи решать. Пытался в курс по го на курсере от мэйла, там видимо для людей с опытом, потому что почти всё подаётся как данность. Посоветуйте что-нибудь
196 1923146
Как сейчас с работой для джунов? Когда пробовал что-то найти в октябре, нашёл не "3 года опыта" примерно 2 раза и оба раза даже не перезванивали на отклик
197 1923251
>>1923131
Раз учат железкам - вкатывайся на железки.
198 1923268
>>1923251
учат деды, технологиям которые они "сами изобрели". Просто не вижу смысла, мне это не интересно, к тому же качество обучения довольно низкое
199 1923271
>>1923131

>как это научиться самому делать http + grpc


>как вообще вы в голове выстраиваете логику роутеры-хуёутеры, middleware


>вкатываюсь в го с августа


Пиздец анончик лучше бы бросал свою шарагу...
200 1923280
>>1923271
Бросание шараги приведёт только к забору в армию, по сути в шарагу можно избирательно ходить и заниматься полезными делами. А что-нибудь кроме вот этого вот "ебать ты тупой" можешь сказать?
201 1923289
>>1923131
Да похуй на grpc. Ты просто обычный проект запили. Например чат на сокетах, делай сам, либо бери смотри пример типа "simple concurent go chat" и дополняй его. Вот просто садишься и пишешь код, как конструктор собирать. Если не знаешь ООП, пилить проекты лучше не начинать.
202 1923296
>>1923289
знаю ООП, ну как знаю. Писал игрушку небольшую(кликер) на плюсах, ну и был курс в вузе и игрушка была курсовой работой. Мне кажется, что я разобрался, + когда читал по Го 2 книги, в обеих в общем-то всё про ООП было понятно. Алсо немного непонятно, как же я тогда научусь строить базу проекта, если я буду просто допиливать что-то другое. Твоему совету я конечно обязательно последую, спасибо. Такое на гитхабе можно найти, верно?
203 1923300
>>1923296
и по поводу "похуй на grpc", не похуй. Во всех вакансиях это пишут
204 1923306
>>1923289
>>1923131
Правда если ты хочешь как можно быстрее на галеру попасть и ты пока что не осилил даже grpc, то лучше бы тебе начать с низов. Понять как вообще го работает, сборщик мусора, планировщик и тд. Потом берешь книжку где тебе все разжуют по части web разработки. Видио смотри, короче, эта хуйня с опытом приходит. И кстати, настоятельно рекомендую разобраться с concurrency моделью языка, научись писать так чтобы было быстрее чем обычная, при этом избегая утечек памяти и горутин все это блять в книжках есть, даже больше.
205 1923312
>>1923306
конкретные есть примеры с разжёвыванием web разработки? Что посоветуешь? По конкарэнси начинал читать книженцию, попробую ещё раз начать, пока вообще ничего не понятно в этом аспекте.
206 1923316
>>1923296
Да, все ищется в гугле. Как таковой базы, в примерах нет, ты должен будешь потом сам все раскидать по модулям, по мере роста проекта учитывая основы ООП. https: //gist.github.com/kenshinx/5796276
Вот например, можно вынести Read/Write входящего подключения в отдельный модуль, добавить мапу подключений и тд.

>>1923312
Butcher M., Farina M. - Go in Practice
Правда она 2016, и много чего изменилось в плане GC и планировщика, но на первый раз сойдет.
207 1923377
>>1923312
Читать книжки вкатывальщикам - пустая трата времени
Поставь себе задачу и решай её, лол.
Голанг тур включает в себя 80% технической части любого хттп веб бека
208 1923387
>>1923377
Лол, ведь все умеют просто поставить задачу и просто её решить, лол
209 1923398
>>1923387
Ну если у тебя нет задач в чём тогда проблема?
210 1923401
>>1923398
Ну я тур 2 раза вдоль и поперёк изъездил и я не понимаю, где ты там нашёл 80%
211 1923667
>>1923131
Не слушай шизов сверху которые несут какой то пиздец. Харкнул на ебало долбоебу, который советует разбираться с gc и планировщиков челу который не может сделать простой круд. И долбоебам с книжками тоже харкнул.

Берешь, ищешь на ютубе видосы по типу: "Делаем хуйнянейм микросервис на го". Смотришь, и повторяешь за чуваком, не думая, что он делает. Как сделал, потыкал попробовал, что работает. Закрываешь проект. Создаешь новый и делаешь тоже самое, только уже самостоятельно, пытаясь вспомнить, что надо делать, подсматривая в свой код и видос. После этого придумываешь что то похожее и делаешь уже самостоятельно. После первого, ну или второго раза у тебя появится понимание, что вообще хотя бы можно делать, а дальше уже начинаешь заниматься оптимизациями улучшениями и прочей хуйней по типу gc
212 1923930
>>1923131
Изучаешь с азов язык. Затем изучаешь стандартные либы типа http, пробуя писать хеллоуворлды, когда понял как те же хендлеры и хендлфанки между собой работают уже можешь следовать совету этого долбаеба: >>1923667

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

Короче в любом случае придется дрочить сам язык и его тонкости, иначе тебя любой адекватный вкатун обоссыт и работу ты будешь искать очень долго и "на удачу", что хуево само по себе.
213 1923936
>>1923387

> все умеют просто поставить задачу и просто её решить


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

>>1923377
Таки тур только говнокодить тебя научит. Нужно еще учиться гуглить и отличать говноинфу (а-ля "пишем апи за пол часа" от нормальных гайдов) и фильтровать знания.
image.png216 Кб, 431x362
214 1923945
>>1923667

> Берешь, ищешь на ютубе видосы по типу: "Делаем хуйнянейм микросервис на го"



ДОБРЫЙ ДЕНЬ, ПРИСАЖИВАЙТЕСЬ
@
ЗНАКОМЫ С ИНТЕРФЕЙСАМИ Reader/Writer?
@
ПУК СРЕНЬК НЕТ
@
НУ ЛАДНО, А РАССКАЖИТЕ, ПОЖАЛУЙСТА, КАК РАБОТАЕТ СЛАЙС И КАКИЕ НЕОЧЕВИДНЫЕ МОМЕНТЫ СУЩЕСТВУЮТ? ЧТО ТАКОЕ ДЛИНА И КАПАСИТИ СЛАЙСА, ЧЕМ ОТЛИЧАЮТСЯ?
@
ЭММ, НУУ, ПУК СРЕНЬК НИЗНАЮ, НУ ДЛИНА ЭТО СКОЛЬКА ЭЛЕМЕНТОВ В НЕМ ВОТ ПУК СРЕНЬК
@
ХММ, ПОНЯТНО. А С ПАКЕТОМ HTTP ЗНАКОМЫ, ПРОБОВАЛИ ПИСАТЬ ЧТО-ТО?
@
ДА, КОНЕЧНО, ПИСАЛ МИКРОСЕРВИСЫ С HTTP И ВСТРОЕННЫМ СЕРВЕРОМ, ИСПОЛЬЗОВАЛ МУКС ИЗ ДЖИНА/ГОРИЛЛЫ/АЛЛАХА!!!!!!!!!!! СТРУКТУРЫ-СЕРВИСЫ, КЛИН КОД!!!!!
@
О, ОТЛИЧНО, КАК ПОДХОДИТЕ К ВОПРОСУ ЛОГИРОВАНИЯ В СЕРВИСЕ?
@
ЭММ, НУ, МММ НУ СОЗДАЮ ЛОГГЕР ИЗ ПАКЕТА НУ И ПРЯМО ВЫЗЫВАЮ В КОДЕ ГДЕ НУЖНО, А ЧТО?
@
ХММ, НУ ДОПУСТИМ, А ЗНАКОМЫ СО СТРУКТУРИРОВАННЫМ ЛОГИРОВАНИЕМ?
@
ЭММ, ПУК СРЕНЬК, НУ ДА КОНЕЧНО В БИБЛИОТЕКАХ ПИШУТ ЧТО ИХ ЛОГИ СТРУКТУРИРОВАННЫЕ
@
ПОНЯТНО, ПРЯМО КОНКРЕТНЫЙ ЛОГГЕР ДЕРГАЕТЕ В БИЗНЕС ЛОГИКЕ?
@
ПУК, БИЗНЕС ЧТО?
@
ПОНЯТНО, МЫ ВАМ ПЕРЕЗВОНИМ
image.png216 Кб, 431x362
214 1923945
>>1923667

> Берешь, ищешь на ютубе видосы по типу: "Делаем хуйнянейм микросервис на го"



ДОБРЫЙ ДЕНЬ, ПРИСАЖИВАЙТЕСЬ
@
ЗНАКОМЫ С ИНТЕРФЕЙСАМИ Reader/Writer?
@
ПУК СРЕНЬК НЕТ
@
НУ ЛАДНО, А РАССКАЖИТЕ, ПОЖАЛУЙСТА, КАК РАБОТАЕТ СЛАЙС И КАКИЕ НЕОЧЕВИДНЫЕ МОМЕНТЫ СУЩЕСТВУЮТ? ЧТО ТАКОЕ ДЛИНА И КАПАСИТИ СЛАЙСА, ЧЕМ ОТЛИЧАЮТСЯ?
@
ЭММ, НУУ, ПУК СРЕНЬК НИЗНАЮ, НУ ДЛИНА ЭТО СКОЛЬКА ЭЛЕМЕНТОВ В НЕМ ВОТ ПУК СРЕНЬК
@
ХММ, ПОНЯТНО. А С ПАКЕТОМ HTTP ЗНАКОМЫ, ПРОБОВАЛИ ПИСАТЬ ЧТО-ТО?
@
ДА, КОНЕЧНО, ПИСАЛ МИКРОСЕРВИСЫ С HTTP И ВСТРОЕННЫМ СЕРВЕРОМ, ИСПОЛЬЗОВАЛ МУКС ИЗ ДЖИНА/ГОРИЛЛЫ/АЛЛАХА!!!!!!!!!!! СТРУКТУРЫ-СЕРВИСЫ, КЛИН КОД!!!!!
@
О, ОТЛИЧНО, КАК ПОДХОДИТЕ К ВОПРОСУ ЛОГИРОВАНИЯ В СЕРВИСЕ?
@
ЭММ, НУ, МММ НУ СОЗДАЮ ЛОГГЕР ИЗ ПАКЕТА НУ И ПРЯМО ВЫЗЫВАЮ В КОДЕ ГДЕ НУЖНО, А ЧТО?
@
ХММ, НУ ДОПУСТИМ, А ЗНАКОМЫ СО СТРУКТУРИРОВАННЫМ ЛОГИРОВАНИЕМ?
@
ЭММ, ПУК СРЕНЬК, НУ ДА КОНЕЧНО В БИБЛИОТЕКАХ ПИШУТ ЧТО ИХ ЛОГИ СТРУКТУРИРОВАННЫЕ
@
ПОНЯТНО, ПРЯМО КОНКРЕТНЫЙ ЛОГГЕР ДЕРГАЕТЕ В БИЗНЕС ЛОГИКЕ?
@
ПУК, БИЗНЕС ЧТО?
@
ПОНЯТНО, МЫ ВАМ ПЕРЕЗВОНИМ
215 1924175
>>1923945
То чувство, когда даже не был на собесе ни разу, только 1 раз кринжово поболтал с hr, которому пояснял, почему не хочу работать на плюсах и как там чёрт ногу сломит и конкуренция такая, что надо всякие спорт. программирования дрочить, на что получил ответ "а что для работы на го этого не нужно?"
Начал пояснять про то, что го сделан был для упрощения разработки и реально не нужно, в итоге "мы вам перезвоним"
216 1924181
>>1924175
То есть ты прямо признался hr, что боишься конкурировать и решать сложные задачи, пчел...
мимо
217 1924216
Раз пошла такая пьянка, то накидайте где читать про внутрянку гошки, а-ля планировщик, garbage collector и все остальное под капотом. Пока кроме исходников ниче не находил толкового
218 1924311
>>1924216
В англоязычном тырнете чуть ли не до построчного чтения исходников есть статьи, ты о чем, лол.
219 1924321
>>1923945

> ДОБРЫЙ ДЕНЬ, ПРИСАЖИВАЙТЕСЬ


Куда присаживаться долбоеб, я итак дома уже сижу

> ЗНАКОМЫ С ИНТЕРФЕЙСАМИ Reader/Writer?


Нет, и не ебет. Да и вообще не нужна

> НУ ЛАДНО, А РАССКАЖИТЕ, ПОЖАЛУЙСТА, КАК РАБОТАЕТ СЛАЙС И КАКИЕ НЕОЧЕВИДНЫЕ МОМЕНТЫ СУЩЕСТВУЮТ? ЧТО ТАКОЕ ДЛИНА И КАПАСИТИ СЛАЙСА, ЧЕМ ОТЛИЧАЮТСЯ?


Все очевидно если хуйней не страдать

> ХММ, ПОНЯТНО. А С ПАКЕТОМ HTTP ЗНАКОМЫ, ПРОБОВАЛИ ПИСАТЬ ЧТО-ТО?


Нет, а нахуя?? Беру блять корпоративный фреймворк и хуе мое, какой вообще нахуй http, когда все на grpc

> О, ОТЛИЧНО, КАК ПОДХОДИТЕ К ВОПРОСУ ЛОГИРОВАНИЯ В СЕРВИСЕ?


Берешь и логгируешь, главное без задей мысли и json'а в логах, а то sre за гаражами пиздов надают

> ХММ, НУ ДОПУСТИМ, А ЗНАКОМЫ СО СТРУКТУРИРОВАННЫМ ЛОГИРОВАНИЕМ?


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

> ПОНЯТНО, ПРЯМО КОНКРЕТНЫЙ ЛОГГЕР ДЕРГАЕТЕ В БИЗНЕС ЛОГИКЕ?


Чо блять, а ты заново интерфейсы для логера в каждом сервисе хуячишь? Часто логеры на проекте меняете? ))0)
Ну и в норм компаниях уже есть платформенные либы для этого, так что да, беру и дергаю, но повторяю, главное без задней мысли

> ПОНЯТНО, МЫ ВАМ ПЕРЕЗВОНИМ


Это я вам перезвоню после таких вопросов

Ждун вкатун, ты? Узнал тебя по твоим шизоидным вопросам

мимо сеньор-помидор 300к/нс
220 1924358
>>1924321
Обкекался с толстоты
221 1924412
>>1924175
Зачем вообще дрочить спорт. программирование? И как это вообще связано с языком? Где ты начитался этой хуйни?
222 1924417
>>1924311
(другой анон)
Ну вот, блять, возьми и дай ссылку. Где вас таких делают?
223 1924520
>>1924181
у тебя видимо нормально всё с логикой. Где я сказал, что для го разработчика не нужна компетентность? Я лишь обозначил, что конкуренция в плюсах слишком большая и многие вкатываются через какой-то лютый пиздец, чтобы среди кандидатов выделиться. Алсо 1 разговор с hr в жизни, почему бы и не обосраться
224 1924523
>>1924412
на реальных примерах своих знакомых, которые вышли в финал чемпионата ДС и чел за 2 недели перекатился на го, а я тут уже полгода и всё ещё нихуя не могу
225 1924567
>>1924417
Какую ссылку? Ты хочешь один изи гайд по всей внутрянке го? Совсем ебнулся? Это все разбросано на разные статьи. Что интересно - то изучай. Это программирование, а не сказочный мир с понями, надо самому изучать, в рот тебе никто просто так знания не засунет.
Q5DYRjpcuvM.jpg37 Кб, 809x502
226 1925509
Что в этом говне написать, чтобы меня нахуй не послали?
227 1925616
>>1925509
"Я разработчик-рокзвезда"
go.png629 Кб, 592x1000
228 1925629
>>1905210 (OP)
Какой брать веб-фреймворк если я нодадебил на перекате?
Что там есть мейнстримовое, но чтоб без особых языковых наворотов?
спасиба
229 1925691
>>1925629
Без фреймворков. Ток либы.
230 1925693
>>1925629
Не слушай тех, кто "без фреймворков", у них эволюция вспять пошла. Лет через 30 Go таким макаром может и будет как другие языки сейчас.
231 1925729
>>1925693
Так а нахуя в го веб фреймворк? Стандартный сервер пишется в несколько строк кода, он уже является веб фреймворком. Единственное чего он не предоставляет - нормального роутинга, но для роутинга как раз уже стоит взять библиотеку. Вот у тебя и сервер. Хендлеры это те же контроллеры. Никто в го не юзает веб фреймворки (да и их нет по сути толком), ибо стандартные средства + пара либ и так ультра просто позволяют писать серваки.
232 1925806
>>1925691
>>1925693
>>1925729
Так а брать-то что? Названия какие?
233 1925814
>>1925729
Дело в кучи бойлерплейта, который при этом возникает.
А именно - весь роутинг может быть сгенерен по шаблону. Как и все говно-хттп хендлеры могут быть сгенерены из обычных функций.
handler(inputType) outputType
Задача фреймворка - избавиться от необходимости писать валидацию входного мусора и сериализацию выходного мусора.

Понятно, что существующие фреймворки говно полное, но не отменяет факта, что нужно создать нормальный. А нормальный в го возможен только на основе кодогена.
234 1925889
>>1925814

> А нормальный в го возможен только на основе кодогена.


Почему? Хоть один пример приведи, где дженерики понадобятся, кроме бизнес логики, лол.
235 1925918
>>1925806
Не слушай долбоеба с фреймворками, это тебе не джава какая нибудь, где ты фактически на Java-developer, а Spring-developer. Можешь ничего не брать сначала и так попробовать. Для роутинга можешь взять https://github.com/go-chi/chi

И еще вот, принес вам нормального кодогена https://github.com/utrack/clay
236 1925990
>>1925918
Спасибо
237 1925994
>>1925918

>нормального кодогена https://github.com/utrack/clay


Выглядит как говнокод неконсистентный.
238 1925996
>>1925509
"Не шлите нахуй, пожалуйста"
16028901549780.jpg423 Кб, 2400x1500
239 1926156
.NET макака хочу вкатиться в Go (есть опыт с Си), какие подводные камни? работа есть? зарплата у гоАнонов сравнится с дотнет тырпрайзом или выше?

заебал дотнет я его уже наизусть знаю и просто тошнит, хочется чего то нового
240 1926163
>>1926156
Ты же понимаешь, что это всё оч индивидуально? Зависит от скиллов, опыта, компании.
Имхо: в го перспективы получше чем в .net.
241 1926174
>>1926163

Ну по сравнению с C#, Go выглядит как очень мелкий и straightforward язык который я осилю достаточно быстро, ИМХО.

Меня заебало то что С# по размерам раздули как C++ и одну вещь можно сделать 25 разными способами. Я то не против синтаксического сахара и возможностей, но когда работаешь с кодом ебанных дегенератов это выбешивает
DxTs42zXQAELvWb.jpg large.jpg97 Кб, 1645x939
242 1926200
243 1926224
Я тоже на суслика хочу перекатиться!
мимо вордпресс боярин
244 1926227
Толпы восторженных любителей хайпа перекатываются в пщ из самых разных языков...
c0ee5920-67ef-11e7-b9cc-233c1fe1f1c7Laughing-2.gif1,3 Мб, 500x282
245 1926241
>>1926224

>вордпресс


>боярин

246 1926260
>>1926227

>хайпа


А в чём хайп?
Go один из самых критикуемых языков за дизайн и возможности.
У Go довольная узкая специализация.
Go - это не Rust, не Dart и даже не Kotlin в плане хайпа, это тупо инструмент для решения задач (оч. прикладных и оч. специфических). Популярность Go сейчас не столько основана на рекламе, сколько на том, что он уже несколько лет широко используется в продакшене.
247 1926333
>>1926174

> Ну по сравнению с C#, Go выглядит как очень мелкий и straightforward


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

После 2 лет кодоебства на Го я понял одно - нихуя там не один способ решения проблемы, как любят говорить. Их миллиарды, блять.
248 1926334
>>1926260

> Go один из самых критикуемых языков за дизайн и возможности.



ПХП, ЖС, Раст и Хаскель нервно курят в сторонке.
249 1926352
>>1926334

>Хаскель


А этот тут причём?

>ЖС


Отличный язык.

>ПХП, Раст


Для того, чтоб понять в чём у них проблема - нужно погрузиться внутрь. Проблемы Go валяются на поверхности и их не пинает только ленивый.

Короче - нюфань плиз.
250 1926368
>>1926352

> А этот тут причём?


Говноязык от которого все плюются, кроме группы фанатиков

> Отличный язык.


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

> Для того, чтоб понять в чём у них проблема - нужно погрузиться внутрь. Проблемы Go валяются на поверхности и их не пинает только ленивый.


Не нужно погружаться. Легаси функциональщина и $_POST в пхп и один взгляд на синтаксис раста - уже ред флаги поднимает. В голэнге на поверхности только отсутствие дженериков и своеобразная обработка ошибок. Да и то, это не столько косяки, сколько СВОЙ ПУТЬ прямо как у России!!!

> Короче - нюфань плиз.


Ну я хоть писал и немного изучал вышеупомянутые языки, а не просто языком чешу, как ты.
251 1926378
>>1926241
Ну мне посоветовали на дваче учить пхп вместо питона, потому что меньше конкуренции и вообще это лучший язык для вебни. Я и выучил! Сдавал тестовые на ларавеле, а по факту вот посадили на вордпрес. И хули, оказывается почти весь рынок пыхи такой.
Я мечтаю выбраться с этого дна.
252 1926379
>>1926352

>Проблемы Go валяются на поверхности и их не пинает только ленивый.


Так в этом и проблема, что их пинают только те, кто на нем не пишет. Если ты на нем пишешь в продакшене, что тебе конретно не хватает и какая там прям реальная проблема?

Я могу только сказать, что не очень удобно ебаться с пустыми интерфейсами и ловить из за них несоотвествие типов в рантайме, а не на этапе компиляции
253 1926382
>>1926378

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


Скорее ты просто долбаеб, если на вордпресс только взяли. Тебе проще тогда уборщиком пойти, кодерство - не твоё.
254 1926385
>>1926382
Скорее всего ты в продуктовых компаниях работаешь, а не на мухосранских кабанов
255 1926386
>>1926368

>Говноязык от которого все плюются


>Поэтому доля тайпскрипта больше натива


>один взгляд на синтаксис раста


>$_POST



Это и есть "чесать" языком. Каждый пункт просто высер мимокрока, особенно про $_POST в php и про тайпскрипт кринжатура.

>Да и то, это не столько косяки, сколько СВОЙ ПУТЬ


Ну да, у го "свой путь", а у других языков "ред флаги".

>Ну я хоть писал и немного изучал вышеупомянутые языки


Хеллоуворлдщик, плиз.

>>1926379

>Так в этом и проблема, что их пинают только те ...


Поэтому он и один из самых критикуемых.
256 1926391
>>1926386
Ты ни одного аргумента не привел, я же привел первые попавшие в голову. Любой человек поймет эти претензии, а не будет хуйню нести как ты. Какой нахуй свой путь? Это рофл был, деревянный ты мой. Го точно также косяки имеет. Но он не самый критикуемый, а просто критикуемый. Питон жоще критикуют, чем Го, лол, о чем речь?
257 1926397
>>1926386

> Go один из самых критикуемых



Гугл и все найденные статистики шлют тебя нахуй, Go один из менее критикуемых, получается, лол. https://appetiser.com.au/blog/the-most-loved-and-hated-programming-languages-according-to-developers/
image.png91 Кб, 900x675
258 1926398
>>1926260

> пук среньк мне нинравица значит никаму нинраца!!!1

259 1926401
>>1926397
Я имею ввиду из новых языков. К слову, Rust там вообще нет? Вау.
Я уж молчу про то, что чем популярней язык, тем он более disliked по этим статистикам.

>>1926398
Проецируйщий долбоёб, я ни слова не сказал про нравится/не нравится. Я таким образом о языках не высказываюсь. Конкретно мне, например, Go нравится, я на нём пишу. А вот тебе нужно головой думать, а не жопой.
Хватит рваться на полтреда.
260 1926406
>>1926401

> К слову, Rust там вообще нет?


Есть, лол.

> Я имею ввиду из новых языков.


ЭТА ДРУГОИ? Ты изначально просто пизданул, что он один из самых критикуемых. Тебе сказали, что наоборот один из самых любимых. А ты теперь жопой виляешь.

> Проецируйщий долбоёб


Что проецирующий? Ты сказал, что его все критикуют, я сказал, что нет и привел тебе подтверждающую статистику. Иди нахуй с треда, ты слит.
мидлразработчик с зоны.jpg12 Кб, 700x141
261 1926417
>>1926391
>>1926368

>Говноязык от которого все плюются, кроме группы фанатиков


Ты скозал? Это вот твои "аргументы"? В чём поинт?
Если функциональщина для тебя эта сложна, то маме с папой жалуйся на свой iq, а не нам.

>без ООП


О боже. Без ооп? Правда? Да как так можно?
Долбоёб берет язык без ооп, костылит на нём ооп и жалуется что всё работает через зад.

>ебанутым приведением типов


Это единственная годная претензия к языку со слабой (!) типизацией.

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


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

>$_POST


Недостаточно просто высрать из мозга слова, они должны иметь смысл. Что $_POST? Что у тебя с ним не так? Ты знаешь зачем он там? Почему он такой?

>один взгляд на синтаксис раста


Это тоже "аргумент"?

>Не нужно погружаться


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

>немного изучал


По мемам?
мидлразработчик с зоны.jpg12 Кб, 700x141
261 1926417
>>1926391
>>1926368

>Говноязык от которого все плюются, кроме группы фанатиков


Ты скозал? Это вот твои "аргументы"? В чём поинт?
Если функциональщина для тебя эта сложна, то маме с папой жалуйся на свой iq, а не нам.

>без ООП


О боже. Без ооп? Правда? Да как так можно?
Долбоёб берет язык без ооп, костылит на нём ооп и жалуется что всё работает через зад.

>ебанутым приведением типов


Это единственная годная претензия к языку со слабой (!) типизацией.

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


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

>$_POST


Недостаточно просто высрать из мозга слова, они должны иметь смысл. Что $_POST? Что у тебя с ним не так? Ты знаешь зачем он там? Почему он такой?

>один взгляд на синтаксис раста


Это тоже "аргумент"?

>Не нужно погружаться


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

>немного изучал


По мемам?
262 1926420
>>1926406

> Есть, лол.


>


> The Most Disliked Programming Languages:


> VBA – 75.2%


> Objective-C – 68.7%


> Assembly – 64.4%


> C – 57.5%


> PHP – 54.2%


> Erlang – 52.6%


> Ruby – 49.7%


> R – 48.3%


> C++ – 48.0%


> Java – 46.6%


> Scala – 41.7%


> Bash/Shell/PowerShell – 40.5%


> F# – 38.3%


> HTML/CSS – 37.8%


> SQL – 35.9%


> Dart – 33.7%


> JavaScript – 33.2%


> C# – 33.0%


> Go – 32.1%


> Elixir – 31.8%


> Clojure – 31.7%


> Swift – 30.8%


> WebAssembly – 30.5%


> Kotlin – 27.4%


> TypeScript – 26.9%


Чукча не читатель, чукча писатель?

> ЭТА ДРУГОИ?


Да, это "другои".

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


- да, я так считаю.

>Что проецирующий?


Свою тупость. Я не рассуждаю об инструментах, как о людях или товарищах. Они у меня не вызывают эмоции. Мне похуй на твои эмоции по поводу каких-то языков, и мнение хомячков тоже мне не интересно. Язык и язык. Есть свои плюсы, есть свои минусы. А у тебя от этого рвёт. И ты это приписываешь мне гринтекстом.
262 1926420
>>1926406

> Есть, лол.


>


> The Most Disliked Programming Languages:


> VBA – 75.2%


> Objective-C – 68.7%


> Assembly – 64.4%


> C – 57.5%


> PHP – 54.2%


> Erlang – 52.6%


> Ruby – 49.7%


> R – 48.3%


> C++ – 48.0%


> Java – 46.6%


> Scala – 41.7%


> Bash/Shell/PowerShell – 40.5%


> F# – 38.3%


> HTML/CSS – 37.8%


> SQL – 35.9%


> Dart – 33.7%


> JavaScript – 33.2%


> C# – 33.0%


> Go – 32.1%


> Elixir – 31.8%


> Clojure – 31.7%


> Swift – 30.8%


> WebAssembly – 30.5%


> Kotlin – 27.4%


> TypeScript – 26.9%


Чукча не читатель, чукча писатель?

> ЭТА ДРУГОИ?


Да, это "другои".

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


- да, я так считаю.

>Что проецирующий?


Свою тупость. Я не рассуждаю об инструментах, как о людях или товарищах. Они у меня не вызывают эмоции. Мне похуй на твои эмоции по поводу каких-то языков, и мнение хомячков тоже мне не интересно. Язык и язык. Есть свои плюсы, есть свои минусы. А у тебя от этого рвёт. И ты это приписываешь мне гринтекстом.
263 1926421
>>1926417
>>1926420
Семен, успокойся. Ди нахуй с треда, все уже поняли, что ты обосрался.
264 1926422
>>1926421
Всё, угомонился?
265 1926427
>>1926422
Кто? Это ты высираешь целые тирады многостраничные) Иди нахуй с треда. Можешь еще пукнуть один раз, если так важно последнее слово вставить и свободен.
266 1926431
>>1926427
Хеллоуворлдщик делает вид, что не обосрался. Спешите видеть.

>если так важно последнее слово вставить


Ты так быстро уходишь? Ну куда же ты?
Думаешь таким школьным дефенсом просто закрыть тему? Ну-ну.
dreaded.png14 Кб, 614x447
267 1926441
>>1926391

>Питон жоще критикуют, чем Го, лол, о чем речь?


>>1926397

>Go один из менее критикуемых, получается, лол



это неправда
https://insights.stackoverflow.com/survey/2020
268 1926497
>>1926441
У этой статистики та же проблема, что и у той, которую кидал ебаклак выше.

> % of developers who are developing with the language or technology but have not expressed interest in continuing to do so


Она не оценивает насколько язык зрелый или насколько давно появился, какая у него доля популярности. Грубо говоря, если огромное количество народу попробует JS и большинству он не понравится, то язык будет на дне. Но если узкий круг программистов попробует Rust и он понравится большинству, то этот язык будет самым любимым вот уже 5 лет подряд.
269 1926508
>>1926497
Ну ты не сравнивай Раст с Го, Голэнг гораздо популярнее и о нем вообще все знают. А Раст очень нишевый и мало кому за пределами байтоебов толком известен.
270 1926564
>>1926333
Если решений миллиарды, то скорее всего подойдет любая. Это вообще не проблема.
Проблема - когда язык не позволяет тебе принципиально решить твою задачу по человечески.
271 1926779
>>1926333

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


Ну не скажешь. Например есть много способов считать из одного io.ReadWriter в другой, например через буффер из bytes.Buffer, или из bufio.Buffer или просто через массив байтов, или io.Copy. И все это будет правильным. Хотя смотря как ты определяешь "через свой костыль".
272 1926813
>>1926508
Кого считать байтоебом?
273 1927119
Поясните за Reader/Writer. Нахуй мсне постояно делать какой то reader и считывать в него фаил. И тд
274 1927137
>>1927119
для полиморфизма как и любые другие интерфейсы
275 1927232
>>1927119
Странный вопрос, а как ты хотел?
276 1927256
>>1927119

> Нахуй мсне постояно делать какой то reader


Тебя кто-то заставляет что ли?
277 1927341
>>1927119
Тебе его не надо делать, файлы, stdout всякие и куча чего ещё это и есть эти ридеры и райтеры. Тебе главное понять как они работают и для чего юзаются. Очень полезная вещь, такто.
278 1927343
>>1927119
Полиморфизм. Допустим тебе нужно держать в объекте открытое соединение, как сделать так, чтобы можно было только писать в подключение, но не считывать из него? Ну ебашишь поле с типом io.ReadCloser. Или ещё круче, ты можешь создать свой класс который будет имплементить методы Read и Write, сможешь пихать свой класс в любые методы из стандартной либы которые принимают на вход итерфейсы Reader/Writer. Чисто берешь пишешь io.Copy(fileReader, твой_класс_с_подключением), если Read имплементировал нормально, то все данные из подключения запишутся в файл, ахуенно как по мне.
279 1927345
>>1927343

>только писать в подключение, но не считывать из него


Перепутал, наоборот, только считывать, но не писать
280 1927350
>>1927119
>>1927343
Красноглазый, совсем ебнулся вкатуну сразу за сети мозги засирать? Приведу гораздо приземлённее пример - логирование. Любой логгер может писать в любые штуки, реализующие Writer. Соответственно ты можешь туда хоть файл передать, хоть os.Stdout (вывод в консоль), хоть Аллаха. Плюс ты можешь сделать io.MiltiWriter(file, os.Stdout) и получить комбинированный Writer, т.е. твои логи теперь будут и в файл и в консоль одновременно писаться. Свои реализации редко нужно писать, ибо это по сути байтовый стриминг. Хотя ты можешь свою реализацию Writer написать, который каждый лог будет тебе СМС на телефон отправлять, лол. Хотя пример хуевый, но ты понял о чём я.
281 1928938
Ок, у меня есть функция которая обрабатывает подключения, она считывает строку и разбивает по принципу /команда аргументы.
Потом через switch обрабатывает часть с "/команда". Есть у кого пример, как это реализуют нормальные люди, или как такое гуглить ?
282 1929335
>>1928938
Что?
283 1929534
>>1927350

>каждый лог будет тебе СМС на телефон отправлять

284 1929535
>>1929534
Лучше админу xD
285 1929816
Что могут дать на тех собесе по Go длительностью 2-3 часа? Я даже примерно представить не могу, что столько времени могут спрашивать. Неужели реально попросят микросервис на бумажке написать?
286 1930166
>>1929816
Примеры кода давать будут и спрашивать что произойдёт при запуске, почему именно так и что нужно сделать чтобы произошло по другому/так как надо. Потом по паттернам и принципам проектирования погоняют, потом алгоритмическую задачу дадут.
287 1930168
>>1930166
Чё-то ржу. А тулинг? А библиотеки? А низкоуровневая реализация языка? Опытный бобёр может недельный собес устроить, в первый же день доведя вкатыша до психоза.
288 1930170
>>1930168
Всё что ты перечислил как раз и входит в рамки примеров кода. Что то будет зависеть от того как язык на низком уровне работает, что то от библиотек и тулинга
289 1930172
>>1930170
Это не примеры кода. Го, наверное, второй после жс по нестабильности экосистемы. Если у тебя на проекте фуллстак веб-фреймворк, собранный из 5-6 библиотек, то чувак, знающий только стандартную библиотеку и go build, тебе нахер не нужен.
290 1930184
>>1930172
И? Почему не примеры? Я пишу в вакансии стек и примеры кода строю соответственно, понятно что мне нахуй не нужен дурик изучивший синтаксис.
291 1930186
>>1930184
Потому что знание соискателем именно твоего стека маловероятно. Поэтому тебе придется задавать вопросы не про код, а про принципы - ну там, как в языке реализована рефлексия, как написать мидлварь авторизации, и как отказоустойчиво сделать запрос к веб апи. Если ты не джуна ищешь, гонять программиста просто по коду - это все равно что математика заставлять подставлять в уравнения циферки.
292 1930356
>>1930186
Какой то дивный манямирок у тебя. Соискатель читать не умеет и увидя стек в вакансии пришел не зная его? И то что ты предлагаешь спрашивать как раз та самая баща которую только у джунов и спрашивать.
293 1930387
>>1930356
Так в том и дело, что видя требование опыта в твоем стеке, соискатель не придет, т.к. вероятность совпадения крайне невелика. Это не петон, где широкий выбор между django, flask и кустарщиной. И вопросы это уровня мидла, т.к. джун, по определению, ведомый, и архитектура не его уровень - если у тебя такими вопросами занимаются джуны, они или оверскиллнуты и уже смотрят в лес, или твой прожект скоро придется закапывать из-за завала говнокода.
294 1930596
>>1930166
и это всё на джуна - стажёра? Я паттернов-то только 2 знаю, синглтон и фабрику и то с вузовского курса
295 1930614
>>1930596

Та больше ты паттернов знаешь, просто ты не знаешь что это паттерны. Ответь на такой вопрос. Вот ты хочешь создать класс(на псевдокоде) который называется EmailMessage.

У эмэйла может быть адрес откуда, адрес(а) кому, могут быть или не быть прикрепленные файлы, может быть или не быть тема(title), может быть текста. Ну ты понял. Как бы ты конструировал класс? Через конструктор посылая new(null, null, make_array(hui, pizda))?
Или как?

Так же, должен ли класс EmailMessage иметь метод send, или лучше когда отправляет сообщение какой-то другой класс?

Вопрос немного не по Го, но просто вот прям с точки зрения паттернов и ООП как бы захуячил?
296 1931501
аноны, как правильно делать параллельные http-запросы? задача следующая: у меня есть http-сервер и у него есть хэндлер, который ходит на 2 других эндпоинта по http. хочу выиграть по производительности, распараллелив эти запросы, но боюсь, что при большом количестве запросов на мой сервер горутины будут неконтролируемо спавниться, и в итоге я наоборот проебу по производительности. можете дать совет или ткнуть носом, что можно почитать по этой теме? во всех статьях, что я видел, это как-то в вакууме рассматривается и о подводных речи не идет
297 1931512
>>1931501
ps. про семафоры знаю, но не будет ли опять же просадки по производительности при высокой нагрузке из-за длительного времени ожидания горутины для запуска?
298 1931527
>>1931501
Тебя парит, что вместо одно горутины твой запрос теперь будет спавнить две?
299 1931531
>>1931527
это в принципе отвечает на мой вопрос
300 1931535
>>1931501
Похуй, главное используй контекст и deadline у запросов и следи чтобы горутины не дэдлочились.
301 1931536
>>1931535
И ещё, использую pporf чтобы следить за такими вещами.
302 1931776
>>1930596

я не >>1930166, но суть примерно такая да, есть абстрактный план по достаточно высокуровневым темам, иногда есть пара-тройка конкретных вопросов/задач/пунктов, которые надо обязательно спросить/покрыть, чтобы по форме обратную связь дать, а там дальше как пойдет, какое настроение будет у собеседующего

я например, когда собесы веду, мне не очень интересно упарываться в язык, конкретные технологии (базы/очереди), вот этот чувак хорошо накинул >>1930614, я так пробовал, но народ в среднем люто тупит, и нифига не вывозит, поэтому я сейчас переключился на архитектуру:

вот есть бизнесовые требования, например, надо написать сервис, который будет рассылать имейлы, и дальше - какой наружу интерфейс предложишь пользователям/для интеграции, какие технологии выберешь, как очереди организуешь, как шаблонизировать контент будешь, как это все масштабировать, какие метрики снимать, как по ним понять, что инцидент произошел, как гарантировать exactly-once доставку в реальном мире с таймаутами, фейлами и ретраями, вот например у тебя вот этот сервер умер, че делать, или внезапно все тупить@тормозить стало, как искать/что делать, сколько твое решение будет стоить, где можно съэкономить ну и все в таком духе

(рассылка имейлов, это просто наугад, можно проектировать и корзину товаров в онлайн магазине и мини-инстаграм/вк и банковский сервис по переводу платежей и вообще на что фантазии хватит)

и на таких кейсах сразу хорошо виден и опыт и кругозор и алгоритмы и паттерны
303 1931798
>>1929816
Щас прохожу собесы, был в озоне, деливери клабе, селектеле и еще нескольких менее именитых. По сути достаточно несложные вещи (сразу скажу у меня небольшой опыт другого языка и в целом не вкатун). По сути вопросы достаточно банальные - классика а-ля как слайс устроен, как горутины под капотом работают, вот тебе такой-то код, почему он не работает и как сделать рабочим, на знание каналов задачки, по сопутствующим вещам (а-ля напиши sql запрос с джоином или объясни как индексы работают), в одной компашке спросили средней сложности по system architect вопросики (но джуна про это спрашивать не будут в любом случае). В целом - достаточно просто, если ты не валенок. Алгоритмическую задачку дали пока только один раз (в озоне), да и та сводилась к вариации merge sort (а точнее только части про merge). Много из этих вопросов найдешь в гугле спокойно по запросу "вопросы на собеседовании Go", лол. Ничего прям серьезного, никаких графов тебя обходить просить не будут, если ты про это. Но да, ты должен хорошо разбираться в языке (например знать про gpm модель асинхронности), поверхностно тот же OSI знать, например.

Единственное заметил, что чем меньше и шаражнее контора - тем более абанутые процессы найма (например тестовые задания предложили ток 3 раза, причем дебильные, я нахуй послал их), а еще эти ебаные опросники - сразу дропай, красный флаг дноконтор. Что удивило - на паре собесов оказалось, что го используют как системный язык и пишут всякие сетевые хуйни, мне казалось это язык больше для смузистов микросервисников, а оно вот как.
304 1931805
>>1931798
А, ну еще про stdlib часто спрашивают, например про контекст или ридеры с райтерами и в таком роде.
305 1932174
>>1931776
охуенные у тебя джуны, чел. Вопросы по архитектуре это сразу мимо любого джуна
306 1932200
>>1932174

тащем-то, ответ из серии "сделаем set и get ручку и все будем класть в одну таблицу бд" в продуктовой разработке ценнее дрочки на задачи leetcode
307 1932210
>>1932200
ты мне хочешь сказать, что джуны на работе занимаются решением таких вопросов? Или может быть им тимлид говорит "делаем так, реализуй" Явно 2 вариант
308 1932226
>>1932210
Нет, джуны должны хотя-бы в целом понимать архитектурные вопросы. Это же не жава монолит, а мелкие процессы распределенные, без базы в архитектуре ты даже сервис не напишешь, лол.
309 1932380
>>1932210

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

но, нельзя не уточнить, у меня нет ожиданий, что джун сразу придет с рабочим решением, тем не менее, имея требования для несложной фичи, какое-нибудь решение он все таки должен предложить, а дальше уже старшие либо аппрувят это решение, либо вместе дорабатывают
310 1932648

>Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/Alikhll/golang-developer-roadmap (постоянно обновляется сообществом)



А почему там Echo и Fiber обязательные, а самый популярный Gin желательный?
Снимок экрана 2021-02-07 в 00.09.53.png12 Кб, 284x62
311 1932739
>>1932648
Потому что научись читать
312 1932745
>>1932648
Да и что такое самый популярный, в озоне и тиньке используется chi для роутинга, в вб вроде горила
313 1932838
>>1932739

>Personal must know


>Потому что научись читать


Сука, вы все тут такие ебанутые или только ты один?

>в озоне и тиньке используется chi


Ой дебил блять, ты еще и разницы между фреймворком и роутером не понимаешь.
Олсо, что там в этих парашах используется вообще не показатель, потому что все делается на собственных костылях написанных бывшими пхпшниками. Вчера ты пишешь на зенде, а сегодня ты разработчик платформы.
Снимок экрана 2021-02-07 в 01.44.33.png54 Кб, 766x400
314 1932851
>>1932838

> разницы между фреймворком и роутером не понимаешь


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

>>1932838

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


ты скозал?
315 1933012
>>1932851
В чем проблема то? В файбере и эко есть роутеры внутри, т.е. ты и эту тему зацепишь вместе с ними, не все же пишут на сыром http с одним chi. Ну да, я бы еще желтым выделил chi и убрал бы выделение у файбера, но это уже собственные хотелки. Можешь мр к ним оформить, если так глаза мозолит.

Мимо составитель шапки треда
316 1933194
>>1932851

>ты скозал?


Ну если ты знаешь что там chi, то должен знать в каком контексте он там используется. А иначе просто слышал звон, да не знаешь где он.
317 1934969
Насколько сложно в этом вашем го сделать приложение с более-менее сложными ФОРМОЧКАМИ? Чтобы как минимум на линуксе работало. Спрашивает человек, не писавший на го ничего кроме хеллоу ворда.
318 1934985
>>1934969
Не особо сложнее, чем на путхоне
1612825167104.png28 Кб, 371x362
319 1934993
>>1934985
Попробовал по этому https://habr.com/ru/post/420035/ гайду сделать хеллоуворд на gtk, вроде бы безболезненно. Думал сложнее будет. Посмотрим как дальше получится.
А теперь такой вопрос. Господа, вы ебанутые? Вы так ошибки обрабатываете? Я до этого момента был свято уверен что go - самый красивый ЯП и я свяжу с ним свое будущее. Мне в нем нравилось абсолютно все, но это полнейший пиздец. Я правильно понимаю, что альтернатив сейчас нету? Если так, то планируются ли в последующих версиях какие-то try/catch или что-то около того?
320 1935006
>>1931776

Этот хуесос так и не ответил на мой вопрос про email. Хотя он достаточно простой. Но интересный. Ждуны довольно многие шарят что

https://www.tutorialspoint.com/laravel/laravel_sending_email.htm
ТАК

Или так
https://www.baeldung.com/java-email

Это пижже чем
https://www.php.net/manual/en/function.mail.php

Вот так блять.

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



Хорошо что ты понимаешь что проектирование интерфейсов это самое главное в архитектуре любого большого приложения.
321 1935056
>>1934993
Не, на пике самый простой вариант, можно свои ошибки возвращать и чекать типа errors.Is(MamuEbal). А так, эксепшенов нет, да
322 1935102
>>1935006
То что ты скинул, это самые основы. Тип имел ввиду, что нужно сделать например сервис у которого будет некое API и работать будет в гошном стиле. Типа запилить очередь из которой будут брать мейлы воркеры и отправлять, при этом я бы сделал для каждого воркера отдельное подключение к smtp серверу. С такой архитектурой выходит у нас своеобразная маштабируемость, то есть можно сколько хочешь воркеров наспавнить и хоть какая-то отказоустойчивость, если один воркер падает, спавнишь другого. Потом идет дохуя всяких нюансов в виде централизации логов с каждого воркера, так ещё чтобы оно все в файл или редис пиздячило, множество ретрай функционала который нужно будет прикрутить, ещё бы было хорошо если запилить свой API для воркеров, чтобы их можно было добавлять, удалять, останавливать под это можно уже целую либу запилить.
Какой то бессвязный поток сознания получился, но надеюсь ты поймешь.
323 1935120
>>1935056
try/catch не планируются и не нужны.
324 1935127
>>1935120

if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
324 1935127
>>1935120

if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
if err != nil { return nil, err }
325 1935144
>>1935127

class Someclass
{
private Sometype something;
public Sometype getSomething()
{
return this->something;
}
public setSomething(Sometype s)
{
this->something = s;
}
}

}
326 1935159
>>1935144
Что за петушиный язык? Зачем геттеры-сеттеры писать руками?
327 1935328
>>1934993
try-catch для пидорасов, ебанутые свиньи блять, даже в джаве никто его не использует. Вам завезли божественные ошибки вместо исключений, а додикам не нравится

мимо бывший джавист
328 1935358
>>1935328

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


Зато используют throw.
329 1935586
>>1935328
>>1935120
Накидайте каких-то пропагандистских статей чтобы я тоже на самоподдуве себя убеждал что так удобнее и try/catch нинужон.
330 1935682
>>1935127
try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}
330 1935682
>>1935127
try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}

try {
} catch(e) {
}
331 1935683
>>1935586
Так трай кетч и гошные ошибки - примерно однохуйственно. В голэнге ты также можешь написать общий хендлер всех паник, если нужно (например для того же сервера, чтобы залогать паники), а ошибки чекаются точно также, как чекаются и эксепшены, трай кетч/ иф, технически вообще поебать.

Хз почему так приебываются к этой теме в го.
332 1935689
>>1935682
Шиз, try-catch пишется один раз на 100500 строк, а if err != nil после вызова чуть ли не каждой процедуры.
333 1935699
>>1935586
Шиз, какие нахуй статьи. Я тоже выебывался что это не удобно, пока не стал на го в проде писать. Теперь готов перестрелять всех дебилов которые хотят эксепшены в ГОвне
334 1935702
Вам просто обидно, что в ваших говноязыках нельзя несколько значений из функции вернуть и приходится жрать говно с эксепшенами
335 1935730
>>1935689

> try-catch пишется один раз на 100500 строк


Тогда это говнокод, если ты отлавливаешь все исключения разом, дебич. Пхп вебмастер в треде? Ты же в курсе, что это антипаттерн.
336 1935731
>>1935702
А named return тебе тоже нравится?
337 1935750
>>1935702
никах ыксепшонов, одни лишь только монады, конечно же
338 1935787
>>1935731
Нет, лютая хуета. Но было бы норм, если бы переменные заранее не объявлялись
339 1935795
>>1935699
Сосачую.
Может эта хуйня довольно многословная, но если ты не мудак она даёт 95% гарантию что все ошибки обработаны. Остальные 5 на паники приходятся и явное игнорирование подсказок ide.
Как же я охуел когда после питона запустил говно код. Один два запуска - код работает.
На питоне же пока в дебаге поймёшь че там тебе прилетает и какие методы есть...
340 1938261
Бля челы, вы ебанутые тут? Я хуй знает, может я тупой, но вот я решил вкатиться в Go с Python'а и в туре ну просто нихуяшеньки не понимаю, дошел до интерфейсов и информация просто не воспринимается, что со мной не так? Или у всех так и я потом пойму?
341 1938391
>>1938261
у питонистов так, у нормальных людей быстрее процесс идет
342 1938465
>>1938261
Питон просто не совсем ООП язык, да и типизации нет, да и либа на каждый пук, да и... Ну ты понял. Это как с кукурузника пересаживаться на Боинг.
343 1938493
>>1938465
как будто ГОвно ОПП язык
344 1938518
>>1905210 (OP)
Папаня взглянул глазком на Го и побежал обратно в уютную Ноду
гавно а не язык
345 1938520
>>1938261
Иди в жс, не трать время на эту ебалу
346 1938523
>>1938518
Если никогда не программировал на статически типизированном языке, то такое возможно.
347 1938540
>>1938523
Белые Люди давно придумали ТС
image.png58 Кб, 299x168
348 1939018
Тем временем недавний спек по дженерикам приняли в реализацию. Теперь дженерикам быть 100%, осталось подзатянуть пояса и подождать конца года с первой бетой.

https://github.com/golang/go/issues/43651#issuecomment-776944155
349 1939057
>>1939018
Перегрузка функций будет следующей ⚕️➡️️⚽, затем добавят эксепшены ♾️✨⭐, а там и до классов недалеко ✔️️⬇️❗☀️☂️⚠️‍.
350 1939268
>>1933012

>я убрал бы выделение у файбера


Почему? Он же охуенный, удобный и по перформанса всех уделывает.
351 1939833
>>1909079
Нет, не лучше
352 1939851
>>1939833
Пайк, иди нахуй
image.png102 Кб, 253x199
353 1939967
image.png779 Кб, 891x576
354 1940149
>>1939967
О, мемы
355 1940349
>>1939851
Из-за таких как ты долбоёбов из хорошего языка сделают с++
356 1940456
>>1939057
Эксепшены не добавят.
357 1940457
>>1940149
Проиграл.
358 1940503
>>1938261
Потом поймёшь, если конечно усилия для этого будешь прикладывать
359 1940745
>>1940349
В этом и прикол же, наконец-то появится вменяемый убийца C++.
>>1940456
# define throw panic
# define catch recover
360 1940765
>>1940745
GCшный убийца C++?
Я конечно видел пытающихся в cgo, но всегда это было для прикола
361 1940773
>>1940765
Ну так после эксепшенов и классов попросят добавить unsafe-блоки, где сборка мусора не работает, и нужно явно вызывать delete. И тогда заживём.
image.png19 Кб, 460x629
362 1940796
363 1941061
364 1941102
>>1941061

> Rust


Инфраструктуры неи, уёбищные костыли вместо классов, ошибки тоже надо прикидывать. Раст разве что мозиллу убьёт, но не кресты.
image.png123 Кб, 1400x600
365 1941135
Сап, двач. Посоветуй идею для проекта на пщ с использованием микросервисной архитектуры.

Я хочу чтоб там можно было юзнуть апач кафку.

Так же скажите чё почитать можно. Полистал introducing go.
366 1941142
>>1941102

К сожалению эта хуйня вообще не важна. Классы, не классы. Эксепшоны, паники, вообще на похуй.

ПХП и кресты это не очень хорошие языки, будем честны. И на них пишут. Потому что на них либы есть, фреймворки разные. А на расте нихуя. Вот как бы и воно.
367 1941340
>>1941135
Почитай отца и мать
368 1941345
>>1939268
Ответьте на мой ответ пожалуйста, чем плох fiber? Я в го недавно, бекендер на ноде, и мне как раз с экспресса удобно было переходить на fibrt
369 1941348
>>1941142
Если это такие плохие языки, то зачем на них написали столько библиотек и фреймворков, которые всем нужны?

Почему разработчики этих всех нужных библиотек и фреймворков не выбирали хорошие языки для своих задач?
370 1941381
>>1941348

> Если это такие плохие языки, то зачем на них написали столько библиотек и фреймворков, которые всем нужны?


Немного не так.
У языков разные обстоятельства их юзать.
Обстоятельства для С++:
"У меня половина ОС написана на крестах и почти весь прикладной софт - естественно я на нем напишу свою вундервафлю, плюс он очень производительный и имеет ручное управление памятью."

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

> Почему разработчики этих всех нужных библиотек и фреймворков не выбирали хорошие языки для своих задач?


По-моему там было наоборот - типы сначала решали задачу, и в последствии, чтобы сделать решение проще - лепили свои либы и фреймворки.

Не претендую на истину в первой инстанции
371 1941391
>>1941381

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



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

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



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

Да и без фреймворков. Что насчет фейсбуков и контактов, например? Они так сразу пилились под собственные сервера.
372 1941422
>>1941348

>Почему разработчики этих всех нужных библиотек и фреймворков не выбирали хорошие языки для своих задач?



А не было их тогда, родной. Никаких.

В 2000ых был C++. C++ был обратно совместим с C, таким макаром любой проект мог начать писать C++ код и жить неплохо. Но это тянуло за сомой многие печали.
Разименование null это это UB, int foo(int i) может принимать double. Ты можешь написать foo(7.26) и оно автоматом переведет тип.

Это очень неудобно, сэр.

Раст намного лучше как язык. В нём нет захламлённого ООП и есть немного нежное FP-style кода как в javascript.

Типы более логичные u8 это ансайнд с 8 байтами, u32 это ансайнд с 32 байтами. Никаких char, long ing. И типы точно обозначены, а не implementation defined.

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

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

И никто сейчас на rust не перейдет просто потому что красивый язык.

Бизнес, дорогой мой, и на COBOL писать будет потому что кобол у них раньше был и он прекрасно совместим со стапрым коболом.И 90% кода серверов участвующих в финансовых операциях и в гос секторе США написано на коболе. От так вот.
373 1941423
>>1941391

>Так что выходит, пхп лучше прочих скриптовых языков, или авторы фреймворков и библиотек идиоты и выбирали плохой язык, вместо хороших?



Не так. Ruby это великий язык и rails это монументальный фреймворк. Но идею не запатентуешь, MVC фреймворки стали появляться как грибы после дождя.

Проще перенести свой фреймворк на PHP, чем заставить команду учить рубин
374 1941431
>>1941423
Что в нем великого? (В Руби, не в рельсах)
375 1941445
>>1941431

Типизация там самая пиздатая, строгая динамическая утиная.

Так же очень консистентность. Язык полностью ООП, а значит не будет помойки типа непоняток как в крестах что std::string имеет метод .length(), а например split нет. Он есть в отдельной библиотеке буст и как чистая функция с параметрами.

Никакой постоянности.
Очень простой читаемый синтаксис.

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

и пойми что плохой язык это не значит, что на нём ничего хорошего не напишешь. Напишешь, просто это не так прикольно будет и всякие pitfalls будут. Фреймворки часто заглаживают, кстати. Тот же laravel заглаживает многие некрасивые части PHP.
376 1941449
>>1941422
Помимо крестов был Objective C, были Паскаль и Оберон, была Ада, и все они тоже были совместимы с Си.
377 1941451
>>1941449

Паскаль и Ада совместимы с си? Ачом ты?

А Objective-C был, да. Не самый плохой, но был сложнее, а так же был невыразительный и наполненный говносимволами аки perl. И свои проблемы из-за совместимости с C имел тоже.
378 1941539
Аноны, слушайте, вы пользуетесь чем-нибудь типа фабрик для тестирования?
Я имею в виду что-то типа питоновского factory boy. Или самописный какой-то прием, но короче чтобы не писать sql-фикстуры и golden-файлы.
379 1941562
>>1908228
Я джавист, меня спрашивают. На синьорские позиции.
380 1941577
>>1941539
Вот как пример есть такие либы:
https://github.com/bluele/factory-go
https://github.com/romanyx/polluter
https://github.com/nauyey/factory
Только они какие-то невнятные, заброшенные и звезд мало.
381 1941608
>>1941539
Эмм, может моки?
382 1941653
>>1941135
Всё ещё бамп реквесту. Подскажите плиз. Никогда не писал ничего подобного.

>>1907446
Я php мидл на laravel/yii. Писал на собесе быструю сортировку. Пояснял сложность алгоритма.

Про Meltdown не спрашивали слава богу))))))))
383 1941762
>>1941608
Моки это про другое (или это подъеб типа такой?)

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

resp := BuildMyMockResp(OptBlahblah(false))
//On(...).Return(resp)

которые возвращает дефолтную структуру, в которой переопределено единственно важное для меня поле Blahblah.
Это просто один из примеров, для тех кто сейчас скажет, что мне мешает сделать такой хелпер.
384 1941822
>>1941762
Я прост не знаком с фабриками этими в Питоне, подумал ты прост не знаешь про моки. Тогда хз, никогда не юзал таких штук в тестах, наверн в го это руками все прописывать нужно.

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


В го структура создается с zero value, тебе не нужно каждый параметр прокинуть при создании, только необходимые инициализировать. Но я не до конца понял что это за фактори бой, добавил в закладки, может рил полезная техника при тестах.
385 1941829
>>1941762
>>1941822
А, я понял о чем ты, да, юзал фабрики в других языках. Тогда хз, в го не встречался с либами нормальными для этого.
386 1941831
>>1941762
>>1941539
По идее можешь сам фабричную функцию запилить, и данные генерить через фейкер: https://github.com/bxcodec/faker

Канеш не тако сахар как в питоновских или пхпшных фабриках, но думаю сойдет. Хуле, привыкай к бойлерплейту гошному :3
387 1941841
>>1941831

Ну тут как бы два стула, либо бойлерплейт либо магия. Я вообще за магию, но тут на вкус и цвет
388 1941846
>>1941841
В тестах бойлерплейт скрытый за магией - норм тема. А в самом коде - идите нахуй со своей магией, когда чтение кода превращается в кроличью нору многокиломитровую.
389 1941850
>>1941846

> многокиломЕтровую


быстрофикс
390 1941852
>>1941653
>>1941135
Да боже, заверни какую-нибудь нейросетку на путхоне (которая котов генерит, да что угодно) и напиши все это дело в обертку с гошкой, чтобы задачки летели в кафку и обрабатывались в фоне и т.д. Вот тебе и ахуенный проект. Можешь и регистрацию сделать с отдельным микросервисом под аутентификацию, и внутр все по gRPC гонять. Написал и пошел за 300кк мидлом работать. Секретов то никаких нет.
391 1941855
>>1941846
Я про тесты и говорю. В тесте кода должно быть как можно меньше. Тестить тесты придётся
392 1941857
>>1941852
Лал, нейросетку лучше спиздить или стоит разобраться?
393 1941889
>>1941857
Спиздить, конечно. Готовую утилиту найди любую, есть опенсорсные проектики на путхоне. На самом деле похуй что ты под капотом делать будешь, хоть длину миллиардного числа пи вычислять, это скорее как пример про нейросетку.
394 1942152
>>1941445
Чем он лучше Питона?
395 1942156
>>1942152
После него удобно перекатываться на эликсир и делать много $$$
396 1942173
>>1942156
Проиграл.
Серьезно, чем странный и мёртвый Руби лучше понятного любому школьнику и живого Питона?
397 1942210
>>1942152

Тем что в питоне ООП хуёвое, а в руби пиздатое. Чё сложного-то блять?

Я щас говорю о сравнении языков, а не их практичности и тд.
398 1942233
Как обычно в Go-треде обсуждают что угодно, лишь бы не Go.
399 1942251
>>1942233
Да хуле его обсуждать, шутки про женерики и бойлерплейт заебали
400 1942356
>>1942210
Ну напиши конкретнее, что а Питоне из ООП хуёво, и что в Руби пиздато, сложно что ли, блять?
401 1942388
>>1942210

>а в руби пиздатое


А в пхп с ООПуже до уровня джавы дошли, есть все тоже самое.
402 1942395
>>1942356

> Ну напиши конкретнее, что а Питоне из ООП хуёво, и что в Руби пиздато, сложно что ли, блять?


Нахуя в питоне ООП, если там даже тайпхинтинг не проверяется без доп либо или статических анализаторов? О каком ООП речь, когда дженерики и абстрактные классы - это либа. Тех же интерфейсов нет, а множественное наследование - ваще ржомба.
403 1942399
>>1942388
Женериков нема
404 1942463
>>1942399
Ну это больше к типизации, она более менее только в версии 7.4 сформировалась, в 8.0 ужесточились правила приведения типов и сравнения разных типов, до дженериков ещё далеко.
405 1942633
>>1942395
Как дженерики и интерфейсы сочетаются с утиной типизацией?
406 1942794
>>1942395

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



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

>Тех же интерфейсов нет


Какие интерфейсы в динамическом языке?

>множественное наследование


Антипаттерн. Как и само наследование.
407 1942853
>>1942633
Никак они не сочетаются. Поэтому все "ряяя в питоне нинастаящее ооп" - хуита. ООП - это наличие классов и экземпляров, и точка.
408 1942861
>>1942794
В пхп очень хорошо живут с интерфейсами, автовайрингом по интерфейсу и аргументами с тайпхинтед интерфейсами
409 1942865
>>1942861

> автовайрингом по интерфейсу


Скоро завезут сервера приложений для PHP EE/P2EE, чтобы можно было писать SOAP-сервисы?
410 1942879
>>1942865
А чо, у меня на работе есть пхп соап сервис, так что да, все так
Без имени.png81 Кб, 1100x804
411 1943102
412 1943113
>>1943102
Мешаешь, съеби или не оффтопь.
sage 413 1943204
>>1943113

>пук


Поссал на тебя, долбоящера, не порть муд, мудила
414 1943217
>>1943204
Съеби со своим Goвном в другой тред, тут нормальные люди сидят.
415 1943245
>>1942388

В php неплохое ООП, я согласен. Я бы даже сказал что сейчас PHP8 будет получше питона для веба. Лично моё мнение.

>>1942356
Пчел, там нет модификаторов доступа, private public protected
Абстрактных классов и интерфейсов тоже немного. В руби интерфейсов нет, но там другой ООП. Там есть it_behaves_like что делает то же самое. This нормального нет. Неудобо там писать ООП. Питон это язык с игрушечным ООП, руби это язык на котором кроме ООП ничего нет. Он именно ООП язык
416 1943247
>>1943245

> private


__name

> protected


_name

> public


name

Твой доёб в том, что доступ получить всё равно можно? Ну тогда и до какой-нибудь жабы доебись, там через рефлексию тоже можно.
417 1943263
>>1943247

Понимаешь, товарисч. Хороший язык отличается от плохого именно тем что в нём ты более-менее защищён от ошибок.
А тут нет.

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

> Ну тогда и до какой-нибудь жабы доебись, там через рефлексию тоже можно.



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

В дзяве хотя бы надо рефлексию в попу ебать, а не просто так.

С таким же успехом я не понимаю чё джависты гонят на типизацию в PHP. Называй переменные $int_MyVariable и всё заебись будет. А за типизацией сам следи.
418 1943282
>>1943263
Приватные переменные в питоне, что с двух подчёркиваний, защищены, интерпретатор делает специальное переименование.

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

Вот protected уже в языке нет, исключительно соглашение.
419 1943545
>>1943263

>$int_MyVariable


Венгерская нотация) В цмсках встречается, причем в самых говняных. Сейчас так никто не делает, обычно пишут докстринги с типом и иде подсказывает, а сейчас с версии 7.4 можно уже у переменных класса указывать тип.
public int $myVariable;
А функцию можно было типизировать с версии 7.1 вроде.
private function zalupa(int $lenght, string $name): array
И также как в джавашарпах можно в качестве типа указать имя класса или интерфейса.
420 1943740
>>1943282
Я тут с Си треда подвалил к вам.

По-моему инкапсуляция не нужна. Структуры в си можно вкладывать в начало и делать из этого наследование структур. И ещё на переменные можно вешать cleanup attribute, и будет работать 1 в 1 как defer.

Golang прям видно что восторгался рядом расширений из gcc.
421 1944053
>>1943740

Ну так go это новый си, хули ты хочешь
422 1944143
>>1943247
Рубисты, сэр.
423 1944707
А никому случайно не интересна вакансия,связанная со стриминговым сервисом? Там типа обработка потоковой информации, всякие подобные штуки. Проект практически новый, поэтому есть реальная возможность строить архитектуру и влиять на процессы
424 1944744
>>1944707
Кафка на кафке кафкой погоняет? И все промазано протобафом?
425 1944995
>>1944707
мейлру, ты? узнал тебя по твоему единому видео
426 1945134
это просто пиздец, не могу разобраться как запустить этот тур на го на русском языке.
из под винды реально?
427 1945139
>>1945134
Реально в браузере и на английском.
428 1945189
>>1944995
Не мейл, но плюс-минус близко. Почту больше кидать не буду)))
429 1945419
>>1945189
да, в прошлый раз ты с этим обосралась, конечно
нахера озону стримиговый сервис?
430 1945548
>>1945189
Ты же в отпуске до 21 февраля, что сытые херочки тоже бывают анальницами?
431 1945555
>>1945419
Чтобы папич мог гантельки рекламировать
432 1945703
>>1945134
Тебя в гугл-транслейте забанили?
433 1945707
>>1945548
Я стажер, мне никто не доплатит за найденных кандидатов) просто пришла спросить
434 1946022
>>1945707
Да ди нахуй со своим озоном. Компания говна хуже Яндекса. И лиды у вас ебланы конченые
435 1946144
>>1946022
подробнее можно? что конкретно хуевого? хотел податься туда
436 1946364
>>1946144
Все хуево. Коммерсы сраные а не программисты. Говорят, конечно, от отдела зависит, но сомневаюсь.
Лучше в Авито/Мейл пробуйся
437 1946562
>>1946022

> хуже Яндекса


> Лучше в Авито/Мейл


А яндекс чем хуже мейла? Думал и о тех, и о тех.
438 1946572
>>1946562
Да это теоретик, которого на собесе какой то лид связными списками попустил, вот он и рвется. Скорее всего ему так кажется
439 1946672
>>1946572
гребец озона не палится.
Во-первых, ты в своем озоне джсон будешь гонять до конца веков, какие тебе линкедлисты?
Во-вторых, у озона слишком много обсеров. Чего только их летняя "школа" стоит, просто лол, не смогли чекер настроить и в манямирке сидели до конца, пока их на Хабре не попустили. Вспоминаем ещё пароли плейнтекстом, лмао.
Яндекс того хуже, анальный собес, который потратит неделю жизни минимум ради офера в 1.5-2 раза ниже рынка. Ну а потом бесконечные велосипеды, шизоменеджеры и принудительно-обязательные переработки по праздникам/выходным бесплатно.
И это всё я не выдумал, вы хотя бы по хабру тому же походите, там анальники уже давно все расписали.
440 1946683
В каждой крупной компании много команд. Некоторые лиды кажутся вполне адекватными и интересными людьми, с другими неприятно общаться. Понять, «подходите ли вы друг другу» можно только на собеседовании. Пока я не вижу никакой конкретики по данному вопросу, а субъективщина на то и субъективщина.
Как-то кандидат сказал, что отказывается проходить собеседование, потому что ему привезли испорченный надувной матрас.
В озоне много серьезных разработчиков, через него прошло много специалистов. Конечно, будут и довольные, и недовольные, как и везде.
441 1946698
>>1946683
Никакой конкретики, хотя и с долей здравого смысла. Так можно ± про все компании сказать. Везде есть адекватные и полные мудаки. Но не забывайте, что ваша жопа в руках коммерсов, которые как раз второй тип. Хорошо это видно по публичным факапам, которые случаются не из-за конкретного гребца, а из-за менеджмента.
442 1946715
>>1946672

>гребец озона не палится.


Не угадал.

>Во-вторых, у озона слишком много обсеров.


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

Я никого не защищаю, но ты явно обосрался. Говоришь что у озона много обсеров и при этом советует мейл, у которых обсеров больше раз в 10. Чего стоит только отсуствие трима для пароля в их почте
443 1950297
Аноны, научите, как такое нормально в го сделать.
Есть посутпающие события (неважно откуда, но например из кафки), у них есть payload (некий json). Я хочу скрыть под капот цикл и десериализацию, чтобы получилось как-то так:

worker.Register("MyEvent", func(payload *MyStruct) {
// ...
})

worker.Run()

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

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

Но остается как-то сделать десериализацию. Как сделать ее универсальной, чтобы спрятать под капотом? Чтобы она передавала в регистрируемый обработчик нужную структуру?
Или же просто, какие есть варианты, чтобы сделать максимально изящно?
444 1950300
>>1950297
Я не хочу писать блядскую лапшу ифов, анон.
if event == "MyEvent"
Ну должен же быть нормальный способ.
445 1950353
>>1950297
Нихуя не понял что тебе нужно, но подумай в сторону интерфейсов. Делаешь воркер с общей логикой, который в конструкторе принимает интерфейс. В интерфейсе делаешь методы для десериализации и для дальнейшей обработки этой структуры.
446 1950355
>>1950353
У интерфейса который принимает воркер должны быть методы, которые принимают и возвращают пустой интерфейс. А уже в конкретной реализации обработчика просто приводишь к нужному типу
447 1950365
>>1950353
>>1950355
А я не понял, что ты предлагаешь. Можешь с псевдокодом?

Еще раз, мне нужна очень простая вещь (псевдокод):

event_jsons = [`{event: One, data: ...}`, `{event: Two, data: ...}`, `{event: Three, data: ...}`]

worker.Register('One', OneFunc)
worker.Register('Two', TwoFunc)
worker.Register('Three', func(payload interface{}) {
// data := payload.(ThreeEvent)
})

worker.Run() // for events as type, data { handlers[type](unmarshall(data)) }
// Как сделать подобный цикл?
// Недостаточно инфы для анмаршалинга - ок, можно еще что-нибудь при регистрации указывать. Что/как?

---------

func unmarshall(payload string)
interface{} {
// data := ??? // Как мне здесь получить структуру нужно типа?
return data
}
448 1950371
>>1950297
А) пустой интерфейс
Б) type switch, гугли
449 1950435
>>1950371

>пустой интерфейс


В пустой интерфейс парсится map[string]interface{}. Мне нужно чтобы там была структура.

>type switch, гугли


Вся суть моего вопроса в том чтобы избавиться от if-else.
450 1950443
>>1950435
Приведи пустой интерфейс к нужному типу и анмаршаль в него.
А от иф элс ты без женериков не избавишься
451 1950485
>>1950365

>// Как мне здесь получить структуру нужно типа?


Такое прокатит только в каком нибудь питоне или жс, учитывая что вся информация, что у тебя есть о payload, это строка json'а.

Что тебе нужно, это прихуярить type switch по полю event.Type (или как где у тебя там тип евента) который будет строкой.

Либо создать схему для создания евентов, она должна быть общая для каждого сервиса, который будет отправлять/принимать сообщение в/из кафки. Для этого лучше подходит xml или protobuf.
452 1950607
>>1950485

>учитывая что вся информация, что у тебя есть о payload


Нет, у меня есть любая информация. Вон есть Register() - пожалуйста, чего там указать, что бы была "нужная" информация?

>прихуярить type switch


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

>схему для создания евентов


Еще раз - об ивенте знаем все что угодно. Любую информацию, которой не хватает можно зарегистрировать в worker.Register().
453 1950793
>>1950365
Что тебе мешает вместо функции в Register передавать набор функций (интерфейс)?


type HuiHandler interface {
UnmarshalHui([]byte) (interface{}, error)
SendHui(interface{}) error
}

type Pizda struct {
IsHui bool
}

type HuiHandlerImpl struct {}

func (h HuiHandlerImpl) UnmarshalHui(data []byte) (interface{}, error) {
var p Pizda
if err := json.Unmarshal(data, &p); err != nil {
return nil, err
}

return p, nil
}

func (h
HuiHandlerImpl) SendHui(hui interface{}) error {
pizda, ok := hui.(Pizda)
if !ok {
return errors.New("invalid struct")
}

fmt.Println(pizda)

return nil
}


Воркер принимает этот интерфейс, потом просто создаешь новый воркер под топик кафки с нужно реализацией и все
453 1950793
>>1950365
Что тебе мешает вместо функции в Register передавать набор функций (интерфейс)?


type HuiHandler interface {
UnmarshalHui([]byte) (interface{}, error)
SendHui(interface{}) error
}

type Pizda struct {
IsHui bool
}

type HuiHandlerImpl struct {}

func (h HuiHandlerImpl) UnmarshalHui(data []byte) (interface{}, error) {
var p Pizda
if err := json.Unmarshal(data, &p); err != nil {
return nil, err
}

return p, nil
}

func (h
HuiHandlerImpl) SendHui(hui interface{}) error {
pizda, ok := hui.(Pizda)
if !ok {
return errors.New("invalid struct")
}

fmt.Println(pizda)

return nil
}


Воркер принимает этот интерфейс, потом просто создаешь новый воркер под топик кафки с нужно реализацией и все
454 1950795
>>1950793
Блять, все поехало
455 1950820
>>1950793
Слишком избыточно.
Во-первых, для каждого типа у нас будет по сути одинаковый Unmarshal().
Во-вторых, что хуже, получается что вот вся эта инфраструктура (объявление структуры, объявление двух методов и так для каждого типа) нужны только для того чтобы как-то прицепить этот Unmarshal к обработчику. А по сути нам от этого всего нужна одна единственная функция-хендлер.

Но спасибо, анон, все равно.
456 1950832
>>1950820

>type HuiHandlerImpl struct {}


Вот она у нас пустая, нужна только чтобы методы "зацепить". Это не является маркером чего-нибудь, какой-нибудь плохой практики?
457 1951173
>>1950297
Рефлексия, генерация типов структур на лету, например.
Если не хочешь лапшу из if else сможешь поступить по питонячи: создать мапу, в которой ключ - название Ивента, а значение нужная тебе структура. И код чистый, и сразу видно какому событию какая структура нужна. Но как не крути все равно где-нибудь пустые интерфейсы тебе нужно будет приводить к типам.
458 1951208
>>1951173

>ключ - название Ивента, а значение нужная тебе структура


Ну так без проблем, для этого и есть регистратор. Только в мапе будет map[string]interface{}. И json.Unmarshall запишет туда мапу, а не нужную мне структуру.
459 1951210
>>1951208
А, или ты имеешь в виду при помощи рефлексии как-то восстанавливать эту структуру из интерфейса?
460 1951316
>>1951208
Я вот не уверен на 100% что анмаршалер в интерфейс в котором лежит тип будет анмаршалить как мапу. Анмаршал принимает пустой массив и делает его инспекцию внутри.
461 1951322
>>1951210
Как угодно можно. Если тебе нужен конкретный тип чтобы оперировать та внутри кода, то тебе в любом случае придётся делать тайп свич.
Если нет, то ты можешь в рантайме генерить типы структур с помощью reflect
462 1951324
>>1951208
Ну и думается мне тебе нужно будет делать не map[string] inyerface , а map[string]function() interface{} чтобы функция новый экземпляр возвращала.

Ещё можешь для каждой структуры реализовать метод UnmarshalJSON и оперировать уже интерфейсом Unmarshaller или как его там.
463 1951425
>>1906239
Норм там в Озоне? Интересные задачи? Норм платят?
464 1951471
>>1906232
Ну если этот пидор мне заявит на этапе разработки про миллион одновременных пользователей - я уже и подумаю о использовании демона и готовности к горизонтальному масштабированию, само собой, за отдельный прайс. А делать для очередного интернет-магазина убер-производительную хуйню, кодогенерируя тонны хуйни вместо чутка сахарка, велосипедя кучу решений, сося без нормального орма - вместо того что бы просто хуйнуть ларавель + кучу готовых модулей + админку и задеплоить одним докер-контейнером - явно ебанина.
465 1951718
Вкатился в ваш го, как я понял, здесь пишут апишки и всякие кубернетесы. Чем я буду заниматься в конторе?
466 1951723
>>1951718
Будешь апишки писать. И кубернетесы всчякие.
467 1951767
>>1951718
Перекладывать жсоны из апишки в кубернетис
468 1951779
>>1951767
А если не переложилось, то ловить исключения ой .. или не ловить
469 1951788
>>1951767
Скорее протобафы в постгрес, а вот жсоны в etcd
470 1952850
Стикер191 Кб, 435x500
471 1953185
всем привет друзья я новенький новичок
472 1953198
>>1953185
Тогда учи жс. Тут тебе делать нечего. Язык может поймешь, а задачи которые на нем делают не поймешь.
Стикер191 Кб, 435x500
473 1953202
Меня вот это пугает немного.
474 1953203
Меня вот это пугает немного.
The size of the generic int type is platform dependent. It is 32 bits wide on a 32-bit system and 64-bits wide on a 64-bit system.
Например,
var a int = 10000000000
на 64 битовой системе будет работать нормально а
на 32 битовой системе превратится в -214 миллионов
Почему эту тупость оставили в голанге?
475 1953291
>>1953203
Может, это не тупость? Может, это ты тупой? Чисто теория такая шальная появилась вдруг. Как думаешь?
476 1953363
Анониусы, помогите, есть какой гайд по сараме (https://github.com/Shopify/sarama)?
Дока пустая, в гугле нихуя нет не понимаю откуда у нее вообще 7к звезд.
477 1953372
>>1953203
Предпологаеться, что если тебе нужна 64-х битная точность - используешь int64, иначе - платформ-специфик int. Другой вопрос, нахрена тогда нужен int32?
478 1953683
Тутор на русском не запускается
Ебля с установкой
Офлайн тутор не работает

Да уж
479 1953753
Одна из самых бесячих вещей в питоне - регулярная поломка совместимости между версиями питона. Находишь какую-нибудь прогу всего лишь пятилетней давности, а она уже не работает.
Думал, go этого избежит, но нет. Контролирующие разрабтку go гуглоскоты пошли немного другим путём, но который в итоге приводит к тому же результату, что старые проги уже не работают. А именно: активно ломают систему сборки: выкидывают gopath, выкидывают go get, внедряют кривую систему go mod. К тому же поломали сервер локальной документации, пропихивают ублюдочное жабоскриптовое зондоговно go.dev. Плюс жопа с плагинами для ide из-за поломок совместимости гошных тулз.
480 1953769
>>1953753
Короче, для go нужно делать стороннюю систему сборки и документации, которая будет стабильной и не привязанной к гуглоидам и другим корпорастам, любящих ломать совместимость и внедрять зонды. Для поставки со своми прогами, чтобы они могли нормально собраться через 5 лет.
481 1954023
Нахуя вам тутор на русском, вы ебанутые? На английском проходите.
482 1954062
>>1953753

>Находишь какую-нибудь прогу всего лишь пятилетней давности, а она уже не работает.


pipenv
483 1954295
Скажите, а gRPC сейчас прям маст-хэв? В компании, где я работаю макакеном на Go, все через обычный REST и JSON, но в вакансиях часто встречаю gRPC. Стоит освоить?
484 1954301
>>1954295
Да. Там несложно.
485 1954669
Программачик, привет

Я решил попробовать вкатиться к вам. Это первый ЯП (только в универе было). Работаю по ту сторону IT проектов. делаю вид, что управляю им и прочая хуита. Хочу через n лет заниматься чем-то полезным. Например попасть в SAP в их облачную разработку.
В чем я долбаеб?
Живу в Гейропке.
486 1954678
>>1954295
Ирония в том, что ответ на этот вопрос зависит от ответа на вопрос "нужен ли го".
Имхо, в общем случае, нахуй не нужен. И время еще нас всех накажет, за то что пошли на поводу у конъюктуры.
SS 2021-03-01 15.27.42.png28 Кб, 741x178
487 1954760
>>1905210 (OP)

> - В обязательном порядке проходим Go Tour: https://tour.golang.org/welcome/1 (есть на Русском)

488 1954918
>>1954669

>В чем я долбаеб?


В этом

>попасть в SAP

489 1954937
>>1954918
Это невозможно или не нужно?
490 1954952
>>1954937
На ютубе есть видео про плюсы и минусы SAP, погугли. Вкратце - кровавый энтерпрайз, живущий в собственном манямирке, за пределами которого твой опыт никому нахуй не нужен нигде, кроме самого SAP'а. Европейский 1С. Не пересекается с другим айти никак. Я даже не уверен, что ты там будешь голангом пользоваться, у них ведь ABAP.
Но говорят что в SAP очень большие деньги ворочаются. Правда их получают в основном консультанты, которые программированием не занимаются почти.
491 1955180
>>1954301
>>1954678
Спасибо
492 1955255
суууука, как же вы заебали с го-туром на русском. ну пройдите вы его на английском нахуй. все равно подавляющая часть инфы, которую вы в дальнейшем будете читать по голангу (если вкатитесь конеш), будет на английском
493 1955264
>>1955255
Почему бы просто не переводить эту подавляющую часть инфы на русский?
494 1955551
>>1955264
потому что большинству норм потреблять ее на английском?
495 1955651
>>1955264
Переводи
496 1955667
GOвно, согласны?
497 1956229
>>1955264
Потому что язык смешных пидорашек никому не нужен?
498 1956288
>>1956229
Черт возьми, как же ты прав.
Раз в месяц или с выходом нового обновления в обязательном порядке захожу в тред и вижу срущихся вкатунов со спорами, что язык конченый, обработка ошибок великолепно сделана, раст для пидорасов, слайсы сделаны великолепно, модули шатают от релиза к релизу, заебал бойлерплейт но мы только выиграли от этого.
499 1956367
>>1956288
Ты не понимаешь, это тоже рост, вниз — но рост же.
IMG20210303162803281.jpg76 Кб, 590x801
500 1956458
Ньюфаг-параноик здесь. Как отключить подглядывание Гугола?
501 1956522
>>1956458
Ты не только параноик, но еще и долбаеб.
Там ниже написано, пройти по ссылке и сконфигурировать без проверки хешей через гугл.
502 1956558
Изучал джаву, теперь хочу попробовать го, типа современный молодежный язык, в отличие от древней жабы с кучей легаси и огромными фреймворками.
Есть работа для ждуна/стажера на неполный день?
503 1956567
>>1956522
Не нашёл...
505 1956735
>>1956722
Благодарю.
506 1957109
>>1956558
нет
507 1957176
>>1955667
goвно, конечно, но остальные языки ещё хуже.
508 1957435
>>1956558

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

Там и свободный график будет, и удалённая работа.
509 1957498
>>1957435
А что их там учить-то? Криптовалюты говно редкостное и по сути пузырь, который скоро лопнет. Накидал заочно за щеку каждому майнеру-криптовалютчику
510 1957773
>>1957498
Каким бы радовать не был, на нём можно успеть нехило навариться на ровном месте
511 1958699
>>1954295
>>1954678

ирония в том, что независимо от го, http/2 и протобаф содержат в себе пиздатые идеи, но бенчмарки показывают, что по итогу дефолты из рест + json и gzip + ssl на nginx эффективнее

так что можете нассать на лицо хипстерам с grpc я разрешаю
512 1958758
Жява-боярин итт. Думаю выучить гошечку для разнообразия, а то уже подзаебало. Прошел го тур, но такое чувство, что где-то меня наебали, какой-то слишком примитивный синтаксис. Ни volatile тебе, ни эксепшенов. Как оцениваете, годный язык вообще, или костыльное уродство, которое ни один нормальный человек использовать в продакшене посложнее круда не станет?
513 1958770
>>1958758
Так как раз смысл в том, что ооп-враньё, эксепшоны и сложные модификаторы не нужны. И теперь тебе это станет понятно, и ты проклянёшь другие языки. Добро пожаловать
514 1958798
>>1958770
Хм, спасибо. ООП-враньё... Интересная мысль, конечно, но у нас в энтерпрайзе за такое и обоссать могут.
16144191068440.png711 Кб, 588x825
515 1958910
>>1905942
А поясните плз нюфагу зачем это нужно. Чтобы меньше памяти елось? Но сейчас же память копейки стоит, особенно для бизнеса. Или это как то на потребление проца влияет? Но вроде память и проц это немножко разные вещи.
516 1959020
>>1958910
Что именно зачем нужно? Ручное управление памятью? Им в го едва ли пользуются, хотя возможность такая есть.
517 1959362
>>1958910

абстракции стоят ресурсов, экономя время на разработку/поддержку/тестирование

аналогичная история и с gc/ручным управлением памяти - gc создает оверхед (и на cpu и stop the world делает), но упрощает, а ручное управление сложнее, но эффективнее (учитывая как го неглядя закидывает все в кучу, с скорость доступа в которую на порядок больше в стравнении со стеком)

вот и делай выбор в зависимости от ситуации/проекта - купить еще один сервер или нанять еще одного 300кк

например проекты gzip/ssl, через которые проходит очень много нагрузки и, предположим, мы возьмем условный гугловый дц с 1000+ хостов и 1+Tb траффика и возьмем за 0 текущие имплементации gzip/ssl

а теперь предположим, что перепишем gzip на go c gc и stop the world - сколько денег надо будет выбросить на ветер?

а предположим, что взяли одного 300кк и он оптимизивал ssl на 5% - сколько денег мы съэкономим?
518 1959495
Как получить значение которое лежит в канале, но чтобы оно там и осталось?
519 1959503
>>1959495
Вкратце: НИНУЖНО, как и любая другая фича в го.
520 1959504
>>1959503

> Вкратце: НИНУЖНО, как и любая другая фича в го.


Мне нужно пиздец как, иначе костылить придется.
521 1959505
>>1959504
Используй два одинаковых канала или ищи либу для блокирующей очереди, в жяве такое есть, вдруг и тут найдется.
photo-1465447142348-e9952c393450.jpeg943 Кб, 1868x1400
522 1960191
Посоны, как писать тесты с кафкой?
523 1960974
>>1959495
Такую логику можно сделать только с помощью конвейера. То есть у тебя будет объект с принимающим (in) и исходящим (out) каналом. Принимаешь из in, обрабатываешь, кладешь в out.
Либо пиши свою goroutine safe очередь.
524 1961419
В чем был смысл завозить в язык передачу и по ссылке, и по значению? Выглядит так, что это ненужное усложнение, которое мало кто понимает до конца, и которое вызывает проблемы с выделением памяти (пример - range по массиву vs range по ссылке на массив).
525 1961428
>>1906606

>поинтер - не прямой поинтер в ОЗУ в отличие от звездочки в Си/Крестах


ага, виртуальную память в ос на уроках информатики не преподают, только кресты?
526 1961444
>>1924321
про корпоративные либы жиза
ни http ни стандартные логгеры на го ни разу не использовал
залетел на проект - открыл репу с проектом, выдернул оттуда
import gitlab.com/govnoKorporazia/logger
import gitlab.com/govnoKorporazia/http
и погнали
по необходимости оттуда же трейсер, базу и тд
527 1961449
>>1961444
Мы вам перезвоним. Хм, кажется, я ошибся тредом.
528 1961459
>>1961449
мне самому по 5-10 раз в неделю звонят, если резюме открыть, так что не страшно
ебать кстати на голангеров нехватка разработчиков, перешел с джавы - там полно 40-летних дидов, которые готовы за 100к работать сеньорами в аутсорсе. В гошечке мидлам с порога 150-200к дают
529 1961462
>>1961459
А с джунами как дело обстоит? Я сам на жяве сейчас пишу, полтора года опыта есть. Думаю вот в голанг перекатиться.
530 1961541
>>1958699
Интересно было бы взглянуть на тесты
531 1961555
>>1961419

>передачу и по ссылке, и по значению


>которое мало кто понимает до конца


Такую чушь в школе на информатике учат, о чем ты ?
532 1961582
>>1961444
У нас в продакшене хттп из стандартной библиотеки, полет нормальный
533 1961880
>>1961555
О том, что в го в этом нет смысла. Суть самих терминов понятна, но конкретно в го это реализовано через жепу и не имеет практического смысла, насколько я вижу.
534 1961893
Поясните про указатели, аноны. Надо прояснить один момент, допустим есть вот такой код: https://pastebin.com/8Uy7PmyT

В какой-то момент я беру и присваиваю переменной s новый экземпляр Struct, потом вызываю метод doSmth(&s.value) и забываю об этом. В глобальной переменной staticInt теперь хранится указатель на какой-то int. Так вот, на какой int это указатель, под него выделена память (только на один int), или же это указатель на поле переменной s и подо всю структуру была выделена память? Это копия s?
535 1961904
>>1961880

>что в го в этом нет смысла


Давай по подробнее, почему нет смысла? Нужно передать структуру с малым размером - копируй, с большим размером - через адрес. Методы структуры не подразумевают в себе мутацию - копируй. Хочешь чтобы было без nil-pointer исключений, пиши только через value, хочешь мутированть абсолютно все, пиши через указатели. Для каждого случая будет куда эффективнее то или иное решение, поэтому советую использовать pprof и trace.
536 1961986
>>1961904
Я бы предпочел один вариант. Го же декларирует минимализм как высшую цель, так зачем давать лишнюю гибкость? Пусть все передается по значению на уровне кода, но под капотом оптимизируется через указатели, где это нужно (сомневаюсь, что это неподъемная задача для компилятора - определить, какой вариант задействует стек вместо хипа, например). Можно ввести вместо этого хинт для компилятора, скажем, коммент "immutable" над объявлением структуры, если не хочешь, чтобы он оптимизировал и потенциально мутировал ее.
537 1962000
>>1961904
Добавлю, что эти гошные указатели - ни рыба, ни мясо, так как прямого доступа к памяти нет. Вот и выглядят больше то ли как атавизм, то ли как дань уважения сям/плюсям.
538 1962306
https://github.com/tucnak/gopp
Ну шо, мужики, илюша ожил, получается?
539 1962371
>>1962000
Что ты подразумеваешь под прямым доступом? Адресную арифметику, возможность прочитать/записать любой байт адресного пространства процесса?
540 1962372
>>1961893
Память выделена под всю структуру.
Это указатель на поле s.
541 1962373
>>1961986
Всё и так передается по значению. Указатель - это просто тип данных, то есть один из типов этих значений.
542 1962377
>>1959362

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


>скорость доступа в которую на порядок больше в стравнении со стеком


?
543 1962418
>>1962371
Именно так.
>>1962373
Ты прекрасно понял, о чем я говорю. Наверно, нет языков, где бы фраза "передача по ссылке" имела бы смысл, потому что все равно копируется значение чего-то, будь то указатель или что-то еще.
Смысл в том, что смысла в этом типе данных не то чтобы много, а проблем он добавляет, потому что работу компилятора по оптимизации теперь должен делать кодер.
544 1962514
А че нахуя этот яп нужен кроме как удовлетворить желание стать кодером для всяких хипстеров?
545 1962627
>>1962514
чтобы охуенное и быстрое ПО писать
546 1962688
>>1962627
А теперь пруфай, почему жява + нетти не покрывают 95% кейсов, когда требуется скорость.
547 1962797
Discord переписал код с Go на Rust. Это победа!
548 1963150
>>1962797
Лучше бы они своё ебаное приложение переписали на раст с ебаного жопаскрипта, хоть так перестало бы жрать ресурсы даже в простое, лол.
549 1963153
>>1962688
1) С го траты на инфраструктуру всё равно будет меньше;
2) Траты не персонал вокруг этой инфраструктуры точно так же уменьшатся.
Язык для даунов правда, но не признавать профиты = быть хуже дауна.
550 1963162
>>1963153
С чего ты решил, что затраты на инфраструктуру будут меньше? С чего ты взял, что эти затраты играют роль, когда платить гошнику надо больше, а библиотек доступно меньше, что в совокупности удорожает разработку?
551 1963285
>>1961462
ну я спустя год работы на джаве ушел на 160к
552 1963289
>>1963162

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


Разница в 10-15% не играет роли, когда надо нанять лишнего девопса (а хороший будет стоить почти как синьйор-помидор программист) чтобы просто менеджить всё это говно (а то и двух-трёх, кекус).

>а библиотек доступно меньше


Ну, тащемта ирл всё работает в стиле "так, у нас в <залупа-фреймворк-нейм> есть такие-то либы, юзаем их и больше нихуя не тащим, я тимлид — я так скозал".

А в целом всё, что может быть нужно для типового проекта — есть, а всё чего нет — энивэй специфичная хуитень, которую писать придётся под конкретную задачу.
553 1963324
>>1963289
Разраб-то не один нужен, а гошников пойди найди еще, так что суммарно разница в зп покроет затраты на девопса. И я так и не понял, в чем же го настолько упрощает инфраструктуру проекта, что девопс прям не нужен.
image.png14 Кб, 418x174
Асинхронность в Go 554 1963337
Подскажите толковый getting started по асинхронности в Go. Tour of Go прочел, но местная глава по рутинам, каналам и мьютексам настолько куцая, что это пиздец.
Притом, когда я перешел к типичной практической задаче - сделать запрос - с удивлением обнаружил, что, например, http.Get вызывается как чисто синхронный метод, а рутинами-каналами-мьютексами тут даже не пахнет.
Короче, нужны базовые пояснения по теме. Почему базовые? Я еще разбираюсь, нравится мне Go или нет. Читать "Искусство философии идеального проектирования" на тыщу страниц не готов. Пока.
На примере JS, я бы хотел материал, который бы мне рассказал про async-await, пояснил, что есть Promise.all, закрепил бы примерами в духе "так мы получаем ответ на запрос, а вот так делаем, если шлем сразу много запросов, и вот так ставим таймеры".
555 1963349
>>1963337
Тут используются stackful coroutines, а не stackless, поэтому никаких прамизов и фьючерсов тут нет.
556 1963364
>>1963349
Я и не говорю, что они тут есть. Я спрашиваю, где лучше посмотреть примеры реализации тривиальных задача уровня "запросил - распарсил - записал".
557 1963729
>>1963349

>фьючерсов тут нет


Их можно самому накостылить.

>>1963337
Хуй знает, как то с практикой само приходит. Когда пробуешь сам что-то собрать, или всякие видео с ютуба, или код на гите смотришь.

https://play.golang.org/p/BD4D6UvwP3z
Вот примеры для начала, попробуй, поковыряй, прочитай чем отличаются каналы с буфером и без, способы их читать и тд. Уверен все это описано в любой книге типа "go concurrency ...".
558 1963839
>>1963729

> Их можно самому накостылить.


Нахуя они нужны только
559 1964094
>>1963364
Просто берёшь и пишешь код так, блять. Запросил, распарсил, записал. Не надо тут никаких промисов, блять, всё синхронное.
Горутины - это зелёные потоки.
560 1964764
Всегда считал этот ваш Пщ сойбойской хуйней, а оказывается его серьезные люди разрабатывали и вообще он делается чуть ли не на замену С. На Ютубе видел мнение, что кроме этой https://github.com/karlseguin/the-little-go-book книжки и стандартной документации + гугла ничего не нужно. Согласны?
561 1965590
>>1958758

> Java


> боярин

562 1965593
>>1965590
Ну и в чем я не прав?
563 1965597
>>1964764
Согласны. Для меня причастность Кернигана и Томпсона вообще стала главным аргументом за изучение
564 1966565
работал инжом - погромировал плк в somachine/codesys. пили проекты на arduino/esp/stm. изучал c#, java, python. а теперь у меня рак и на работу могут обратно не взять, да я и сам скорее не собираюсь, думаю производство меня и сгубило. поэтому думаю сделать перекат в айти, на шабашках особо не уедешь, а деньги на лечение нужны. все советуют сделать вкат в Go, как лучший по соотношению скорость вката/профит. стоит пробовать? времени у меня не так много, хотелось бы не ошибиться.
565 1966732
двач, поделись идеальной структурой проекта - например, какого-нибудь crud'а с rest api. вроде бы структурировать проект несложно, однако сделать все это дело расширяемым и одновременно сохранить гошную минималистичность - задача непростая

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

статей на эту тему много, но там какие-то уж совсем игрушечные примеры, да и везде делается по-разному
566 1966940
>>1966732
Я со временем понял, что вообще все равно какая у тебя там структура, главное чтобы было как можно проще и поменьше вложенности. Например: https://github.com/techschool/pcbook-go
567 1967343
>>1905210 (OP)
Сап, программач. Анаунсеры, подскажите шо не так делаю.
В общем, понадобилось подпились проект на го, я php moddle+ где-то, с го не работал. Ну, хуйня, думаю, прочитаю доку, там посмотрим.
Так вот, хуйнул пустой проект сперва, он находится в D:\golang\testproject
GOPATH прописал для него в D:\golang\testproject\go (пик 1, не возбраняется вроде внутри рутовой хуячить, насколько я понял).
Поковырял, дальше хуячу пакет по туториалу (пик 2, пик 4), и шо за хуйня в итоге - в main.go не хочет по короткому имени импортировать пакет (пик 3).

Где я скривожопил? Все по тутору делал, по книге. Нихуя не понял.
Знатоки-ананы по го подскажите плес.
С меня как обычно
568 1967701
Гугл закрыл godoc.org, но люди воcстановили в виде https://godocs.io/
Снимок экрана 2021-03-15 в 20.08.57.png14 Кб, 390x256
569 1967728
Не устану проигрывать с вашего куколдского языка
570 1967758
>>1967728
Двачую, лишний раз заставило задуматься, не хуйню ли я собираюсь изучить.
571 1968048
>>1967343
У тебя гопас указывает на го, то есть пусть импорта от него будет срц/ивен
Алсо, не знаю, зачем делать гопас для проекта, обычно он один на систему.
572 1968146
>>1966565
бамп
573 1968261
>>1966565
Попробовать стоит, только имей в виду, что программирование это не лёгкие деньги, а больным работать кем угодно будет сложно.
Да и хочешь ли ты последние пару лет жизни провести за перекладыванием джейсонов?
574 1968369
>>1968048
ну анончик, удобнее, когда пилишь пакет все в одном месте импортнул проект и хорошо. К тому же го позволяет это делать.
Ток не работает нихуя почему-то.

срц/ивен тоже хуй
575 1968820
>>1966565
запили стори по раку
576 1969698
>>1967728
Пиздец...
577 1970362
>>1905210 (OP)
Раз голенг такой лёгкий быстрый, то в него наверно много вкатываються...
Много ли среди местных анонов которые перекатились с продаж, пятерочки или мака?
мимо офисчервь 29лвл
578 1970448
>>1970362
Го это мова для людей, которые пару лет проработали на какой-то другой. Иди в джаваскрипт смузи попей пару годиков, потом к нам.
579 1971116
>>1970448
Кстати да, интересно почему итт частенько мелькают аноны, вкатывающиеся с других языков, в то время как в тредах типа жявы или жс одни зеленые.
580 1971207
>>1970448

>Иди в джаваскрипт


Каким образом джаваскрипт поможет человеку вкатиться в го ?
581 1971229
$ go build -ldflags="-s -w" hello-world.go
$ du -hs hello-world
1.4M

ЧТО БЛЕАДЬ?!?!?!
582 1971247
>>1971229
Дурак! Ты зачем свою мамашу в бинарник скомпилировал ???? (О_о) А кто ГОвно за тобой чистить будет? Эх вот была бы возможность отключить к хуям этот GC и самому памятью менеджить, хотя ладно там "отключить", вот бы самому иметь возможность её освобождать.
583 1971252
>>1971247
В гошном GC кода на мегабайт?

Отключил в хелоуворлде импорт "fmt", бинарь похудел до 800 Kb. Всё равно ебануться
584 1971258
>>1971252
Ну половина, может меньше, GC, потом там всякие reflect, panic-time traces и много всякой хуйни, которую ты можешь и не использовать.
585 1971265
>>1971258
Там блядь четыре строчки кода:

package main
func main () {
print("Hello ОЯЕБУ")
}

Откуда 700+ Кб хуиты в бинаре?
586 1971269
>>1971265
https://dr-knz.net/go-executable-size-visualization-with-d3.html
Вот, смотри, изучай. Там человек поясняет, а потом уже сам гугли почему runtime.pclntab весит как кашалот.
587 1971275
>>1971269
На C++ со всеми ебучими iostream 8кб хеллоу ворлд

GO конпелируемый же, нахера ему эти рантаймы?
588 1971335
>>1971275

>the Go team decided to make executable files larger to save up on initialization time.

589 1971350
>>1971229
>>1971265
Чел, тебе лучше не видеть, сколько весит типичный исполняемый файл жявы, схватишь отвал жепы вообще. 1.5мб ему много, охуеть.
590 1971519
>>1971335
Точняк, если засирать кэши неведомой сранью, то всё в космос с разгона улетит

>>1971350
Жаба все-таки на виртуальные машины ориентирована, а тут типа нативочка. На самом деле в 10Кб машинного кода это уже охуеть сколько методов влезет, а тут блеа полмегабайта с лишним всякого
591 1971521
>>1971519

>засирать кэши неведомой сранью


Я слышал в быстрых плюсах программа может компилиться пару часиков. Наверное все таки быстрота и размер не одно и тоже.
592 1971558
>>1971521
Вообще не понял, причем тут время сборки. Компромисс оптимизации скорость/время имеет место быть, но в любом случае даже при оптимизации машинного кода на скорость выполнения компилятор должен учитывать его размеры, чтобы эффективно использовать кэш, а это не больше нескольких десятков килобайт на ядро для уровня L1
593 1971560
>>1971558

> скорость/размер


fxd
594 1971658
>>1971207
строчкой в резюме, где будет написано, что чел занимался макакингом на жсе. на месте жса в принципе может быть любой язык из популярных, просто в жс проще всего вкатиться
595 1971699
>>1971658
Перед вкатом в Go лучше всего изучать Pascal

жаваскриптер, охуевающий от размеров гошных бинарей
596 1971856
Я залетный. Мне абсолютно всё нравится в GO, кроме err != nil. Слышал краем уха, что в GO 2 с этим планируют что-то сделать. Это правда? Где вообще за планы на GO 2 почитать?
597 1972046
2
598 1972102
>>1971699

>Pascal


а перед посКАЛем ?
599 1972182
>>1967728
Это не язык, это американские корпорасты, которые доминируют практически во всей компьютерной индустрии. Хотя если говорить о языке, то программеры обязаны использовать куколдский английский, где им запрещают слова типа master/slave.
Корпы и за пропаганду ЛГБТ выступают:
https://www.microsoft.com/inculture/pridelive/
https://pride.google/
https://appleinsider.com/articles/19/10/24/five-years-after-coming-out-apples-tim-cook-says-he-has-not-regretted-it-for-one-minute

Напомню современные западные ценности: гомосексуализм, феминизм, атеизм, инфантилизм, социал-дарвинизм и т.д.
600 1972547
>>1972182

>социал-дарвинизм


Не очень с остальным списком вяжется.
601 1972731
>>1972182
всегда удивляюсь, как можно быть айтишником и ватником одновременно ?
602 1972739
>>1972731
Причем тут ватник? Человек адекватно расписал про нездоровые тренды и повесточки от людей с тонкими и длинными носами. Ты о чем вообще?
603 1972882
>>1972731
А в чём проблема? И почему неприятие сжв-шизы это ватничество?
604 1973013
Как выучить голенг?
605 1973116
>>1973013

> Как выучить голенг?


Это невозможно, проходи мимо
87ecbfbb391dff08816adb5f41ff609d.jpg22 Кб, 604x341
606 1973773
>>1972731
Ну, ты просто во власти стереотипов, мол, если айтишник - то обязательно сойбой-либераха. Это как удивляться, что среди учёных есть верующие люди.
607 1973867
>>1972731
>>1973773
Тут недавно один айтишник давал интервью и с свой блог выкладывал видео, как он в ШВИТОЙ пожил и оказалось, что сжв и толерантность в реале - это нихуя не весело. И съебал в белорашку, лол. Он прям так и говорит: "я думал, что я толерантный и против Путина, значит я либерал"...
Чёрно-белые маньки просто жизни не нюхали, удобно рассуждать, поедая мамкин борщ сидя в Барнауле.
https://www.youtube.com/watch?v=5pkrlZGFzF0
608 1973934
>>1972182

> Это не язык, это американские корпорасты, которые доминируют практически во всей компьютерной индустрии.


Ну, вообще-то нет. Никто никого не заставляет БЛМ-баннеры вешать на главной странице сайта. Более того, их никто и не вешает кроме 3.5 идейных "кабы чего не вышло"- куколдов.
609 1973937
>>1973867
На самом деле это просто другая крайность, все эти попрыги вещающие о том как плохо жить в бездуховной дерьмании. При этом никто из них в Барнаул не едет почему-то.
610 1973942
>>1973934

>Никто никого не заставляет



Ещё как заставляют. Если ты что-то антикуколдское вякнешь, то тебя из американской корпорации не только уволят, но и потом в другие места трудоустроиться будет сложно. Поэтому когда кто-то там предлагает поместить куколдскую плашку на сайте, то никто не осмелится возразить.
https://en.wikipedia.org/wiki/Cancel_culture
611 1973954
>>1967343
Нахуй ты используешь GOPATH для новых проектов? Сделай go mod init в директории проекта и импорты заработают как в нормальных языках, по имени пакета или по репозиториям библиотек
612 1973956
>>1973942
В РФ по сути такая же хуйня в плане воспитания рабства. Только вместо куколдской идеологии тут заставляют бюджетников обслуживать интересы воров и убийц: фальсифицировать выборы, фабриковать уголовные дела, пытать в тюрьмах и т.д.
613 1973972

>полметра рантайма в бинаре


>нет структурной обработки исключений


Пиздец просто пиздец. Это не язык, это недоразумение какое-то
614 1974033
>>1973972
Haha
if err != nil { return nil, err }
Go brrrr
615 1974064
>>1973972

>Go придумывали как простой язык для всего



>К тому времени Google уже разрастался в гигантскую корпорацию, начинались проблемы со скоростью разработки. Там было очень много кода на C++, поддерживать его становилось все труднее. Задача, которую себе поставила компания, казалась почти наивной — изобрести очень простой язык, на котором можно будет делать очень сложные вещи.



Любое инженерное решение это всегда компромисс между 2+ факторами. Ну и в данном случае решили пожертвовать размером итогового бинаря. Тем не менее, при необходимости ты всё еще можешь при желании уменьшить размер практически на порядок.
616 1974125
>>1973972
какие ты задачи собираешься решать на го, что тебе не похуй, какой там вес у бинаря?
617 1974142
>>1974125
Ммм, в ардуину пихать. Только вот не надо "купи флешку на 512 Гб"
618 1974218
>>1974142
Про облака слышал?
Иначе зачем го на ардуине прости Господи
619 1974222
>>1974218
Ты путаешь ардуину и распберри. Да и не для всего клауды могут заменить распберри.
Другой гофер
620 1974453
>>1973937
Он в Минск поехал, алло, это даже хуже Барнаула. Насчёт крайности согласен, но всё же. Он там в другом видосе про корпоративные дрязги поясняет и общий уровень специалистов в муррике.
Вот, послушай:
https://youtu.be/lIPPpwgDgKQ
Вполне объективно. Ну, для меня это и не секрет был, не он первый.
621 1974459
>>1974142
У меня на работе самые сложные сервисы с отладочной информацией весят по 40мб.
Но да, эмбед это нецелевое использование, тут ты соснёшь.
622 1974483
>>1974142
нахуя тебе в эмбеде язык со сборкой мусора?
623 1974525
>>1974483

>Не пишите так


>Не используйте язык для этого


>Не используйте такую архитектуру с этим инструментом


>...


>Делаем gobot/tinygo


>Не используйте во встраиваемых системах


Ясно, иди нахуй
624 1974540
>>1974459
У меня порядка 120 мегабайт, имеджи по 150 мб, но это вообще ни на что не влияет.
625 1974561
>>1974525
бля, а почему ты не идешь ныть на ту же тему в тред к джавистам, шизик?
626 1974563
>>1974525
Те кто писал gobot/tinygo, они просто, взяли и начали делать, без нытья о размерах бинарников на двачах. А теперь слушай сюда, нытик ебаный, прямо сейчас, ты идешь, похуй каким способом, но впихиваешь этот бинарник, размером с жопу твоей мамаши, в свой ебаный ардуино. Всё, свободен.
627 1974573
>>1974563
Взяли и засунули твою жирную мамашу в твою комнату 1х1. А тебе норм.
628 1974576
>>1974573
А ты представь каким нужно обладать энтузиазмом и умом, чтобы уместить кашалота в комнате 1х1. Иди делай свою хуйню, покажи что ты не пизда, потом здесь похваставшийся.
629 1974589
>>1974525
Почти все самые популярные языки портированы в эмбед силами энтузиастов и даже корпораций, но ни одно из этих поделий не нашло применения. Порт го не исключение. Эмбед делается на С, точка.
630 1974608
>>1974589
Иногда еще на плюсах, ну и раст набирает обороты
gophercom.png801 Кб, 1080x1080
631 1974862
633 1975002

>полметра рантайма в бинаре


>нет простейших вещей вроде Array.pop()



Продолжаю проигрывать с этого поделия

мимо жаваскриптер
634 1975038
>>1975002

>эти звуки со стороны параши с динамической (!) слабой (!!!!) типизацией


Бревно в глазу не мешает?
635 1975069
>>1974608
Бинарник растовского хеллоуворда весит почти 5 мегабайт. Это даже хуже гошного. Сразу видно, что ты к эмбеду никакого отношения не имеешь.
636 1975115
>>1974589
Эмбед делается на ассемблерах. Точка. Си слишком жирный, для неосиляторов. Не говоря уж о ещё более жирном монстре С++.
637 1975162
>>1975115

> Эмбед делается на ассемблерах.


Ебанутый ты.

мимо из embedded сферы
638 1975167
>>1975162
Ардуина - это не эмбед.
639 1975334
>>1975115
Я работал в эмбеде, а потом ещё делал отладчики для С/С++ под импортозамещённые процессоры, которыми пользовались эмбеддеры. Давай не рассказывай мне. В современных контроллерах достаточно памяти, чтобы не надо было биться за каждый байт
640 1975603
>>1975038
Типизация это та хрень для пользователей IDE, чтобы метода из контекстной менюшки брать?
641 1975674
>>1905210 (OP)
1. ООП в Го нет
2. Функциональщина тоже слабая

В связи с чем встает вопрос: как блять на этом писать? Как вообще на этом пишут и поддерживают проги сложнее хеллоу вордов?
642 1975683
>>1975038
Я в основном на тайпскрипте в последнее время пишу
мимо другой жс-господин
643 1975686
>>1973867
На 6:00 начинается про Путина если че
644 1975717
>>1975674
Лучше поясните почему говорят что в go нету ООП.
По-моему всё есть кроме наследования ( вместо которого юзается композиция )
Видел в одном чате паренек задал такой вопрос, после чего его все обоссали. Когда просил пояснить по существу, сыпались ответы по типу "ну пиздец ты тупой, нет слов, что тут объяснять".
Ну а еще один челик написал что в го объекты не объекты, потому что они по умолчанию передаются не по ссылке. Соответственно объектов нету, го не ООП. Я даже хуй знает, рофл это или шиза.
645 1975836
>>1975674
Ну как-то на С все современные ос написаны и поддерживаются.
646 1975886
>>1975717

>вместо которого юзается композиция



вот это как раз ключевой момент: наследование != композиция. буква L в solid'е поможет понять, почему это разные вещи
647 1975888
>>1975674
поддержку реально сложных программ тебе и ООП не сильно облегчит
shut.jpg206 Кб, 1200x881
648 1975991
>>1975836

>на С


Стоп... Бля, это и есть реальный аргумент Гошников?) Сравнивать их ЯП с Си? Пиздец...
sage 649 1976750
test
650 1976787
>>1975674
структурно/императивно, я полагаю ‍♂️
а вот когда ты на условном объектном руби пишешь 2 + 3, это императивный код или объектный? конечно объектный, потому что руби объектный язык и 2 + 3 это как 2.send(:+, 3), но ведь с точки зрения читателя кода выглядит императивно
651 1976788
>>1975886
так и солид к ООП не относится, разве нет?
почему блять человек, которому приписывают современное ООП, говорит, что основная идея -- message-passing, а все дрочатся с этими объектами, наследованием и прочим, ну камон
652 1976888
https://www.practical-go-lessons.com/
Наконец-то, человеческая книга по Го.
image.png138 Кб, 450x305
653 1977044
Этот тред - храм GOЛОВЫ. Нет никакого официального храма, любой тред с ликом GOЛОВЫ и кратким описанием и есть храм. Ты можешь в любом храме попросить у GOЛОВЫ денег, и она даст. Может быть, ты можешь попросить что угодно - попробуй, вдруг получится? Ты можешь поделиться с GOЛОВОЙ тем, что тебя гнетёт, и она уберёт твои печали. Нужно только просить.
Просите, Аноны, и GOЛОВА даст вам то, что вы просите! Никто не уйдёт обделённым! Никто не уйдёт обиженным! Просите, и вам будет дано! Каждому!
654 1977265
>>1975991
Так он же вроде и создан как замена С на будущее.
655 1977306
>>1977265
Еще один "убийца С"...
Нахера вообще лезть в эту нишу? Нет бы делать нормальный ЯП для Людей
656 1977658
>>1977306
это какой, например
657 1978617
В очередной раз отписываюсь, всё ещё пытаюсь хоть куда-то вкатиться на го. Уже скоро год пройдёт... Как же хочется стажу...
658 1978638
>>1978617
В чём проблема вкатиться?
659 1978659
>>1978638
В том же, из-за чего большинство работает за гроши.
660 1978703
>>1978638
Везде опыт от года до трёх
661 1978704
>>1978659
Да я бы уже даже не за гроши, а за опыт просто работал. А то вообще не ебу чем после вуза заниматься
662 1978705
>>1978703
уже не знаю, может в php вкатиться, чтобы потом на го взяли через годик работы
663 1978844
>>1978659
>>1978703

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

Я год отпитонил, прошёл тур оф го и с конца прошлого года уже в одной известной конторе.
664 1978847
>>1978844

>даунами


джунами
665 1978878
>>1978844
хз, на питон тоже пытался вкатываться, вроде как с джунами та же история что и на го
666 1978895
>>1978844
Я-то уже вкатился, просто твой вопрос показался наивным.

>>1978659-анон
667 1978929
>>1978878
На питоне больше вакансий, т.к. он популярнее.

Алсо, не пишите в резюме и никому не говорите, что вы джун. Заголовок пишите просто go/python- или backend-разработчик. Если перекатываетесь, то старый нерелевантный опыт одной записью, если вкатываетесь, то можно указать место учебы вместо работы, а в описании расписать какие проекты пилили. Можно преукрашивать, но не врать. Задача - пробить hr и попасть на технический собес, где уже раскрыться. Соотвественно всю базу надо знать на отлично и не плавать на вопросах, а также код писать онлайн.
668 1978964
>>1978705
>>1978705
Я вот сейчас этим и занимаюсь, лол.
669 1979011
>>1978964
Только в цмски не залазь, особенно в Битрикс, сам сейчас от этого говна отмываюсь, лучше laravel, yii
670 1979016
>>1979011
Я уже на стадии повыше. Отмываюсь от ларавела, изучаю симфони. Времени конечно побольше займет, но пользы тоже больше будет. Ну нахер эти RAD-фреймворки, только деградируешь с ними.
671 1979203
Если у функции много аргументов, нормальная ли практика создавать структуру, содержащую аргументы, и передавать ее?
672 1979361
>>1979203
если аргументы это например какие-то параметры одного объекта, то да. Иначе логика проёбывается
673 1979362
>>1978964
и как, удачно? Что советуешь для быстрого вката?
674 1979378
>>1979362
Ну если бы я ориентировался на быстрый вкат в работу, то сразу бы вкатывался в ларочку после изучения синтаксиса пыхи, сделал бы какой-нить круд и стучался бы по вакансиям. Ну и само собой нужны основы фронтенда
Еще проще вкатиться на менее популярные фреймы: cakePHP, codeigniter, zend и прочее. Никто их самостоятельно изучать не хочет, потому работодатели берут нулевых людей и учат.
Но я в корне не считаю это правильным решением. Из-за таких людей на самом деле и хейтят пхп - ибо круды на ларавеле и прочих RAD-фреймах можно шлепать вообще без знания программирования. Таких людей, по моим ощущениям, много.
Я же не спешу: долгое время сначала всякие задачки олимпиадные делал, алгоритмы и прочее. Потом ООП в пхп треде на ООП прекрасные задачки и код-ревью от ОПа, часы ковыряния в исходном коде симфони, самописный MVC фрейм, ларавел который мне не понравился ( ведь я уже знал что все те самые вещи реализуются в симфони на порядок изящнее ), вот опять симфони изучаю.
675 1979787
>>1979378

>Еще проще вкатиться на менее популярные фреймы: cakePHP, codeigniter, zend и прочее.


и ковыряться в легаси говне потом на пхп 5.6 в лучшем случае
676 1979875
>>1979787
Человек спросил как побыстрее вкатиться. Я и ответил, что не считаю скорость вката преимуществом. хоть я и хуй с горы и даже не джун, и моим мнением можно подтереть сраку
Вообще не понимаю, почему люди постоянно говорят о низком пороге входа как о достоинстве, а о высоком как о минусе. Больше всего бесит, когда такое затирают серьезные дяденьки на всяких подкастах и докладах.
Область обрастает дегенератами, неспособными без гугла ошибку прочитать и проанализировать, я уж молчу про что-то большее.
Зайдешь в чат какой, от некоторых вопросов под землю провалиться хочется. Задают люди работающие, за пределами фреймворка совсем ничего не знают. Стыдно вообще быть частью такого комьюнити.

Потому кстати мне go так понравился. Нулевых людей, что вашли вайти по курсам от гикбрейнс в нем не наблюдаю.
Пердуны с закостенелыми мозгами, которые отказываются принимать что-то новое и пишут свой код так же, как и 15 лет назад, здесь по понятным причинам тоже отсутствуют.
Видно, что большая часть сообщества - это самые адекватные выходцы из других языков, которые знают зачем сюда пришли.
Если буду крутиться рядом с такими - точно не проебусь.
677 1980049
>>1979875
да не, я без доеба. я 2 года назад начинал также с пхп, и первая работа моя была на галере, где меня посадили поддерживать проект на первом или втором зенде. около 2 месяцев я просидел без особого профессионального развития (не считая чтения всякого во внерабочее время), т.к практически в одиночку ковырялся в легаси кале.
и я убежден, что большинство мест, где используются перечисленные тобой технологии, являются чем-то подобным тому, где был я. они не дают никакого профессионального развития, но это пол-беды: они не дают релевантного для нормального работодателя опыта, что только усложняет процесс вката

йии/ларавель - тоже помойка. качественный вкат в пыху, имхо, возможен только через симфони (или какой-нить слим + компоненты симфони), т.к на нем работают дядьки, у которых +- присутствует знание дела
678 1981164
>>1980049
Симфони – точно такое же фреймворкоговно, только с концепциями/конфигами позаковыристее. В плане, что на нём точно такие же "специалисты симфони" вырастают. Зато после него на лару можно присесть без подготовки, а вот наоборот не получится.
мимо симфонист
679 1981275
>>1981164
да, в общем-то ты прав. Но на лару после него садиться не хочется)
680 1981372
Тред захвачен ПЫХОЙ. Теперь это ПЫХОТРЕД, гошники, уходите.
681 1981387
>>1981372
Да здесь всегда что угодно, только не го обсуждается, пора бы уже привыкнуть.
682 1982644
Перекатывать Пушкин будет?
683 1983218
говно
1617283727903.png394 Кб, 1522x682
684 1983283
Go очень простой, в нем всего 25 ключевых слов, говорили они.
пиздец, как с этим можно каждый день работать вообще?
685 1983297
>>1983283
Зато не жаваскрипт, который спроектировали за одну неделю.
686 1983446
Гофераны, вы как без map/reduce живете? for-лупы на каждый ебучий чих крутите?
687 1983496
>>1983446

>for i, e := range list {}


>hui.reduceLeft(i => {})


Если бы даже был reduce, без темплейтов и остольной абстрактной хуйни, это нахуй не нужно.
16097560136850.jpg32 Кб, 552x552
688 1983632
>>1983446
Вполне нормально, а вот сишных тернарных операторов реально не хватает.
перекатился с плюсов
689 1983845
Ладно хоть GOTO есть. И на том спасибо!
690 1983959
>>1983845
Лютая дичь, порицаемая на уровне eval, но реализована. Иначе в "простом" языке никак.
691 1984447
Двач, как работать с вложенными сущностями без ОРМ? У меня есть такой пример - https://play.golang.org/p/mcnd8slf866

User подгружается из БД, в отдельных таблицах лежат Address и Contact. Address подгружать из БД нужно не очень часто, поэтому в самой структуре я храню просто его ID. А вот Contact мне почти всегда нужен в том же месте, где подгружается пользователь. И мне не очень хочется делать несколько запросов там, где можно сделать один. Нормально ли делать так, как я сделал в примере? Или же лучше заменить Contact на ContactID и подгружать его из БД дополнительным запросом?

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

Использую стандартный пакет для работы с sql. Gorm и другие ORM, пожалуйста, не предлагать, про них знаю.
692 1984561
>>1983283
слайс указывает на лежащий под ним эррэй. функция эппенд копирует слайс, но не эррэй. эррэй копируется только если в нем не хватает места на расширение слайса. все оч даже логично
693 1984676
>>1984561
Очень логично, только нахуй это нужно вообще?
694 1984683
>>1984676
Чтобы лишний раз не копировать массив. Это что, так сложно ? Чтобы добавить элемент в массив у которого cap == len, то нужно создать новый массив и скопировать туда все данные из старого массива.
695 1984765
>>1984676
А как бы ты сделал по-другому, умник?
696 1985021
>>1984765
Я бы поручил тебе сделать нормально под страхом увольнения.

мимо тимлид
697 1985117
>>1984765
Как и во всех нормальных языках: чтобы разработчику не приходилось копаться во всем этом говне под капотом. Ты же из этого совсем никак не выигрываешь, особенно когда не системщину пишешь, а апишку для интернет-магазина.
698 1985164
Бляяяяять, как же это убого: https://github.com/abice/go-enum
Вроде язык новый, а таких примитивных вещей, как енумы, которые есть даже в старой жяве, не завезли. Зато блэк лайвс мэттэр на главную страницу завезли. Заебись приоритеты.
image.png64 Кб, 604x318
699 1985168
С этим вашим го чувствую себя как чел на пикче. Вроде уже и время потратил поразбираться, так что бросать жалко, но некоторые его недостатки (упорно неисправляемые разрабами под крики НИНУЖНО!11) - просто пиздец.
700 1985423
>>1983959
Он нужен для сгенерированного кода, а разРАБам вполне хватает break [label] и continue [lable]
701 1985435

> Go is a great programming language


Хейтеры сасать
https://drewdevault.com/2021/04/02/Go-is-a-great-language.html
702 1985490
>>1985168
в го по-любому не помешает шарить хоть немного, потому что он уже точно никуда не уйдет и хорошо зашел под многие задачи современного веба: облака, блокчейн, микросервисы, хайлоад - вот это все
703 1985569
>>1985435

>Rather than being closely tied to its community’s wants, Go generally does a much better job of being closely tied to its community’s needs. If you have correctly identified a problem in Go, when you bring it to their attention, you will be taken seriously. Many projects struggle to separate their egos from the software, and when mistakes are found, they take it personally. Go does an excellent job of treating it like an engineer — a matter-of-fact analysis of the problem, deliberation on the solution, and shipping of a fix



АХАХАХАХ
704 1985572
>>1985490
Эх, как же я надеюсь что когда-нибудь в мире появится нормальный язык для этих задач. А то вокруг если не говно, то моча.
705 1985627
>>1985572
Как дженерики завезут, с их использованием напишут ОРМы будет топ-1 язык для CRUDощлепства, скринте.
706 1985642
При том не просто, а именно zero-allocation CRUDощлепства
707 1985653
>>1985642
В чем тут zero-allocation? Просто будет еще один язык, приложения на котором потребляют 50% общей памяти только на строки.
708 1985694
>>1985653

>В чем тут zero-allocation?


Ну, в го есть инструменты для этого (sync.Pool, практически бесплатная алокация на стеке), а в других языках, на которых я писал до этого ничего подобного нет.
709 1985804
Боjественный язык
710 1985941
Объясните плиз, почему я должен передавать указатель, если в исходниках ожидается сам объект (Handler Handler)?
http.Server{Addr: ":9999", Handler: &mux}
711 1985952
>>1985941
Handler - интерфейс. Иди читай, что такое интерфейсы.
712 1985967
>>1985952
Я знаю, что такое интерфейс. Это знание никак не отвечает на мой вопрос, потому что понятие интерфейса с понятием указателя не пересекается.
713 1985969
>>1985952
А, понятно. Интерфейс типа может быть реализован как указателем, так и значением. Автодереференс? Да пошел он нахуй, где хотим, там и пихаем, а вы запоминайте, где он есть, а где нет. Какой же ублюдский язык.
714 1986073
>>1985969
принято, что в одном файле либо все указатели, либо все значения, но пихать можно как угодно, да
715 1986199
>>1985627
Пусть бы лучше эксепшены завезли, чуточку сахара ( хоть тернарный оператор ) и обогатили бы стандартную библиотеку чтобы не приходилось на каждый пук костыль писать, я бы за такой язык мать продал, да даже бы флаг BLM на доме повесил.
716 1986206
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ

>>1986204 (OP)
717 1986369
>>1985969

>Автодереференс


Давай поподробнее.
tom.jpg32 Кб, 640x640
718 1986389
Гоферы, помогите разобраться
Пытаюсь осилить сей язык, параллельно решая маленькие задачки, наткнулся на просторах на упоминание задачки, где нужно инвертировать контент файла
И у меня вроде всё кое-как получилось, глазами вижу результат, но вот в самом конце содержимое выдать в stdout через ReadAll на 45 строчке не вышло, что я делаю не так? Вроде как Flush должен был решить проблему мою
https://play.golang.org/p/Nguk776CGI8
Файлик там простой, вида типа
1
2
3
719 1986440
>>1986389
https://play.golang.org/p/8IJonjmJHTv
У тебя две проблемы:
1) Когда пишешь в файл, то каретка остается в конце, в итоге при чтении ты ничего не увидишь, поэтому нужно использовать file.Seek()

2) Подучи стандартную библиотеку
720 1986444
>>1986440
>>1986389
Только там наоборот
offset - передвижение каретки
whence - откуда считаем каретку
721 1987212
>>1984447

Ну пиздец бля, короче нахуй слушай, делаешь как в своих ормах модельку
```
type User struct {
ID int
Name string
AddressID Address
Contact Contact
}
```

делаешь 4 метода у репозитория:

JustUser
UserWithAddress
UserWithContact
WholeUser

пишешь 4 sql query, используешь нужный метод, где тебе нужно, .., профит!

а может и не 4 и тд, вообще, вангую, что у тебя там 1.5rps и можно на похуй просто все через один джойн ебашить, никто и не заметит
722 1987726
723 1991140
>>1983632
А толку-то? Ты переменные экономишь или строки кода?
724 1994073
Здравия желаю. Как тут со вкатом вообще дело обстоит? Технический бэкграунд есть, бэки простенькие писал, но коммерческого опыта нет и вот пытаюсь найти язык который за основу взять. Не подскажете тяжко первую раб_отку найти? Или там стажировку на крайний
725 1997435
Здравствуй двач, на связи джавист (лвл ~мидл), хотел спросить так как решил попробовать для себя этот ваш GO, идеи для пет проекта. У себя на уме банальное e-commerce приложение по типу ( гейт на джаве и пара микросервисов на го, общение через РЕСТ). Заранее благодарю
726 1997615
>>1997435
Напиши e-commerce приложение
727 2008848
>>1994073

вполне ок
728 2010611
Анон, поясни за интерфейсы в архитектуре. Читал-читал - и нихуя не понял.

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

Окей. Хуй с этим. А еще кейсы применения?

Может кто-то накидать пример из разряда "было /стало", мол, вот без интерфейсов смотри как хуево, а вот - с интерфейсом - как пиздато получилось?
729 2010722
>>2010611
самый простой пример - интерфейсы из стандартных пакетов
например stringer
добавляешь структуре метод string() и возвращаешь любую строчку
и эту любую строчку куча стандартных функций возьмет, которые на вход берут стрингер
тащемта это полиморфизм
730 2010917
>>2010722
Да каждый первый пример этот стрингер. Но что мне мешает просто написать функцию, которая будет принимать строку?
731 2013861
>>2010917
Когда ты передаешь в функцию тот же стринг и когда ты передаешь в функцию объект, который может вернуть тебе стринг - это разные вещи, т.к. в течении жизни объекта он может возвращать разные стринги, в зависимости от внутреннего состояния.
732 2016322
Аноны подскажите пожалуйста как лучше организовать чтение с нескольких вебсокетов?
Я подключаюсь, затем в одной горутине вызываю метод вебсокета в другой горутине считываю сообщения из сокета.
Между собой две эти горутины связанны по requestId, так что вроде понятно как соотнести реквесты и респонсы.

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

Уместно тут использовать конвейры?
Подскажите как такое делается?
733 2017543
>>2016322
А что ты глобально пытаешься сделать? Чат на вебсокетах?
734 2018927
>>2017543
Опрашиваю биржи криптовалютные через вебсокеты.
735 2019041
Почему го так боится точек с запятой? Например пакеты в примерах пишут так: import("fmt"
"math"
)

Что мешает сделать так: import("fmt"; "math") ?
736 2019147
>>1987212
Либо один метод, который принимает структуру с флагами
WithAddress, WithContact, WithSky, WithAllah и на их основании при'join'ишь всякое-разное
737 2019149
>>2019041
По тому что это язык с единым код-стилем. Это как на питоне начать писать что-то, что противоречит pep8: вроде и можно, но на тебя будут косо смотреть.
738 2019150
>>2018927
Выглядит так, словно ты для каждого клиента собираешься устанавливать соединение с кучей бирж
загружено (2).mp4snapshot00.00[2021.05.0418.09.37].jpg84 Кб, 552x808
739 2019310
>>2019150
Что нужно уметь делать на гоу, чтобы смело идти на собес?
740 2019457
>>2019310
Лично я умел делать CRUDы на SQL и монге, плюс немного знал теорию по куберу и совсем чуть-чуть устройство линуксов. До этого 2 года шкодил на жабаскрипте и год на питоне. В итоге почти везде на мидла брали.

А вообще есть филиал треда в телеге https://t.me/golang2ch, можно там у людей поспрашивать.
741 2019848
>>2019150
Только один клиент.
Впрочем я уже разобрался.
742 2020376
>>2010611
Забей. Если тебе потребуется интерфейс - ты это поймешь.
743 2023728
>>1926156
ой дураак
744 2023729
>>1938540

>Сравнивать быстрый низкоуровневый язык с JS


бред
745 2027495
>>1986073
Не так. У одного типа все методы либо принимают значения, либо все принимают поинтеры в качестве ресивера. А реализовывать эти методы ты можешь и по разным файлам внутри пакета, что особенно удобно для кодогенерации
746 2027504
>>2020376
Ну это если совсем новичку отвечать. А людям, которые планируют найти работу нужно помнить про SOLID использовать интерфейсы в соответствии с этими правилами. Исключения есть, например, когда речь идет о создании большого количества объектов в высоко нагруженных системах, что увеличивает время работы GC, но по умолчанию принято всё таки сначала написать качественный код, а потом уже при необходимости оптимизировать узкие места
Тред утонул или удален.
Это копия, сохраненная 15 мая 2021 года.

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

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