Этого треда уже нет.
Это копия, сохраненная 13 декабря 2020 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред про лучший в мире язык GO №10 (юбилейный) /go/ # OP 1700220 В конец треда | Веб
GO (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего.

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

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

Живем в ожидании Go2, пробрасываем ошибки, смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериков
2 1700225
А разве не будет в go 2 обратной совместимости с go 1 ?
3 1700247
>>00225
В семвере разработчик не обязан сохранять обратную совместимость при смене мажорной версии.
4 1700251
>>00225
На данный момент - неизвестно, но было заявление, что возможно - да.
5 1700263
>>1700200 →
Я так-то так и делал, только в слайс сохранял, т.к. в задаче сказано

>числа могут содержать до 1000 цифр


Пока писал - понял где обосрался:
echo 102 201 | go run solution.go
У меня выдает 3
6 1700272
в прошлом спрашивал про аллюр и аналоги для Го, есть какие-то либы с количество звезд больше 15?
7 1700301
>>00247
А релизы голанга точно придерживаются семвера? То, что в модулях принят семвер, ещё ничего не значит.
8 1700317
>>00301

>А релизы голанга точно придерживаются семвера?


А кто их знает, мажорная версия не менялась еще.
9 1700398
Зарегался на озоне, а на почте пусто. Вам долго приходил ответ?
10 1700405
>>00398
Мне - два дня
11 1700518
>>00398
А мне три, кто каналы решил?
12 1700521
Кто каналы не могет решить го в тележку @Go2Ch конфа
13 1700550
>>00521
Добавил всех оттуда в блеклист.
мимо hr озона
Screenshot 2020-05-24 at 22.26.25.png281 Кб, 748x1504
14 1700628
15 1700879
>>00521
У меня есть ответ про каналы, но где задача-то?
16 1700916
>>00521
пересоздал группу залетайте.
17 1700917
>>00916
@Go2Ch
18 1700981
Что там у вас. Подгружаемые в рантайме модули до сих ор не реализовали?
19 1701038
>>00981
но нахуя?
20 1701042
>>00521
Уже решили про каналы
21 1701045
>>00981
Тут динамическую линковку-то ненавидят, а ты про рантайм.

На винде можно подгрузить dll-ку через syscall.LoadLibrary(). На юниксах - .so через C.dlopen().
.
Неудобно, небезопасно. громоздко.
22 1701093
>>01038
Плагины, динамическая компиляция, етк.
23 1701135
У кого в CI настроены регрессионные тесты на производительность?
Как это вообще сделать? Хардкодить максимальное время в тестах?
А какое покрытие? Только основные горячие пути?
24 1701138
>>00981

Дык есть. Не супер удобно, но систему плагинов сверять можно.
26 1701167
>>01042
Нихуя не решили, ответа как будто и нет
27 1701173
>>01167
Меня, кстати, напрягает лог компиляции:
stdout:
'/temp/compiling/source' cannot be extracted via extract ()
/bin/sh ./build.sh

stderr:
image.png217 Кб, 921x553
28 1701184
>>01173
А меня, что функция два раза запускается
29 1701188
>>01184
Это stderr во время исполнения, если я не ошибаюсь. А то что я скинул - это то, что мне выдает если нажать на "Лог компиляции"
30 1701189
Поясните почему гоуланг, а не хаскелл/скала/раст/или пайтон компилируемый to С? гоуланг же в принципе даже не самый быстрый.
31 1701190
>>01188
Во всех задачах такой лог почти
32 1701194
>>00220 (OP)

>2 пик


А что, в этом вашем Го нет дженериков?
33 1701195
>>01188
Хотя да, чекнул, странная херота
34 1701197
>>01190
В остальных задачах у меня там нихера:
stdout:

stderr:
35 1701203
>>01189

>хаскелл/скала


Редко используются

>раст


Не факт, что взлетит, замудренный синтаксис

>гоуланг же в принципе даже не самый быстрый.


Зато просто в обучении
36 1701206
>>01197
Я с 50 попытки начал задумываться что проблема на стороне ОЗОН
37 1701222
>>01206
Чекните "объявления жюри", вдруг там написано, что тест сломан и тд.
Ну и вообще, поищите емейлы оргов, вдруг чего ответят.
38 1701229

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


>Задание E необходимо решать на Go. По техническим причинам, тестирующая система выдает ошибку во всех случаях (программа считывает слишком много или мало чисел, вызов функции блокирующий и т.д.) кроме:


>IL = Idleness limit = функция работает слишком медленно


>OK = программа верно работает

39 1701231
>>01222
Я писал им уже. жду ответ
40 1701233
>>01231
А что именно ты им написал?
41 1701279
https://habr.com/en/post/502506

В го теперь вытесняющая многозадачность? Хейтеры sosnooley?
42 1701641
Аноны, какие задачи на го делают? Сам я плюсовик базовый пришел тимлид и отменил с++, Python, ruby и perl. Сказал - теперь все будет на пхп и вот мы переписываем код с божественных языков на пхп, кроме того стали вебельщиками. Планирую на го спрыгнуть. Питон - за язык не считаю, его и так все знают, он что-то вроде помошника, а не языка.
43 1701646
Школу гоу я проебал, а что там за тест был?

>>Для Python, PHP, Node.js, Java или C# разработчиков с опытом больше года.


пиздец, а я на ++ писал и куда бля мне теперь?
44 1701691
>>01641

>пришел тимлид и отменил с++, Python, ruby и perl.


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

> Питон - за язык не считаю, его и так все знают, он что-то вроде помошника, а не языка.


Так все говорят, но как только начинаешь на собеседовании спрашивать что-то сложнее хелоуворолда - все сразу сыплются
Тоже самое и про баш говорят, но по итогу мало кто может написать нормальный скрипт
45 1701737
>>01691

С точки зрения бизнеса, лапша из кучи языков это жопа.
Хотя похапе - тупейший выбор.
46 1701773
>>01737

>С точки зрения бизнеса, лапша из кучи языков это жопа.


Я прекрасно понимаю, но если какой-то код начали писать на C++, то, наверное, не просто так.
47 1701824
Немного веселых комментов с хабры
https://habr.com/ru/news/t/501876/#comment_21613874
Судя по трендам пик популярности Go пришелся на 2018 год. Пройдет еще пару лет и будет высокий спрос на специалистов способных переписать код с Go на любой другой нормальный язык.
К слову я год назад сам таких видел. Искали человека который с Go на Python все обратно перепишет.

Тут уже вопрос, если оно будет работать с приемлемой производительностью даже на Python, то в чём изначально был смысл писать на Go?

Как один из аргументов изначального написания на Go: «мы пишем на модняво-кучерявом языке» :)

> - - - - - - - - - - - - - - - - - - - - - - - - - - - -



Какие ваши комментарии?оправдания
48 1701951
>>01773
Обычно бывает так, что есть какому-нибудь старшему разработчику поручают что-то сделать, он выбирает платформу, на которой ему удобно, которой он сам хорошо владеет либо которую хочет получше освоить на практике. Так в проект попадает какой-нибудь язык, платформа или инструмент.

Так оно и крутится в зоопарке других похожих инструментов. C++ легко могли выбрать не за возможности, а за опыт работы старших разработчиков.
49 1701999
>>01824

>Какие ваши комментарии?


Хабр для пидоров
50 1702028
>>01189
Я не ебу что у тебя в голове, если ты можешь поставить рядом Хаскелл и раст, они ж ппц про разное.

Алсо, время компиляции это тоже бонус гошки.
51 1702030
>>01194
С пробуждением!
slowpoke.jpg
52 1702035
>>01824

> Какие ваши комментарии?


Душители змея не смогли в го, теперь язык плохой
53 1702048
>>02028

>если ты можешь поставить рядом Хаскелл и раст, они ж ппц про разное.


Ну раст пошустрее голанга будеть.

Проходил мимо, решил спросить, думал тут знаюшие. ))
54 1702055
>>01194
И эксепшенов нет. И классов нет. И полиморфизма нет. По семантике это немного продвинутая сишка.
55 1702109
Может кто скинуть тестовое от школы озона?
Поступать к ним лень, я и так все знаю. Но интересно, откуда нытье и здесь и на Хабре.
56 1702125
>>02048
В го удобная работа с асинхронными задачами. Полезно на серверах, всяких утилитах, которые работают с io, например. Удобен с точки зрения админа - из зависимостей зачастую только libc в системе, и то - опционально.
57 1702129
>>02109

Необходимо написать функцию func Merge2Channels(f func(int) int, in1 <-chan int, in2 <- chan int, out chan<- int, n int) в package main.
Описание ее работы:
n раз сделать следующее

прочитать по одному числу из каждого из двух каналов in1 и in2, назовем их x1 и x2.
вычислить f(x1) + f(x2)
записать полученное значение в out

Функция Merge2Channels должна быть неблокирующей, сразу возвращая управление.

Функция f может работать долгое время, ожидая чего-либо или производя вычисления.
Формат ввода

Количество итераций передается через аргумент n.

Целые числа подаются через аргументы-каналы in1 и in2.

Функция для обработки чисел перед сложением передается через аргумент f.

Формат вывода

Канал для вывода результатов передается через аргумент out.
58 1702132
Только проблема в том, что решение "в лоб" - падает по таймауту, а остальные решения со спавном горутин для параллельности - падают на тестах.
59 1702135
Научите пользоваться документацией по гошке. Вот есть интерфейс io.Write. Как найти все типы, что поддерживают вот этот интерфейс?
60 1702146
>>02125
Зачем гоуланг если есть python to C-code?
61 1702182
>>02146
Не нравиться - не ешь
62 1702186
>>02135
Толсто.
63 1702206
>>02135
Поставь Goland, он подсветит
65 1702273
>>02129
Больше вопросов, а решение на три строчки.

Сказано, что функция должна быть неблокирующей. Но что она должна делать, если в каналах in1 или in2 нет данных?

И что она должна делать, если выходной канал out забит и не может принять данные? Есть вариант, конечно, внутри Merge2Channels просто вызвать ещё одну горутину, в которой и проводить все эти манипуляции. Может быть это и требуется.

Всё равно задание ни о чём, ну не три, а семь строчек.
66 1702278
>>02273
ну ты сделай решение, мы затестим
67 1702298
>>02273

>Сказано, что функция должна быть неблокирующей. Но что она должна делать, если в каналах in1 или in2 нет данных?


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

>plugins are only supported on Linux, FreeBSD, and macOS


Ну ясно.
69 1702319
>>02313
Я вообще слабо представлю где это говно может быть полезно. Если тебе нужно что-то подобное - то ты, верооятее - говнокодер.
70 1702333
>>02298
>>02278
Ладно, говнокод тут:
https://ideone.com/J5hhSO

Содержательны тут функции background_merger и сама Merge2Channels, остальные - тест-платформа и демонстрация, их надо выпилить.

Наверное это можно лучше написать, но я тот анон, который пока ещё не начал учить го, но хочу потратить на него пару недель.
71 1702335
>>02333
Поменяй местами строчки в feed_channels и получишь deadlock
72 1702336
>>02333
wrong answer
73 1702350
>>02335
Будет, да, по-хорошему надо просто независимо каналы кормить. Здесь была просто тест-платформа, проверить, что это вообще работает, в ТЗ не сказано реализовать тест-платформу, этот код по итогу надо просто удалить.

Короче ТЗ не очень понятно. Я не люблю эти олимпиадные ТЗ, под практическую задачу делаются практические решения. Может им надо, чтобы я сначала освободил каналы со входными данными, а потом уже делал вычисления. Тогда надо тупо создать два новых канала на n элементов, считать-записать в них. Но вопрос в том, какого размера n, может там поток на миллионы чисел. Я же не могу закладываться на то, что n будет небольшим.

А есть какая-нибудь онлайн тест-платформа?
74 1702369
>>02132
Там на самом деле или описание задания пиздит, или тесты кривые. Я склоняюсь к второму и уверен, что это намеренно и править они это не станут. Даже понял, что они там протестить пытаются. Просто забейте хуй.
75 1702380
>>02369
А где эта тест-платформа?

Я бы тут несколько потенциальных проблем выделил:
1) n может быть очень-очень большим, заведомо не вариант запускать n горутин, тут проблема синхронизации и памяти. Может даже выделить канал на n элементов сложно.
2) блокировки входных каналов. Если попытаться сначала считать все n значений в буфер, то может ждать облом. Их там не будет, пока не будет данных в out.

3) если делать вычисления последовательно, в один поток, то можно не пройти по времени. Если параллельно, то надо синхронизировать вывод.

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

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

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

Но, блин, это продакшн извращения, их надо делать по ТЗ. Когда известно примерно, что там может быть в каналах, характер вычислений и т.п. Делать решение под неизвестную задачу несерьёзно. Особенно когда идёт набор на курсы по языку, на котором тебе это устойчивое хайлоад-решение надо реазизовать.
76 1702382
>>02380
Да там первый же тест не проходится, при этом все входные и выходные данные логятся на раз (они никакие не крайние) и правильность выполнения очевидна.
Офк, тесты на всю хуйню понаписаны уже на локалке и все до дыр проверено, ни прибавить ни убавить.
77 1702383
>>02380
не понял, как ты через канал будешь синхронизировать порядок
78 1702417
>>01646
Она же открыта ещё
79 1702435
>>02129
результаты в out должен передаваться в том же порядке, как приходят в in, или не обязательно?
80 1702438
>>01824
В комментах на хабре всегда сидят хейтеры прямо как здесь, почитай там еще обсуждения раста.
81 1702445
>>02383
Короче, идея такая. Создаётся структура-"задача". В ней два инта и одноразовый канал, куда будет положен результат.

Создаётся канал задач, буферизированных, примерно по числу воркеров с запасом.

Есть горутина, которая слушает входящие каналы, берёт оттуда инты, и создаёт задачу, то создаёт одноразовый канал для результата, эти два инта туда запихивает. Помещает эту структуру в очередь задач, а одноразовый канал, дополнительно, в очередь каналов с результатами, то есть в канал типа
out_channel := make(chan chan int, 1000)

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

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

Можно попробовать это в коде реализовать.
82 1702447
>>02435
Вот этом уверен, порядок обязателен, слишком естественное требование.
83 1702451
>>02445
По терминологии. Канал=очередь. Обычно то, что называют в голанке каналом, принято называть очередью.

Я вообще больше по питону, там очереди, нет каналов. По сути одно и то же.
84 1702454
>>02447
Данные из каналов берутся парами, а не кто как успеет, логично сохранять порядок.
Достигается это легко.
Так же если глянуть на входные значения - они тоже упорядочены, так себе намек, но достаточный.
85 1702469
>>02435
Легко придумать вполне естественные кейсы, где тебе не важен порядок результатов, но тебе важно начать принимать их и обрабатывать как можно раньше, а не ждать пока будет считать первую пару. Так что это должно быть указано в условии
86 1702471
>>02451
Обычно очередь, как и стек, не лимитируются. А вот канал очень даже
87 1702476
>>02469
В этом случае на выходе должен быть id задачи. Либо какая-то структура с входными значениями.

В принципе ты можешь считать несколько задач одновременно, но порядок выдавать корректный.

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

Это, на самом деле, довольно типовая вещь.
88 1702481
>>02471
Это скорее из-за того, что надо как-то память выделять, языки вроде го не предусматривают лёгкого пути для безлимитных массивов.

В питоне можно тоже ограниченные очереди делать, правда не сделаешь очередь с нулевым буфером, хотя бы один будет элемент (0 = без ограничений). Пожалуй в этом принципиальная разница, в го по умолчанию очередь без буфера. То есть не совсем очередь, конечно.
89 1702482
>>02146
Как минимум чтобы типы в рантайме не ловить
90 1702484
>>02476
Абсолютно типовая, как и начать отдавать поток unordered вместо буфферизации
91 1702485
>>02481
Slice вполне себе безлимитный
92 1702610
У кого-то получилось решить задачу?
93 1702637
ощем ситуация на озоне такая
ребята из @ozon_go_contest2020 сломали тест систему, смотрите историю про "чит"
инфы от организаторов нет
в описании недостаточно инфы о требованиях к выполнению merge2channels
смотрите примерные тесты здесь https://github.com/Gasoid/last-task-go-contest-2020/blob/master/main_test.go#L11
94 1702638
>>02610
А что там надо, чтобы добраться до тестового задания и тестовой платформы?

Достаточно просто имя-фамилию-почту-телефон, или надо сразу резюме и т.п.?

Интересно попробовать тесты пройти, но не больше. Отсылать им лишние данные поэтому тоже не хочется.
95 1702647
>>02638
имя-фамилию-почту-телефон + резюме + гитхаб + 2-3 дня подождать инвайт.
96 1702697
>>02647
>>02638
лол весь гоутред про озон, кроме него почти никому не нужен гоу этот походу.
97 1702699
>>02697
Ща закончится набор, и опять будет по одному посту раз в три дня.
98 1702702
>>02699
Логично, ведь вакансий в ~30+ раз меньше чем на тот же пайтон.
99 1702754
>>02702

Но на порядок интереснее и лучше оплачиваемых.
Не хочу я больше ни одной "хайлоад" платформы на Джанго видеть.
100 1702814
>>02754

>"хайлоад" платформы на Джанго видеть.


fastapi
101 1702823
>>02814

fastcgi
102 1702846
>>02823
это не из разряда хайлоад фреймворков!!
103 1703008
Начал смотреть курс по go от мфти
Нихуя не понял, что к чему. Разочаровался, что тупой
104 1703041
>>03008
shas mnogie takie, it's ok!
105 1703096
>>03008
Ну вот и все, не видать тебе престижной работы фрилансером за 3,6к секунд/час
106 1703136
>>03096
Престижная работа хрелансером может быть только у фронтов да фулстек говноделов, гошники это крупные компании и узкая бэковая специализация
107 1703363
Тимлид предлагает делать хайлоад бекенд на ноде, какие подводные?
108 1703429
>>03363
Это даже не подводные не подводные, все на поверхности - у тебя тимлид дурак.
109 1703446
>>03363
Земля ему пухом.
Пиши по собственному
110 1703450
>>03363
Багов будете ловить, но хотя бы не так тормозно как гоу.
111 1703452
>>03363

Никаких. Хайлоад это про архитектуру, а не язык.
112 1703635
>>03363
Не худшее решение, если обмажитесь typescript-ом и линтером - может даже нормально получиться
>>03450
Толсто
113 1703645
>>03635

>если обмажитесь typescript-ом и линтером


В том и дело, что походу обычно не обмазываются. Вообще нода производит впечатление места, куда фронты приходят тяп ляп рад говно по примерам с доков сделать. У бекендщиков от этого карточного домика агрессия и зубы скрипят. Так то можно вообще на чем угодно сделать хороший бек, кто же спорит, но из увиденных поделок фронтов на ноде - этот шанс не велик. Впрочем я живого бекендщика (именно бекендщика с опытом, а не вчерашнего фронта) пока еще и не видел. Хз почему такое решение у тимлида кроме того, что он ранее чтото радом ебанул на ней и его теплое чувство не покидает, ну и нода по правда довольно шустрая, только это не критично важно для хайлоада само по себе.
114 1703646
>>03645

>живого бекендщика на ноде


фикс
115 1703657
>>03645

>шустрая, только это не критично важно для хайлоада


Это не критично только если всё-всё distributed и webscaled. Но в этом случае проблем будет столько что сосание нодежысы померкнет на этом фоне.
116 1704002
для чего нужен вообще го? какие программы в нём пишут?
117 1704005
>>04002
Микросервисы и оркестрацию. А также все средства малой механизации потребные в хозяйстве, коим несть числа в любом стартапчике.
Современные bash-портянки силами низкоквалифицированного персонала.
118 1704022
>>03635
>>03645
Будет TS и линтер. Предлагает потому что у него несколько лет опыта бекенда на ноде и потому что тут много людей с опытом JS/TS, много бывших фронтов. В контору его взяли в прошлом году сениором и сделали тимлидом не так давно. Сам я околомидл и как раз перекатился в го из фронтенда.
119 1704027
>>04022
Значит правильно предлагает. Что знаете на том и делайте.
120 1704045
Какой редактор кода вы используете? Я пока сижу на саблайме. А вы? Только не надо предлагать жирны идеешки, электронные перделки.
121 1704046
>>04045

neovim - топчик
122 1704048
>>04046
а в чём он топчик?
123 1704053
>>04048

Во всем?
Удобно, современно, плагины на любой вкус.
124 1704069
>>04053
на любой вкус? да ладно. он же пока в разработке. глючит иногда. да и в сравнении с классическим вимом нехило потребляет память. откуда так много хз. удалил его к чертям. поставил православный классический вим. всё пашет как швейцарские часы. знаешь что такое швейцарские часы? в жизни когда-нибудь видел в реале? я думаю что нет.
125 1704070
>>04069

Отдельные проблемы бывают, но это мелочи. Память непринципиально, все равно жрет в разы меньше идеи.
126 1704110
>>01231
Еще не ответили?
127 1704112
>>04110
Всем привет!
Как обещали, высылаем следующую партию ответов на вопросы.
1.Поступить в школу могут разработчики из любого города и региона. На момент отправки этого сообщения на школу откликнулся 3931 человек. Приоритет при отборе мы отдадим тем, кто прошел успешно все этапы отбора и готов после обучения стать сотрудником Ozon, писать на Go. Программа обучения будет проходить онлайн до момента пока не наладится эпидемиологическая обстановка. Для тех, кто пройдет в школу, но проживает не в Москве, будет организовано обучение онлайн.
2.В школу позовем около 40 человек.
3.Мы ознакомились со всеми замечаниями относительно формулировки задач. Мы считаем тот текст условий, который опубликован в задачах на текущий момент исчерпывающим. С момента начала соревнования мы внесли комментарии про формат вывода по задаче Е, разъяснения о том, как проще решить задачу F. В дополнение к этому, мы внесли поправку в лимит по времени по задаче F – теперь лимит 1,5 секунды вместо 1 секунды.
4.Проанализировав ваши посылки по задаче Е, мы пришли к выводу, что тест по этой задаче составлен слишком обще и широко. В данном случае одного теста недостаточно. Некоторые пограничные ситуации принимаются как корректные. Ошибка в системе, которая выдается в ответ на решение участника не всегда предсказуема. Доработать это в режиме реального времени у нас нет возможности: есть риск потерять уже существующие решения. Это мы будем прорабатывать уже после завершения отбора. Сложности связаны также с тем, что Go новый язык для платформы, Make как компилятор был добавлен по нашей просьбе, чтобы обработать решения задачи на Go.
5.Участниками отбора выгружен в сеть из Я.Контест тест по этой задаче. Написано и активно обсуждается несколько алгоритмов решения задачи в чатах, на форумах и т.п. Мы будем расценивать любое решение с использованием сторонних скриптов как читерское и не готовы его засчитывать. Для справедливости отбора все решения, которые поступят по задаче «Е», будут проходить код-ревью дополнительно к уже существующим этапам отбора. До момента написания чит-скрипта нами было получено 32 корректных решения этой задачи. Отборочные соревнования не предполагали никакого пентеста системы, поэтому просим вас добросовестно отнестись к решению задач отбора. Мы по-прежнему принимаем решения этой задачи на Go.
6.Поступает много писем с просьбой ответить на вопрос "что не так у меня в коде" или дать подсказку, как решить задачу. Мы не можем давать ответы на вопросы такого типа, так как у всех участников должен быть одинаковый доступ к информации об условиях.
7.Просим всех, кто не указал в качестве логина свои фамилию и имя или почту, а также решил три и более задач, прислать свой логин на g2z'oANUSoz1T;onPUNCTUMrU/3u. В противном случае мы не сможем соотнести ваш результат с профилем участника.
До связи!
geYxoANUSo4W^zonPUNCTUMrLGIu
127 1704112
>>04110
Всем привет!
Как обещали, высылаем следующую партию ответов на вопросы.
1.Поступить в школу могут разработчики из любого города и региона. На момент отправки этого сообщения на школу откликнулся 3931 человек. Приоритет при отборе мы отдадим тем, кто прошел успешно все этапы отбора и готов после обучения стать сотрудником Ozon, писать на Go. Программа обучения будет проходить онлайн до момента пока не наладится эпидемиологическая обстановка. Для тех, кто пройдет в школу, но проживает не в Москве, будет организовано обучение онлайн.
2.В школу позовем около 40 человек.
3.Мы ознакомились со всеми замечаниями относительно формулировки задач. Мы считаем тот текст условий, который опубликован в задачах на текущий момент исчерпывающим. С момента начала соревнования мы внесли комментарии про формат вывода по задаче Е, разъяснения о том, как проще решить задачу F. В дополнение к этому, мы внесли поправку в лимит по времени по задаче F – теперь лимит 1,5 секунды вместо 1 секунды.
4.Проанализировав ваши посылки по задаче Е, мы пришли к выводу, что тест по этой задаче составлен слишком обще и широко. В данном случае одного теста недостаточно. Некоторые пограничные ситуации принимаются как корректные. Ошибка в системе, которая выдается в ответ на решение участника не всегда предсказуема. Доработать это в режиме реального времени у нас нет возможности: есть риск потерять уже существующие решения. Это мы будем прорабатывать уже после завершения отбора. Сложности связаны также с тем, что Go новый язык для платформы, Make как компилятор был добавлен по нашей просьбе, чтобы обработать решения задачи на Go.
5.Участниками отбора выгружен в сеть из Я.Контест тест по этой задаче. Написано и активно обсуждается несколько алгоритмов решения задачи в чатах, на форумах и т.п. Мы будем расценивать любое решение с использованием сторонних скриптов как читерское и не готовы его засчитывать. Для справедливости отбора все решения, которые поступят по задаче «Е», будут проходить код-ревью дополнительно к уже существующим этапам отбора. До момента написания чит-скрипта нами было получено 32 корректных решения этой задачи. Отборочные соревнования не предполагали никакого пентеста системы, поэтому просим вас добросовестно отнестись к решению задач отбора. Мы по-прежнему принимаем решения этой задачи на Go.
6.Поступает много писем с просьбой ответить на вопрос "что не так у меня в коде" или дать подсказку, как решить задачу. Мы не можем давать ответы на вопросы такого типа, так как у всех участников должен быть одинаковый доступ к информации об условиях.
7.Просим всех, кто не указал в качестве логина свои фамилию и имя или почту, а также решил три и более задач, прислать свой логин на g2z'oANUSoz1T;onPUNCTUMrU/3u. В противном случае мы не сможем соотнести ваш результат с профилем участника.
До связи!
geYxoANUSo4W^zonPUNCTUMrLGIu
128 1704121
>>04112

>32 корректных решения этой задачи


Как эти 32 пидора это сделали, хуле молчат.
20190929095249.jpg366 Кб, 1920x938
129 1704267
Есть шансы на вкат в Go?
130 1704296
Почему выбираете go вместо православных java, c# итс? Говорят java медленный, он не медленный, он съедает память как сумасшедший, но не медленный.
131 1704306
>>04121
алгоритмические гении)
на практике же один фиг программисты на память все не помнят, а используют сниппеты/гуглят как это уже было реализовано.
132 1704313
>>04296

> c#


Но ведь Go не для написания гуёв, а для бекенда.
133 1704320
>>04296

>Почему


Потому что хайпово, модно, кучеряво, коньпелируется to C-code, резкий как C-code.
Пайтон тоже кстати коньпелируется to C-code, но куда там ему до гоУ с хипстерами и капуччина))
134 1704322
>>04313

>> c#


>Но ведь Go не для написания гуёв, а для бекенда.


>


C# сейчас так отдрючили в Microsoft что на бэкенде он вообще всех по скорости имеет.
IMG20200527150931.jpg175 Кб, 1080x1004
135 1704327
>>04322
Картинко отклеилось
IMG20200527151417.jpg250 Кб, 1080x1425
136 1704331
>>04327
Взялись за производительность прям.
137 1704336
>>04322
Если написать бекенд на сях, будет ещё быстрее, но это не делает си языком для бекенда.
138 1704344
>>04336
Нафига, если сабж треда и >>04320
Такие вещи для того и лепят.

>>для бекенда.


Для высоконагружженных частей разве что, т.к. последующее сопровождение кода затратно.
139 1704345
>>04327
Соус пикчи?
140 1704368
>>04344
При прямых руках сишка работает быстрее сабжа, ещё быстрее будет только аппаратная реализация бекенда. Но нужны действительно прямые руки.

Ну а если за скоростью не гонимся, то и питона хватит.
141 1704399
>>04368
Вот именно. Django в вакууме на VPS за 10$ сделает 40-100 RPS с одного инстанса Gunicorn. Дай бог чтобы у твоих проектов была посещаемость чтобы занять хотя бы 50% этих мощностей.

Если мы говорим о гигантах с RPS измеряемыми в тысячах, они используют asyncio+asyncpg, технологии уже как пару лет production-ready.

Так что тезисный ответ - скорость деливеринга фич на Python выше чем у конкурентов в этой нише, технология может успешно держать нагрузку в миллионы пользователей (смотрим опыт дропбокс, варгейминг и итс), остальное для бизнеса не важно. Не понимаю этих макак которые гонятся за хайпом, они небось, нормально программировать на прежнем своем языке так и не научились. Поддались на провокации "го круче", "го быстрее". Ну-ну...
142 1704414
>>04368

>04368140


>>>1704344


>При прямых руках сишка работает быстрее сабжа,


Дорого.

>Ну а если за скоростью не гонимся, то


То получится шустринько и недорого, сабж треда и >>04320
143 1704415
>>04045
goland
144 1704426
>>04399

>гонятся за хайпом


И кто-то же накручивает этот хайп, и окешивается неплохо.

>Django в вакууме на VPS за 10$ сделает 40-100 RPS с одного инстанса Gunicorn.


Коньпильнуть to C-code еще шустрее будет! Про всякие хайпы сразу забудешь.

>Дай бог чтобы у твоих проектов была посещаемость чтобы занять хотя бы 50% этих мощностей.


Ну так в основном лепят продукты на джанге/ларавелях/ноджс и не парятся, потом задумываются о оптимизации расходов на вычислительные мощности.
2020-05-27 16-53-18.mp41,9 Мб, mp4,
1324x868, 0:25
145 1704448
>>02129
Я сделал, переписывайте быстрее, пока в Озоне места еще есть.
146 1704468
>>04448
Там всего 40 мест, а приняли участие 4000 вкатунов.
147 1704469
>>04448
Это суммирование двух массивов?
мимокрок
148 1704475
>>04469
Это динамическая обработка динамически поступающих данных.
Есть два источника (chan1 и chan2) в которых асинхронно появляются данные. Есть общая функция (CommonFunc) которая эти данные асинхронно обрабатывает.
Есть код, который должен получить n-е количество раз данные из двух источников, обработать их общей функцией ,сложить результат и поместить его в общий канал (в данном случае роль общего канала выполняется ConcurrentQueue ).
В результате в основном коде тебе не нужно ожидать последовательного выполнения обработки поступающих данных, ты можешь делать всё что тебе угодно, обрабатывая данные по мере их поступления в общий канал.
Для сравнения, если переписать всё на синхронный код, то время выполнения увеличится в несколько раз, потому что сначала у тебя будут ожидаться данные из первого источника, потом обрабатываться эти данные, потом ожидаться данные из второго источника, потом обрабатываться, и только после этого результат суммируется и добавляется в общий канал. И так несколько раз, в зависимости от первого аргумента.
149 1704618
>>04475

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


Прямо как в ноде, или асинх пайтоне, только модно!

>>04468
Такое на любителя конечно. Но если подобного плана вакансия интересует, то предвосхищаться не стоит или на что-то рассчитывать, отбор большой, как получится так получится. Проще всего нихуа не делать.
150 1704712
>>04618

>Прямо как в ноде, или асинх пайтоне, только модно!


В твоих нодах и асинх петухоне всё хуячится одним потоком. В шарпе всё делается полноценными потоками, если того требует среда.
151 1704733
>>04399

>Поддались на провокации "го круче", "го быстрее"


Поддались на "го типизированный".
152 1704737
>>04415
Как его ломать?
153 1704772
Труп страуса пилил надстройку над сями, пришел к выводу, что нужны эксепшены. Надкусаное яблоко, или у кого они там купили, пилили надстройку над сями, пришли к выводу, что нужны эксепшены. Я нагуглил еще несколько малоизвестных трансляторов в си и там, где есть, эксепшены подаются как достоинство.

>>04045

>Какой редактор кода вы используете?


Geany, там вроде даже дебаг сей раньше был. Codelite для сей, а для Golang же вроде вообще что-то свое было реккомендед типа, не помню как называлось, ставил 5 лет назад, оно после установки начинает пэкиджи обшаривать.
154 1704829
>>04737
Китайским кряком
155 1704928
>>04733
Го настолько типизированный, что interface{} - это норма, nil может неожиданно прилететь в ебало, а при возвращении пары ошибка-значение на два невалидных состояния этой пары забивается хуй. Ведь тип Result это слишком сложно для современного языка.
156 1704931
>>04928

> Result


Ты откуда? Из свифта?
157 1704974
>>04931
Да.
1516167824862.jpg49 Кб, 665x574
sage 158 1705000
>>04336
nginx медленнее. На сях.

>>04772
Exceptions это единственный zero-cost способ обработки ошибок. А всё о чем C++ это о zero-cost abstractions.
159 1705012
>>05000
Зачем писать руками, если zero-cost-способ есть?
160 1705028
>>05012

>Зачем писать руками, если zero-cost-способ есть?


Pike так сказал.
161 1705030
>>04712

>В твоих нодах всё хуячится одним потоком


>2020


Лол
162 1705049
>>05030
Двумя теперь?
163 1705140
>>05049
nlog(n)
164 1705223
>>05000

>nginx


Справедливости ради - это не бекенд. Это фронтенд-сервер. У него задача другая совершенно
165 1705567
>>04928
И та дикая ситуация, которую ты описал, все еще лучше, чем в питоне.

А в 2020 году, когда у нас есть быстрое железо, мы можем вместо ассемблерного вызова функции делать запрос по сети. И теперь кусок приложения можно написать на го, а кусок - на питоне, даже на котлине можно сделать компонент. Представляешь, как удобно?
image.png1,1 Мб, 1000x676
166 1705591
>>05000

>Exceptions это единственный zero-cost способ обработки ошибок.


Exceptions это очень дорого, даже если оно и не будет выброшено код по его обработке останется, на стеке создаются структуры для перехвата и прочее.
167 1705684
>>05030
Что ты лолкаешь, дурачок? Смешно от того, что насрал себе в штаны и воняешь?
168 1706063
>>04112
Так они починили тесты в задаче Е или нет?
Если будет 40 человек из почти 4к заявок, то можно хуй забить, выходит. Вероятность попасть невысока, тем более с такими простыми заданиями.
169 1706080
>>06063
4к дели на 2-3, т.к. я даже две отправил, т.к. думал что система багнула и меня пропустили. Ну и больше половины забила хуй, т.к. менять свой стек на непонятный го мало кто хочет
170 1706084
>>06080
Скорее больше половины поняли, какого качества будет курс от озона
171 1706085
>>06084
Ну на курсы только дебики ходят, мне работа нужна
172 1706141
>>00220 (OP)
Народ, кто офисоблядок и пишет микросервисы на Go. Можете кратко расписать что сейчас в сфере используется, как поднимаете все, чем оркестрируется зоопарк, какие пакеты часто используемые и в целом что желательно знать помимо самого языка?

Я сам разработчик и решил сменить направление деятельности и перейти на Go. Хочется что-то вроде структурированного roadmap, чтобы примерно понимать в какую сторону пердолить. Благодарю.
174 1706147
>>06144
Отлично, как раз что хотел. Добра, анон :3
175 1706152
>>06144
Хотя таки от офисобыдла комменты тоже будет здорово услышать
176 1706178
>>06084
Да, кстати, я тоже теперь думаю, что если они курс вести будут также, как составлены описания задач и вообще всё подготовлено, то на хуй.
177 1706410
>>06152
RethinkDB, etcd, docker, grpc - это то что надо знать лично мне помимо собственно языка.
Если я буду перечислять вообще все технологии, которые у нас используются, это будет он всем и ни о чем
178 1706443
>>06410

Какие киллер фичи у rethink?
179 1706522
>>06443
Главная киллер фича, что стартап который её пилил (бСССР ребята, кстати) обанкротился и теперь она на поддержке сообщества = заброшена. Но идея охуенная была, не выдержали конкуренцию с MongoDB, как сам основатель в постмортеме написал.
180 1706596
>>06522
да рил хорошая была тема жалко что все проебалось
181 1707132
Поясните, какие ORM используются на Go. Я глянул в сторону GORM - так эта какая-то залупа кривоебая, а не ORM, куски запроса приходится писать руками, считай что Django ORM, только еще хуже.
182 1707143
>>07132
Никаких, ОРМ для слабаков, мы пишем весь запрос руками
183 1707236
>>07143
прямо как на пхп без фреймворков!!

>>07132
слепил апи на фреймворке пайтона c нормальным маппером, коньпильнул to C-code, работает резко как C-code, только трудозатрат меньше х10 и без модных кучерявых хайпов.
184 1707302
185 1707595
Куда С++ тред дели, лишенцы???
186 1707601
Зачем нужен Go или C++, если есть JS.
188 1707737
>>07132

Я xorm использую, но только для простых запросов. Без орм заебешься вручную запросы клеить для апишек.
189 1707807
>>06522
Она не заброшена, новая версия вышла вот пару месяцев назад
190 1707962
>>07601

>Зачем нужен Go или C++, если есть JS.


Фронтендель, плз
191 1708037
>>07737
А в чем плюсы использования ОРМ?
Из минусов, я вижу следующие:
1) Сложные запросы проще написать руками, чем через ОРМ
2) Ты не знаешь явно, какой запрос отправился в базу
3) Иногда гораздо проще оттестировать запрос напрямую в базе, а потом его перенести в код, чем изначально пытаться его в код писать
192 1708062
>>08037
То что отправилось в БД можно и посмотреть.
Если не используешь ОРМ, то бизнес логика размазывается между твоим языком и sql. Более того, ОРМ страхуют тебя от sql инъекций. SQL еще кстати достаточно плохо комбинируется. SQL позволяют А теперь представь, что у тебя большой объект со множеством ссылочных полей, селект получился сложный, со множеством джоинов и тебе нужно его упаковать в объект. Руками заебешься это делать.
193 1708086
Господа хорошие, нужно сделать такую штуку, что то типо pastebin но с автоматическим определением языка. То есть - запостил код (именно код, штука должна уметь отедлять код от текста) и он сам определил тебе что за язык, ну и самое собо уметь держать нагрузку. Чтобы два пользователя одновременно постящих что то не сломали нахуй сервер. Что рекомендуете?
анон 194 1708169
Сап, нужно решить задачу на степике на go за бабки
https://stepik.org/lesson/345547/step/15?unit=329291
пишите в тг @Unholydk , о цене договоримся
195 1708349
>>07730
Not found бля. Охуеть
196 1708407
>>08062

>Если не используешь ОРМ, то бизнес логика размазывается между твоим языком и sql.


Очень плохо спроектированная бизнес-логика, не делай такую. >Более того, ОРМ страхуют тебя от sql инъекций.
Стандартный sql драйвер позволяет передавать аргументы через плейсхолдеры и этого достаточно. Если очень хочется, в ногу стрельнешь и через орм.

>SQL еще кстати достаточно плохо комбинируется. SQL позволяют


Вообще ничего не понял.
197 1708530
>>08407
ORM только для этого не нужна. Ручками пишешь интерфейсы и реализации репозиториев, внутри собираешь запросы через pgx и sq. Всё, у тебя есть логика хранения данных, инкапсулированная от бизнес-логики (которая вызывает функции вида FindByID, UpdateByID, DeleteByXAndY) и при этом логика хранения кристально чиста, в отличие от этих ваших orm'ок, в которых для того, чтобы построить эффективный запрос иногда приходится бороться с самой orm'кой и всё это ради преимуществ, что не нужно писать руками save/load функции (а они пишутся за 15 минут).
198 1708532
Кстати! Отличный аргумент в тему дженериков углядел где-то в комментариях:

> Отлично! Покажете, как на классах (без дженериков) сделать параметрический полиморфизм? После этого можно будет посмотреть на то, как на классах сделать тип, например, вектора, где длина вектора была бы видна в типе, попытка zip'ования двух векторов разной длины привела бы к ошибке компиляции, но при этом можно было бы создать вектор произвольной длины, пришедшей, например, по сети или считанной из файла во время выполнения программы.

199 1708534
>>08169
мне кажется или неосилившая обезьяна пытается сделать тестовое в школу озоновскую ?
200 1708743
>>08169
Еще надеешься пройти отбор в озон?
Занимай очередь, 4001-ым будешь
201 1708769
>>08532

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


Я понимаю, что это эталонное нинужно, но кто-нибудь может объяснить, нахуя такой тип нужен?
202 1708790
>>08769
Гибкие контракты для типов, если инициализация переменной прошла успешно, то все использующие ее функции могут не проверять ее значение на валидность.
203 1709021
бля, щас бы из жабы 14 в жабу 1995 года перекатываться и кастить сырые типы ручками в 2к21 году
204 1709098
>>08769
Это, конечно, достаточно абстрактный пример, но он отлично иллюстрирует то, что называется системой типов и что с помощью этого можно делать.
Смотри, во-первых, векторы или там координаты - это вполне прикладные штуки, например, будешь работать с геокодингом (для бизнесовых нужд) - столкнешься, как миленький.
Во-вторых, система типов позволяет тебе фиксировать требования к модели на уровне описания типов и их поведения. Неправильно написанный код у тебя просто не скомпилируется. Это напрямую ведет к повышению надежности твоего кода, поскольку защищает от целого ряда ошибок (не всех, к сожалению, но что поделать).

Разница примерно такая, как между слабой и сильной типизацией. Ты же (надеюсь) не будешь спорить с тем, что код на го надежнее, чем код на каком-нибудь pure javascript? А почему так? А потому, что дополнительное описание ограничений на уровне объявления типов или поведения не даёт тебе случайно передать name вместо age и не заметить этого локально, потому что name у тебя пустая строка и она молча закастилась в 0.

Опять же, простой пример, enum'ы, которых в го, к сожалению, нет. Представь, что у тебя есть какой-нибудь userType и он может быть admin либо general. И в каком-то месте ты, конечно, будешь проверять переменную на возможный тип, конечно, сделав это через switch.
Получится у тебя как-то так:
https://play.golang.org/p/KSAcycYo7xi
А потом у тебя появляется userTypeModerator и тебе придется вручную осматривать весь код на предмет того, как он работает с этим типом и везде ли ты всё учёл! И если ты пропустишь функцию Foo, то ты узнаешь о том, что пропустил её в лучшем случае на тестах, в худшем - на проде.
Напоминает темные времена php, когда переименовав поле у класса ты не мог быть уверен, что оно переименовалось везде и приходилось просто грепом искать по имени поля по всему коду и хорошо, если имя было уникальным, а не какой-нибудь name.
А в случае с enum'ом, то добавив новое значение в enum ты не сможешь скомпилировать код, пока не добавишь во все места switch'а по типу обработку этого нового значения.
204 1709098
>>08769
Это, конечно, достаточно абстрактный пример, но он отлично иллюстрирует то, что называется системой типов и что с помощью этого можно делать.
Смотри, во-первых, векторы или там координаты - это вполне прикладные штуки, например, будешь работать с геокодингом (для бизнесовых нужд) - столкнешься, как миленький.
Во-вторых, система типов позволяет тебе фиксировать требования к модели на уровне описания типов и их поведения. Неправильно написанный код у тебя просто не скомпилируется. Это напрямую ведет к повышению надежности твоего кода, поскольку защищает от целого ряда ошибок (не всех, к сожалению, но что поделать).

Разница примерно такая, как между слабой и сильной типизацией. Ты же (надеюсь) не будешь спорить с тем, что код на го надежнее, чем код на каком-нибудь pure javascript? А почему так? А потому, что дополнительное описание ограничений на уровне объявления типов или поведения не даёт тебе случайно передать name вместо age и не заметить этого локально, потому что name у тебя пустая строка и она молча закастилась в 0.

Опять же, простой пример, enum'ы, которых в го, к сожалению, нет. Представь, что у тебя есть какой-нибудь userType и он может быть admin либо general. И в каком-то месте ты, конечно, будешь проверять переменную на возможный тип, конечно, сделав это через switch.
Получится у тебя как-то так:
https://play.golang.org/p/KSAcycYo7xi
А потом у тебя появляется userTypeModerator и тебе придется вручную осматривать весь код на предмет того, как он работает с этим типом и везде ли ты всё учёл! И если ты пропустишь функцию Foo, то ты узнаешь о том, что пропустил её в лучшем случае на тестах, в худшем - на проде.
Напоминает темные времена php, когда переименовав поле у класса ты не мог быть уверен, что оно переименовалось везде и приходилось просто грепом искать по имени поля по всему коду и хорошо, если имя было уникальным, а не какой-нибудь name.
А в случае с enum'ом, то добавив новое значение в enum ты не сможешь скомпилировать код, пока не добавишь во все места switch'а по типу обработку этого нового значения.
205 1709238
>>09098
Как енум блять тебе поможет такие проверки обойти, долбаеб?
206 1709241
>>09238
Не енум, а компилятор.
207 1709280
>>09241
Что компилятор? Если ты забудешь про дополнительное значение твоего енума - компилятору похуй будет. Не использовал - не значит ошибка.
208 1709285
>>09280

>компилятору похуй будет


Ты скозал? Вполне можно по этому поводу выдать хотя бы ворнинг.
209 1709289
>>09280
Если у тебя switch с возвратом значений- то тут как раз компилятор прекрасно выдает ошибку.
понятно что в го такого нет и не будет
210 1709292
>>09289
В каком языке на неполный свитч енума выдает ошибку, лол? джаве похуй, шарпу похуй. Или ты про плюсы?
image.png49 Кб, 851x566
211 1709311
>>09292

>джаве похуй, шарпу похуй


>я люблю пиздеть про вещи, которые не знаю.

212 1709328
>>09311

> switch без брейка


> двач, почему я обосpался?

image.png40 Кб, 717x575
213 1709336
>>09328
Мудило, ты опять пиздишь о вещах которые не знаешь?
214 1709351
>>09336
Да ну, ты троллишь. Я не верю, что джавист настолько тупым может быть. Под вами же сраные тырпрайзы держатся, а ты такую дичь пишешь.
215 1709365
>>09292
В котлине, к примеру.
```
when (enum) {
FIRST_VALUE -> {}
}
```
216 1709369
>>09292
>>09365

> джаве похуй, шарпу похуй


Они к этому придут, со временем. Я сейчас посмотрел, в расте тоже не компилируется. Все языки, в которых пытаются сделать богатую систему типов, короче.
217 1709376
>>09351
Вот ты дебил. Возьми последнюю версию и провери сам.
218 1709379
>>09376

> последнюю версию


сколько там производств последнюю версию юзают? 0.5 процента?
219 1709398
>>09379

>сколько там производств последнюю версию юзают? 0.5 процента?


А вот и оправдания подъехали.
Кому нужны новые плюшки - используют, кому не нужны могуть хоть на 1.5 сидеть.
220 1709412

> срач про енумы


В очередной раз кто-то обнаружил, что в го нет того, что есть во всех нормальных языках?
221 1709436
>>09412
Да :( Надеемся и ждём го2.
222 1709475
>>09436

>ждём


Лучше бы придумали как красиво оформиьть надгробный камень для,кладбища гугл проектов на которые гугл забил хуй
223 1709477
224 1709479
>>09475
А что, гугл в го миллиарды вливает что ли? Откажется гугл, сделают некоммерческую организацию, которая будет поддерживать, может даже стандартизируют.
225 1709501
>>09479
ага и будет ебаная легаси параша уровня жакарты.
226 1709998
Поясните, как продумать архитектуру приложения? Вкратце, для той-проекта не нужно читать талмуды про архитектуре. Если что, приложение - блог с подсветкой кода. В данный момент это портянка main.go и веб-интерфейс к ней http.go.
227 1710319
>>04327
Это хуйня синтетическая, где сверхразумы зачастую просто отдают один и тот буфер с текстом. Т.е. от реальных задач это далеко прости пиздец, и на реальных задачах сишарп выебут. Вот как будет полноценный аналог того же nginx или haproxy со всей функциональностью - тогда и поговорим, а пока нахуй катись со своей CLR-залупой.
228 1710320
>>09998

>блог


>go


Ты где-то свернул не туда
229 1710323
>>10320
Потому что не хотят признавать, что го - DSL для микросервисов, а не язык общего назначения.
230 1710371
>>10320
Ну статическая генерация всего и вся, прикольно же. Не писать жеж для себя какую-то ебанину на микросервисах.
231 1710383
>>09998
А что тут думать?
Три слоя:
Хэндлеры - тут ендпоинты и валидация
Контроллер - тут бизнес-логика
Репозиторий - тут работа с базой
232 1710436
>>10371
А нахера?
С задачей блогинга справиться тот же пых
233 1710438
>>10436

>2020


>писать на пыхе добровольно



>>10383
ну примерно так я и назначил, плюс еще init.go.
234 1710450
>>10438

>2020


>писать на пыхе добровольно



Зачем ты меня расстроил?
Чего ты добился?
Котенок.жпег
235 1710453
>>09998
Ебани jamstack, сейчас так модно.
236 1710469
Для блога на го, предлагаю статический сайт на hugo Там, где нужна динамика использовать серверлес.
237 1710544
>>09098

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


Ты там из блокнота кодишь?
239 1710593
>>10544
Из блокнота, ха.
У меня IDEA несколько раз цепляла лишнее при переименовании, потому что какой-то идентификатор глубоко в xml-файлах показался её похожим, и из-за этого приходится перепроверять каждую "исправленную" строчку. Надёжнее переименовывать руками. И это ещё в статически типизированной джаве, что там в пхп было бы, страшно представить.

мимо
240 1710950
>>10544

Блять, у тебя есть функция на php:
```
function foo($a) {
return $a->name
}
```

И у тебя есть класс User с полем name. Я хочу name переименовать в first_name. Рассказывай, как IDE здесь мне поможет.
Предвидя вскукареки на тему типизации - оно не всегда работает, потому что ебаное легаси и ебаные фреймворки из нулевых.

В том же го так нельзя сделать by design, даже пустой интерфейс тебе придётся закастить к типу, чтобы достать из него поле (есть варианты через рефлексию, но это уже конкретный говнокод и так к счастью никто не делает).
241 1712417
Поясните какие пакеты надо скачать и куда нажать, чтобы реализовать такое:
Есть значит структура Tachki с разнородными полями и даже с другими структурами в полях, возможно рядом с полями стоят их названия в соответствующих таблицах. Нужно, чтобы командой LoadmyShit(Tachki) структура загружалась в БД, а командой DownloadMyShit(&Tachki) заполнялась из БД.
242 1712433
>>12417
Например, sqlite: https://github.com/mattn/go-sqlite3
Ну а в своих функция делаешь запросы, считываешь записи и заполняешь структуры.
243 1712466
>>12433
драйвер у меня есть.

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


Ручками писать парсер для 20 структур? это go-way?
244 1712471
>>12466

> это go-way?


Да. ORM есть, но их использование тут считается чем-то плохим.
245 1712544
СУКА! 30 минут моей жизни из-за поля структуры с маленькой буквы.
246 1712546
Есть гайды по го модулям? Ожидал примерно как в питоне, что фал с зависимостями, пополняется и обновляется. А на деле какую-то хуету вычитал, как создать модуль из своего проетка. Хочется быстро и легко управлять зависимостями. Спасибо.
247 1712560
>>12466
Говей это генерировать такие парсеры. Но как, я не знаю
249 1713019
Является ли говеем писать (вместо наследования):
func (m Granny) Dosomething {}
func (m
Dad) Dosomething {
m.Granny.Dosomething()
}
func (s *Son) Dosomething {
m.Dad.Dosomething()
}
250 1713056
>>13019
Зависит от ситуации, твой пример какой-то кривой
251 1713106
>>13019

Пример кривой, вынеси общую функциональность в родительский класс. В какой-нибудь DoSomethinger.
252 1713112
>>13019
Вместо наследования тут встраивание (embedding):
https://medium.com/german-gorelkin/embedding-in-go-6739e46c1be1
Ну а раз такая фича есть, значит, говновей.
253 1713351
>>13112
это что-то новенькое

>Встраивания указателя


>Встраивание интерфейса



ууу, ща нагорожу private и public при помощи этих костылей.
254 1713370
>>13351
Почитай какой-нибудь учебник сначала, а то тоже потом будешь здесь котлином срать.
255 1713426
>>13370
А есть хороший? А то уже говна наворотили по 500 страниц, из разряда тех, что на полку ставишь и забываешь навсегда о нем.
256 1713701
>>13426
Оп-пост почитай, болезный.
257 1714365

> Пока в го клубе идет обсуждение наносервисов, пятиминутка злости про С++


> Пошел вот сознательно в одну компанию, поближе познакомиться с С++ так сказать


> Помимо специфичексих вещей проекта (ну, энтерпрайз писать на плюсах это так себе сама идея) есть и несколько общих выводов


> В целом получил что хотел. А хотел собственно спуститься еще чуть ниже по стеку (начал с джавы -> go) и на шкуре почувствовать что в свое время достало авторов го в этом самом ++ И да, этого сполна...


> Потрясающая неэффективность разработки. Это про то что плюсы хороши и плохи одинаковы для проектов любой сложности ну это утрированно. Но их как языка в общем не существует есть плюсы стандарта Х/Y и даже уже, компании А/Б, со всем своим - стектрейсером, шедулллером, базовыми типами и тд. Знать с++ абстрактно хорошо непонятно можно ли вообще. Время компиляции, дааааа.....


> UB это злосчастное. Имхо это такая отмазка сказать "не знаю". (кто не в курсе - undefined behavior). шаг вправо-влево - "UB" иди кури бамбук. Ну да формально выход программы без джойна всех тредов это UB. Но в среде c++ это такая волшебная мантра которая обозначает окончание беседы и задумчивое смотрение вдаль. А откуда тут UB когда компьютер детерминисткая железка вообще? В го (бинг) нет UB, в java нет. Если копнуть рантайм того же го - ьам вызов сисколла в главном треде закрывающий все треды процесса и даже некоторый цикл, чтобы процессор стек не распахал, и вуаля - и нет UB, надо подумать просто, и сделать. Так и в плюсах можно, но у плюсовиков кажется рефлекс - UB - и дальше не думаем. Очень расстраивает(


> Импенетрабельная (извините) стандартная библиотека с этими шаблонами и принципиальным кажется отсутствием документации в коде; язык с++ не только сложный но и не способствующий изучени. Так копошишься на своем уровне без особых шансов понять как оно внутри там устроено. + Деление backend/frontend (llvm) добавляет - очень на джаву похоже


> После этого посмотришь опяь на го - все чистенько аккуратненько, внутри сделано чаще всего good enough в 99% (и в такой же степени лучше чем сам бы пытался сделать с нуля) и просто работает. Кому не хватает сложности в го, вместо того чтобы тянуть рантайм DI и прочую магию энтерпрайза - займитесь плюсами немного, там этого хватает. И возвращайтесь в го, писать чистый понятный код

257 1714365

> Пока в го клубе идет обсуждение наносервисов, пятиминутка злости про С++


> Пошел вот сознательно в одну компанию, поближе познакомиться с С++ так сказать


> Помимо специфичексих вещей проекта (ну, энтерпрайз писать на плюсах это так себе сама идея) есть и несколько общих выводов


> В целом получил что хотел. А хотел собственно спуститься еще чуть ниже по стеку (начал с джавы -> go) и на шкуре почувствовать что в свое время достало авторов го в этом самом ++ И да, этого сполна...


> Потрясающая неэффективность разработки. Это про то что плюсы хороши и плохи одинаковы для проектов любой сложности ну это утрированно. Но их как языка в общем не существует есть плюсы стандарта Х/Y и даже уже, компании А/Б, со всем своим - стектрейсером, шедулллером, базовыми типами и тд. Знать с++ абстрактно хорошо непонятно можно ли вообще. Время компиляции, дааааа.....


> UB это злосчастное. Имхо это такая отмазка сказать "не знаю". (кто не в курсе - undefined behavior). шаг вправо-влево - "UB" иди кури бамбук. Ну да формально выход программы без джойна всех тредов это UB. Но в среде c++ это такая волшебная мантра которая обозначает окончание беседы и задумчивое смотрение вдаль. А откуда тут UB когда компьютер детерминисткая железка вообще? В го (бинг) нет UB, в java нет. Если копнуть рантайм того же го - ьам вызов сисколла в главном треде закрывающий все треды процесса и даже некоторый цикл, чтобы процессор стек не распахал, и вуаля - и нет UB, надо подумать просто, и сделать. Так и в плюсах можно, но у плюсовиков кажется рефлекс - UB - и дальше не думаем. Очень расстраивает(


> Импенетрабельная (извините) стандартная библиотека с этими шаблонами и принципиальным кажется отсутствием документации в коде; язык с++ не только сложный но и не способствующий изучени. Так копошишься на своем уровне без особых шансов понять как оно внутри там устроено. + Деление backend/frontend (llvm) добавляет - очень на джаву похоже


> После этого посмотришь опяь на го - все чистенько аккуратненько, внутри сделано чаще всего good enough в 99% (и в такой же степени лучше чем сам бы пытался сделать с нуля) и просто работает. Кому не хватает сложности в го, вместо того чтобы тянуть рантайм DI и прочую магию энтерпрайза - займитесь плюсами немного, там этого хватает. И возвращайтесь в го, писать чистый понятный код

258 1714367
>>14365
я не программировал на плюсах профессионально, но много лет назад когда интересовался, мне показалось, что С++ - это язык для написания языка программирования, а не программ. Потому, что и язык, и подход к разработке сильно меняется в зависимости от подключения Qt или Boost. Ну ладно, язык не меняется, но эти библиотеки вводят столько абстракций, что уже кажется, что это другой язык.
Плюс выбор компиляторов: гцц, борланд, майкрософт, кто-то еще. Думаю, что если выучил весь С++ - ты бог. Потому, что допускаю, что в разных компиляторах и может быть разная реализация стандарта и свои баги и особенности напополам с UB.
259 1714382
>>14367
Да вот недавно на хабре изливали боль:
https://habr.com/ru/post/497114/
Еще интересно: плюсовики индифферентно относятся к го, но при упоминании раста бросются говном, как джависты-котлинеры в этом треде.
260 1714408
>>14365

> вуаля - и нет UB, надо подумать просто, и сделать


Если так рассуждать дальше, в плюсах вообще нет UB. Сначала думаешь, что хорошая идея - дать мусорное значение неинициализированной переменной в качестве seed рандомайзера, ведь оно непредсказуемое. Или что можно полагаться на поведение, когда после максимального значения инта идёт минимальное.
Ну а потом у тебя выполняется и if, и else одновременно. Или printf ничего не выводит.
Не представляю, как на плюсах пишут большие проекты. В плюсах и джуны, наверное, как сеньоры в остальных языках.
261 1715081
>>14408

> Сначала думаешь, что хорошая идея - дать мусорное значение неинициализированной переменной в качестве seed рандомайзера, ведь оно непредсказуемое.


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

> Или что можно полагаться на поведение, когда после максимального значения инта идёт минимальное.


Да же фигня, ну кто так будет делать? Переполнение переменной - зло и полагаться на то, что какая-то магия там что-то сделает есть идиотизм. Явное всегда лучше неявного, если хочешь циклический счётчик - сделай блять условие нормально.

Извините, накипело. Сначала пишут эталонный говнокод на чистой магии, он становится неподдерживаемым, а потом такие "мы сеньоры, пойдём понтоваться на конфах"
262 1715117
>>15081

> Сначала пишут эталонный говнокод на чистой магии, он становится неподдерживаемым, а потом такие "мы сеньоры, пойдём понтоваться на конфах"


А потом еще и языки с кучей ad-hoc костылей пишут и получают славу пророка "простоты" среди впечатлительных юнцов!
263 1715160
>>15081

> Ни один нормальный разработчик так делать не будет


Нормальный разработчик не будет пытаться строить рассуждения на основе поведения UB, показавшегося ему рабочим, никогда и ни при каких условиях Он скажет: "здесь UB, и точка. Нужно переделывать". Даже если это сначала кажется безобидным.
264 1715163
>>15081

> Явное всегда лучше неявного


Это в языке с десятью конструкторами по умолчанию и со слабой типизацией-то?
265 1715188
>>15163
Это вообще и всегда, бесприменительно к языку. "Магия = плохо", эту истину нужно высечь на жопе у каждого джуниора, чем раньше, тем лучше.

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

>если тебе не нравится - не пиши на го, всё просто


А как тогда срать в /пр?
267 1715192
>>15163
А, да, про конструкторы. Тот же `new` не нужен, надеюсь его в go2 уберут. Остаётся var для нулевого значения, `:= сырое значение` для, собственно, сырого значения и make если нужно заранее задать размер мапы, слайса или канала (который на самом деле тоже слайс, кстати).

В го есть совсем немного вещей, которые дают избыточную сложность, это ёбаные слайсы (имхо, очень зря особенности их реализации вытащили на прикладной уровень, эталонная хуйня для собесов онли), хуйня с интерфейсами и nil (когда nil'овый интерфейс != nil), невозможность мутировать поле структуры, лежащей по значению внутри слайса или мапы и может ещё что-то.

Сравнительно немного, если посмотреть на другие языки.
268 1715194
>>15188

> Говоря же про го


Точняк, тред же про него.
269 1715224
>>15192

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


Чо ты несёшь, поехавший?
https://play.golang.org/p/loZ-RUPvJDK
270 1715251
>>15188

> он ну очень явный


Про то, что любая хуйня может неявно конформить протокол, ты, конечно же, умолчал.
photo2020-05-1002-12-33.jpg38 Кб, 750x442
272 1715844
>>15666
С одной стороны нейминг мало что значит, с другой - очень плохо, что дикари и им сочуствующие могут так просто заставить крупные компании рефакторить свой код, просто по тому что им не нравяться какие-то слова. Современное западное (в широком смысле) общество болеет, и это - всего лишь один из симптомов. Олсо, аналогичное изменение 2 года назад сделал Python
273 1716045
>>15666
Какова позиция алтайских программистов по этому поводу?
274 1716190
>>16045
Уже начали работу над своей реализацией го, с матершиной и расовыми оскорблениями
275 1716491
Го не пользуюсь, но чет промимировал с https://www.opennet.ru/opennews/art.shtml?num=53109 . Скоро палитры запрещать будут.
276 1716503
>>16491
Да это рано или поздно коснется многих

Видел обсуждение, где писалось, что надо бесплатную утилиту на руби под названием Rubycop переименовать, потому что копы - это полицейские, а они теперь плохие.
277 1716513
>>16491
>>16503
Это началось давно уже, с вбрсывания code of conduct в опенсорс проекты, сейчас просто у комнатных активистов зудит в жопе на фоне событий, вот они и выискивают где ещё насрать.
278 1716640
>>15666

Ещё и Rus Cox лайкает ани-республиканские твиты https://twitter.com/_rsc/likes?lang=en, куда вообще сообщество катится
15215752130990s.jpg6 Кб, 200x200
279 1716730
>>15666
Надеюсь в го нет расистских супермасистских архитектур вроде Master/Slave? Работал в эмбеддеде, где эти слова встречаются в каждом первом проекте, и могу себе представить боль прогрессивных смузихлебов от поделок бородатых махарайщиков в свитерах с оленями.
у кого-нибудь есть картинка в хайрезе?
280 1716849
Ананасы, подскажите, как обновлять модули? Написал один, выложил на гит, подключил в проект - а при коммите в мастер версия в проекте не обновляется. В чем может быть проблема?
281 1716857
>>16849
git tag?
282 1717141
>>00220 (OP)
На моей памяти это уже третий 10 тред. Неужели все хейтят это до сих пор?
283 1717145
>>17141
Наши треды обратно совместимы. Ентерпрайз куолити.
284 1717169
Суп гач. Устроился джуном на пщ. Вот стараюсь лучше узнать архитектуру программ и лучшие практики на го. Наткнулся на канал Gopher School https://www.youtube.com/channel/UCQBFSUV_BdxGCxeg9Th4EjQ
и я увидел там очень много знакомых решений, которые используются в проекте над которым я работаю.

Вот хочу узнать, может есть какой-то ресурс или книги которые просто маст рид по лучшим практикам и архитектуре го приложений?
285 1717189
>>16849
go get -u github.com/username/projectname
286 1717193
>>16849
Олсо, прочитай https://habr.com/ru/company/otus/blog/503918/ - тебе при разработке может быть удобным replace
287 1717198
>>17169
Да где вы ваки находите?
Одних синьоров-мидлов ищут с опытом 3+ года
288 1717220
>>17198
Я просто обновил резюме, и мне предложили. Без пизды. Но не в мск. Ну у меня ещё опыт веб макаки 1.5 года
289 1717226
>>17220
В резюме есть релевантный голенг опыт?
Заголовок резюме вида Golang Developer?
290 1717310
>>17145
Без Илюши, го-треды это не го-треды.
Result.png81 Кб, 1888x718
291 1717341
292 1717351
Кто-нибудь сталкивался с подвисаниями GoLand под макосью? Даже на хеллоу ворлде постоянно происходят короткие фризы. Голанд 2020.1.3
293 1717353
>>17341
Но ведь здесь такое же решение предлагали и оно не работало
294 1717729
>>17351
Засрут своими if err != nil код и потом у них IDE тормозит.
295 1717747
>>17353
Да, походу это троллинг. Я сам что-то подобное делал, и нихуя
296 1718039
>>17729
В этих джетбрейнсовких иде пустой проект сжирает 2 гига оперативки.
297 1718042
>>18039
псс, не хочешь немного `gopls`?
298 1718044
>>18042
И что он сделает? Заменит jvm в голанде?
299 1718048
>>18044
Внезапно, заменит голанд на любой редактор, который умеет в lsp
я вимом пользуюсь, мне норм
300 1718062
>>18048
В голанде можно нажать кнопочку рефактор, и он переименует даже в гите у разработчиков го, вимы и вскоде так не умеют.
301 1718147
>>17729
Да, охуенно. Ведь когда для JVM охуеть как сложно проанализировать 5мб текста зависимостей - виноват, конечно, текст.
>>18048
Вим или неовим? Я хочу вкатиться, что посоветуешь кроме vim-go поставить?
sage 302 1718157

> голенд


> голенд


> голенд


> голенд


> голенд

303 1718179
>>18062
Я думаю главный плюс, это отладчик. Который гоферам как бы и не нужен но очень тяжковато принтами дебажить как школьник на пхп
304 1718191
Нет каких-то простых способов uint в string перевести?
305 1718196
>>18179
Его и без пщленда можна использовать. Просто это не так удобно. Олсо, когда речь идет о канкаренси вещах - все равно принтам нет альтернатив, дебагером ты ничего не отловишь
306 1718199
>>18191
strconv.FormatUint(uint64(n), 10)
307 1718387
что можно почитать на русском с нуля? или пытаться книги из оп поста на английском читать?
308 1718410
>>18387

Да не нужны никакие книжки курсы и тп.
Го тур + хабра + оф блог
И ты знаешь все.
309 1718427
>>18147
неовим мне не зашел, vim-go тоже не пользуюсь, потому что не только на го пишу

если интересно, то плагины только эти стоят и все:
https://github.com/editorconfig/editorconfig-vim.git
https://github.com/tpope/vim-commentary.git
https://github.com/natebosch/vim-lsc.git
https://github.com/tpope/vim-fugitive.git
310 1718433
>>18410
думаешь, этого будет достаточно?
311 1718440
Тут видосик приехал про пейпер о Featherweight Go

https://www.youtube.com/watch?v=Dq0WFigax_c
312 1718460
>>18427
Спасибо за ответ

>vim-go тоже не пользуюсь


Он мешает при написании кода на других языках?
313 1718481
>>18460
Нет, не мешает, просто добавляет кучу функционала, которым я не пользуюсь и не переиспользуется

а vim-lsc универсальней - он делает линтинг, автодополнение, навигацию по коду (собственно все нужные мне возможности lsp протокола) для любого языка, для которого в конфиге есть мапа "расширение файла" => "lsp executable"
314 1718561
>>18481
А еще в виме можно забыть нажать кнопочку i перед тем как печатать, и он откроет пять новых буферов, заменит пробелы на табуляции, задидосит сосач и намайнит биткоинов.
315 1718576
>>18561
Не юникс-вей, конечно, но звучит - охуенно
316 1718581
>>18576
Практика показала, что простые пользователи не хотят юникс-вей, они хотят комбайн, который может всё. Им эмоционально проще освоить одну сложную прогу, чем 20 простых. Именно поэтому современные браузеры такие жирные.
317 1718616
>>18481
Сколько не пробовал - IDEшки дают ту же кучу возможностей и даже больше, но интуитивнее (потому что специально дизайнились под то, чтобы быть IDEшками) и при этом их не нужно настолько допиливать напильником.
А вообще удачи превратить вим в полноценную IDE, где и базу можно посмотреть, и гошный дебаггер интегрирован, и тесты можно запускать, и рефакторинг проводить, и линтер у тебя встроенный (можно от одного варнинга к другому прыгать и IDE даже сама будет подсказывать тебе варианты решения варнинга) и тп.
Да даже просто гошный дебаггер. Из консоли с ним работать адски неудобно, а в то, что в виме есть нормальный гуй для дебаггера я, извините, не верю.

Короче, лично я за все мои 10 лет "программирования" ничего луже продуктов JetBrains ещё не встречал, хотя пробовал кучу разных штук. кстати никто не знает, они платят что-нибудь за рекламу их софта на дваче?
318 1718619
>>18481
Сколько не пробовал - IDEшки дают ту же кучу возможностей и даже больше, но интуитивнее (потому что специально дизайнились под то, чтобы быть IDEшками) и при этом их не нужно настолько допиливать напильником.
А вообще удачи превратить вим в полноценную IDE, где и базу можно посмотреть, и гошный дебаггер интегрирован, и тесты можно запускать, и рефакторинг проводить, и линтер у тебя встроенный (можно от одного варнинга к другому прыгать и IDE даже сама будет подсказывать тебе варианты решения варнинга) и тп.
Да даже просто гошный дебаггер. Из консоли с ним работать адски неудобно, а в то, что в виме есть нормальный гуй для дебаггера я, извините, не верю.

Короче, лично я за все мои 10 лет "программирования" ничего луже продуктов JetBrains ещё не встречал, хотя пробовал кучу разных штук. кстати никто не знает, они платят что-нибудь за рекламу их софта на дваче?
319 1718652
>>18619
когда твой сервис становится немного сложнее того, чтобы поднять локальную бд и стартануть сам сервис, все эти плюшки с запуском тестов из иде и дебаггером очень сильно теряют свою ценность, потому что в конфигурациях с кубом/докером и развесистой инфраструктурой все становится только сложнее

и, я осознанно не делаю иде из вима, тк мне нужны только git blame, и навигация по коду с базовым линтингом; все остальное я из консоли/CI в состоянии запустить

ps пять лет уже живу без дебаггера в абсолютно разных экосистемах, полет нормальный, код лучше писаться стал
320 1719022
>>18652

>плюшки с запуском тестов из иде и дебаггером


Не теряют. При создании какого-то сервера ты всё равно локально только юнит-тесты запустить можешь, их и надо пилить в иде. Дебаггер вещь просто незаменимая, я всего полгода назад узнал, что есть программисты, которые им не пользуются, и я не понимаю, как и зачем вы живёте.
У меня развесистая инфраструктура в кубе, это не мешает мне запускать один сервис локально, подключать его к тем, которые в кубе и ставить брыкпонты, чтоб поотлаживаться
321 1719172
>>18652

Я стараюсь писать так, что бы каждый сервис можно было изолировано запустить локально и полноценно отдебажить.
322 1719365
>>19022

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


Они дебажат принтами, медленно и печально. Но в защиту го скажу, что дебаггер там не особенно удобный и не особенно стабильный, часть стркуткур в рантайме ты даже и просто не видишь, не говоря уже о том, чтобы их менять. Не выдерживает никакого сравнения с джавой или, прости господи, с пехапе.
Поэтому _очень_ много гошников уже просто привыкли обходится без дебаггера.
Ну и в целом, кстати, многопоточный код с туевой хучей горутин очень непросто отлаживается дебаггером, потому что пока ты прокликиваешь один процесс - другие работают себе, как хотят (или нет).
323 1719369
>>18652
У меня всё в кубах, все линтеры и тесты обернуты в докер и запускаются в CI, но всё равно при разработке тебе придется работать с этим же локально, подебажить что-то, посмотреть базу, позапускать что-то. IDEшка реально удобнее для той же базы, чем смотреть что-то в консоли или там админер поднимать.
image.png15 Кб, 639x172
324 1720387
дебило вопрос. а что конкретно я узнаю или получая используя эту шнягу? [1] какие-то цифры выдаёт
325 1720448
>>20387
Код символа
То есть "a"[0]=97
http://www.asciitable.com/
326 1720495
>>20448
от души, братишка
327 1720806
>>20387
Ты получаешь Rune (мог бы и сам в IDEшке посмотреть возвращаемый тип), дальше гугли.
328 1721081
>>20806

>Rune


Не перезвоним
329 1721254
Как написать свою кодогенерацию? Кто-нибудь занимался?

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

Как-то громоздко все выглядит, может есть на других языках фреймворки, которые позволят сделать генерацию более лаконичной?
b.png47 Кб, 1089x248
330 1721694
Здравствуйте. Чёрная Живая Материя. Поддержать инициативу равного правосудия. Пожалуйста подтвердите что вы не расист.
Ваш вклад имеет решающее значение для наших усилий по прекращению массовых тюремных заключений и чрезмерного наказания в Соединенных Штатах, борьбе с расовой и экономической несправедливостью и защите основных прав человека для наиболее уязвимых слоев населения американского общества. Спасибо!
331 1721711
>>00220 (OP)
Нужен совет сеньёров-помидоров. Берут в Go джунов? Насколько жесткие требования по сравнению с другими стеками?
332 1721721
>>18410

>Да не нужны никакие книжки курсы и тп.


>Го тур + хабра + оф блог


>И ты знаешь все.


Ты работаешь? Го маленький язык получается, проще даже PHP?
333 1721765
>>21721
Говнокод на любом языке просто написать.
334 1721782
>>21765
Это понятно. Я про минимальынй объем знаний. Минимум синтаксиса, ООП нет, простая экосистема и деплой, простая модель конкаренси. Из этого должно следовать, что в Go низкий порог входа, и поидее требования в вакансиях должны быть меньше чем для тех же джавистов. Я прав?
335 1721786
>>21782
Стать джавистом джуном проще, чем джуниор гошником
336 1721799
>>21254
Парсеры как правило пишутся на основе парсера из стандартной библиотеки, в интернете можешь найти примеры, он довольно простой в использовании. Главное учитывать, что он возвращает именно спарсенный текст, а не сигнатуры, к сожалению. То есть, `foo(a, b string)` спарсится как функция с аргументами `a` и `b string`, что не очень удобно.

Кодогенерация в большинстве случаев решается через шаблон с кодом, в который через gotemplate подставляется то, что тебе нужно. Естественно, никакой подсветки результирующего синтаксиса там нет, отлаживаться приходится "на глазок" и всё такое. Особенно бесят отступы. Некоторые из моих знакомых вообще на эти отступы забивают и генерируют код, как придётся, просто проходясь по нему потом gofmt.
Ещё есть gennifer, это кодогенератор, построенный на объектной модели. Кода получается многовато, но идея не так уж и плоха. Жаль, используется редко.
337 1721802
>>21782
По идее прав (но всё всегда зависит от конкретной вакансии и злоебучести конкретного собеседующего), не слушай этого поехавшего.
338 1721828
>>21786

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


Объясни почему?
339 1721844
>>21828
Набор джавистов больше, конторе проще курсы по джаве организовать, команды по джаве больше, значит можно джунов проще добавить в команду
340 1721850
>>21844
Ты не работешь и кроме джавы ни на чем не писал, я прав?
341 1721855
>>21850
Я работаю и пишу на го, и говорю как есть
342 1721862
>>21855
Тогда ты должен понимать, что объем знаний для джуна в джаве в 2-3 раза выше чем для джуна в го. Большие команды и проекты скорее минус чем плюс. В джаве многабукф, паттерны/ООП головного мозга, миллионы строк лапшекода, тысячи классов, новичкка кинут разгребать кучи говна за всеми, одни минусы. Количество вакансий не о чем не говорит. Чем меньше вакансий, тем меньше конкуренции.
343 1721866
>>21862
Не знаю, я не мерял объем знаний, но знаю, что джаве в универе учат и курсов по джаве гораздо больше.
А на го в первую очередь берут тех, кто готов переучиваться.
344 1721867
>>21802
Спасибо
345 1721969
>>21254
На сколько я знаю - нет полноценного фремворка для этого, но можно вместо темплейтов использовать https://github.com/dave/jennifer
346 1721978
>>21694
Ой какой пиздец. Когда уже маятник качнеться вправо?
347 1722086
>>21862
Ну, не сказал бы.
Джава она разная. Формошлепство, тырпрайз на шестой джаве, монолиты на спринге. Всё это требует минимум знаний.
От гошника ожидается многопоточность, понимание низкоуровнего железа, cloud native, россыпь бд, микросервисы, ...
Screenshot2020-06-14 The Go Playground.png16 Кб, 463x295
348 1722168
Начал читать Кернигана. Не могу понять пару моментов. Что такое arg и range? Понятно что arg переменная, но почему она не объявлена? Не понимаю что представляет из себя range, и на функцию не похоже нет скобок, и на переменную, что это?
349 1722266
>>22168
Начинал бы ты с питона
350 1722279
>>22266
Нахой мне питон. У меня есть опыт программирования. Просто синтаксис не знакомый, а книге Кернигана тупо оставляют некоторые строчки кода без объяснения.
351 1722282
>>22086

>многопоточность


А джавистам типа не нужно

>понимание низкоуровнего железа


Причем тут вообще Го?

>Россыпь бд


Как БД связана с языком программирования веб-бэкенда?
Типа у джавистов одна БД, у гошников - другие?
352 1722285
>>21862

>Чем меньше вакансий, тем меньше конкуренции.


Топ-логика. Пойду учить Brainfuck.
353 1722303
>>22168
Пройди сначала go tour.
variableName := value это краткая форма записи var variableName variableType = value
range - это ключевое слово для итерации по массивам, слайсам, мапам и каналам
354 1722305
>>22168
range - это оператор прохода по массиву.
Переменная arg объявляется через :=
355 1722309
>>22285
На брейнфаке не пишут за деньги.
356 1722310
>>22303
>>22305
Я уже нагуглил, но спасибо.
357 1722315
- угадайте язык
358 1722327
>>22310
Если умеешь гуглить, то зачем изначально такой тупняк спрашивал?
359 1722334
>>22327
Сразу не нагуглилось
360 1722391
>>22282

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

Мне питон ближе.
Разве можно сравнивать требования к джангисту, пилябщк у монолит на одной postgre + redis и питонщику пилящему микросервисы на aiohttp, где сразу россыпь всего - кликхаус, постргя, редис, эластик, Кафка, Кассандра?
И на го только требования второго плана.
361 1722439
Стоит ли учить go, как первый язык? в принципе основы как масивы, циклы и тд знаю, но с языком не могу определиться
362 1722440
>>22391

>В го изначально высокие требования


К чему?

>однообразные задачи


Например? Го язык общего назначения.

>В более массовых языках задачи разные, и много тех, где не нужно такого объема знаний.


Какого объема? В Питоне языковых конструкций в 2 раза больше. Плюс большая и разрозненная экосистема.
363 1722449
>>22439

>с языком не могу определиться


Любой язык бери. Go довольно простой и удобный. Меньше будешь тратить времени и сил на ненужное. В JS к примеру кроме языка нужно еще изучить кучу инструментов, так как экосистема большая и сложная.
364 1722457
>>22449
значит если я буду го учить, то подводных не будет
365 1722471
>>22457
Программирование это сложно, начнем с этого. Язык не важен, потому что программируют алгоритмы в голове, а язык используют только для выражения этих алгоритмов в виде кода. Я тебе уже написал, что Go довольно простой, в других языках требуется больше знать чтобы их использовать. Еще простой PHP, но он только для веба.
366 1722475
>>22471
спасибо
367 1722484
Начинать правильнее всего с C++.
368 1722515
>>22471

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

Иди нахуй, я привел пример.
370 1722840
Как работать с файлами, какой пакет использовать?
1. os
2. io
3. ioutil
4. другое
371 1722843
>>22515
Проще чем Питон как язык + упрощает работу с вебом

>>22522

>Иди нахуй


Нахуй твоя жопа хороша
372 1722866
>>22843

Ты, определенно, альтернативно одаренный.
373 1722888
>>22866
Если бы у питона и пхп были спецификации, то пиновская была бы в 2-3 раза больше
374 1723029
>>22285
Нормальная логика. Выучил эликсир, вкатился на позицию джуна за 130к, хотя по факту я больше типикал джуна знаю.
375 1723042
>>22285
>>23029

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


Двачую. Один чувак из чата джуном в Clojure вкатился, не имея до этого опыта программирования за деньги.
376 1723059
>>23042
Что за чат?
377 1723069
>>23059

>Что за чат?


С какой целью интересуешься?
378 1723110
>>23029

>джун 130к


Прохладная история
379 1723133
>>23110

Джун го +-100.
Эликсир поебанутей, вот и за повыше.
380 1723146
>>23069
Хочется пообщаться в чате.
381 1723148
>>23146
Если это чат гошников в телеге, то осторожнее, там какое-то запредельное число даунов тусит.
382 1723154
>>23148

> чат гошников


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


Какая неожиданность!
383 1723163
>>23154
Скорее

> чат


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

384 1723205
385 1723206
>>23133

>джун го +-100


Что-то как-то вообще нет:
https://www.google.com/search?q=junior+go+developer&oq=junior+go+developer
386 1723211
>>23042
Наверное, большой стаж борщехлебства. Это все же больше, чем ничего.
387 1723216
>>23211
Нет, полгода год, вроде так. Он просто не ебланил, а хуярил день и ночь.
388 1723272
>>23206

Ну я за джунов в своей компании.
image.png729 Кб, 1012x1012
389 1724501
таблеточки.mp422,6 Мб, mp4,
1280x720, 0:13
390 1724556
391 1725513
Чо посоны, дженерики?
https://blog.golang.org/generics-next-step
392 1725524
>>25513
Предвкушаю, как все переобуюся из "НИНУЖНЫ" В "ВЕЛИКОЛЕПНАЯ ФИЧА ГЛОРИУС ЯЗЫКА".
393 1725563
>>25524
Да про "нинужны" кукарекали только долбоебы. Все нормальные чуваки сразу говорили, что фича нужная.
394 1725746
Я с 2017 был в спячке. Что в Go изменилось с тех пор? Я так понял, что ничего. Язык точно прежний, а так вообще, все стало немножко быстрее или нет?
395 1725756
>>25746
Сильно быстрее
396 1725823
>>25746
Го модули добавились, гарбадж коллектор ускорился, а так больше вроде ничего такого
397 1725833

>The earliest that generics could be added to Go would be the Go 1.17 release, scheduled for August 2021. In reality, of course, there may be unforeseen problems, so this is an optimistic timeline; we can’t make any definite prediction.



Охуенно, еще больше года кодогенерацию дрочить
image.png185 Кб, 640x359
398 1725834
>>25833

>1.17


А обратная совместимость не сломается?
399 1725835
А эксепшены уже есть, называются PANIC и RECOVER
15891233612920.jpg74 Кб, 680x485
400 1725855
401 1725857
>>25855
Ну так это и правда другое.

panic и recover в go используется очень редко
402 1725858
>>25857
Это была пост-метаирония
Вопрос не в том, как часто используеться, вопрос в том, какое у panic/recover назначение.
403 1725865
404 1725878
>>25834
Для старых версий го можно будет специальной тулзой сгенерить прям статический код, если я ничего не напутал.
405 1725908
>>25858

>какое у panic/recover назначение


Уж точно не передавать информацию вверх по стеку.
407 1725912
>>25756

>Сильно быстрее


За счет чего?
408 1725984
>>25912
За счет развития компилятора
409 1725990
>>25911
Счас бы этого дебила слушать. Напомню, что Немчинский лет 5 назад пизданул, что Питон хуета, и вообще непонятно кто и что на нем пишет. Сказал, что ближайшее время он сдохнет. Что видим сейчас, Питон в 5 самых популярных языков, а Джава начала терять позиции.
410 1726071
>>25563
ну давай, расскажи свои кейсы, где без женериков никак
412 1726113
>>26100

>If everything goes well, the final release date will be the time we reach 20k stars!


Пиздец рачье.
413 1726117
>>25990
Сейчас нормально он о Питоне отзывается
https://www.youtube.com/watch?v=1bhvP1CZI5A
414 1726123
>>26117

>Сейчас нормально он о Питоне отзывается


Переобулся сучок
image.png40 Кб, 929x478
415 1726300
Сап дващ, я тупой, как параллельно запускать тесты с пармаетрами? горутинами, полагаю?
416 1726316
Так правда, что можно на элексире рубить 135к в месяц?
А можно тысяч 40, но на удаленке?
417 1726320
>>26071
Это твоя задача. Когда фичу завезут, тебе придётся придумать оправдание, почему её всё же завезли, несмотря на крики "РЯЯ НИНУЖНА".
418 1726328
>>26300
а, я долбаеб походу, просто добавить t.Parallel()
419 1726415
>>26316

>А можно тысяч 40, но на удаленке?


Там где Эликсир обычно есть код на Руби или Эрланг. В обоих случаях зарплаты топовые.
420 1726447
>>26071
Как насчет context.Context, чтобы там `interface{}`не использовать. Да и вообще у тебя есть `grep -rc 'interface\{\}' $GOPATH` причин использовать дженерики.

Дженерики хороши тем, что ты блять можешь статически проверить свой код на валидность, используя какие-то структуры данных, те же векторы. Вместо того, чтобы сначала пихать данные хуй знает куда, а потом ассертить типы, постоянно рискуя словить панику, nil и всё такое.
421 1726591

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


> func(r reciecer) do(type T) (in T) (string, error) {...}

422 1726617
>>26591
Причем фактически в языке уже есть прообраз дженериков (встроенные карты, массивы, слайсы) и там нет такого безумия со скобками
423 1726618
>>26591
почитай внимательно, в го-блоге пишут почему не угловые скобочки и тд

>>26447
один фанатик, не понимающий как работают дженерики и какую проблему они решают, детектед
424 1726636
>>26618
Ну давай, просвети меня тогда. Вангую, ты или сейчас повторишь мои же слова про статическое связывание типов, или скажешь что-нибудь про копипаст.
425 1726656
>>26617
Всегда горю когда "отображение" картой называют
426 1726665
>>26300
Но нахуя?? Ты серьёзно полагаешь, что проверку 6 массивов по 6 элементов нужно распараллеливать?
427 1726725
>>26656
Всегда горю когда "словарь" отображением называют
428 1726795
>>26665
этот код для примера, у меня в тестах запросы для фильтров на сайте, я не хочу, чтоб тест длился больше 20-30 сек
429 1726848
>>26618
Я тоже не понимаю какую проблему они решают.
За пять лет на крестах я написал один шаблон и то ради того чтоб выебнуться
430 1726883
>>26848
На горм посмотри, там всё в пустых интерфейсах. Нравится? Вот это они и решают.
Полюбому, ты под капотом использовал их множество раз, просто не осознавал этого.
431 1727511
>>26725
Всегда горю, когда "ассоциативный массив" называют как-то по-другому.
432 1727539
>>27511

Теперь и я горю. Как эти пидрилы пыхеры могли в одном типе уместить вектор и мапу, но назвать это массивом :-(
433 1727564
>>00220 (OP)
Здарова гач. Вкатился в пщ из пистона, недавно получил первую работу гачером. Вот намедни получил задание с байтоёбством и жидко пернув обмяк. К такому в пистоне я даже не притрагивался.

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

Думаю надо будет еще в каких-нибудь C, C++ тредах спросить
434 1727581
>>27564
>>27564
Задача кстати описать протокол сериализации указанного формата данных в бинарник. Написать энкодер и декодер.
Мне кажется для этого какая-то своя отдельная тема должна быть. Или толстые разделы в бородатых книгах, если уже всякие теории типов есть.
435 1727583
>>27581
А зачем?
Скорее всего уже есть готовые сериализаторы в бинарные данные.
436 1727607
>>27583
Ну типа нужно чтобы это было максимально универсальным, легким и дешевым на преобразование из существующих форматов данных.
437 1727609
>>27607
Главный вопрос - зачем?
Ты ведущий инженер гугла, которого попросили разработать алгоритм новый?

Выглядит больше, как тестовое задание,чтобы ты запарился
438 1727610
>>27609
Да хуй знает. Мне тоже так кажется, но задача вполне осязаема. А вопросы "зачем" скорее не ко мне. Я бы тоже использовал что-то готовое.
439 1727631
>>27609

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

>>27610

Доки по unsafe и вперёд. Нужно просто взять кусок памяти и заставить гошечку думать, что это структура. Дальше все просто.
440 1727634
>>27631
А как же информатика и лучшие практики. Например как обеспечить валидацию целостности данных, как лучше указывать типы, как разделять данные. У меня куча вопросов.
441 1727650
>>26883
разочаровываешь

>>27631

> Доки по unsafe и вперёд


ты какой-то ебнутый

>>27634
от тебя там скорее всего хотят что-то такое https://medium.com/learning-the-go-programming-language/encoding-data-with-the-go-binary-package-42c7c0eb3e73

ну или руками навелосипедь fixed-size заголовок, в нем длина тела сообщения, а дальше уже сообщение можно как угодно сериализовать
442 1727659
>>27634

Так задача какая? В,ы долбоебы, очередной формат изобретаете? Или нужно декодить/энкодить в уже разработанный по докам?
Если изобретаете - всерьез обсуди накуя. В любой области есть стандарты и протоколы под них.
Если чужой, то это все есть, не еби себе мозги. Я говорю, самое простое, взять память и отобразить ее на структуру. Все так делают, и это даёт максимальный перфоманс. Но, если хочешь убить производительность, бери ссылку второго Антона.
443 1727795
>>27650
Тоже находил эту статью, так и не успел прочитать, но судя по всему это очень близко к тому, что мне нужно.
Спасибо.
>>27659

> Если изобретаете - всерьез обсуди накуя.


Я уже пытался, несколько раз предлагал другие варианты, но все тщетно.

> Я говорю, самое простое, взять память и отобразить ее на структуру.


В том то и дело что у меня базовых знаний не хватает чтобы это сделать качественно.
444 1727833
>>27795

Прям загугли "iso protocol + название предметной области". И скинь найденный стандарт лиду и cc архитектору.
445 1728171
Куколдский язык для куколдов. Там СЖВшники решили, что этот ваш ПЩ огорчает негров https://habr.com/ru/news/t/505734/ так что вы давайте, это, на колени.
446 1728310
>>28171
ты еще про баннер-попрошайку забыл https://golang.org/
447 1728597
>>27833
Хотел бы я работать в том месте где такие люди есть. Короче протокол нужен для передачи таблиц из одной бд в другую с небольшим набором данных.

В принципе это интересная практика.
448 1728627
>>28597
Раз не знаешь, делай в лоб и решу проблемы по ходу поступления.
Типы пронумеровать, целостность контрольной суммой, можно коды рида-соломона
449 1728631
>>28597
Алсо, protobuf как раз твою задачу решает, можно его взять, а можно просто почитать, как он сериализует и адаптировать. Протобуф как раз и есть бест практис в гомирке
450 1729010
А вы тут все чисто для себя приколы пилите всякие? Работы же на говноланге не существует почти.
451 1729154
>>29010
О чём ты?
Уже два раза менял работу даже без удалёнки, фуллтайм-гошник, зарабатывает 300к до налогов, в последний раз собеседовался в 6 компаний, получил 3 оффера
452 1729169
>>27581
protobuf, thrift, flatbuffers
453 1729173
>>29010
Её дохуя к сожалению
454 1729188
>>26591
Угловые скобки уложняют парсинг. К тому же круглые скобки уже есть в d и смотрятся там очень удобно.
455 1729208
>>29188

Да ваще пох на скобочки.
456 1729243
>>29208
Спиймав лиспера.
457 1729250
>>29188

> уложняют парсинг


Если бы создателям компиляторов это реально мешало, они бы делали синтаксис на основе json или xml, так что мимо.
458 1729253
>>29250
Это реально мешает, примеры можешь спросить в плюсовом треде. В зависимости от стандарта, в плюсах парсинг угловых скобок натурально зависит от пробелов вокруг и если ты не угадал - получишь ошибку компиляции. Или чего похуже.

> они бы делали синтаксис на основе json или xml


Ды ты вообще зелёный походу. Среди языков разметки сложнее чем xml распарсить только html.
459 1729259
>>29253

> в плюсах парсинг угловых скобок


Потому что лексер был сделан через жопу.

> Среди языков разметки сложнее чем xml распарсить только html.


Кто ж будет писать эти парсеры с нуля? Они давно написаны, достаточно юзануть одну функцию и пройтись по уже готовому дереву.
460 1729261
>>29250
Как же хочется польскую нотацию в го.
461 1729264
>>29261
"fmt" import stmt "Hello, world!" Println call fmt mod block main no-args func
462 1729277
>>29259
Потому что угловые скобки настольно перегружены, что тебе требуется дохуя контекста чтобы их корректно распарсить. И хоть десять раз ебись, у тебя будет жопа вместо лексера.
463 1729287
А генерики только в песочнице?
Или уже можно тащить в петпроджект?
464 1729302
>>29277

> дохуя контекста


Над этим парсер должен думать, а не лексер. Лексер должен сказать: "угловая скобка". И уже парсер должен думать, шаблон это, операция сдвига или знак меньше.
465 1729345
>>29287
есть экспериментальная тулза go2go , которая конвертирует твой проект с генериками в стандартную гошку. Поиграться в петпроекте наверное норм, на прод понятно катить рано, ещё могут чего-нибудь пару раз поменять
466 1729357
>>29345
Боже, звучит как Babel.
467 1729362
>>29357
Ну так когда прибьют драфт -- впилят в компилятор. А как эксперимент для то чтобы все попробовали и высказались -- самое то. Текущий драфт обратной совместимости особо не ломает
468 1729385
>>29010
Как там в 2014? Работы дохуя.

>>29173
Чего в этом плохого?
469 1729394
>>29385

> Чего в этом плохого?


Очевидно, что не всем нравится Go, и некоторые хотели бы, чтобы он загнулся, и о нём все забыли.
470 1729482
>>29277
А что насчет квадратных скобок? Они уже используються в мапах, например
471 1729627
Роб Пайк написал лисп на го, перекатываемся.
https://github.com/robpike/lisp
472 1729678
>>29627
Этот мудила в рабочее время хуйней страдает, вместо работы над гошечкой?!
473 1729731
>>29394
Шизики какие-то. Когда мне что-то не нравится, я просто прохожу мимо.
474 1730368
Я правильно понимаю, что в текущем драфте дженериков невозможно написать функцию, которая бы работала для array'ев любой длины? Не говоря уже о том, чтобы и для array'ев и для slice'ов.
475 1730379
>>30368

>Я правильно понимаю, что в текущем драфте дженериков невозможно написать функцию, которая бы работала для array'ев любой длины?


А зачем, когда есть слайсы?
476 1730417
>>30368
Лол, даже дженерики в конце концов сделали со своим "авторским" видением. Не удивлюсь, что когда завезут эксепшены, они будут выглядеть так:
result = try(handler, function, arg1, arg2)
477 1730428
>>29678
Он и над го особо не парился.
Теперь сидите ручками эксепшены перебрасывайте.
478 1730569
>>30368
Но ведь в го преобразование массива в слайс бесплатное, ты сейчас до мышей доебался.
479 1730614
>>00220 (OP)
Стоит ли учить Go как первый язык? Хочу зашибать 300к/неделя и больше на высоких технологиях. Короче, я не совсем офисную РАБоту хочу, а прикладывать Go к чему-то высокотехнологичному, в производстве каком-нибудь.
С программированием не знаком, вылетел с третьего курса мехмата
480 1730658
>>30428

К чему чему, а к этому у меня нет претензий. Ошибка как значение - очень удобная концепция для многопотчного кода.
481 1730673
>>30658
То что ты ошибку наделили каким-то контекстом "свойством", как физически это меняет ошибку? Ты начинаешь их хранить в массиве и складировать в базу данных или что?
482 1730679
>>30614
С такой мотивацией лучше иди впаривать лохам курсы "как разбогатеть". Программирование - это тяжелый интеллектуальный труд, необходимость работать даже дома, постоянно учить новое и постоянная работа со своими же ошибками, что тяжело психологически.
12 часовая смена на заводе проще, потому что ты можешь стоять, не думать, или даже работать "на отъебись". В "дорогом" программировании ты не можешь думать "на отъебись", сразу хуйня выйдет, и ты должен постоянно, весь день, загружать свой мозг (самый энергозатратный орган, между прочим) на 100%, что очень, очень тяжело. К концу дня ты натурально ощущаешь, что не в силах даже думать о чём-то, просто залипаешь в одну точку и всё (а ещё нужно нагружаться дома, чтобы учить что-то новое, ты понел).
Короче, если ты хочешь "войти в айти" ради бабосиков, то ты быстро вылетишь отсюда, охуев от того, насколько это тяжело и сложно.
А ещё до бабосиков нужно будет доползти, первые года три-пять их будет не особо много.
а как первый язык учи java или c#, го берут вторым или третьим языком к уже имеющейся базе
483 1730690
>>30679

> а как первый язык учи java или c#


Лїл
484 1730742
485 1731085
>>30614
Если ты так ставишь вопрос - то точно нет.
Ты сначала выбери область, посмотри какие там используются инструменты и почему, и изучай их
486 1732405
Тут какое-то время назад спрашивали по GUI

Hands-On GUI Application Development in Go (2019)

https://dropmefiles.com/Nvupy
487 1732608
Уже листал? Имеет смысл?

Вроде как уже появился fyne, который прям приличный фреймворк. И смотреть на биндинги как-то странно.
488 1733308
Digitalocean выпустили свою книгу по го.
https://assets.digitalocean.com/books/how-to-code-in-go.pdf
489 1733358
>>33308

прикольно, она вышла уже устаревшей

а вообще из интереса полистал - это ребята из https://www.gopherguides.com пиарятся, не создавая никакой дополнительной ценности; лучше читайте go tour, офицальную документацию и исходники - пользы будет больше.
490 1733416
>>32608
Полистал, позапускал примеры. Мне эта тема не то чтобы супер интересна, но прочитав по диагонали понял, что все эти фреймворки плюс минус об одном и том же.

>Вроде как уже появился fyne


Про него там тоже есть
491 1733420
>>33358

>исходники


Ну хуй знает, всякие runtime и ос-специфик вещи требуют довольно хорошего понимания работы OS чтобы вообще понимать что, КАВО и куда. Не говоря уже о том, что там код не являеться эталоном читаемого кода.
492 1733463
>>33308
Ребятам, маркетологам, уже надо объяснить что язык больше не на волне хайпа. хорошо что книга еще не по руби
493 1733987
>>33463
Ну так иди объясняй, а то сидишь здесь как фуфел.
22222222222222222222222222222222222.jpg46 Кб, 480x360
494 1734066
>>33987
А ты чего такой злой?
495 1734078
>>34066

А какие языки дозволяют и как разруливают циклические импорты?
496 1734226
>>33358
А что именно там устарело?
>>33463
Ну как не на волне, всё больше компаний начинают использовать его, зарплаты всё выше и одни из самых высоких в сравнении с другими языками, а после выхода 2 версии так вообще индустрия кипяточком писать начнёт.
497 1734238
>>34078
Все нормальные языки разруливают циклические импорты, они просто не импортируют одно и тоже два раза.
498 1734239
>>34226

>а после выхода 2 версии


Стоит только подождать и потерпеть.
499 1734245
>>34238

Какие нормальные?
Питон, Шарп, луа, это то, что сходу пришло в голову.

Да и вообще, если появились циклические импорты, то программист - говноед.
500 1734509
>>34245

>Питон, луа


>нормальные языки

501 1734514
>>34245

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


Ага, ведь не-говноед предпочтёт держать овер 9000 файлов в одном пакете.
502 1734546
>>34514

Если две сущности зависят друг друга, то они должны быть одной сущностью.
503 1734547
>>34509

Какие претензии к самому популярному (по некоторым рейтингам) и самому популярному встраиваемогу япам?
504 1734583
Что сейчас в мейнстриме по ковырянию sql (постгрес в частности)?
505 1734584
506 1734629
>>34547

>Какие претензии к самому популярному


>(по некоторым рейтингам)


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

>Какие претензии к ... самому популярному встраиваемогу япам?


Что этот язык огрызок и годиться только для встраивания?
Что
507 1734630
>>34583
Мускуль как был, так и остался так и будет в будущем.
508 1734640
>>34630
Да я про тулзы
Самый популярный pq неактуален, про орм уже успел начитаться негатива
Попытался в reform, но ничего не понял
509 1734657
>>34640
plain SQL
510 1734689
>>34640

Sql + pgx
511 1734690
>>34689

А вообще, меня заебал sql и клеить запросы. Хочу написать свой orm с покером и эскортницами.
512 1734726
>>34239
Ну да, скоро уже релиз будет.
sage 513 1735007
Заебали тащить ORM в Go. Запомните, не принято здесь их использовать, и точка. Как и MVC. GORM и прочее существует только потому, что их написали.
514 1735013
>>35007
И чё ты сделаешь?
Screenshot2020-06-2522-51-10.png85 Кб, 718x771
515 1735024
Сап, ГОспода.
Такой вопрос. Можно ли переписать этот фрагмент пизже?

Сам из пайтона.
516 1735033
>>35024
Всё нормально написано.
517 1735052
>>35024

viper
518 1735053
Когда там уже дженерики и контракты?
519 1735061
>>35053
Завтра в 20:00.
520 1735119
>>35024
Ошибки это значения, наслаждайся
521 1735202
>>35024
Заметь, что у тебя в первом случае вызывается os.LookupEnv, а потом os.GetEnv. В первом случае у тебя есть проверка на то, что переменную засетили, во втором нету. Значит во втором и дальше случаях нет смысла проверять if !ok{}.
Либо везде меняй на os.LookupEnv или везде удаляй этот блок с if !ok{}

Также ты можешь заменить fmt.Printf() ,os.Exit(1) на log.Fatalf()
522 1735350
>>35024
контекст с таймаутом сделай, а в остальном - идиоматичный код, все так, но есть куча готовых библиотек, которые умеют env маппить на конфиг - поэтому можно сделать конфиг, у него метод типо GetURI, может быть оно тебе и не надо
523 1735967
>>04267
Ебать ты говнокод нахуярил. Я уже не помню конкретно, но решение не больше, чем в строчек 5 дополнительных вкладывается. Там же для долбаебов написано как это делать.
524 1736058
НУ ЧО. ГДЕ НОВЫЙ ТРЕД?
525 1736090
>>36058
до го2 нельзя
526 1736182
Тред утонул или удален.
Это копия, сохраненная 13 декабря 2020 года.

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

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