Двач.hk не отвечает.
Вы видите копию треда, сохраненную 7 марта в 14:13.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Go тред №24 1.22 edition /go/ 2900329 В конец треда | Веб
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

С чего начать:

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

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

Полезные ресурсы:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
- Смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
- Обновляемый список с пакетами: https://github.com/avelino/awesome-go

Небольшая конфа треда: https://t.me/golang2ch более чем живая!

предыдущий утонул тут https://2ch.hk/pr/arch/2023-07-12/res/2665435.html (М)
2 2900367
И зачем целый тред для этого говна?
3 2900423
Правда, что в 1.22 они запихнули умерший проект gorilla/mux?
4 2901220
>>00329 (OP)

> В обязательном порядке проходим Go Tour


А есть на русском?
5 2901265
Бамп)
6 2901266
Бамп)
7 2901629
Почему они добавили тип комплексных чисел, но не добавили тип для хранения денег?
8 2901647
>>01629
Get Offer
9 2901651
Как же у меня горит с этого говнолэнда от жидбрейнс! Закомментировал строчку кода и он мгновенно удалил импорт, а когда раскомментировал обратно, то он мне говорит: а я не знаю, что это за пакет. Скотина!
В вс коде же можно спокойно поставить временный комментарий и на импорт, всё работает по принципу максимального сохранения кода, который ввёл программист.
10 2901687
>>01629
Тебя чем комплексное число не устроило? Это буквально SSE, что мастхев в вычислениях
11 2902180
>>01629
есть math/big
12 2902202
Почему они добавили тип комплексных чисел, но не добавили тип для хранения денег?
13 2902328
>>02202
Хватит за мной повторюшничать!
14 2902365
>>02202

>они


А может это оне, а не они

https://ru.wiktionary.org/wiki/оне
15 2902707
>>01629
Скорее вопрос почему они не сделали перегрузку операторов чтобы я сам мог навасянить себе тип для денег
16 2902767
>>02202
GO - это не про деньги.
sage 17 2903394
Оп-хуй проебал нумерацию.
sage 18 2903395
>>01651
Так это стандартный гоимпортс так работает, так шо претензии в первую очередь к ним. Да, говно.
19 2903786
Кек, как раз вкатываюсь в го. Читал, что это лучший бэкенд язык, типо сделали бест практис от других языков. Хотя странно что тредов по нему не было долгое время.
20 2904036
Сколько же всякой бесполезной хуйни они надобавляли! Хочу переключить на другой файл - хуй там! Выводится какая всплывающая залупа с именем функции. Нахуя? Хочу просто перейти на следующую строку, нажав Enter, - хуй! Вставляется какая-то залупа, которую иде посчитала нужно вставить. Какому придурку вообще пришла в голову поставить это действие на Enter!? В жидбрейнс видимо совсем отбитые работают или уже просто не знают какую хуйню ещё впихнуть в своё говно. Ещё блядь присваиваешь константе значение, но "умная" иде тут же тебе второй раз выводит это же самое блядь значение.
Сори за мат, но у меня жопа просто полыхает.
21 2904123
>>04036
вскод. врядли надо больше
22 2904206
>>04036
use emacs
23 2904656
>>04123
>>04206
Но ведь без голэнда не стать профессионалом
24 2905855
Что думаете про книгу Адама Фримана Pro Go? С одной стороны он описывает с нуля до разработки реального веб-приложения, но с другой весь код не идиоматичный, а само веб-приложение больше напоминает ASP.NET.
25 2905897
Если слайс - ссылочный тип, как пишут в умных книжках, то почему мы должны его возвращать из функции как структуру? Если же слайс - структура, то как она может быть равны nil?
26 2906176
>>05897
Ты че, самый умный что-ли? Пиши как все и не выебывайся
За мат извини
27 2906336
>>02365
Odjebi
28 2906360
>>05897
Указатель внутри структуры лежит, при копировании структуры он копируется, вот и всё.
Про сравнение с nil - судя по сорсам, работа со слайсами, как и работа с мапами, переписывается рантаймом на работу с ансейф поинтерами (или я даун, ресерчил 15 минут с телефона) .
https://go.dev/src/runtime/slice.go
29 2906702
>>01629
Потому что долбоёбы. Но вообще тип деньги как минимум требует валюту, чтобы 10 баксов не сложить с 10 песо, требует точность на основании валюты, ну и конечно конвертация. Понятно что такая масштабная библиотека выходит за пределы возможностей аутистов из Го-тем.
30 2907309
>>05897
ну представь, что слайс это структура которая может быть равна nil, потому что в компиляторе реализовали сравнение слайса с nil.
31 2909823
Блядь, какая же ебучая клоунада с этими корутинами, итераторами и for-over-func. 10 лет назад им обо всём этом говорили, но просто сделать сразу слишком просто, нужно сперва нахуевертить говна, а потом героически его преодолевать, попутно заставляя всех пользователей языка по десять раз переписывать библиотеки.

https://github.com/golang/go/discussions/54245#discussioncomment-3800568
Как читаю этот коммент каждый раз смеюсь и плачу
32 2911951
>>00329 (OP)
Здарова, погроммисты.
Как в го можно сделать следующую штуку?
Условно есть последовательность значений в файле, допустим
x = 1
y = 2
z = 3
...
И тд, они могут повторяться в рандомном порядке, нужно сложить все значения x, все значения y и тд.

Итак вопрос - как это обработать через каналы, чтобы без явного указания
if val == "a" {
chanA <- val
}
if val == "и" {
chanB <- val
}

и прочее
СПАСИБО!
33 2912338
>>11951
Нихуя не понял, что ты хочешь сделать.
Ну можешь завести массив из 26 (или какая у тебя там мощность множества) каналов и по val - 'a' искать индекс канала, в который пишешь.
34 2912339
>>11951
А еще заранее говорить спасибо очень невежливо.
35 2912341
>>12338
Но вообще я не понял, нахуй тебе там каналы, сложение элементов это явно не боттлнек программы ботлнек в сисколле, который ты не распараллелмшь, от конкарренси ты скорее лососнешь, чем выйграешь. Ебани просто мапу [byte]int, или рун-инт в особо запущенном случае, че как не родной.
36 2912460
>>11951
c awk это просто echo 'x = 1
y = 2
z = 3
x = 11
y = 22
z = 33' | awk 'BEGIN{FS="="}{a[$1]+=$2}END{for (k in a) print k "=" a[k]}'
image.png1 Мб, 1080x1350
37 2912467
>>11951

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


> if val == "a" {


> chanA <- val


> }


> if val == "и" {


> chanB <- val


> }


это очень широкоизвестная проблема в программировании, многие люди бьются над её решением
38 2912478
>>12341

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


ссд уже везде, дед https://chrispenner.ca/posts/wc
39 2912550
>>12467
Коллега, удалось её решить за полином, или все еще np полная?
40 2912577
>>12478
Емнип у го отдельный P под чтение/запись, я с этой точки зрения срал.
41 2912783
>>12577

>Емнип у го отдельный P под чтение/запись


у го есть отдельный тред с нетполлером, но он только для неблокирующих сисколлов (ну и по сути в нём чтение/запись не происходят, он просто говорит, что файловый дескриптор готов и можно шедулить горутину, которая хочет читать/писать в этот фд).
обычные файлы не поллятся, поэтому сисколл будет сразу в треде, который крутил горутину. если чтение надолго блочится, то его P/очередь горутин отойдут другому треду, а он останется висеть пока сисколл не вернется и потом пойдет чиллить с тредиками в пул тредов.
42 2912837
>>12783
Развернуто, спасибо.
image.png120 Кб, 736x736
43 2916598

> // Make sure that Foo implements Bar


> var _ Bar = &Foo{...}


Unterprogrammiersprache
44 2917259
А что лучше: ждать пока убунту обновит пакет с голангом или самому с сайта скачивать?
image.png79 Кб, 225x225
45 2917261
>>16598
хватит смеяться..........
46 2917269
>>17259
перейти на дебиан анстейбл или рач.
или можешь из васянского PPA установить себе гошку https://github.com/golang/go/wiki/Ubuntu
47 2917304
>>17269

>васянского PPA


Придумали же менеджеры версий для этого, зачем систему засирать какими-то васянскими пакетами, чтобы они тебе потом кровь пили при обновлении?
48 2917461
>>17304

>менеджеры версий


зачем засирать систему менеджерами версий, если есть менеджер пакетов из коробки?
49 2917652
>>17461
Чтобы в системе не пересекались разные версии среды, когда у тебя много проектов - для каждого можно хранить свою версию языка и свой изолированный набор модулей, чтобы обновляться и откатываться одной кнопкой без васянских репозитариев, которые наставят непонятно что непонятно куда, и обнаружить в один прекрасный день что какая-то зависимость сломалась после очередного обновления системы и начинаются детективные истории и головняк, когда всего этого можно избежать одним простым инструментом в виде менеджера версий, который отделит мух от котлет (операционную систему от рабочего инструментария).
50 2917725
>>17652
в отношении гошки это литералли решение несуществующих проблем. мб иностранные специалисты из ноды/петона привыкли иметь тысячу окружений под каждый из проектов, в гошке в 99% (100%, если ты круды для бекенда пишешь) случаев достаточно иметь последнюю версию конпелятора.
да и конкретно гошка из ppa вряд ли сломается, она не линкуется динамически с какими-то либами, которые могут с системой обновиться и стать несовместимыми.
51 2917744
>>17652
ну и плюс менеджеры версий никак не защищают от того, что у тебя система обновится, а твой софт будет слинкован с неактуальной версией какой-то либы вроде glibc. просто у тебя все говно внутри юзерской папки будет храниться и не будет конфликтов с системными пакетами на уровне файлов
52 2919173
Хули срез не хранит значения,а только ссылки. ДАЙТЕ МНЕ ЭРРЕЙЛИСТ РЯЯЯЯЯЯЯ ДАЙТЕ ДАЙТЕ ДАЙТЕ
53 2919190
И лямбды добавьте
54 2919196
И контроллеры такие же как в спринге тоже сделайте
55 2919197
И эвенты такие же как в спринге тоже не забудьте
56 2919756
>>19173
чево? слайс именно хранит значения своего типа. слайс интов хранит инты, слайс поинтеров хранит поинтеры, а слайс интерфейсов хранит интерфейсы
>>19190
анонимные функции же уже есть
57 2921127
>>19756
Он косноязычный просто, хочет чтобы слайс был объектом, внутри которого лежит массив, а не просто указатель на массив.
58 2921244
>>09823
В чем проблема возвращать чаннел в роли иттератора? табу? Буквально ничем отличаться не может
59 2921248
>>21127
А в чём, простите, разница? Как ты собираешься выделять память в куче без указателя на неё?
60 2921252
>>21244
В статье кока про итераторы он про это пишет
61 2921258
>>11951
map[int8]chan, ну или строку вместо инта, если у тебя больше, чем одна буква, зачем мозг ебать себе...
62 2921262
>>21252
В какой статье, какого кока? Ты хотя бы ответ разворачивай что ты именно хочешь сказать, а не намеками
63 2922095
>>19196
Надеюсь аннотации никогда не добавят в го. Именно из-за них джава превратилась в какашку.
64 2922115
>>22095
Аннотация это просто интерфейс для запуска жирной цепочки действий,не понимаю батхерта
65 2922491
>>22115
Один ломбок чего стоит
66 2922524
>>22491
Ну ,что поделать,в джаве нет геттеров сеттеров по умолчанию,не считая рекордов. Мне кажется @Getter @Setter над классом это намного лучше чем в коде по два метода на каждое поле
Screenshot2023-11-15-14-32-51-35.jpg325 Кб, 1080x2400
67 2922879
Почему на свинячем есть а на ру нет?
Го делали хохлы русофобы?
68 2922880
>>22879
Чё за ру? Это просто диалект украинского.
69 2922894
>>22879
динах
70 2922949
>>22524
В чём проблема сделать поля публичными? Сами же создали проблему и придумали кривой костыль для её решения.
71 2922971
>>22949
Нарушает инкапсуляцию. Нельзя встроить логику в получение и установку значения
72 2922989
>>22971
А ломбок у тебя дофига логики встраивает? Там тупая заглушка, как и в 99% случаев ручного написания. И ничего это не нарушает, просто все привыкли писать эти какашки, даже не задумываются зачем это нужно.
73 2922992
>>22989
Логику может встраивать не конкретно не лично пользователь,а например ioc контейнер,считай спринг. Поэтому для сериализации и десереализации ему нужны геттеры сеттеры
74 2923000
>>22992
Как же хорошо, что я ушёл с джавы
75 2923003
>>23000
Сколько лет до этого работал? Какие ощущения были от перехода на новый стек?
76 2923257
>>22879
вы каждый тред этот вопрос будете задавать долбоебы?
когда appspot задепрекейтил го 1.9, все туры на древней гошке начали пятисотить, включая русский. васян, который делал русский тур, забил на свою хуйню, так что её убрали
77 2923280
Сишарп лучше, чем го
image.png29 Кб, 734x151
78 2923603
>>22095

>Надеюсь аннотации никогда не добавят в го.


Уже есть, пока ограничено, но это вопрос времени.
79 2923618
Чому на го так тяжело писать?
Даже простейший круд на джаве можно написать в 2-3 раза быстрее, чем на го.
Если не брать какой-нибудь gin, а взять обычный роутер вроде chi, то даже примитивная задача вроде достать из урла "/<uid>/update", передать его в сервис, а оттуда сходить в базу, становится какой-то чрезчур сложной. Банально в if err != nil очень легко становится запутаться, если их становится очень много. И из-за этого контроллер, который должен был быть написан в 3-4 строчки, разбухает как скотина, потому что на любой пук приходится городить if err != nil. Даже если закрыть http.Body не щмогли или джейсон неправильный пришел к нам. В общем хуйня/10, если нужно много бизнес-логики накидывать.

Для инфра проектов, вроде кубернетиса или докера наверное хороший инструмент, но не для крудов ебучих.
80 2923813
>>22971
Нарушает инкапсуляцию и всё законы вселенной встраивание логики в дата обджекты. Кстати, забавно, что главный архитектор джавы Brian Goetz прямо называет свидетелей секты геттеров-сеттеров дебилами и the "learn java in 21 days" crowd.

Тем временем шёл 2024 год...
81 2923818
>>23603
Это кстати отличная иллюстрация подхода го: вместо простого, общепринятого, универсального решения (макросы/метаданные) сделать сложное, нетипичное и узкоспециализированное, а потом героически это преодолевать на протяжении следующих эн лет.
82 2923822
>>23618

> Чому


Потому что это плохой язык.
83 2923932
>>23822
И что ты предлагаешь учить? РНР что ли?
84 2923949
85 2923995
Привет. Стоит учить его первым языком или это так себе практика?
86 2924010
>>23995
Не стоит
87 2924029
>>24010
А почему нет?
88 2924030
>>23995
Вначале учи РНР, а только потом го
89 2924038
>>24030
Нахуя?
90 2924117
>>24038
Го - это язык свичеров, а не вкатунов
91 2924164
>>24117
Спасибо, хорошего дня!
92 2924168
>>24117
Фух, значит выбор правильный
мимо свитчер из яндекс такси
93 2924233
>>24168
Ну поработать в Яндексе престижно
94 2924545
>>24168
У вас же там питухон и c++ со своим фреймворком.
Зачем тебе gouleng?
95 2924596
Кто-то осуществлял перекат из автотестов бека на гошку?
96 2924771
>>23932
А ты с какой целью интересуешься?
image.png149 Кб, 399x281
97 2924786
>>23818

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

98 2924958
>>24771
С целью трудоустройства
99 2925225
>>22949
Основная и единственная проблема - уже есть куча хуйни которая ожидает через рефлексию найти геттер или сеттер, а не публичное поле.
100 2925676
>>25225
Так публичное поле это синтаксический сахар для геттера.
101 2925723
Сишники есть в треде?

Не вкатун, работаю псевдодевопсом-сисадмином. Писал только на баше и на C давно. По работе программировать не нужно, и так все отлично. Но из каждого утюга верещат, что TRVE devops инженер должен знать go.

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

Вообще, поясните, зачем девопсу Go, на нем же даже скрипт не написать.
102 2925749
>>25723
Если ты в кубере метрическими контейнерами не жонглируешь, то нахуй не нужон.
image.png212 Кб, 604x489
103 2926105
>>05855

>Pro Go


Читаю сейчас её и это пикрил
104 2926168
>>23995
Приветики
image.png522 Кб, 600x550
105 2926231
>>23618
Смирись, псина!
106 2926410
>>23818
Достаточно посмотреть на фото создателей языка, чтобы все стало ясно
107 2926605
>>26231
Ну серьезно, в чем причина такого подхода?
В крудах и калопроводах практически всегда, если возникла ошибка, то ее нужно просто протолкнуть до респонса, завернуть в джейсон и отдать пользователю.

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

Например взять тот же пример, когда в калопроводе нужно достать /<uid>/update, причем сам метод - POST

Итого:
1) readAll из request.Body -> requestJson
2) json -> requestStruct
3) requestStruct -> service
4) service -> responseStruct
5) responseStruct -> json
6) json -> httpWrite(response)

А, ну и еще когда uid достаешь, тоже может ошибка возникнуть.
Вопрос, как правильно в этом вашем гоуленге писать контроллеры? Так, чтобы не ебаться с фреймворками, а просто взять gin и эти самые ручки писать быстро, просто и не захламляя код тяжелыми проверками ошибок?
108 2926852
>>26605
в чем проблема взять и обработать ошибки?
image.png492 Кб, 640x480
109 2926933
>>23618

>Банально в if err != nil очень легко становится запутаться, если их становится очень много. И из-за этого контроллер, который должен был быть написан в 3-4 строчки, разбухает как скотина, потому что на любой пук приходится городить if err != nil. Даже если закрыть http.Body не щмогли или джейсон неправильный пришел к нам.


А ты делай как я:
if err !- nil { panic(err) }
а наверху
defer func() {
if r := recover(); r != nil {
return InternalServerError
}
}()
110 2927004
>>26605

>Ну серьезно, в чем причина такого подхода?


Говнорутины. Предполагается, что ты будешь запускать десятки горутин и пролучать ответ через каналы. И в таком сценарии эксепшены не работают.
111 2927036
В го вкатиться можно без опыта разработки? Работаю qa автоматизатором.
112 2927042
>>26852
Ну ок, допустим мы из реквеста будем Body читать в массив байт.
Случилась ошибка. Мы ее хотим в джейсон положить и вернуть фронтам.
Когда возвращаем ошибку (то есть http.Write делали), то может возникнуть еще одна, новая ошибка. Что тогда?

Я просто не знаю какие ошибки как и в каком виде нужно обрабатывать.
113 2927043
>>26933
Код с паниками не пройдет код-ревью, тимлид попустит и пригрозит увольнением за такое.
114 2927050
>>27043
Вкатун спок! Тебе просто надо подсунуть эту идею тимлиду, так чтобы он думал что это его идея. И вы даже можете написать микрофреймворк - Autumn.
115 2927738
>>24958
С целью трудоустройства попробуй освоить востребованную профессию, а не программирование. И вообще съеби в прикреп.
116 2927741
>>26605

> /<uid>/update


А вы говорите 90-ые 00-ые закончились...
117 2927758
Го уже можно пользоваться или стандартной либе до сих пор раз в неделю находят необработанные nil'ы?
118 2927898
>>27738
Я программист-любитель, а теперь хочу стать профессионалом
119 2929417
Отказывают ли в трудоустройстве тем, кто сидит на вс коде, а не на голанде?
120 2929427
>>29417
Отказывают ли в трудоустройстве тем, кто задает тупые вопросы.
121 2931518
>>29417
Отказывают всем, кто сидит не в виме
122 2932209
>>29427
>>31518
Лично я заметил, что все, кто работают, сидят в голэнде, а безработные как раз и сидят на всяких вскодах и вимах.
123 2933030
Нахуя возвращать функцию из функции? Нахуя ее принимать в качестве параметра?
124 2933038
>>33030
Есть у тебя функция рекурсивного поиска определенных файлов по пути и надо что-то сделать для найденных файлов. Вот ты и передаешь функцию.
Понял, дурында?
125 2933040
>>33038
Нет
126 2933043
>>33040
Подумой.
127 2933049
>>33043
Хуй знает как в го,но файловый поток у меня в языке можно читать так:
while(bytes = stream.readBytes() != null{
Че то делаем
}

Нахуя городить рекурсию?
128 2933050
>>33049
Какой поток?
Ты обходишь дерево фс вглубь и для каждого совпадения надо применить какой-то код.
129 2933056
File folder = new File("C/tmp")
Files[] list = folder.listOfFiles()
И дальше форичем по этому с вызовом FileUtils.readInTypeYourWant
130 2933059
>>33056
А там ещё вложенные диры и ты соснул.
Суть не в рекурсии, а что ты передаешь свою логику в универсальную функцию. Это и есть функции первого класса.
Учить и учить, кароч.
131 2933073
>>33059
И как тут поможет вложенная функция? Проверишь если тип это файл а не директория и применишь только к файлу?
132 2933078
>>33073
Это не связано, ебать тебя в сраку. Просто это типичная задача, понятная почти любому, а тебе нет, что симптоматично.
Ты можешь передать функцию чтобы принтить, можешь передать функцию чтобы удалять и т.д.
133 2933102
>>33078
Сука,если мне нужно принтитить или удалять я передам объект в функцию принт или делит. Нахуя нужен это фасад-метод,это же лютый говнокод,абстракция над поведением
134 2933113
>>33102
Ты передаешь функцию, что и требовалось!
Но если вместо просто функции тебе нужна логика сложнее, то ты передаешь своб функцию со своей сложной логикой.
135 2933131
>>33113
Наркоман!!!!!
136 2933241
>>33030

>Нахуя ее принимать в качестве параметра?


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

Например https://go.dev/src/io/fs/walk.go тут прячется как именно идет обход директорий, просто вызывается твоя функция которая должна обработать данные. Другой пример из ФП это всякие map/reduce.

>Нахуя возвращать функцию из функции?


Это чаще всего применяется в интерфейсах типа:

>type Iterater interface {


>Iter() func() (any, bool)


>}


С помощью полученной функции можно итерироваться по любой коллекции или вообще чему угодно.
137 2933255
>>33131
Для адепта ООП выглядит как наркомания, но по факту здесь решается проблема параллельного выполнения кода и изоляции ресурсов, в распределенных системах нельзя просто взять и вызвать какой-то метод откуда захочется.
138 2934480
Гуланг господа, поначалу я уважал этот язык, но потом почитал про ошибки и их обработку, в связи с этим у меня возник вопрос: Вы что, ебанутые? Вам там нормально?
139 2934552
>>34480
Ну вот у Котлина есть эксепшены, но обработка ошибок из корутин это еще больший пиздец чем в Го. https://www.linkedin.com/pulse/exception-handling-coroutine-amit-nadiger/ - 100500 разных неочевидных способов обрабатывать ошибки. Экспшены хороши если у тебя линейный код в одном потоке, а если потоков становится много и они запускаются паралельно, то простой советский код возврата - проще и понятнее.
140 2934559
>>34552
Почему исключения не работают при многопотоке? Любое исключение,выброшенное из таски убивает таску вот и все, соответственно их просто нужно обработать
141 2934586
>>34559

>Любое исключение,выброшенное из таски убивает таску вот и все, соответственно их просто нужно обработать


Об этом то и речь, что.у тебя десяток тасок работает и одна сфейлилась. И дальше начинается мотня, эти таски можно проигнорировать, эти ретрайнуть, эти фатальные - и надо кансельнуть все живые таски и выбросить эксепшн выше.

Просто напиши на котлине пример который запустит 3 задачи:
- ошибки первой - игнорировать
- вторую ретраить 3 раза
- третью - канселить все и бросать эксепшн выше
и увидишь как там все """легко и элегантно""" получается.
142 2934591
>>34586
Не уверен,что можно их ретраить кстати. А обработка пишется внутри метода run или call в зависимости от типа. То есть у тебя не разбросана эта логика в классе экзекьюторе,все находится прям на месте
143 2934632
>>34559

>Любое исключение,выброшенное из таски убивает таску вот и все, соответственно их просто нужно обработать


Убивает, а дальше то что? Вверх по стеку - а там ничего нет, для родительского процесса что там внутри таски происходит - тёмный ящик, то есть родительскому процессу надо какое-то сообщение слать, а как его послать? Обработать ошибку в таске и засунуть в return вторым аргументом, вот так вот, без всякой магии и сахара.
144 2934682
>>34552
Я увидел только 2 способа: блок try catch и хэндлер. Просто примеры на разных вариантах использования корутин.
145 2935287
>>34591

>Не уверен,что можно их ретраить кстати


А хули нельзя, то? Просто ещё раз запускаешь го/ко рутину и всё.

>А обработка пишется внутри метода run или call в зависимости от типа. То есть у тебя не разбросана эта логика в классе экзекьюторе,все находится прям на месте


У тебя есть метод прочитать настройки пользователя, он не может знать критично это вызывающе у или нет. Если функция показывает пользователю текущие настройки, то критично. А если там нужно прочитать предпочитаем часовой пояс чтобы отобразить дату, то не критично, можно пояс браузера использовать. Критичность определяет вызывающий, а не функция. Это как если бы функция чтения файла решала критична ошибка или можно проигнорировать.
146 2935292
>>35287
Такой кейс как ты описал не загоняется в экзекьютор
147 2935801
Гошники,как вы разбиваете код? У вас пакет model где в одном файле лежит несколько структур или у вас директорияпакет в человеческих языках где на каждую структуру по пакету?
148 2935802
>>34632
Ты видимо не понял,таска умирает если из нее наружу выбрасывается исключение,само собой в этом случае класс где происходит запуск может это обработать. А если ты,например,получил исключение внутри таски и залогировал его не выбросив наружу то таска продолжит свое выполнение
download.png7 Кб, 254x199
149 2935805
показываю базу
150 2936098
>>35805
Слоник насаживает суслика, а Дюк завидует?
151 2936174
>>36098
готовится к своей очереди
152 2936935
>>35801
общие модельки, которые в бизнес-логике широко используются (вроде Coords и более доменные штуки) в models.
модельки реквестов/респонсов к внешним сервисам - в пакетах с клиентами в clients/somemicroservice123.
если у метода с бизнес-логикой много аргументов и хочется их тупо запихнуть в структ, то структ можно рядом с функцией объявить. если это метод для интерфейса с несколькими реализациями и нужно чтобы на вход они принимали одну и ту же структуру, то в models.
153 2936943
>>36935

>если это метод для интерфейса с несколькими реализациями


и тут я имею в виду не реализация + мок, а несколько реальных реализаций
image.png83 Кб, 269x187
154 2936951
155 2937727
>>35292

>Такой кейс как ты описал не загоняется в экзекьютор


Наркоман что ли? Мы ту про горитуны говорим, при чем тут твой экзекутор?
156 2937728
>>37727
Я не ебу что такое горутины,я влез в спор исключительно из-за ошибок и исключений
157 2937770
>>23818
А что тебе не понятно, маня?
158 2937788
>>37770
Да всё понятно, семантическая часть языка дизайнится на отъебись, без оглядки на прогресс в области, ощущения как будто на турбо паскаль возвращаешься.
159 2937800
>>37788
аннотации\макросы еще больший костыль чем теги гошки
160 2939263
>>37800
Под макросами очевидно имеются в виду лисп-макросы (метафункции). Это the one true way.

Аннотации конечно костылёчек, но всё же более общее решение, чем кривотеги в го, которые вообще просто от баллы на отъебись сбоку прилеплены по принципу "и так сойдёт, потом разберёмся".
161 2939605
>>37800

>аннотации\макросы еще больший костыль чем теги гошки


Сколько слышал наездов на аннотации, ни разу не видел внятной аргументации почему это плохо и как надо вместо этого делать.
image.png88 Кб, 102x400
162 2940241
>>37728

>Я не ебу что такое горутины

163 2940440
>>39605
Аннотации прикольны, пока не начинаются проблемы из-за них, потому что решить их очень сложно. Фактически тебе придётся изучить все кишочки своего фреймворка и понять где возникает конфликт, а потом придумать костыль, который эту проблему решает.
Когда идёшь по го-вей, то просто пишешь свой бойлерплейт и не паришься. Любая проблема решается в твоём коде, а не где-то на стороне.
164 2940890
>>40440

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


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

>Когда идёшь по го-вей, то просто пишешь свой бойлерплейт и не паришься. Любая проблема решается в твоём коде, а не где-то на стороне.


Т.е. ты неилюзорно предлагаешь мне самому писать сериализацию в джсон? Потому что у тебя детская травма, в бытность джуном не смог разобраться с аннотациями и накричал тимлид?
165 2941002
>>40241
Давай еще о чем-нибудь посремся
166 2941672
Начал я вкатываться в этот ваш Го и чувствую, что чот говна наворачиваю, говной пахнет. Столько разных неочевидных решений. Стоит продолжать или идти сразу в раст вкатываться?
167 2941689
>>41672

>Стоит продолжать или идти сразу в раст вкатываться?


Смотря для чего ты вкатываешься. Если для души катись к хуям в Раст. Если тебе работу работать - Го.
168 2941691
>>41689
Для души эликсир, раст для выебонов.
169 2941703
>>41691
Хачкель еще выучи, будешь перед тян выпендриваться.
170 2941705
>>40890
ну честности ради даже если ты не пишешь свой личный бойлерплейт на каждую хуйню вроде сериализации жсонов, то по крайней мере ты собираешь свой стек из кубиков и можешь перейти на другой кубик, а не порабощен анальным эндоскелетом фреймворка
171 2941726
>>41689
Да в принципе 50/50, только вот смотрю на го и вакансий не густо. И в целом душа больше лежит к вебчику, к бэку, а go для этого более подходит, нежели раст. Вообще, что больше с питоном в связке встречается, раст или го?
172 2941795
>>41672
Ты РНР уже выучил? Если нет, то учи РНР.
173 2941973
>>41705
Вместо того, чтобы нести порожняк предложи решение конкретной проблемы. Есть библиотека сериализации JSON. Как кастомизировать формат сериализации?
174 2941990
>>41726

>только вот смотрю на го и вакансий не густо


Ты ролфишь? На Го полно вакансий. Это на Расте из 3,5 штуки.
175 2942129
>>41990
Ты смотрел свежий индекс вката? Там падение на четверть.
176 2942136
>>41973
прочитать доку к либе
177 2942226
>>42129

>Ты смотрел свежий индекс вката? Там падение на четверть.


Нахуй мне всякое говно смотреть, я же не вкатун.
178 2942344
>>42136

>прочитать доку к либе


Где будет написано что:
1. Ты пиздабол.
2. Чтобы управлять сериализацией используйте аннотации.
179 2943115
Когда я разыменовываю указатель и получаю доступ к полю из памяти достается вся структура или только значение поля?

*input.Field здесь сначала будет получена вся структура и потом у нее возьмётся значение поля или будет получено только значения поля?
180 2943153
>>43115
А как ты представляешь, как она "достаётся из памяти"? Она ведь не на диске лежит, а в RAM - Random Access Memory, то есть доступ к элементам в памяти осуществляется произвольно.
В указателе хранится адрес объекта. Когда ты его разыменовываешь ты обращаешься к участку памяти, на который указывает этот адрес. То есть даже в этом случае никаких затрат памяти не производится дополнительно. Когда ты обращаешься к полю этой структуры, адрес этого поля высчитывается неким образом и так ты можешь достать значение этого поля.
Для полной ясности я бы посоветовал ещё дизасемблированный код посмотреть.
181 2943184
>>43153
Ну меня больше интересует при коде:
input.Field
input.Field2
(Х повторений)
Будет каждый раз обращение к памяти или го умный и закеширует структуру чтобы потом к ней обращаться
182 2943185
>>43184
Перед инпутом звездочка*
183 2943221
>>43184

>Будет каждый раз обращение к памяти или го умный и закеширует структуру чтобы потом к ней обращаться


В общем случае будет 2 обращения к памяти, в лучшем случае компилятор оптимизирует. Детали как всегда зависят от конкретного кода.
184 2943227
>>43221
Короче если планируется обращаться к большому количеству полей по указателю лучше разыменованное значение сохранить в переменной и обращаться уже через нее
185 2943257
>>43227

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


Нет.

Если есть проблема с перформансом - надо бенчмаркать, а потом уже на основе этого оптимизировать и снова бенчмаркать. А эту ебалу с оптимизацией на уровне интуиции оставить.
186 2943276
>>43257
А в чём этот анон не прав? Как минимум это хорошее начало - уже не будет тратиться ресурсов на разыменование
187 2943346
>>43276
Преждевременная эякуляция оптимизация - корень многих зол. Кстати, кто это сказал?
188 2943347
Гойспода, сейчас я чисто для лулзов читнул свежеизданный Go Cookbook (см. scanlibs.com).

И с удивлением узнал, что в стандартной библиотеке нет способа сделать reverse sort для слайса чисел, например. И в книжке рекомендуется отсортировать прямо, а потом в цикле переставить в обратном порядке.
Но, а как же "... имеет богатую и универсальную стандартную библиотеку"? Это типа дохуя богато и универсально?

Вообще, при более-менее близком знакомстве c Go складывается впечатление, что Го-программисты люди не ленивые, и дублирование кода для них обычная практика, например. И сто километров для них вообще не крюк.
189 2943368
>>00423
не могу подсказать добавили или нет, но насчёт умерший - уже не особо актуально
https://www.reddit.com/r/golang/comments/14xyido/the_gorilla_web_toolkit_project_is_being_revived/?rdt=43258
190 2943369
>>24117
первым языком за который получал бабки был голанг, так что не согласен со всеми этими выражениями "на го не берут джунов" и всё в этом духе
в мск огромный набор постоянно в гиганты, типа вб, озон
191 2943417
>>43369
Сколько лет назад это было? Сейчас рыночек поменялся и почти на всех языках берут от мидла и выше только.
192 2943467
>>43346
Подобные вещи проверяются один раз и не меняются в зависимости от кода. На уровне бест практисов нужно это закреплять
193 2943480
>>43417
Охуительные истории. А до мидла как? Или то что раньше называли джуном теперь считается мидлом?
Только не надо пздеть про перенасыщенность отрасли, вакансии есть, просто в отрасль проникли туророгие русские кабанчики, которые хотят 20 летнего сеньора с личным ютубом, твиттером гуглом и с опытом работы 25 лет.
194 2943487
>>43480
Все рисуют фейковый опыт и рассказывают как они уже 2-3 года где-то поработали. Порожек входа в айти теперь выше.
Многие, кто давно вкатились, до сих пор этого не понимают и советуют молодым то, что уже не актуально. По их советам новичок будет получать отказы на уровне кадровой службы, даже до собеса не дойдёт. Причём для го эта ситуация наиболее острая. На других языках с этим полегче и порог входа не такой крутой.
195 2943535
>>43369
Чет меня не взяли недавно в озон, авито и ещё один стриминговый сервис, коммерческого опыта на го нет, хотя базовый синтаксис изучил и курс на работе прошел. Коммерческий опыт: последние 4 года на пистоне (автоматизация всякой хуйни -> джанга -> фласк, грпц, фастапи), и до этого ещё 5 лет пердолился с бд. С ноября ищу новую работу и уже потихоньку начинаю обмякать, без коммерческого опыта на го никто не хочет брать.
196 2943577
>>43347
Я много лет писал на джава и до твоего поста даже не задумывался про такое ограничение. У меня реально ни разу не возникала задача отсортировать числа по убыванию. В 99.999% приходится сортировать объекты, а там всегда есть компаратор.

>>43347

>Вообще, при более-менее близком знакомстве c Go складывается впечатление, что Го-программисты люди не ленивые, и дублирование кода для них обычная практика, например. И сто километров для них вообще не крюк.


Это правда.
197 2943601
>>43535
Смотрю этого дядечку последнее время. Он уже 2 года учит го и не может вкатиться. Сплошные отказы. Хотя опыта в других языках у него десятки лет.
https://www.youtube.com/watch?v=aPu46ozF-JQ

Так что я тоже не верю в эти сказки, что типа выучил го и тебя на работу взяли. Наверно сейчас реально вкатиться только если внутри фирмы переходите с питона или РНР на го.
198 2943647
>>43467

>На уровне бест практисов нужно это закреплять


Ну да, ну да, удачи тебе поработать с кодом, где разраб до тебя накостылил своих бестолковых оптимизаций с указателями, а после обновления рантайма в системе плавают непонятные баги в многопотоке, которые возникают в зависимости от фазы луны и отладка больше напоминает гадание на кофейной гуще. Не просто так вся эта залупа абстрагируется от работы с памятью, не можешь удержаться от байтоёбства - пиши на сишке.
199 2943671
>>43647
Речь не о каком-то метапрограммировании,поведение не изменится от того будешь ли ты делать разыменование на каждый гет переменной либо же сохранишь в переменную разыменованный объект. Здесь нет никаких сложных оптимизаций,байтовых сдвигов и тд и тп
200 2943684
>>43671
Что там под капотом происходит одному богу известно, и представь себе гипотетическую ситуацию: чел прихоидт на собес, его спрашивают, какие оптимизации применял и как лечил ботлнеки, а он такой отвечает - ну я пердолился с указателями на структуры. Никто в здравом уме не возьмет на работу человека, у которого появляются мысли заниматься такой хуйней.
201 2943704
>>43601
Ебать он жесткий,700 трансляций запилил
202 2943716
>>43684
Нет братан,это обычный вопрос от человека который посмотрел пару лекций по го. На уровне чем линкед лист от эррей листа отличается. И эта информация известна не только богу. Вопрос элементарный для человека,работающего с го больше чем две лекции,так что если ты не в курсе такого то это исключительно твоя проблема. Я подожду ответа более опытных и компетентных анонов
203 2943751
>>43577

>Это правда.


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

Как сказал Дейкстра - инструменты, которыми мы пользуемся, оказывают глубокое и тонкое влияние на наше мышление, и на саму нашу способность мыслить. И в этом плане Go на меня оказывает примерно то же действие, что и встроенный язык 1С.
204 2943775
>>43716
Здесь нужно понять, тратится ли при этом больше памяти.
Далее - по результатам - понять, что тебе важнее - память или производительность (и там и там разница будет копеечная).

Ещё лучше - сделай бенчмарк производительности (как советовали выше). Цикл на миллион повторений и сравни время. Всё полезнее, чем хуиту на дваче писать, лол.
205 2943789
>>43276

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


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

Конечно если у тебя какой то инфраструктурный проект типа базы данных или кэша тут такие оптимизации будут уместны. Но тогда тоже следует начинать с профилирования, бенчмарков и анализа сгенерированого кода.
206 2943795
>>43751
Тут полностью согласен. Но зато код очень прямолинейный и простой для понимания. Тут нет такого как в Спринге: повесил аннотацию и класс начал валидировать реквесты и по стектрейсу вообще не видно твоего кода. Единственная головная боль, это то что интерфейс не реализуется явно и найти имплементации не работает. Разбираться в существующем коде долго из-за того что его много, но очень просто.
207 2943827
>>43795

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


Да, всё так. И это хорошо.
Плюс - охуенная concurrency из коробки и много чего ещё интересного.
Поэтому я и продолжаю пытаться постичь этот дзен. В смысле - наработать интуицию, принять такие подходы.
Иначе давно бы нахуй бросил.
208 2943829
Почему в говяхе нет опциональных/дефолтных параметров?
Даже попытка взять энвы превращается с функцию с лукапами, который разработчик каждый копирует из проекта в проект.
209 2943842
>>43829
Сделай сам.
Какие-нибудь функции типа GetOrDefault(environment, paramName, defaultValue)

Думаю, дело в том, что довольно многие Го-девелоперы просто не очень умеют в настоящее программирование. Поэтому, дублируют код даже там, где можно не дублировать.
210 2943971
>>43842
Печально что при изучении новой и современной технологии для решения конкретных проблем приходится сталкиваться с такими детскими болезнями, вроде 2к24 на носу, искусственный интеллект уже код пишет, а тут приходится откровенно ерундой бестолковой заниматься, это как надевать портянки с лаптями вместо нормальной обуви.
211 2944002
>>43601
У нас есть сервисы на питоне и го.
Чсх, сервисы на питоне быстрее.
212 2944008
>>44002
РНР сейчас тоже с каждой версией всё быстрее и многопоточку сам оптимизирует. Так что может го и не нужен будет в будущем.
213 2944094
>>43601
Go - очень сложный язык.
Синтаксис простой, да. Вот только язык - это не синтаксис.
Да и простота бывает такая, которая хуже воровства. Вот как в Go.

Так что максима "Го не для вкатунов, а для свитчеров" - вполне себе справедлива. В смысле, что человек, не умеющий программировать, ничего путного на Го не сделает, если это его первый язык. Разве что под постоянным руководством ментора.
214 2944102
>>43535
Не совсем понятно, зачем тебе Го после Питона.
Но, если таки нужен - не лезь в крупные компании, и не ищи сразу много денег.
215 2944351
>>43347

>что в стандартной библиотеке нет способа сделать reverse sort для слайса чисел, например. И в книжке рекомендуется отсортировать прямо, а потом в цикле переставить в обратном порядке.


>Но, а как же "... имеет богатую и универсальную стандартную библиотеку"? Это типа дохуя богато и универсально?


ну проблема тут в том что автор не знает про slices.SortFunc и sort.Slice
216 2944489
>>44351
И правда не знает, лол.

Автор - рубист в прошлом. Хули с него взять.
При этом резюме у него внушающее.
Он сингапурец, работает в госконторе, что-то типа наших Госуслуг, и занимается там вот этим вот самым. В послужном списке - 3 изданных книги по Руби, и эта, четвёртая, по Го (сент. 2023).

Sau Sheong has been in the software development industry for more than 28 years and has been involved in building software products in many industries and using various technologies. He is an active member of various software development com‐ munities, previously Java and Ruby, but now focuses mostly on the Go community. He runs meetups and gives talks at conferences all around the world on Go and also on topics related to his work, especially on sustainability, smart cities, government, and AI. He also runs GopherCon Singapore, one of the largest community-led devel‐ oper conferences in Southeast Asia, and has been doing so since 2017. Sau Sheong has written four programming books, three in Ruby and the last one in Go.
217 2944569
>>43601

У меня кореш джуном заскочил по счастливой случайности, даже собеседования не было. В резюме напиздел про опыт, на собеседовании тимлид дохуя занят был, поэтому поздоровался, бросил пару коротких фраз и сразу нанял. Хотя кореш не то что особо умный и к тому моменту он только синтаксис знал, программистом не работал никогда. Я, посмотрев на него, тоже пытаюсь повторить, но пока ем говно. Я еще и человек склонный сдаваться, на нервяке постоянном, типа без работы сижу, а лет уже дохуя. Но всегда хотел в погромисты, понимаю, что если не сейчас, то никогда в жизни, поэтому всякую хуйню учу и стараюсь не охуеть от количества информации, которой не знаю.
218 2944601
>>44569

>и стараюсь не охуеть от количества информации, которой не знаю.



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

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

Мне до сих пор бывает немножко стыдно, когда я вспоминаю, сколько я напиздел о своих навыках в резюме, когда устраивался на первую работу в IT много-много лет назад. Это была просто чудовищная хуцпа. И это сработало.
Тут правда, есть один нюанс - я был хорошо мотивирован, был готов отвечать за базар и впахивал как конь. И реально охуевал от количества информации, которую приходилось учить. Только это была реально нужная информация, а не мои домыслы и предположения о том, что нужно.
219 2944603
>>44601

Спасибо за мотивацию, анон.
220 2944652
>>44601
И преждевременная эякуляция
221 2944737
Как избавится от папки .idea? Она лезет прямо в гит-репозиторий, а ей там явно не место. Добавить в .gitignore? Но тогда она и там будет отсвечивать, указывая что автор использует какую-то конкретную иде. Смотрел на гитхабе, что почти все репозитории чистые, без гитигнора и лишних папок. Как им удаётся такое делать? Пишут все поголовно в вс коде или виме?
222 2944743
>>44737
ну например можно добавить в глобальный .config/git/ignore или в .git/info/exclude у отдельной репы
https://git-scm.com/docs/gitignore#_synopsis
223 2944746
>>44743
в гитигноре пропиши гитигнор
224 2944834
Я постоянно вижу заголовок повсюду, в котором спрашивается, какую среду или библиотеку использовать для серверной разработки. Учебники YouTube начинаются с произнесения чего-то похожего, а затем, через 5 минут, они импортируют модуль из GitHub. Практически все перечисленные там проекты используют внешнюю библиотеку для маршрутизации или что-то подобное.
Существует ли на самом деле проект, который использует только стандартную библиотеку и драйвер базы данных?
Если нет, возможно, сусликам следует перестать говорить, что стандартной библиотеки достаточно, или хотя бы перефразировать ее.
225 2944909
>>44834
Все до единой библиотеки маршрутизации для го это обертки для дефолтного http разной степени говености, так что тейк не засчитан
226 2944935
>>44909
Какая обертка наименее говённа?
227 2944942
>>44737
В идее есть же плагин для .gitignore
И там есть даже пресеты для типичных задач, и можно одной кнопкой настроить игнор всей этих идеевских штук, это не только папка .idea, там ещё много чего.
228 2944946
>>44834
Ты немножко неправильно понимаешь, что такое "стандартная библиотека". Высокоуровневые веб-серверные штуки и не должны там быть.
image.png66 Кб, 225x225
229 2944991
>>44946

>не должны там быть


QoL штуки тоже
230 2945017
>>44737

>без гитигнора


Они игнорят гитигнор же.
Есть разные мнения о том, стоит ли это делать.
Можешь просветиться в интернетах.
А вообще - это на твоё усмотрение, особенно, если речь идёт об учебных проектах. А в не-учебных тебе скажут, как надо.
231 2945043
Что за дроч на стандартные либы? Типа вам норм каждый раз копировать код из проекта в проект или ваша репа с шаблонным кодом не считается за либу?
232 2945065
>>45043
Стандартная либа - это чтобы _не_ копировать. И не изобретать велосипед.
233 2945239
Как ориентироваться в этом зоопарке библиотек и фреймворков? Планирую начать писать пет-проект, но совершенно не понимаю что для него использовать. Стандартная библиотека потребует написания огромного количества "велосипедов", а какой фреймворк выбрать - не знаю. К тому же вдруг я выберу совсем не то и меня не возьмут на работу из-за этого? Скажут - гляди, такой тупень выбрал фреймворк N, а мы используем M и ни за что не возьмём его с N.
234 2945263
Сейчас на ютубе посмотрел для сравнения РНР собесы и го собесы. На РНР спрашивают: расскажите что такое трейт? Замечательно, вы приняты! На го-собесах: сейчас будем 2 часа решать алгоритмические задачи на горутинах и перформансом. О, вы не написали свой компилятор го в процессе обучения? Для нас это красный флажок. Скорей всего вы нам не подходите.
235 2945293
>>45263
Потому что тащить говяху туда, где не нужен мнопоточный перфоманс будет только ебанутый
236 2945400
>>45263
Такое ощущение что ты вбираешь между пыхом и голенгом, только вот выбор этот такой же бредовый, как выбор между трамваем и карьерным самосвалом, главный вопрос в том, какие технические проблемы ты собрался решать?
237 2945409
>>45263

У меня на го спросили мапу, слайсы, стринги и стрингбилдер, ебучий sync пакет и тд.

В то же время на пыхе спрашивали в основном про постргрю и прочую ебку базы
238 2945432
>>45400
Мне надо устроится на работу, чтобы жить на что-то, а водить трамвай или самослав - второстепенный вопрос.
239 2945443
>>45239

Удваиваю вопрос.
240 2945485
>>45065
Т.е. надо каждый раз писать свой fasthttp?
241 2945852
>>45485
Не понял, это что, троллинг тупостью?
Стандартная библиотека - это то, что входит в дистрибутив языка.
Все эти пакеты, типа fmt или sync.
242 2945860
>>45432
Тогда учи PHP, тут даже думать нечего.
Го вообще не очень годится на роль первого языка, и, тем более, первой работы. А пыха - вполне себе да.
243 2945897
>>45485
Я, кажется, понял, что ты имел в виду.
Если ты хотел сказать, что неправы те, кто дрочит на то, что надо использовать только стандартную библиотеку, а остальное хуярить самому, то я полностью согласен, это идиотизм.

Просто я тут выше писал про бедность стандартной библиотеки Го, и продолжил на той же волне, лол.
244 2946086
Вам никогда не хотелось "посахарить" язык? И ведь это даже не дожно скзаться на перфомансе, так как потом все равно раскручивается до простых изначальных конструкций
245 2946150
>>46086
Можешь привести конкретный пример того, что тебе хотелось бы посахарить?
246 2946170
>>46086
Нет, голаг изначально должен быть необоснованно неудобным и сложным, в этом суть языка. Главное занять программиста чем нибудь, чтоб разработка была маскимально долгой, заставлять его писать одни и те же паттерны снова и снова, повторять одни и те же конструкции.
Тогда кодревьюеру будет приятней читать код, а qa делать тесты. Голанг это не язык для программистов, а язык для менеджеров этого самого программиста, чтоб всесторонне контроллировать его и сделать мозг максимально шаблонным.
247 2946190
А че вы стонете от бойлерплейта во времена копайлота? Оно же само пишется.
248 2946225
>>46190

>Оно же само пишется


Да.
Но, к сожалению, оно само не читается.
А на чтение кода программист тратит в несколько раз больше времени, чем на написание.
249 2946268
>>46225
Зато авторевьюится. Это важно. Важнее читаемости. Ведь го это язык для менеджеров.
250 2946291
>>45239
бля анон, суть в том, что в Go тебя не спрашивают про знание фреймворков. точнее спрашивают, но на уровне "что-то видел, с чем-то работал". они от стандартной либы далеко не ушли - ну там будут какие-то QoL вещи ну и хуй с ними. я лучше на собесе посмотрю как челик вейтгруппами/мютексами умеет пользоватся и поспрашиваю про глубины шедулера/гц. но мы всякими файберами/фастхттп не пользуемся, у нас свои велосипеды. ну и если ты юзаешь исключительно горм и не можешь sql запрос написать, то вероятно пройдешь нахуй.

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

>>44834
ну для простых сервисов её достаточно. роутер не поддерживает параметры в путях, но для внутренних сервисов можно тупо post для всего использовать и передавать значения в теле. рестуху для внешних апих конечно хуево делать на стандартной либе, пока там параметры не поддержали, но ищью у них на гитхабе такая открыта.
251 2946292
>>44834
ну и бля там в стандартной либе нет драйверов, только интерфейс для драйвера и либа чтобы его использовать более-менее удобно. так что хуй знает как ты хочешь с нереализованным интерфейсом БД пользоваться. sqlx если што от sql не особо далеко ушел и переписать на ручной сканнинг Rows тривиально
252 2946294
>>46291
Ты рисовал фейковый опыт в резюме, чтобы приглашали на собесы?
253 2946299
>>46294
нет, я на хх нашел стажерскую вакуху без опыта/откликнулся/прошел, потом рекрутеры сами писали
254 2946603
>>46291
Опять "только стандартные либы"...
Вы олимпиаду делаете или рабочие сервисы? Либо ты пздишь, либо тебе очень сильно насрали в голову на работе.
255 2946645
>>46603
хз о чем ты говоришь. я нигде не сказал, что мы используем только стандартные либы. я сказал, что нормальным конторам знание ваших фреймворков нахуй не нужны. нужно знание языка.
и да даже если бы мне насрали в голову на работе, то в чем проблема, когда мне платят, а тебе нет? )))
256 2946696
>>39263
Что то не пойму какие ты задачи макросами решаешь и метафункциями(даже лень читать что такое, по названию понятно что говно)_
Это все похоже на один большой костыль на уровне архитектуры, т.е. теги гошки это самое безобидное что есть.
257 2946773
>>46645
Хуями тебе платят. Лучше никак, чем так.
258 2946845
>>46773
ну вообще лучше хуями, чем никак
259 2946846
Бляяяяя,какие же у вас уебищные интерфейс? Просто вот нахуя? Что за душевнобольной придумал такую всратую поеботу?
260 2947566
>>46846
ООП дауна видно издалека
261 2947630
>>46773

>Лучше никак, чем так.



Мне кажется, ты не понимаешь сути Го.
Копирование кода, велосипеды, ехал-цикл-через-цикл и т.п. - это _официальные_ бест практисиз в Го. Если ты такое не любишь - тебе надо что-то другое.
262 2947633
>>46846
Ты джавист? Я - да.
Это не те интерфейсы, не надо вестись на "знакомые слова".
Го - это совсем другой язык, и пишут на нём по-другому.
263 2947648
>>47630
А зачем го такое? Почему синтаксис сделали таким? То что оно там внутри быстрее это ок, но почему сам язык сделан так, это как-то помогает разработке?
264 2947654
>>25723
Физически плохо - это нормально, это мозг потрескивает просто. Можно и поехать, да, если слабый духом, бьёт по самооценке. Но если мотивирован, то обычный проходной этап.
Сам также вкатывался в течение нескольких лет: берешься за что-то, и бьешься головой о стену, очень плохо, не выдерживаешь, бросаешь, восстанавливаешь психику и силы, через какое-то время повторный цикл, но уже продвигаешься чуть дальше, и так раз за разом постепенно выходишь на плато, где тебе в целом комфортно, а новые испытания уже не так больно даются, и пусть не просты, но вполне решаемы.
Просто вся эта хуйня контринтуитивна, в природе ее нет, в нас это не заложено природой, поэтому сначала нужно сломать мозг, а это больно и неприятно, выдерживают единицы, самые стойкие и мотивированные, остальные на каком-то из промежуточных этапов бросают, не выдерживают, прям как в меме про js и проститутку.
265 2947657
>>32209
Потому что хороший инструмент стоит денег, и отбивает их с лихвой
Житбрейнсы не зря хлеб жуют, их анализатор синтаксического дерева с индексацией, инспекциями, рефакторингами и исправлениями - это реально полезная хрень, которой больше нигде нет
Да, оно жрет много ресурсов. Но оно того стоит, когда распробуешь. А ресурсы сейчас - вопрос небольших денег, даже днищепрогер с одной ЗП себе позволит nvme + 64gb ddr5 + 7950x, и будет в хуй не дуть, кайфуя в умной ide. На современном железе оно работает так же быстро и легко, как любой блокнот.
А сейчас к ide они еще и прикрутили ии-сопрограммиста, который всю рутину берет на себя, и с которым можно обсудить наилучшее решение, в котором он тебе подскажет наиболее подходящий функции, о которых ты даже не слышал, забыл, или не подозревал/не думал что их можно использовать в таком контексте
В общем после их ide уйти на что-то более тупое уже нереально, к хорошему быстро привыкаешь
266 2947658
>>47633
А зачем вообще нужны интерфейсы? Какую пользу они приносят? И в джавовском и в го понимании
267 2947674
>>47648
Сложно объяснить.
Это другой язык, другой подход к разработке. Более низкоуровневый. Проще в одном, сложнее в другом.
Ты пытаешься понять это, не выходя из (например) джавы.
А надо выйти.
Вообще, если на низкоуровневых языках не писал никогда ничего, и нет никакого представления о том, как оно вообще всё внутри работает, то это будет сложно.

Другой вопрос - зачем?
Чтобы понять - попробуй читни какую-нибудь годную книжку по Го - Cloud Native Go, например.
268 2947675
>>47658
Охуенный вопрос.
Интерфейсы нужны чтобы абстрагироваться от реализации.

Ты говоришь: Мне нужна хуйня, которая делает Икс, и мне вообще похуй, как она это делает. Например, в джаве один и тот же код может читать данные из файла, из порта, из строки и т.п., в зависимости от того, какая реализация интерфейса Reader в него была передана. В го - примерно так же, только сделано по-другому.
269 2947679
>>47674

>Cloud Native Go


Уточню - имеется в виду книжка "Cloud Native Go: Building Reliable Services in Unreliable Environments" O'Reilly, 2021 год, см. scanlibs.com.
Есть ещё другая, с таким же названием (но, с другим подзаголовком), более старая и немножко не о том.
270 2947685
>>47674
Я работал раньше с контроллерами сименса для нефтегазовых шкафов управления. Мне байты и вот это всё как вода для рыбы. Сейчас же работаю на питоне.

Меня больше смущает излишний синтаксис и в целом неудобство самого языка.
К примеру, чтоб на питоне запустить две асинхронные таски, достаточно сделать
await asyncio.gather(task1(), task2())
или другими способами. Можно их создать через циклы и передать какую-нибудь очередь для воркеров к примеру, которая заполняется в другом месте
q = asyncio.Queue()
workers = [worker(q, i) for i in range(10)]
await asyncio.gather(*workers)
То же самое на го делается более громоздко.
271 2947686
>>47685
когда илон маск изобретал го он хотел сделать так чтобы в языке было минимум синтаксиса чтобы все было просто для того чтобы в код было просто читать
272 2947699
>>47685
Какой-то очень неудачный пример "неудобства" Го.
Как раз именно асинхронщина и конкурентность там сделано просто охуенно.
В отличие от питона, в котором ещё и настоящей многопоточности нет, одна видимость.

И ты загляни в исходники этого asyncio. Посмотри, что там.
Это вообще довольно высокоуровневая вещь, с event loop etc.
А в Го - немножечно другое, более низкоуровневое. Есть какие-то либы с event loop, но, я не разбирался.

Но, Го - язык действительно неудобный. Корявый просто пиздец.
Такое ощущение, что специально делали максимально непохоже на Си и си-образные языки. Чтобы на каждом шагу программист спотыкался, и вспоминал, что это не Си, не Джава, а Го, ебать его в сраку.
Алсо, тут стоило бы ещё вспомнить о том, что всё, что делает Гугол, является совершенно неюзабельным говном, лол.
273 2947730
>>47699

>Это вообще довольно высокоуровневая вещь, с event loop etc.


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

>Почему в го не сделали удобные


Потому, что как в том армейском анекдоте:
- Солдаты, мне не надо "быстрее и удобнее", мне надо, чтобы вы заебались.

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

Читать исходники стандартной библиотеки - просто невозможно. В пакете 30 файлов, с хуй пойми какими названиями, и все друг на друга _неявно_ ссылаются. Т.е. в этом файле используется функция MakeZalupa, угадай, в каком из оставшихся 29 файлов она определена? Как эту срань можно использовать для промышленного программирования - для меня загадка.

И это, блядь, новый язык, _специально_ разработанный для того, чтобы код, блядь, в исходниках, было _просто_ читать, понимаете, да?

Воистину, го-девелоперы люди не ленивые, и грузить го-вно в самосвал чайными ложками им совершенно не трудно.
275 2947893
>>47675

>В го - примерно так же, только сделано


через жопу.
276 2947897
>>47890

>Кроме одного - глядя в исходник невозможно понять, из какого именно файла того или иного пакета взят тот или иной символ.


нахуя тебе файл знать? на ревью либо файл будет в диффе, либо его не будет в диффе и тебе все равно придется его открывать в редакторе. в 2к23 все редакторы умеют к имплементации переходить.
277 2947910
>>47897
Ты уверен, что понимаешь, что такое "программирование"?
278 2947942
>>47910
так ты объяснить можешь зачем тебе файл видеть, когда в пакете не может быть дублирующихся идентификаторов?
279 2947960
>>47699
То что там костыльная асинхронность это и так известно, главное что она работает и работает как надо.
Я чисто про сам синтакс, как вот это вот всё писать.Я работаю с кодом, с буковками скобочками и вот этим всем, а что внутри мне не интересно, хоть сингулярность.
280 2947981
>>47960
Это разные вещи, понимаешь?
Система на базе event loop (т.е. постоянно выполняющаяся в отдельном потоке программа) и просто языковые примитивы для конкурентности.
281 2948002
>>47981
Я знаю как она работает. Про многопоточность тоже знаю, про многопроцессорность. Чем отличаются. Я асинхронность использую чаще, тк только в основном запросы делаю.
282 2948015
>>48002
Твой вопрос скорее про то, почему какую-то штуку типа питоновского asyncio не сделали частью стандартной библиотеки.

Ну, так в джаве тоже нет такого. И в перле нет. И вообще нигде, я думаю. Потому, что это не уровень стандартной библиотеки. А вот в питоне есть.
Ну так питону уже очень много лет. И всё это там успело, так сказать, кристаллизоваться. И это был довольно непростой процесс. И только потом это стало частью языка.
283 2948029
>>48002
Кстати, не секрет, для какого рода задач ты это используешь? Какие запросы?
284 2948176
>>48029
Обычная сортированная mq с тасками по 2-10 запросов. Очереди появляются динамически, кажду должен обслуживать только один воркер.
Сделана кастомно через редис zset, т.к раббиты и прочие не устраивают по скорости, настройкам и излишним фичам. Заранее не известно сколько таких очередей может быть и как они называются, кроме префикса.
285 2948180
>>48176
Если кратко - обычные чаты со сторонними апи, с дополнительными запросами кроме самих сообщений.
286 2948191
>>48176
А какая предметная область?
Коммерция, финтех, что-то ещё?

Кафку не пробовали? Мощная вещь.
287 2948652
>>48191
Кафку хз. Я с тех пор вообще критично отношусь к сторонним сервисам, да и зачем, если 100 строк кода делают то же самое, только без дополнительных штук. Редис у меня и так есть, а разворачивать ещё один сервис немного сомнительно.
Необходимости в кафке пока нету. Я пробовал яндекс очереди использовать, там задержки пздц, у меня же мессенджер, а не запланированные задачи. Очередь нужна только чтоб сортировать список по времени и не отправлять все сообщения разом.
Она занимается тем что перессылает сообщения из одних мест в другие. Самого чата как такогового нету.
288 2948653
>>48652
Вообще коммерция да, crm-ки
289 2948799
>>47890
Для того чтобы узнать в каком именно файле лежит условная MakeZalupa(кому вообще не похуй в каком) тебе нужно зажимая ctrl кликнуть по MakeZalupa. Плюс мне очень интересно что же это за другие яп которые тебя в этом плане устраивают
290 2948979
>>48799
Сегодня читал исходники net/http на pkg.go.dev
Зажимал ctrl, как ты советуешь - никакого результата.

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


Python, Perl, Java.

Не, я понимаю, что в IDE оно удобнее.
На джаве я только в IDE и пишу, разумеется.
Но, речь была не об этом, а о дизайне языка.
В котором как-то дохуя implicit вещей, с учётом того, что он задуман как читаемый, понятный и т.п. А по факту - корявая хуита (просто визуально тяжело воспринимается) и концов хуй найдёшь (см., например, неявную имплементацию интерфейсов там, где она должна быть явной).
291 2949081
>>48979
сегодня читал https://docs.oracle.com/en/java/javase/12/docs/api/java.net.http/java/net/http/HttpClient.html и чет вообще не понял как сорсам перейти
292 2949187
>>49081
В вскод же есть го ту дефинишон. Не работает? Когда последний раз на го писал вроде работало.
В питоне с метапрограммирование это пздц как бесит, до какого-то времени вообще непонятно было как и где инициализируется это говно, особенно motor, ладно сейчас показывает норм с новым pylance
293 2949236
>>48979
Так если тебе, дружок, не нравится неявная имплементация интерфейсов (утиная), ты об этом и пиши, а не вкидывай невнятную хуйню о том как тебе дико мешает что при читании сорцов в браузере видите ли не показывают файл где лежит искомое
294 2949253
>>49236

>утиная


Хуиная.
Как правило, в большинстве случаев имплементация явная.
И надо было просто добавить соответствующий синтаксис.
А там где утиная - тоже добавить, только другой.
Потому, что explicit is better than implicit.
И всегда приятно, когда концы сходятся с концами.
Это снижает cognitive load.
Код на нормальном языке читается на уровне подсознания.

То же и про файлы.
Почему, блядь, в JS/TS/Java всегда понятно, откуда что берётся, а в Го - нет? Просто похуй? Кому надо - тот найдёт? Понимаю.
Говно и палки, как и было сказано.

Про более тонкие вещи даже говорить не хочу.
295 2949504
>>49253
С другой стороны, у такой реализации интерфейсов есть один большой плюс.
Можно делать интерфейсы пост-фактум, для уже написанного кода, чужого или своего. А потом добавлять новый код, использующий и реализующий их.
image.png32 Кб, 711x460
296 2949556
>>49504
https://youtu.be/PF8d1r-jTN8

Будет смешно если в уже написанном коде метод иначе называется. Мне кажется проще явный клссс адаптор шмякнуть как в Java8
297 2949670
Существует ли дата саенс на Го?
298 2949750
>>49504

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


В нормальных языках: создают интерфейс, описывают контракт функций.
В говно языке: пишут код, а потом под него подгоняют интерфейс.
299 2949771
Пытаюсь научиться всяким штукам в го через adventofcode, там во второй задаче есть инпут типа
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green

В какую сторону вообще копать, чтобы забить данные из подобного текста по шаблону в виде каких-то переменных?
image.png136 Кб, 440x440
300 2950175
>>49750

> В говно языке: пишут код

301 2950314
>>49750

>пишут код, а потом под него подгоняют интерфейс.


Это называется "итеративная разработка".
302 2950319
Я покакал жидко,оцените перфоманс,посрал если что указателем на говно
303 2950326
>>49771
Я думаю, что копать надо в сторону strings.Fields() и fmt.Sscanf()
Sscanf - из строки, Scanf - из stdin.

https://www.geeksforgeeks.org/strings-fields-function-in-golang-with-examples/
https://www.geeksforgeeks.org/fmt-sscanf-function-in-golang-with-examples/
(ссылки первые попавшиеся)
304 2950337
>>50319
Т.е. у тебя запор, говно осталось в жопе, а в унитаз ты передал указатель на него? Хитро.
305 2950340
>>50337
Нет,говно я складировал в монго дб тк там высокая скорость доступа
306 2950446
>>50326
Я хуею, разрабам языка что, букв жалко на нормальные названия? фмт, сс скан ф, и еще такой же метод, только с одной с, как будто кто-то в пьяном угаре копировал из сишки самые ебанутые названия и смешивал их между собой.
image.png3,5 Мб, 4858x3335
307 2950464
>>50446
Таков говей

>In Go, names tend to be somewhat shorter than in many other languages


>https://google.github.io/styleguide/go/guide

308 2950472
>>50314

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


Это называется неспособность к системному мышлению. Этим страдает не только Го, но и значительная часть динамодристни. ИЧСХ в Го линковка типа и интерфейса осуществляется в рантайме при первом использовании, прамо как вся это утиная типизация из динамодристни.
309 2950475
>>50446

> копировал из сишки


Ну, в данном случае таки именно копировал, и именно оттуда.
Чтобы люди с опытом видели знакомые буквы. А ньюфаги - привыкнут.

Ну, и говей тоже, как заметили выше.
310 2950490
>>49253

> То же и про файлы.


> Почему, блядь, в JS/TS/Java всегда понятно, откуда что берётся, а в Го - нет? Просто похуй? Кому надо - тот найдёт? Понимаю.


Ну зачем блять, зачем ты продолжаешь это приводить в пример и жидко серить под себя, бестолочь
311 2950497
>>50472

>осуществляется в рантайме при первом использовании



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

Так реализованы интерфейсы в Го.
Это не бесплотные абстракции или контракты, как в Java или Typescript. Это _значения_ (пара указателей). Эти значения надо инициализировать. И это, естественно, делается в рантайме.
312 2950500
>>50490
Потому, что считаю это досадной недоработкой.
Впрочем, спишем это на приверженность создателей языка к минимализму. Недостатки как продолжение достоинств.
313 2950521
>>50497

>Ты явно чего-то недопонял, если считаешь это каким-то (пусть даже теоретическим) недостатком.


>Например, то, что переменным значения присваиваются в рантайме тебя не беспокоит? Это не как в "динамикодристне"?


Совсем того? Присваивание переменной значения это именно то, для чего программа и нужна. А система типов, в статически типизированном языке подразумевает, что типизация будет делаться статически, а не крякать в рантайме.
А в го этого не сделали потому, что интерфейсы так через жопу реализованы, что порождают слишком много возможных комбинаций. И приходится переносить это в рантайм, чтобы создавались только те пары которые реально используются.
314 2950553
>>50521
Чувак, интерфейсы в Го - это не про статическую типизацию (в привычном понимании). И в этом весь секс.
Именно интерфейсы - это самая замечательная часть Го, а не конкурентность (которая тоже охуенна).

Тебе надо расширять сознание, я думаю.
315 2950556
>>50553
Так может объяснишь в чем пиздатость интерфейсов? В JS и питоне вот нет никаких интерфейсов и нормально вроде живут.
316 2950557
>>50556
В пихоне есть абстрактные квассы и протоколы для этого, правда в большинстве случаёв они нахуй не нужоны.
317 2950558
>>50521
Так и в джаве статическая типизация нихуя не работает во время рантайма. Сейчас я беру класс, реализую интерфейс. Потом в рантайме обновляю джарник с интерфейсом, джарник с использованием этого интерфейса, а джарник с классом оставляю старым. И дальше у тебя работает не типизация, а правила бинарной совместимости, изучай - https://docs.oracle.com/javase/specs/jls/se21/html/jls-13.html#jls-13.5.4

Если тебе прям надо, в го проверка сводимости типа к интерфейсу во время компиляции делается одной строчкой в любом месте (обычно рядом с описанием структуры):
`var _ Iface = (*IfaceImpl)(nil)`
Вот такой тебе implements, если надо. А если не надо, то и не пиши его.
Такие интерфейсы тебе приносят нишевые варианты использования, как например комбинирование интерфейсов, или имплементация интерфейсов для любого локального типа, хоть функции - https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/net/http/server.go;l=2132

PS. Cамые охуенные системы типов работают максимально прозрачно и максимально близко к динамикодрисне - ты трейтами описываешь что тебе нужно от типа принимаемого объекта, а дальше компилятор сам всё проверяет. Хуле ты к го доебался, да еще с джавой, которую без ломбоковой кодогенерации и DI уже никто и не использует, лол.
318 2950577
>>49670
Бумп
319 2950578
>>43601

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


Ну, как-бы это показатель. Если у него опыта десятки лет, то ему где-то под полтинник. Кому нужен кодер-скуфидон, который вот-вот выйдет на пенсию?
не смотрите видео.webm1,3 Мб, webm,
540x960, 0:15
320 2950592
>>50446
Тебя заставляют что ли писать на го?
321 2950593
>>50578
Он тут на днях признался, что устроился на РНР. Будет пилить какую-то CMS на Ларе. Вот и думайте!
322 2950726
>>50558
Охуенно.
323 2950733
>>50578

>под полтинник


>вот-вот выйдет на пенсию


Юноша, вы вообще в курсе про пенсионный возраст?
А потом, если сейчас детей рожают в 35+, то "полтинник" это типа сильно дохуя?
Это называется "в самом расцвете сил", лол.

Алсо, это чисто россиянская тема, что программист должен быть в памперсах и сисю сосать. А на западе хуева туча кодеров 60+, и всё прекрасно.
324 2950760
>>50556

>в чем пиздатость интерфейсов?


Вообще или в Го?
Если вообще - то долго. Если в Го - то тоже долго.
Есть очень много вещей, которые нельзя понять, просто прочитав чьё-то объяснение. Для понимания необходимо пройти путь. Это занимает время и требует сил.
Если спросишь более конкретный вопрос - попробую ответить.
325 2950796
>>50733
Тут дело не только в программистах. В россии принято в 20 лет уже иметь тугосерю, тян, квартиру и ипотеку, а в 30 можно и на упокой. В западных странах многие люди в 30 только вышку получать начинают, да и то особо не делают акцент на нём.
326 2950801
>>50446
Это чтоб кодер запаривался, уставал, было чем заняться и чтоб у него в принципе не было возможности проявить самодеятельность.
Я ж говорю, го для менеджеров, а не программистов.
327 2950873
>>50558

>Так и в джаве статическая типизация нихуя не работает во время рантайма.


Сейчас я беру GraalVM, сертифицированную JVM на минутгчку, компилирую всё в нативный образ и шлю тебя нахуй с левыми примерами.

>делается одной строчкой


Спасибо за очередной элегантный костыль.

>>50558

>Cамые охуенные системы типов работают максимально прозрачно


Ты только что поделил на ноль твой любимый говноланг. В этом говне как раз максимально непонятно нахуй strings Builder.WriteString() возвращает nil error.

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


Я джаву не упоминал вообще, это твои личные заскоки что она тебе везде мерещится. Таблетки прими.
328 2950914
>>50796
Не совсем правда про западные страны. В целом от 25 летнего человека уже много чего ожидается.
329 2950943
>>50796

>В россии принято


Кем принято? Шизам, которые покупают курсы от инфоцыган? Знакомые, которые не в ойти только еботеки начинают брать к 28-30 годам, и то, с помощью родителей
330 2950958
>>50446
Посмотри лучше на функции в своём РНР. Там ни стиль наименования, ни позиции параметров не выдержаны. Каждая функция действительно уникальна и будешь всю жизнь их учить и никогда не запомнишь.
331 2950967
>>50914
Что ожидается? Что он в 25 девопсом должен быть? А в 40 че, в могилку?
Куда вы жить торопитесь, я не понимаю
332 2951026
>>50958
Так и здесь та же самая ерунда, только пыху уже 30 лет, когда его рожали еще на коболе писали, а Голенг позиционируется как свеже-модно-молодёжная технология от продвинутой конторы гугол, и это при том что уже существуют языки с прекрасным дизайном, казалось бы, даже рисёрч не нужен, бери и копируй 1 в 1, но нет, возьмем самые убогие практики из самых устаревших решений, пенсионеры оценят, а на остальных похуй.
333 2951089
>>50873

>Я джаву не упоминал вообще


Так ты шарпоблядок, что ли? Что жы ты раньше не сказал?
Хотя, можно было бы и догадаться, по характеру аргументации.
334 2951094
Дак реально устроится без опыта работы или даже нет смысла пытаться?
335 2951108
>>51094
А что ты умеешь?
336 2951110
>>51094
Зависит от твоих ожиданий
337 2951122
>>51108
А что нужно уметь? Пока голангу учу, немного SQL знаю.

>>51110
Удалёнка, но готов работать за еду
338 2951196
>>51122

>А что нужно уметь?


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

Если у тебя есть английский на уровне, позволяющем тебе как-то читать книги - это большое дело.
Берёшь книжку по Го, читаешь, делаешь примеры, умнеешь etc.
Что-нибудь типа "Hands-On RESTful Web Services with Go (Second Edition)" или "Powerful Command-Line Applications in Go" или что-то подобное. Где рассматриваются конкретные проблемы и их решения.
339 2951667
как джавовских чушпанов из нашего треда прогнать?
340 2951729
>>51089

>Так ты шарпоблядок, что ли? Что жы ты раньше не сказал?


Пиздец ты дегенерат, я на говноланге пишу, потому и бомбит.
Чем хуйней страдать, лучше бы по сути ответил, а еще лучше просто заткнулся.
341 2951731
>>51667
Таблетки прими и попустит.
342 2951761
>>51122
Удаленки есть, мелкие конторы, ищи на хх, всё время ищи, месяц, два. Будет с десяток отказов, но найдёшь. Заодно на тестовых поделаешь, посмотришь кто чем занимается.
Никто натаскивать тебя не будет нигде и никогда, ни сейчас, ни во время работы, ни через десять лет.
343 2951766
>>51196
Бл, что такого в этом ресте? Чё все носятся с этим рест апи, лучше б полезным вещам учили, например, архитектура проекта, да даже банальное расположение исходников в папке и то полезней будет. Это гораздо важнее и сильно поможет сделать код поддерживаемым.
Этот рест апи уже кринж какой-то честно говоря.
344 2951804
>>51766

>исходников в папке


Это всё в гайдлайнах прописано - стайл и бест практис, потом надо начинать что-то писать, рест-сервис это простое и в то же время самое базированное из всего, так как встречается в вебе повсеместно, набив руку на простых рест-крудах можно уже переходить к архитектуре, и нормальных книг по архитектуре на самом деле почти нет, есть паттерны проектирования, из которых строится программа, но это всё довольно абстрактно и в отрыве от практики не очевидно где какие инструменты применяются, так что этот этап требует создания большого количества кода и может затянуться на годы.
345 2951810
>>51804
По архитектуре вообще ничего нет. Каждый делает как хочет. После сотни рефакторингов и тысяч коммитов я так и не пришёл к чему-то одному чтоб было заебись. Но по крайней мере уже начал приходить к чему-то правильному.
Расположение исходников в папке на самом деле тоже часть архитектуры, позже это поможет разбивать проекты на микросервисы.
346 2951820
>>51766
Изучай Clean Architecture и DDD. Там вся база написана, единственно годная на текущий момент
347 2951828
>>51820
Про ddd пишут что это очень нужно, очень важно, полезно и дохуя круто, как какой-то философский камень. Просто мешанина из умных слов: единый язык - что за язык, причём тут это? Это и так очевидно что надо сделать какой-то стандарт. Какие-то суперабстрактные слова, даже не сущности, слабо отссылающиеся на реальный проект.

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

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


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

>позже это поможет разбивать проекты на микросервисы


Ты так говоришь, как будто микросервисы это что-то хорошее, и, более того, обязательное к использованию. А это немножечко не так.
Это серьёзный оверхед, и нужны серьёзные причины, чтобы он стал приемлемым.
350 2952030
>>51828

>единый язык - что за язык, причём тут это?


Не "единый", а "ubiquitous".
Не надо читать русские говнопереводы.

Все участники проекта (включая экспертов в предметной области) должны говорить на одном языке. Если ты не понимаешь этого, значит просто не участвовал в больших сложных проектах, или участвовал, но, на низовых ролях.
Язык (человеческий) - это вообще важнейшая вещь в программировании. Так работает мозг. Ты не можешь писать программу, если не вполне понимаешь проблему. Именно поэтому вокруг столько плохих программ.
Тот же Дейкстра говорил, что исключительно хорошее владение _родным_ языком является важнейшим качеством для программиста. Очень рекомендую читнуть вот это (на русском):
https://informatika-21.ru/pdf/dijkstra.pdf
См. стр. 38, например.
351 2952034
>>51853
Аналоги?
352 2952049
>>52016
По необходимости. Чтоб это было легко сделать, плюс это сбособствует разделению независимых участков кода.
Разбивать когда это не надо конечно не нужно, это идиотизм.
353 2952058
>>52034
Да это байтоеб, ему пох
354 2952074
>>52049
Нет, я не про разбиение вообще (сервисы, функциональные модули etc), а именно про микросервисы.
Это просто дичайший оверхед, и то, что сейчас это считается чуть ли не обязательным паттерном - это просто ужасно. Вообще, вся эта облачная хуйня - это реальная деградация. Возврат в каменный век, буквально.
355 2952085
>>52074
Он хорош в том плане что передача данных между сервисами идёт через grpc, это быстрее и удобней в плане разработки. Микро это или нет уже другой вопрос.
356 2952130
>>52085
Вот, это тот самый случай, когда отсутствует ubiquitous language.
Я тебе про Фому, а ты мне - про Ерёму.

Я имел в виду микросервисы как паттерн. В том числе, обмен по grpc или чему-то подобному. Проблема в том, что программа строится из слабо связанных распределенных кусков. Нет единой базы данных, нет нормальных транзакций. И т.п.
Хорошо ли это? Это плохо. Почему же так делают? Потому, что надо, чтобы это работало в облаке. И чтобы держать миллион реквестов в секунду. А если миллион не надо - микросервисы тоже не надо. Как то так.

Когда я сказал, что облака - это деградация, я имел в виду, что куча отработанных паттернов сливается в унитаз, и всё начинается с нуля, на днищевом уровне. Про БД и транзакции я уже сказал. Другой пример - пользовательский интерфейс. Интерфейс в браузере - это днище. Но, сейчас уже выросло целое поколение, которое этого не понимает, и нормальных бизнес-UI не видело никогда. И т.д.
357 2952135
>>52074

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


Это не хуйня, когда тебе действительно нужны облака
358 2952139
>>52130

>Интерфейс в браузере - это днище


Потому что либы для нативных интерфейсов говно ебаное
359 2952639
>>52130
А как лучше, железный сервер у себя в подвале держать?
360 2952683
Сегодня опять сорвался и полдня учил РНР. Сейчас сижу и корю себя за срыв.
361 2952687
>>52683
Ничего страшного,гоферу необходимо время от времени писать на нормальном языке чтобы не заработать птср
362 2952698
>>52639
Любая программа проходит через этап "сервер в подвале", так как это тупо дешевле и проще, 99 из 100 на этом этапе остановится, из них одна выстреливает - переезжает в цод, прменяется простое масштабирование по количеству инстансов и cdn, и только потом, когда программа уже приносит хорошую прибыль и продолжает расти - нанимают опытных разрабов, максимально формализуют все требования на бумаге, проводят рефакторинг и монолит распиливают на микросервисы. Пилить программу сразу в микросервисной архитектуре - это бред, постоянное изменение требований и подгон под реалии просто задушат разраба, так как микросервисы - это очень сложная и мудовая в работе штука, а когда внятных требований нет - нет возможности продумать изоляцию данных и логики, релиз затянется до второго пришествия.
363 2952703
>>52683

Сам работаю на PHP, есть пара проектов на Go. Пытаюсь перекатиться в Go но блять сотыги сложно найти РАБоту куда меня возьмут без просадки по ЗП, учитывая годы опыта ковыряния PHP и гомофреймворков под него
364 2952705
>>52698

>Любая программа проходит через этап "сервер в подвале"



Из какого года капчуешь? Щас этот этап заменен на облако. Облако для прототипов куда лучше сервера в подвале
365 2952709
>>52703
У тебя хотя бы работа есть, а мне грозит голод и накопление долгов
366 2952714
>>52705
Да, да, главное кредитку привяжи пожирнее, чтобы счета выставлять, когда забагованный код случайно утилизирует месячную квоту за пару часов.
367 2952730
>>52714
Аренда своих датацентров это уже следующий уровень, когда проект приносит профит, нагрузка предсказуемая без резких скачков и есть время на оптимизировацию затрат.

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


Выставляешь алерты/делаешь квоту и говняка не будет
368 2952799
>>52714
Код на проде в принципе не может месячную квоту утилизировать. Если у тебя есть способность кидать на прод забагованную сборку, то земля бетоном, что уж сказать.
369 2952885
>>52714

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



Возьми тогда vps-ку где по месяцу. Если у тебя нормальная посещалка то того интернет соединения что ты покупаешь себе в хату тебе будет мало. А хороший тариф дают только юрлицам.
370 2952932
>>52799
менеджер в треде, давайте посмеемся
371 2953058
>>52639
Лучше виртуальный сервер на железяке, которая стоит в серверной комнате.
А серверная комната в нашем случае - таки в подвале, лол.

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

Вообще, "монолит vs микросервисы" - это классическая ложная дихотомия.
Это просто разные вещи, под разные случаи использования, со своими плюсами и минусами.
372 2953083
>>52683
Если у тебя нет опыта, но тебе нужна работа, чтобы было на что жить - то PHP - это один из лучших вариантов.
А Го никуда не денется. Будешь не вкатуном, а свитчером, лол.

Это не говоря о том, что приличный девелопер должен более-менее свободно знать несколько языков. Причём, один из основных - английский.
373 2953233
>>53058

>виртуальный сервер на железяке, которая стоит в серверной комнате.


>А серверная комната в нашем случае - таки в подвале, лол.


Чего стыдиться, нормальный вариант абсолютно - когда эти чипы китайские продают на развес, собрал стойку, накидал этого барахла на полтерабайта оперативы, пачку процессоров, даже на галимый китай хуйнанжи встаёт xen-виртаулизация, ssd, а там уже крутится всё что нужно, мощности там лошадиные абсолютно, и стоит буквально хуйню.
374 2953250
а они добавили в тулчейн телеметрию? или их захуесосили и на этом нахрюк закончился?
375 2953425
Есть тут те, кто трудоустроился в 2023 году?

Сколько готовились?
376 2953932
Тыкал в тайпскрипт с ряктом, а тут на стажировку устроился, мне на собесе предложили этот ваш го учить.
Так вот, а что можно интересного и небольшого с этим го сделать то? Просто с жсом я могу нахуярить по-быстрому spa, которое что-то будет делать и выглядеть заебись, а тут только в консоли ковыряться, если в сложные вещи не лезть, я даже как-то хз.
377 2954062
>>53932
Да много чего. Какие-нибудь сервисы по перевариванию одного говна в другое. Короткие ссылки или ещё какую залупу
378 2954073
>>53932

>стажировку устроился


Удалёнка или в офисе?
379 2954081
>>54073
Удаленка (но я не в рф если что)
380 2954198
>>53932

>что можно интересного и небольшого с этим го сделать то?


В Го - встроенная поддержка JSON.
Простейший REST API сервис для твоей SPA делается в несколько строк кода, буквально. Без базы данных, аутентификации и т.п. естественно.
381 2954219
Методы vs Функции

Го - не обычный ОО язык. Если в обычном методы рулят вообще всем, то в тут - не так.
Насколько я сейчас понимаю, методы нужны только в 2-х случаях:
1. Имплементация интерфейсов, это очевидно.
2. Инкапсуляция полей - только геттер, только сеттер, сложная логика вычисления значения поля и т.п.
Во втором случае поле является не-экспортируемым, и для него определяются сеттер и/или геттер. В этом случае можно использовать и функцию, но, с методом лучше. И можно и интерфейс прикрутить - сразу или позже.
382 2954319
>>54219
Методы нужны для работы с конкретным объектом. Функции общие.

Всё.
383 2954359
>>54219
че спросить то хотел
384 2954384
>>53932
Напиши свой докер или оператор для кубов какой-нибудь
385 2954438
>>54319

>Всё.


Не понял, а чо ты такой дерзкий, сынок?
И типа функции не подходят для работы с конкретным объектом, или что?

>>54359
Функции не имеют целого ряда ограничений, присущих методам.
Поэтому, в общем случае удобнее применять их.
Но, есть случаи, когда методы использовать просто необходимо.
Два очевидных случая я перечислил.
Есть ли другие?

Это вопрос к тем, у кого есть реальный опыт работы
386 2954478
>>54438
Вопрос про методы, процедуры и функции это вопрос чисто теоретического характера из учебника по общей информатике, им валят ленивых студентов первокурсников на зачетах, практического смысла не имеет.
387 2954503
>>54478
Какой ещё блядь "общей информатики"?
Что за хуйню ты несёшь?
И, главное - зачем?
388 2954523
>>54503
Той самой, первый семестр первого курса, лабораторная работа №4, такие недоступные, такие непонятные, будоражащие умы методы, процедуры и функции.
изображение.png439 Кб, 1049x629
389 2954542
>>54523

>лабораторная работа №4


Вот эта, что ли?
390 2954546
>>54523
Мальчик, будь так добр, сделай дедушке одолжение - залезь обратно в ту дыру, из которой ты вылез.
391 2954597

>Лучше виртуальный сервер на железяке, которая стоит в серверной комнате.


>А серверная комната в нашем случае - таки в подвале, лол.


>Чего стыдиться, нормальный вариант абсолютно


Пиздец днище. Почему в шаро/джава/питоно-треде нет таких днище идей? Почему такие обсоски только тут?
392 2954627
Если функция обрабатывает только один конкретный объект, то его надо сделать методом. Всё просто как дважды два. Зачем вести душные дискуссии на тему, я не понимаю.
393 2954628
>>54597
А в чём, собственно, днище?
В идее о том, что свои данные надо хранить у себя, а не у дяди?
Скока тебе годиков, сыночка?
394 2954630
>>54627
Ты снова написал какую-то дичь.
Кем ты работаешь, если не секрет?
И сколько тебе платят за вот такую вот экспертизу?
395 2954654
>>54628

>А в чём, собственно, днище?


>В идее о том, что свои данные надо хранить у себя, а не у дяди?


Никакому хостеру не уперлись данные твоих "Рога и Копыта". Кого стоит боятьcя, так это ментов, вот эти придут технику опечатают и заберут и сиди и без техники и данных.
Это еще не поднимая вопрос, как обеспечить бесперебойную работу хотя бы на уровне 99.9%.
396 2954703
>>53250
под кроватью глянь телеметрию
397 2954715
>>54654
Да.
И камеру заклеивать на ноуте тоже не надо.
Бизнес-ноутбуки, правда, делают со шторками на камерах, но, это просто так, чисто для лулзов.
398 2954721
>>54627
Почему такие хуепуталы занимают нормальные позиции, а я новую работу на го не могу найти?
мимо синька на петухоне
399 2954723
>>54597
Потому что го рекламируется как очень быстрый и производительный язык. Идеальное сборище для байтоебов и вечных вкатунов, которые считают микросекунды для своего невелосипеда.
Вместо того чтоб наконец закончить проект, они думают что лучше использовать - методы или функции.
400 2954727
>>54721
Если "хуепуталы" занимают нормальные позиции, а ты нет, может ты хуепутало, не?
401 2954734
Куда вкатываться - Go, Python, Node.js?
402 2954761
>>54727
Ну так он на то и хуепутало, что успел за счёт языка (не программирования) вовремя пролезть, а остальных теперь ебут по алгосикам и архитектуре, чтоб на место рядом с ним претендовать.
403 2954779
>>54723

>они думают что лучше использовать - методы или функции


А вот ты думаешь всегда об одном и том же - где бы покушать писюнов.
И снова и снова голод приводит тебя сюда, ты привычно пишешь то, о чём тебя не спрашивали, и получаешь очередную порцию.
404 2954798
>>54779

>И снова и снова голод приводит тебя сюда


Жалко, что не кадровый.

мимо
405 2955150
>>54761
ну кстати сейчас хожу по собесам на мидла (3 года опыта) и алгосов почти нигде нет. Ну я бы их в любом случае не нарешал, так что кайф
406 2955196
>>55150
Алгосов нет, ок.
А что есть?
И на какую зп ты претендуешь, имея 3 года опыта?
Алсо, на скольких собесах уже был? Ты в ДС?
407 2955294
>>54715

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


В голос с этого скуфидона параноика. Иди галоперидолу наверни. А как пропустит пойди посмотри актуальные бизнес модели HP, Dell, Lenovo, Apple и найди там шторку.
408 2955343
>>55294

>скуфидона параноика


Может быть просто человек, увлеченный информационной безопасностью? Я вот после знакомства с метасплоитом все камеры на девайсах заклеил.
409 2955355
>>55294
Назвал оппонента "скуфидоном", и аж потеплело, правда?
410 2955412
>>55343
В наше время хочешь-не хочешь, а увлечёшься, лол.

Вообще, речь шла про серверы для внутри-корпоративных решений - виртуальный сервер on-premises vs виртуальный же сервер в облаке. Я сказал, что собственный - лучше, чем у дяди (>>53058). Если можешь себе позволить.
Почему? Потому, что дядя проебёт твои данные, и ему вообще ничего за это не будет. Потому, что это прописано мелким шрифтом в пользовательском соглашении. Это во первых.
Во вторых - если облако за границей, то в наше время это немножечко неудобно. Если в РФ - то, твои данные не только проебут (вероятность x10), но и продадут или просто предоставят по запросу из органов. И ты узнаешь об этом позже всех.
Насчёт того, что в облаке надёжней (если не проебут, конечно) - это не всегда так. В моём случае - точно не так. Я умею делать такие штуки, о которых в средне-васянской конторе даже и не мечтают. И аптайм у нас лучше, чем в облаке, или, как минимум, не хуже.
411 2955722
Чем сабж сложен для вкатыша и почему на нем сложно писать программы? Какие подводные, если я хочу перейти на него с си, например?
412 2955725
>>55722 >>2955712 →
Если бы ты хотел перейти с си - просто перешел бы, и всё.

Ну вот тебе пример - у тебя есть интерфейс Doer.
И есть структура его реализующая - SomeDoer.
Есть 2 функции: одна принимает переменную - doer Doer, другая - слайс - doers []Doer.
И у тебя есть 2 переменные типа SomeDoer - someDoer (один объект) и someDoers (слайс).
Можешь ты передать их в соотв. функции? Да-нет-почему?
(квадратные скобочки пропадут, скорее всего, но и так понятно)
413 2955740
>>55294
Ты блядь свой телефон посмотри и открой разрешения российских приложений. Охуеешь сколько их там, геолокация, блютуз, вайфай когда она вообще не работает с ними напрямую.
414 2956071
Перед изучением Go будет полезно почитать про C/C++, чтобы усвоить какие-то концепции? Например, стоит ли почитать книжку Кернигана про C и его же "Практику программирования", написанную в соавторстве с Пайком?

Вообще какие материалы НЕ про Go посмотреть, чтобы потом было понятнее, почему этот язык устроен именно так, и пользоваться им более грамотно.
6155nkJPEbL.SL1233.jpg77 Кб, 1000x1233
415 2956083
>>56071
А может потом еще вот это полезно почитать, если базовый C освоить?

https://beej.us/guide/bgnet/
https://beej.us/guide/bgnet/translations/bgnet_A4_rus.pdf
416 2956113
>>56071
>>56083
Это лишнее, мне кажется. И концепции там другие.
В Си будет куча низкоуровневого говна, которое тебе не нужно в принципе, и которое будет только мешать пониманию сути.
Хотя, конечно, минимальное знание Си - вообще полезная для программиста вещь.

По сетям - есть книги для Го. По системному программированию - тоже. Зайди на scanlibs.com и сделай поиск типа go network programming, go system programming.

https://scanlibs.com/network-programming-go-language-2nd/
https://scanlibs.com/network-programming-go-secure-reliable/
https://scanlibs.com/hands-systems-programming-go/
417 2956167
>>56071
По языку советую читать документацию. Про компьютеры в целом это другая литература совсем. Книжки по конкретным языкам на 90% состоят из воды, лучше не забивать ими голову.
418 2956243
>>55343

>Может быть просто человек, увлеченный информационной безопасностью?


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

>>55355
Скуфидон первый начал про возраст

>Скока тебе годиков, сыночка?



>>55740
Ты вначале список ноутов дай, потом про разрешения приложений поговорим.
419 2956246
>>55412

>Потому, что дядя проебёт твои данные, и ему вообще ничего за это не будет.


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

>И аптайм у нас лучше, чем в облаке, или, как минимум, не хуже.


Ну давай расскажи: какой у вас в рогах и копытал SLA на реакцию в случае атеджа? А сколько магистральных линий интернета идут в ваш подвал? А каков запас топлива для дизельгенератора?
420 2956264
>>56167 >>56243 >>56246
Зачем ты тут умничаешь и флудишь здесь?
Иди в /b - там все твои друзья.
421 2956386
>>56167
Почему тогда в школе русский язык изучают не по энциклопедиям, а по учебникам? Может эта вода как раз позволяет усвоить материал лучше?
422 2956414
>>56071

>чтобы потом было понятнее, почему этот язык устроен именно так


Я как-то перечитывал книгу Кернигана про Си, и там прямо видно где авторам Го было больно настолько, что они начали делать новый язык точнее, им было больно от плюсов, и они хотели нормальный си для прикладных задач.
Но я не уверен, что это прямо очень полезно для профессионального роста.
Лучше почитать "100 ошибок Go" для углубления в язык, книгу с кометой про операционные системы (как раз недавно перевели на русский), и книгу с кабанчиком, чтобы понять, что в клиент-серверных приложениях ничего никогда не было просто и никогда не будет.
423 2956430
>>56414
Авторам Го было больно? С трудом верится что авторам этого чуда вообще знакомо чувство боли связанное с языками, иначе они действительно сделали бы нормально, а не так, как этот язык по факту устроен и выглядит.
424 2956481
>>56430
Ты говоришь так, как будто го делали какие-то хипстеры для хипстеров.
Го делали гигачады, которые придумывали ютф-8 и писали за один день программы для древних пекарен с нестандартной архитектурой.
Им не нравились сишные строки, массивы, адресная арифметика, управление зависимостями, они их переписали и добавили асинхронность прямо в синтаксис языка и им норм, у них теперь какой-то кусочек гуглового бэкенда быстро компилируется.
А страдают те, кто вкатился в го, потому что думал, что это модно молодежно и много денег плотят.
425 2956510
>>56430
кому война, а кому мать родна. создатели го не хотят повторения с++, которое такие как вы делаете с каждым языком
426 2956670
К сожалению API уже не перепишешь, обратная совместимость не позволит этого сделать, так что Гошечка - уродец навсегда, таким родился, 70-летние деды не могут зачать здорового потомства, да и не видят они проблем, зрение уже не то, профдеформация байтоёбов это не шутки. Сейчас технология на хайпе как это бывает со многими новыми вещами, но деды уже пенсионеры, а пенсионеры уходят на почётный отдых, и останется Гошечка работать где-то на задворках гугла, в узких местах и параллельных задачах, а еще через 10 лет никто и не вспомнит что такое вообще было.
427 2956723
>>56386
Б-же, да делай что хочешь
428 2956971
>>56670
Ты ведь трогал себя в разных местах, пока это писал?
Не стесняйся, здесь все свои.
429 2957334
>>56670
спасибо за мнение. тебя гошники обидели или что
430 2957673
Вкатунам же прямо говорят, Го - это не язык общего назначения, но что это значит? Это значит что у инструмента есть своя ниша, достаточно узкоспециализированная, под которую он создавался, то есть язык не эффективен ни для чего кроме параллелизма и изоляции в "микро"-программы, изначально не был заточен ни под что другое. То есть сравнивать такие вещи как Джава\ПХП против Го - изначально ошибочное суждение, Го это не замена ничему, это расширение горизонта. Го это просто напильник, которые стачивает острые углы других технологий, отсюда такая специфика найма, почему не берут на работу без опыта - кому нужен работник, у которого в ящике инструментов один лишь напильник?
431 2957741
>>57673
На двачах вкатунам говорят не вкатываться. Чтоб конкуренцию не создавать
432 2957988
Вот постоянно слышу, что на го пишут высоконагруженные приложения. А можно где-то посмотреть примеры этих высоконагруженных приложений?
433 2958025
>>57988
Озон
434 2958029
>>58025
У них открытый исходный код сайта?
435 2958035
>>58029
Нет, если ты хочешь найти высоконагруженный опенсорс, то у тебя не получится. В опенсорсе в целом только инструменты для создания продуктов.
436 2958038
>>58035
Как тогда научиться писать высоконагруженные приложения, если их никто не показывает?
437 2958042
>>58038
Через работку, очевидно же. Ну и в целом, хуйлоад это в первую очередь про архитектуру и сустем дезигн.
438 2958051
>>58042
Но ведь на работу не берут, если не умеешь писать высоконагруженные приложения
439 2958071
>>57988

>на го пишут высоконагруженные приложения


Я вообще никогда не слышал за рубежом фразу "высоконагруженный". Это устаревшее понятие. Никто так не говорит, это чисто внутрироссийская тема. Примерно как "импортозамещение". Я и гуглил "high load websites", и книги смотрел, и статьи. Нихуя нет нигде. Скажи любому американцу "I make highload websites", он ахуеет и переспросит: в смысле высоконагруженные? Что ты имеешь ввиду?

Тема на самом деле высосана из пальца. Смысл короче в том, что люди просто пытаются выжать максимум ресурсов из нихуя. За рубежом это не актуально, так как там работают другие принципы. Там говорят "облачные технологии". То есть, я предоставляю код, а облака обслуживают всю аппаратную часть. И если завтра на сайт прибежит миллион хомяков, меня не ебёт как именно облака всю эту ораву обслужат. Я плачу только за количество вызовов. Оно десять миллионов раз по 1 секунде отработало, я оплатил эти 10 миллионов. А насколько оно нагружено, чего и как меня не касается.
440 2958072
>>58051
Ну вот и не работай. От работы кони дохнут.
441 2958077
>>58071

>Там говорят "облачные технологии".


Там уже маятник качнулся и упоминается новая методология "on-premise hosting". Скоро начнут писать сайты на перле.
442 2958084
>>58077
"On-premise" - это как раз то, что любят в России. У нас свой путь. Мы не ищем простых решений, лучше закупим сервера, наймём сисадминов, построим дата центр и будем всем этим самостоятельно рулить. Зачем нам готовые решения? Понятное дело, что "высоконагруженность" это компенсация. Люди экономят за счёт того что язык go компилируемый, он работает раз в 10-20 быстрее интерпретируемых языков. Соответственно, кабану легче купить условно говоря 5 серверов вместо 20 серверов.
image.png17 Кб, 663x81
443 2958092
Орнул чутка. Нужно ли будет отправлять диаметр ануса в гугл, чтоб угодить всем?
444 2958093
>>58084
Найс готовое решение, которое отказывает тебе в сервисе потому что паспорт не тот и страна не та, ясное дело никто не хочет ничего приземлять, ебаться с железом, потому что это гемор, но жизнь повернулась так что всё приходится резервировать локально.
445 2958096
>>58071
Ахах
Многие пользуются хостингом, где надо платить за ядра, память, диски и тд. Вот там и нужен хайлоад.
А облака, где платят только за количество запросов редко кто пользуется
446 2958159
>>58093

>отказывает тебе в сервисе


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

>>58096
Это обычная экономия. Не обязательно для этого выдумывать новые слова. Есть прекрасные другие слова - resilience (устойчивость), scalability (масштабируемость), performance (быстродействие). Обычно говорят просто - решение масштабируемое или нет. Имеется ввиду способность выдерживать растущий поток трафика. А дальше уже разделяют вертикальное масштабирование или горизонтальное. Здесь хотя бы понятно о чём идёт речь. А "высоконагруженное" ни говорит ни о чём.
447 2958172
>>58159

>Что ты мне говоришь, кто мне чо отказывает? Я до сих пользуюсь и амазоном и gcp. К тому же яндекс облако никто не отменял.


Интересно как ты их оплачиваешь и как всё это вообще через бухгалтерию проходит, а так же как относишься к тому, что РКН банит пачками подсети облачных провайдеров, я вот лично так недавно с cloudflare впёрся.
448 2958265
>>58071
Два чая этому просветлённому.
Здесь мерилом работы считают усталость

На родине программирования это называется high performance.
Причины, скорее всего, примерно те же, по которым "screwdriver" по-русски называется "отвёртка". А не "завёртка" например.
449 2958275
>>57673

>Го - это не язык общего назначения


Это кто такое говорит? Твой дядя?
Те, кого я слышал, говорят, что Го - это Си 21-го века.
450 2958300
>>58077

>Скоро начнут писать сайты на перле.


Перл - охуенный язык. Но, сайты на нём писать сейчас не надо, конечно.
Я пару лет назад на нём написал интересную систему, которая в числе прочего, занимается многопоточной обработкой сообщений, приходящих по сети (через AnyEvent).

Система такого рода, что просто просится, чтобы её переписали на Го. Но, делать этого я не буду, т.к. производительность там не важна вообще (хотя Перл очень быстрый для скриптового языка, быстрее Питона). И используется сторонняя перловая либа, которую тоже тогда надо переписывать, а лень.
451 2958479
>>56264
Я поясняю дебилам, что они дебилы. Не нравиться natribu.org к твоим услугам.
452 2958482
>>58092
Это из-за шаблона:
fmt.Errorf("zalupa vo vremya drochka happens: %v", err)
т.е. у тебя один err оборачивается в другой, ну и тут как бы заглавные не уместны.

Можешь всплакнуть о стектрейсах Java/C#/Python/C++
453 2958543
>>58482
Ну, ты же понимаешь, какой ценой даются те стек-трейсы, правда?
454 2958591
>>58092
Ахуеть открытие, ЛИНТЕР к чему-то анально принуждает, а мы и не думали
455 2958596
>>58543
Ценой более удобной отладки и поддерживаемости проекта?
456 2958613
>>58596
Тебе бы русский подучмть для начала.
Ибо ты очевидно его не понимаешь.
А потом уже здесь менторствовать, если желание ещё останется после этого.
457 2958678
>>58543
Могли бы добавить дебаг мог с такой опцией
мимо
458 2958861
А в Go были какие-то существенные изменения, которые сделали неактуальными книги по нему, выпущенные до 201x года?
459 2959047
>>58543

>Ну, ты же понимаешь, какой ценой даются те стек-трейсы, правда?


Единственная реальная цена: немного больше расход памяти на стекле. Затраты на сбор стектрейса вообще похуй, если у меня произошла ошибка - я хочу видеть стектрейс. Это важнее чем сэкономить немного CPU.
460 2959102
>>59047
Им-то откуда знать полезность стектрейсов, в петпроектах он не нужен
461 2959120
>>58861
Они как бы актуально, но всё равно устарели, потому что язык развивается. Старый код выполняется, но так уже не пишут.
462 2959191
>>59120

>но так уже не пишут


А что именно существенно поменялось? Вот много любопытных книг по Go 2019 года. Тогда язык был совсем другим?
463 2959384
>>59191
Кое-что в стандартной библиотеке устарело, добавили обёртывание ошибок, сам интерфейс error теперь требует метода Error(), а не String() как раньше, система пакетов поменялась, добавили дженерики. Ну и ещё помелочи.
464 2959388
>>59191
Ещё забыл, что они меняли семантику всяких неочевидных вещей, но там каждый случай надо отдельно расписывать.
465 2959808
>>59102
Зачем ты мне рассказываешь про полезность стектрейсов?
Я на джаве пишу ещё с тех пор, когда ты пешком под стол ходил.

Речь шла про то, что при агрессивном минимализме Го стектрейсы даже идеологически неприемлемы. Хотя, не удивлюсь, если сделают в дебаггере, например. Дженерики же сделали, пускай и через жопу. Хотя незадолго до того писали, что дженериков в Го не будет никогда, а если и будут, то в 2.0.
Kot 466 2959812
Привет, что пишите на Go? Что можете сказать за хакинг, безопасность и Go? Используете Go вместе с другим языком?
467 2959825
Чем ближе я знакомлюсь с Го, тем больше понимаю, что это не моё.
Вроде всё ОК, но постоянно ловлю себя на мысли, что делаю всё через силу. Что мне очень трудно выражать свои мысли на этом языке. При этом на джаве, перле, питоне, джаваскрипте, тайпскрипте, и даже на си - такой проблемы нет.

Я знаю, тут есть джависты-свитчеры. Скажите - это нормально?
Насколько я понимаю, и с работой тоже не очень на Го?
Стоит ли продолжать?
Испытали ли вы в итоге сатори? Или просто тянете лямку?
468 2959859
>>59825
С чего ты вдруг задумался о вкате в Го?
469 2959877
>>59859
Если коротко - make programming fun again.
И джава стала слишком большой. А я, надо сказать, приверженец минимализма. И просто устал тянуть огромные проекты.
Ну, и я не молодею. Место энрерпрайзного консультанта мне не светит (наверное). Поэтому, просто хочется чего-то, что сложное не в ширину, а в глубину. Чтобы жизненный опыт был к месту.
470 2959914
>>59877

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


Lisp.
471 2960023
>>59877
Для души пишу на Руби, более приятного и удобного языка не придумали пока что.
472 2960028
>>60023
Elixir
473 2960030
Сап, решил попробовать го, являюсь миддлом жавы. На сколько рабочая схема будет вкатиться после книжек/готура и пары пет проектов на вакансию мидла? Или глупая затея?
474 2960034
Джависты массово бегут в Golang. Что-то случилось.
475 2960035
>>60034
Да мне прост интересно
476 2960085
>>60030
Если есть опыт, то на собес позовут, но всё будет зависеть от того как пройдёшь.
477 2960086
>>59825
Попробуй РНР
478 2960159
>>60034
Да никто не бежит, инфоцыгане форсят эту тему чтобы продавать курсы, любой разраб с опытом знакомится с Го, понимает что его место - висеть хттп-воркером на бэкенде и перемалывать жсоны, и на этом интерес угасает, просто еще один ситуативный инструмент в копилку, естественно никакой технологией будущего даже не пахнет.
479 2960162
>>60034
Я как доп инструмент изучаю,свитчиться на го нахуй надо
480 2960175
Го пизда какой неудобный в плане синтаксиса, какой язык будущего.
Если на том же петухоне каким-нибудь образом запилят нормальный быстрый интерпретатор, то го можно будет выбрасывать на помойку. Куча библиотек, удобный синтаксис.
И нет, это не потому что го молодой, это сам язык такой. Каждый раз шлепать одни и те же шаблонные строки кода да ну нахер, на большие проекты сомнительно годится. За десять с лишним лет-то можно было уже б набрать аудиторию
481 2960189
>>60175

>го молодой


Это заблуждение. Его придумали в 80-е для Plan9, но тогда не взлетело и Роб Пайк решил подсунуть его гуглу в конце нулевых.
482 2960195
>>60175
Бессвязное кукареканье про удобство, большие проекты.
Чел у кубера больше миллиона строк кода на года. Пацаны и не знали видимо что можно.
483 2960210
>>60175
Я собираюсь написать фреймворк типа Лары на голанге и вытеснить РНР с рынка. 80% сайтов в интернете будут переписаны на голанге.
484 2960241
Привет!
Как осуществляется локальная разработка на Golang? Есть какой-то мануал, как сделать локальное окружение? Докер-хуёкер?
485 2960254
>>60195

>Чел у кубера больше миллиона строк кода на года. Пацаны и не знали видимо что можно.


Мокрописька студентоты.
486 2960261
>>60189
Это многое объясняет.

Загуглил (лол) эту тему.
Нашёл вот это:
https://www.reddit.com/r/golang/comments/b8dgr/curious_what_the_relationship_among_go_plan_9/
14 лет назад на полном серьёзе писали про го, как про замену джаве. И как это было бы хорошо. Пиздец.
Вообще, не устаю охуевать с могильщиков джавы, люди в принципе не понимают, что такое джава, почему на ней пишут энтерпрайз и прочий фарш, и т.п.
487 2960263
>>60195
Ты сделай сначала что-то сложнее микросервисов и байтоебства. И хотя бы год поддерживай реальный средний проект на го.

Мне кажется поэтому на го так мало библиотек. Люди тупо не хотят работать с большим количеством кода. Когда у тебя в проекте четыре-пять го файлов это ещё ладно, но когда их больше 50 уже становится неприятней во всём этом разбираться. Поэтому видимо его и позиционируют как язык для микросервисов и всяких узких мест.
488 2960311
Вот что мне не нравится в голэнде, что она заставляет больше набирать текста, чем в вс код. Хотя казалось бы, что голэнд позиционируют как более удобный инструмент.
О чём собственно речь? Допустим, я хочу набрать какое-то внешнее имя в формате пакет.Функция или пакет.Тип. В вс коде мне достаточно набрать: "па" (или больше символов), затем Tab и он дополнит до полного имени: пакет. Дальше могу также выбрать функцию или пакет набрав первые буквы.
В голэнде так невозможно сделать, он конечно сразу догадается о пакете, но если нажать Tab то добавится ещё функция, но скорей всего не та, которая нужна, а другая. Поэтому надо полностью набирать "пакет." и только после этого можно через Tab выбрать функцию или тип.
489 2960433
>>60261

>люди в принципе не понимают, что такое джава, почему на ней пишут энтерпрайз и прочий фарш, и т.п.


А ты понимаешь?
колодец.webm9,4 Мб, webm,
480x360, 1:23
490 2960456
>>60261
Один язык испоганили, теперь и наш хотят испоганить
491 2960513
Чтобы работать на Go обязателен Linux?
492 2960519
>>60513
Что бы работать в принципе обязателен убунту
493 2960531
>>60519
А какие-то требования по железу есть? Я просто понятия не имею, что бэкендерам требуется для этих докеров и т.д. Вот в машин лернинге люди себе берут помощнее ноуты.
494 2960552
>>60531
Докеры легковесны. У тебя больше памяти иде и браузер сожрут. Вообще вполне можно работать на ноуте 2 ядра 2 гига. Для комфортной работы конечно озу можно побольше, иначе свопится будет часто. Также лучше не выделять раздел под своп, а сделать через файл (ну порой инстраллер так не позволяет делать). Дело в том, что своп файл можно легко увеличить, а раздел переформатировать сложнее.
Из легковесных дистрибутивов могу посоветовать Linux Lite, Mint XFCE, Q4OS.
495 2960571
>>60311
Ебланоид нажимай не таб а энтер. Если тебе так критично жать именно на таб то перебинди
496 2960575
>>60552
Спасибо. Я как раз Mint на старенький ноут накатывал.

Пока тогда буду на старом всякие докеры ставить, а то на основном ноуте по учебе нужен Windows.
497 2960580
>>60571
А если мне надо перейти на новую строчку? Какой вообще дебил из жидбрейнс придумал использовать для этого ентер?
Перебиндить хваленная идея не позволяет. И да, я уже пробовал до этого и просто отключил автодополнение по ентер, поэтому работает только по табу, но там вариант с заменой, а не вставкой.
498 2960652
>>60580
В жидее есть в плагинах мапинги от других иде-попробуй их.
499 2960774
>>60433
К чему ты это спросил? Типа выебнулся?
Если да, то выебнулся ты глупо.

Я на джаве пишу уже очень много лет.
И, при этом, я ещё пять-шесть языков знаю на таком уровне, чтобы писать идиоматический код коммерческого качества.
Так что да, я понимаю. В отличие от тебя.
500 2960880
>>59191
хватит смеяться.......... по виду ей лет и питаеться она так себе, винтовку дай бог удержит, не говоря уже об акробатике. И на твоей картинке пацаны + с винтовками, тоже мне сравнил.
501 2960938
>>60774

>К чему ты это спросил? Типа выебнулся?


Что у мани на уме, то у него и на языке. Нет, я спросил, чтобы узнать в чем минусы джавы с твоей точки зрения.
502 2960939
>>60241
1. Пишеш go mod init, чтобы начать проект
1. Чтобы добавить зависимость пишеш go get
2. Перед коммитом пишеш go mod tidy
???
Локальная разработка
503 2960941
>>60938

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


в чем минусы и плюсы*
быстрофкс
P.S. Хахахах, дочитал твой пост, пиздец тебя задел обыкновенный вопрос, так порваться.
504 2960942
>>60580

> А если мне надо перейти на новую строчку?


В какой ситуации тебе нужно после того как написал "пакет." перейти на новую строку?
>>60652
Двачую, но вообще если очень нравится вскод то сиди пердоль его дальше, или смирись с особенностями жидбрейнса
505 2960944
Челик, который пишет идиоматический код на джаве и еще пяти-шести языках, а также идиоматические посты в этом итт треде, я тебя увожаю.
506 2960947
>>60944

> идиоматический код


идиотический

> идиоматические посты


идиотические

быстрофикс
507 2960952
>>60942
Я скачал пиратку голэнда, чтобы стать профессионалом, а на вс коде не пишут профессионалы.
image.png1013 Кб, 1200x630
508 2960955
>>60952

>Я скачал пиратку голэнда

509 2960956
>>60952
Профессионалам просто надо таски делать потому что тимлид ебет, а не ныть что кнопка делает не то что тебе хочется
510 2960997
>>60938
>>60941

>в чем минусы и плюсы


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

Плюсы:

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

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

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

Возможности метапрограммирования (развитый механизм аннотаций).

Удобный, очень практичный скриптовой язык-компаньон - Groovy.
Есть jRuby и jPython, но, это не то. Groovy лучше (для джавы).
Kotlin не предлагать!

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

Минусы:
Многословность.
Некоторая, скажем так, ригидность. Исправляется рефлекшном и байткод-инжинирингом.
510 2960997
>>60938
>>60941

>в чем минусы и плюсы


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

Плюсы:

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

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

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

Возможности метапрограммирования (развитый механизм аннотаций).

Удобный, очень практичный скриптовой язык-компаньон - Groovy.
Есть jRuby и jPython, но, это не то. Groovy лучше (для джавы).
Kotlin не предлагать!

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

Минусы:
Многословность.
Некоторая, скажем так, ригидность. Исправляется рефлекшном и байткод-инжинирингом.
511 2961160
Для равновесия напишу про Го.
Это, всё-таки, Го-тред.

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

Плюсы Го, с моей точки зрения:
Быстрая компиляция в нативный код.
Встроенная поддержка конкурентности, CSP.
Минимализм.
Ани-энтерпрайз, простые вещи можно (и принято) делать просто, а не наворачивать фабрики абстрактных фабрик.
Интерфейсы (дак-тайпинг) - когда-то я был лютым фанатом таких вещей. Потом энтерпрайз отучил. Но, всё-равно, тянет иногда на такое.
Простота (если привыкнуть к ряду необычных и фриковатых вещей).

Цели - мини проекты, автоматизация, девопс.
Саморазвитие - в смысле принятия альтернативных, анти-энтерпрайзных подходов.
Хотел бы я писать на Го фулл тайм? Пока не знаю.
512 2961168
>>60241
какой-то есть
image.png345 Кб, 1196x576
513 2961172
>>60997

>код читается на уровне подсознания (при наличии опыта)


это скорее что-то из МКБ-11
514 2961226
>>61172
Спринг - это не джава.
Это анти-джава, если угодно.
Алсо, даже одна ложка говна может испортить целую бочку мёда.
Но, мёд как таковой от этого говном не становится.

В своё время я прочитал книжку "Better Faster Lighter Java" (автор Брюс Тейт). И она произвела на меня неизгладимое впечатление. Брюс, правда, потом свитчнулся в Ruby, к сожалению. Но, в те годы это было модно.

Так вот - бессмысленные фабрики абстрактны фабрик пишут те, кто кроме джавы нихера не видел, и (по сути) не умеет программировать.
515 2961232
>>61226
А те кто умеют программировать как решают проблему выбора какую имплементацию создавать во время исполнения?
516 2961259
>>60997
Спасибо.
А что ты думаешь по поводу зоопарка из систем сборок? Меня это немного пугает после cmake/make.
И ещё вопрос по поводу всей это структуры проекта org/example и тд, отчего это вообще пошло и как мириться с этим?
Я просто сам с си и хочу перекатиться либо в джаву, либо в го.
517 2961292
>>61259
Зоопарк - это сильно сказано.
Есть Gradle и есть Maven. Стандарт - Maven.
Но, если проводить параллели с Си и make, то это будет, скорее, просто билд в IDE, без каких-либо систем сборок. А без IDE на джаве не пишут.

Выражение "структура проекта" не очень подходит. Это пакеты (неймспейсы). Т.е. у тебы не просто класс Hello, а com.example.Hello. И в том же проекте может быть и bar.foo.Hello, совсем другой.

И называй их как хочешь, никто не неволит.
Хелло ворлд - можно вообще без пакета, но лучше не надо, сделай хотя-бы package hello;
Имена доменов - это гарантия, что не будет конфликтов, и всё.
Если же тебя смущает сама иерархическая структура, то напрасно, это очень удобно. А вот в Го, как раз, что с пакетами, что с зависимостями - так себе.

Пара слов про классы. Джава-класс - это 2 в 1, и класс (шаблон для создания объектов) и модуль (просто набор переменных и функций, тот же неймспейс). Static методы и поля - это модуль. Обычные поля/методы + конструкторы - это класс. Никакой связи между этими двумя частями нет вообще, не считая того, что из статик-функций тебе доступны private поля класса (после создании экземпляра этого класса и при последующей работе с ним).
В принципе, можно писать код только на уровне модулей (только статик методами в классах), а классы делать только с public полями (как структуры), и это будет почти как в Си.

И, сразу хочу сказать, что вообще порог вхождения в джаву несколько высоковат. Почему - не так просто объяснить в двух словах. Просто в силу специфики вещей, которые принято писать на этом языке. Это сложные вещи, как правило. А если писать простые, то получается сложновато (многословно), и новичков это отталкивает. Т.е. могут быть проблемы с мотивацией. В этом смысле питон - гораздо более rewarding. Я когда-то с него начинал (ну не считая машинных кодов и перла, который я тогда не понимал, лол). Алсо - питон - прекрасный клей для сишных либ.
17024388017490.png51 Кб, 622x672
518 2961383
Индекс вката на голэнг снова зелёненький! Вкатываемся!
519 2961509
>>61383
Лучше присмотрись к профессии экономиста с такими охуительными расчетами.
520 2961521
>>61509
Это не мои рассчёты, а Влада с канала ДимСаула, его там забанили.
521 2961536
>>61383
А можно пояснительную бригаду?
Я как-то не увидел связи между циферками и цветом клеточек.

И что в этом списке делает C# ???
Кто и зачем будет в него вкатываться в здравом уме?
Могу предположить, что в стране есть изрядное к-во пожилых экс-дельфистов, ибо дельфи был популярнее 1С в своё время. Теперь, они, естественно, перекатились в шарп, и преподают это на курсах. И надо эти курсы кому-то продавать.
522 2961574
>>61536
Красный - если индекс вката падает, зеленый - если повышается.
15735421098170.png420 Кб, 512x360
523 2961717

> индекс вката

524 2962129
>>61383

>вероятность больше 1

525 2962360
Какой там курс вката сейчас? Планирую вкатиться ближе к выходным, на следующей неделе скорее всего не буду
526 2962480
>>62360
Судя по расчетам курс вката = 19.095, так что всё в твоих руках.
527 2962506
Ну шо, де там перекат?
528 2962733
Почему по го не сливают платные курсы? По другим языкам полно слитых курсов, а по го голяк.
529 2962816
>>62733
Ты правда веришь, что в платных тебе расскажут больше чем в видосах на ютюбе?
530 2962849
>>62816
Там хотя бы материал выстроен методически, а в видосах на ютубе абы как рассказывает какой-нибудь студент. У него у самого ещё каша в голове, собственно в видосы получаются такие же.
531 2962878
>>62733
Если чел не может изучить что-то без курсов, то как он потом будет работать?
532 2963032
>>62878
А ты как учишь?
533 2963045
>>63032
По документации к языку, либам, рабочим проектам на гитхабе. Статейкам на разных сайтах, если натыкаюсь на них. Иногда просто смотрю сорсы
534 2963053
>>63045
А вдруг ты упустишь какую-нибудь важную вещь, а потом на собесе окажется, что у тебя огромный провал в знаниях?
535 2963124
>>63053
А по курсам "какую-нибудь важную вещь" упустить не могут? Че за бред, как раз-таки ровно наоборот, если человек сам изучает по либам и докам, то у него куда выше уровень знаний будет.
536 2963175
>>63124
Го - идеоматический язык, а сам ты никогда не додумаешься до этих идиом и будешь писать непонятный код. А на курсах показывают лучшие практики и сразу разбирают типичные ошибки новичков.
537 2963249
>>63053
Перед собесом, очевидно, надо смотреть какие требования и какой стек. Да, и что значит "провал в знаниях"? Если каких-то навыков не хватает то так и говоришь, что не приходилось этим заниматься, никто не требует от тебя знать всё подряд в 21 веке, это идиотизм.

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

Почему-то все судорожно изучают всё подряд: граф деревья, алогритмы, пытаются написать свою ос, десятки петпроектов и всё ради того чтоб делать рест-прокладки. Зачем?
538 2963258
>>63175
На курсах показывают устаревшие практики. Хочешь что-то актуальное - смотришь сорсы популярных библиотек. Хотя даже там кринж можно словить местами.
539 2963298
>>63249

>работаю несколько лет


Чел, требования за эти годы изменились. Это раньше брали всех без разбору. Теперь если чего-то не знаешь, то сидишь без работы. Там народ опыт накручивает и собесы заучивает наизусть, а ты предлагаешь ничего не смотреть и с пустой головой вкатываться.
540 2963390
>>63298
Если идти на первую работу в известные конторы и за 300к со старта то конечно там требования ебанические. Я первое время за 40к работал в мелкой фирме.
541 2963434
>>63390
Дак никто не берёт даже на минималку, такой программист убыточный, потому что ему зп (хоть и маленькую) надо платить, а ничего полезного он не сделает, хуже того ещё будет отвлекать опытных работников тупыми вопросами.
542 2963599
>>63175
Читай книги (англоязычные).
Гугли интернеты (на английском).
Нет английского - значит нечего делать в этой профессии.
543 2963603
>>63434
Ну, не знаю.
Если ты знаешь базу языка, можешь по англоязычной книге сделать проект с веб-сервисами и т.п. - это уже не ноль, и свои условные 50 тыр ты отработаешь гарантированно.
Скорее всего, дело в том, что у нас большинство вакансий и коммерческих проектов на Го довольно специфические, и там надо сразу впахивать. Т.е., как обычно, кабан хочет потратить 3 копейки, а заработать миллион.
544 2963649
Я хуею, как же тяжело даётся концепт го после того как всё время до него сидел на петухоне и в целом трогал только ООП языки типо дарта, шарпа, терпения.жс. Эти функции мозг выносят. Структуры и методы к ним. Организация проекта пакетами. Будто бы другой мир совершенно, чувствую себя полнейшим неофитом.

Сам факт того что нет такого понятия как класс и статические методы (тут видимо это просто функции) вызывает непонимание как организовывать код.

Вот я хочу к примеру макс кучу написать, в каком-нибудь петухоне я бы создал класс MaxHeap, в конструктор поместил листик, создал бы классметод heapify и обработал бы им листик, метод бы вернул мне уже упорядоченый по правилам макс кучи листик и я присвоил бы его приватному атрибуту класса _heap какому-нибудь. Переопределил бы __str__ чтобы элементы кучи выводились в принте, возможно переопределил бы методы индексации. Навесил бы методов типо append, pop.

А как в Го? Придётся видимо создавать отдельную папку-пакет structures (иначе если в main оставить то ИДЕшка будет срать этим хипом постоянно, нарушается инкапсуляция хуяция, сокрытие и прочий кал), создавать там maxheap.go, в нём делать type Heap []int на который мы будет навешивать уже приколы. И тут начинаются вопросы, как сделать конструктор? Писать просто фабричку Heapify ([]int) Heap? Или сделать это методом моего типа: (heap Heap) Heapify?
Второй вариант такой себе, он будет принимать уже инициализированные данные при вызове и мы по сути не будем их использовал, какой-то кринж. Тем более понадобится сначала создать инстанс моего типа чтобы хипифайнуть слайс.
Первый вариант хуёв тем что в ИДЕшку при доступе к structures будет показывать Heap и Heapify одновременно. Хотя может так и надо.

Высрал кал какой-то, соболезную прочитавшим.
545 2963652
>>63649
В общем чтобы сократить этот поток кала: я тупа без понятия как организовывать код. Не вливаюсь в концепт. Не выкупаю философию. Не чувствую архитектуру. Надо будет посмотреть что-то где-то как другие люди делают.

Хотя я буквально меньше недели гошку трогаю руками по вечерам после сработки, наверное зря хотеть всё и сразу.
546 2963677
>>63434
Плохо искал, мы недавно двоих взяли спокойно и без больших требований, лишь бы работали и работали хорошо
547 2963749
>>63649
Окей, я взглянул мимолётно первый пикрил и мне пришла гениальная идея конструктор назвать тупо New. Вроде норм.
548 2963751
Я чето задумался, а зачем нужен Go вообще?

Для прототипов есть быстрый python
Для мидовых крудов есть хорошо зарекоммендовавшие себя яп с готовой инфраструктурой Java, PHP
Для йоба хайлоадов с байтодрочением есть C++/Rust

Реально нужно было создавать целый язык только для того, чтобы там была встроенная либа с легковесными потоками/их синхронизацией для concurrency? Это сработало бы, если бы рыночек в почти 2024 году не требовал от вкатунов понимания осей и вышки тех вуза. Так зачем всё это? Для чего?
549 2963754
>>63751
Тем не менее на go написали k8s, docker, ngrok и много всего другого.
550 2963757
>>63754
Нахуя? Единственную причину для себя вижу в том, что в компаниях работает большое количество студентов/самоучек, которым можно платить 2 камня, а они и рады будут
551 2963772
>>63751
Для узких мест где планируется заложить масштабируемость и быстродействие. На началбном этапе го кажется бессмысленным и ненужным, но когда вот прямо будет надо, переписывать сервис никто не будет
552 2963786
>>63652
Го - это не тот язык, где ты за неделю получишь всё и сразу.
Или даже за месяц. Или даже за три.
Так что лучше настройся на неспешный вояж.

Организация кода - да, своеобразная.
Очень не хватает чего-то типа модулей - внутри пакетов. Ибо пакет (в моём понимании) несколько крупноват.
Но, надо пользоваться тем что есть, поэтому - да, всё распихивать по мелким пакетам.

Вместо конструкторов - функции, типа:
func NewMyZalupa(...) *MyZalupa {...}
Читай исходники стандартной библиотеки - очень познавательно.
И книги - их много.

Вообще - конструктор - это и есть функция, просто в ООП языках это присыпано сахарком.
Делать конструкторы методами типа - не надо, да это и невозможно сделать.

Вообще, не надо пытаться писать на Го как на питоне или жс или ...
Только зря устанешь.
553 2963792
>>63751

>быстрый python


Кому и кобыла невеста, лол.
554 2963798
>>63792
Быстрый = на нём можно быстро разрабатывать прототип, в принципе можно питон на жс заменить, так даже лучше будет
555 2963805
>>63786

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


Ну можно сделать чото типа:
(&MyZalupa{}).MyZalupa(args...)
Если тяжко без ооп синтаксиса конструкторов. Честно говоря не понимаю, в чем проблема.

Имхо можно без проблем писать код, отдаленно напоминающий жабий (на жабе удобнее будет намного засчет статических классов, крутой рефлексии)
556 2963808
>>63805
Если тяжко без ООП, то не надо писать на Го.
Надо вначале очистить сознание, избавиться от ООП-зависимости, и мир заиграет новыми красками, безотносительно Го.
557 2963811
>>63808
Ящитаю, что ЯП это просто инструмент, если человек использует его не по назначению, то это только его дело. Я вот на го пытаюсь игры писать, мои страдания - исключительно моё дело
558 2963812
>>63649
А я вот не понимаю как в ООП писать, мне куда привычнее ещё с си просто написать функциями, разделить их по файлам и всё.
559 2963813
>>63798
Как можно для прототипирования питон заменить на говно-жс?
А тонны библиотек? А нормальное ООП? А пакеты? А интеграция с сишными либами? А потоки? А всё остальное?
560 2963814
>>63811

>игры писать


В смысле - десктопный GUI?
Месье знает толк, лол.
На питоне оно сильно приятнее будет
561 2963817
>>63813

>А тонны библиотек


Есть

>А нормальное ООП?


TypeScript

>А пакеты


Есть

>А интеграция с сишными либами


Нахуя что-то прототипировать с сишными лабами, ебан?

>А потоки


Не шарю, там чето евент лупы, хуюпы, вроде да, с этим хуево, но это нинужно для прототипов

>А всё остальное


Прилагается
562 2963818
>>63817

>Нахуя что-то прототипировать с сишными лабами, ебан?


Туда ли ты зашёл, пацанчик?
Вернись в жс-обезьянник.
563 2963828
>>63786
Да, я уже заметил что здесь придётся долго разбираться, хех. Вообще по идее много чего в ООПшных языках это просто какие-то примитивные вещи, как те же самые методы как функци (куда передаётся self/this... собственно аргументом), только это скрыто за такой пеленой сахара, что если у тебя за плечом опыт исключительно ООП языков, это начинает бить по голове и вызывать неудобство, мышление настроено на питоны с жсами.

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

>>63805
Можно, но это семантически бьёт по голове, в том плане что ты так сказать от "инстанса" пытаешься вызвать конструктор. Да и выглядит не очень. Лучше уж действительно использовать функции для создания инстансов. В принципе как я выяснил есть вариант каждый около-объект выносить в отдельный пакет и делать в нём свою функцию-конструктор.

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

>>63812
Видимо ты и начинал с Си/подобных. Я, не считая первой неудачной попытки на шарпе ещё в школе, с питона начал и прилип к нему. Хочется попробовать новое.
564 2963923
>>63649
Это потому что ты курсы не проходил и у тебя провалы знаний по го
565 2963924
>>63677
Они накручивали опыт?
566 2963927
>>63749
В книге Донована и Кернигана есть куча идеоматичных примеров. Если прочитаешь, то все вопросы отпадут как и что именовать.
567 2963928
>>63751

>Для йоба хайлоадов с байтодрочением есть C++/Rust


Ты вначале попробуй напиши и потом говори. Го для того и создавался, чтобы можно было легче писать, чем на С++. Сейчас работодателям проще найти гофера, который уже шарит за бэк, чем плюсовика, который поди писал на каком-нибудь Qt формочки и за бэк не шарит, или тем более растовика, который явно вкатун и вообще программировать не умеет.
568 2963972
>>63924
Неа. Да и смысл крутить опыт, за тебя ж работать не будет никто, это не школа.
569 2963976
>>63972
И чем они полезны бизнесу?
570 2964043
>>63649
хааай чо ушел?
571 2964325
>>64043
Ты о чём?
572 2964329
>>63927
Благодарю, гляну.
573 2964496
Даже Николай Тузов вначале выучил РНР, а потом пошёл на го
https://www.youtube.com/watch?v=oQ9LkPuZK1Q
574 2964502
>>64325
о том что ты тайпскриптер и про терпение жс
575 2964514
Как правильно настроить воркспейс, в частности gopath? Для каждого проекта отдельно или сразу для всех проектов?
576 2964703
Вот вам отличный пример того, что Го - особенный язык, и за месяц его не выучишь.
Что бы там ни говорили инфоцыгане с курсов.

https://go.dev/play/p/OVWzVzSHBfO

Кто из вас может объяснить, что происходит в этом примере, и почему оно нихуя не работает как надо?
577 2964712
>>64703
Го не может в абстракции. Всегда надо держать в голове, что там у него под капотом происходит.
Это тянется ещё со времен си, когда программисты компилировали код, а потом прогоняли его через дизассемблер, чтобы понять где и что идёт не так.
578 2964717
>>64703
объяснить как слайс работает?
579 2964725
>>64717
Хуяйс. Не понял, о чём речь - подумай.
580 2964728
>>64712
Нет, это не про абстракции. Это про контракты. И про их соблюдение. Точнее - про не-соблюдение.
581 2964732
>>64725
я подумал и не понял зачем тебе месяц чтобы понять как слайс работает
582 2964772
>>64732
То есть, ты можешь объяснить, что там происходит, и почему тот же пример, если из него убрать вторую строку, где append(sa, 4), и дописать это 4 в первой строке, будет работать правильно?
А после этого сможешь объяснить, что это называется не "хуйня", а "хороший дизайн"? Можешь?
583 2964793
>>64502
Ушёл из тайпскрипта или из калфы? Не очень понял, может ты про другого говоришь. Ну я постил как-то в js треде когда расширением баловался, но вряд ли ты про меня. Вряд ли вообще это кому-то в память влезло, лол.
584 2964839
>>64772
первое тебя на собесе могу спросить
второе хз. дизайн не дизайн, но работает
585 2964858
>>64703
Оно работает ровно так как и должно, просто дурачки типо тебя не могут понять что это не массив а что-то другое хоть и выглядит похоже. Классические массивы в го бтв тоже есть
586 2964871
>>64703
Анон, на самом деле это можно понять. Буквально за 1 день и запомнить. Буквально просто нужно посмотреть всего лишь одно видео.
Вот что происходит к примеру (пик1). Ну или текстом ниже, накидал.

// `sa` является слайсом: len: 3; cap: 3
// SliceHeader содержит указатель на низлежащий массив `A`
sa := []int{1, 2, 3}

// `sa` передаётся по значению (SliceHeader) в append.
// Прибавляем к слайсу число. Низлежащий массив (`A`) пересобирается (создаётся новый (`B`), с 6 ячейками), адрес памяти на начальную ячейку массива в SliceHeader меняется.
// append ретёрнит новый SliceHeader с указателем на новый низлежащий массив (`B`).
// Значение sa заменяется новым SliceHeader'ом, в котором len: 4, cap: 6 и в котором указатель на массив указывает на совершенно другое место в памяти.
// SliceHeader содержит указатель на низлежащий массив `B`
sa = append(sa, 4) // [1, 2, 3, 4]

// `sa` передаётся по значению (SliceHeader) в append.
// Низлежащий массив в `sa` (`B`) не пересобиратеся, поскольку, по итогу прошлой операции, его размер равен 6.
// `append` спокойно прибавляет к этому слайсу пятёрочку и возвращает новый SliceHeader с len: 5 и cap: 6
// `sc` присваивается слайс с len: 5, cap: 6
// `sa` до сих пор содержит SliceHeader, указывающий на `B`, ! НО У НЕГО len: 4 и cap: 6 !
// SliceHeader содержит указатель на низлежащий массив `B`
sc := append(sa, 5) // [1, 2, 3, 4, 5]

// `sa` передаётся по значению (SliceHeader) в append (передаёт слайс len: 4 cap: 6)
// Низлежащий массив `B` не пересобирается, поскольку его cap: 6 и в момент вставки он содержит 5 элементов
// ОДНАКО МЫ ПЕРЕДАЛИ СЛАЙС ИЗ `sa`, А НЕ `sc`, СООТВЕТСТВЕННО АППЕНД БУДЕТ ПРОИЗВОДИТЬСЯ НАД СЛАЙСОМ len: 4 cap: 6
// Происходит вставка в низлежащий массив `B`. Однако, поскольку len: 4, вставка происходит на пятый элемент.
// Соотвественно `5` заменяется на `6`
// Возвращается новый SliceHeader с указателем на низлежащий массив `B`, len: 5 и cap: 6. Массив `B` содержит 5 элементов
sd := append(sa, 6) // [1, 2, 3, 4, 5]

// sa: ARRAY `B`; LEN 4; CAP 6. Видит 4 элемента: [1,2,3,4]
// sc: ARRAY `B`; LEN 5; CAP 6. Видит 5 элементов: [1,2,3,4,6]
// sd: ARRAY `B`; LEN 5; CAP 6. Видит 5 элементов: [1,2,3,4,6]

Кстати, если ты отрастишь слайс `sa` до его кэпа (максимального размера), а именно до 6, то ты увидешь эту самую шестёрку. А также нолик в придачу (пик-2):
// ОТРАСТИМ `SA`
sa = sa[:cap(sa)]
fmt.Println(sa)

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

Видос: https://www.youtube.com/watch?v=1vAIvqDo5LE&list=LL&index=1&t=350s&pp=gAQBiAQB

Если я где-то ошибся, поправьте меня, пожалуйста.
586 2964871
>>64703
Анон, на самом деле это можно понять. Буквально за 1 день и запомнить. Буквально просто нужно посмотреть всего лишь одно видео.
Вот что происходит к примеру (пик1). Ну или текстом ниже, накидал.

// `sa` является слайсом: len: 3; cap: 3
// SliceHeader содержит указатель на низлежащий массив `A`
sa := []int{1, 2, 3}

// `sa` передаётся по значению (SliceHeader) в append.
// Прибавляем к слайсу число. Низлежащий массив (`A`) пересобирается (создаётся новый (`B`), с 6 ячейками), адрес памяти на начальную ячейку массива в SliceHeader меняется.
// append ретёрнит новый SliceHeader с указателем на новый низлежащий массив (`B`).
// Значение sa заменяется новым SliceHeader'ом, в котором len: 4, cap: 6 и в котором указатель на массив указывает на совершенно другое место в памяти.
// SliceHeader содержит указатель на низлежащий массив `B`
sa = append(sa, 4) // [1, 2, 3, 4]

// `sa` передаётся по значению (SliceHeader) в append.
// Низлежащий массив в `sa` (`B`) не пересобиратеся, поскольку, по итогу прошлой операции, его размер равен 6.
// `append` спокойно прибавляет к этому слайсу пятёрочку и возвращает новый SliceHeader с len: 5 и cap: 6
// `sc` присваивается слайс с len: 5, cap: 6
// `sa` до сих пор содержит SliceHeader, указывающий на `B`, ! НО У НЕГО len: 4 и cap: 6 !
// SliceHeader содержит указатель на низлежащий массив `B`
sc := append(sa, 5) // [1, 2, 3, 4, 5]

// `sa` передаётся по значению (SliceHeader) в append (передаёт слайс len: 4 cap: 6)
// Низлежащий массив `B` не пересобирается, поскольку его cap: 6 и в момент вставки он содержит 5 элементов
// ОДНАКО МЫ ПЕРЕДАЛИ СЛАЙС ИЗ `sa`, А НЕ `sc`, СООТВЕТСТВЕННО АППЕНД БУДЕТ ПРОИЗВОДИТЬСЯ НАД СЛАЙСОМ len: 4 cap: 6
// Происходит вставка в низлежащий массив `B`. Однако, поскольку len: 4, вставка происходит на пятый элемент.
// Соотвественно `5` заменяется на `6`
// Возвращается новый SliceHeader с указателем на низлежащий массив `B`, len: 5 и cap: 6. Массив `B` содержит 5 элементов
sd := append(sa, 6) // [1, 2, 3, 4, 5]

// sa: ARRAY `B`; LEN 4; CAP 6. Видит 4 элемента: [1,2,3,4]
// sc: ARRAY `B`; LEN 5; CAP 6. Видит 5 элементов: [1,2,3,4,6]
// sd: ARRAY `B`; LEN 5; CAP 6. Видит 5 элементов: [1,2,3,4,6]

Кстати, если ты отрастишь слайс `sa` до его кэпа (максимального размера), а именно до 6, то ты увидешь эту самую шестёрку. А также нолик в придачу (пик-2):
// ОТРАСТИМ `SA`
sa = sa[:cap(sa)]
fmt.Println(sa)

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

Видос: https://www.youtube.com/watch?v=1vAIvqDo5LE&list=LL&index=1&t=350s&pp=gAQBiAQB

Если я где-то ошибся, поправьте меня, пожалуйста.
587 2964882
>>64871
Поправлюсь, слайс содержит не указатель на ячейку на первый элемент массива, а просто на ячейку массива, с которой начинается слайс. Вроде как.
588 2964891
>>64858

>Оно работает ровно так как и должно


Но не так как этого от него ожидают, очевидно слайс sc - багует, в коде из трёх строчек, где вообще никакого криминала визуально нет, но значение в слайс не попало. А если там не цифры, а операции с баблом, будешь искать, где и почему у тебя транзакция на миллион пролетела мимо слайса? И это считается надёжным языком, я ебал.
1702658566498.png4 Кб, 369x62
589 2964911
>>64871
Здесь будет шестёрка, опечатка.
590 2964928
>>64871
Очень много букв, потом прочитаю, и, если что - прокомментирую.

Но, дело тут вообще в другом.
Функция append() ведёт себя _не_очевидно_.
Т.е., _ничего_ в коде не указывает на то, что она поведёт себя так или иначе. Понимаешь? Вообще _ничего_. И "запоминать" тут нечего, кроме самой возможности такого поведения.

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

>>64858
Мальчик, зачем ты лезешь во взрослый разговор?
Тебе одиноко? Так поди в /b - там все твои друзья.
591 2964957
>>64928
Ну в принципе наверное можно с этим согласиться, хотя наверное у гоферов что на нём посидели есть свои причины и они найдут чем возразить. Просто из-за того что в Go, как я понял, всё принципиально передаётся по значению, а слайс в свою очередь является структурой в которой есть указатель на массив, то можно встретить вот такие приколы. По идее если по ссылке передать то всё будет работать 'as-inteded', но что-то я не понял как это сделать. `append` кажется возвращает по значению в любом случае.

Я сам люто охуел когда первый раз увидел, не понял прикола когда слайс не начал изменяться или вообще по другому, не очевидному, работал, по сравнению с другими языками.
592 2964961
эс интендет*
дебсофикс
593 2965013
>>64928

> Функция append() ведёт себя _не_очевидно_.


> Т.е., _ничего_ в коде не указывает на то, что она поведёт себя так или иначе. Понимаешь? Вообще _ничего_. И "запоминать" тут нечего, кроме самой возможности такого поведения.


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


это уровень "почему я не могу скопировать словарь оператором присваивания а с числами работает??"
чел, тебе тот момент, что аппенд возвращает новый слайс ни о чем не говорит? то, что это x=append(x,y), а не append(x,y) на что-то намекать должно.
594 2965039
>>65013
Мальчик, проблема в том, что append() _иногда_ возвращает новый слайс. А иногда - старый. Причём, когда и какой - решает она сама.

Надеюсь, что ты работаешь кассиром или курьером, потому, что такие программисты стране не нужны.
595 2965050
>>65039
а прикинь, аппенд всегда новый возвращает. ну ты почитай как там слайс устроен
596 2965057
>>65039
На самом деле он всегда возвращает новый слайс, как я мог понять. Просто есть ключевые приколы которые вызывают антиприкол, а именно:

1. У слайса есть низлежащий массив
2. Разные слайсы от одного слайса имеют общий низлежащий массив
3. При превышении cap(acity) создаётся новый низлежащий массив и если были слайсы, которые шерили (share хз как сказать) один низлежащий массив, то у них разъезжаются "хранилища"
4. Слайс передается по значению в append, т.е. передается копия слайса соответственно если ты передашь какой-нибудь старый слайс в аппенд то у него может быть странная длина и тогда аппенд к примеру перезапишет какое-то значение в массиве, а не создаст.
597 2965092
>>65057

>странная длина


Не странная, а старая. Хуй пойми как я постоянно опечатки такие делаю. Заебало.
598 2965115
>>65057
Ебать наркомания
1702663414695.png61 Кб, 928x732
599 2965141
>>65115
Собственно поскольку у слайса есть указатель на исходный массив и новые слайсы шерят его то сборщик мусора не убьет массив пока есть хотя бы 1 ссылка на него. Поэтому могут возникать приколы по типу пикрила, когда ты прочитал файл, вернул небольшой слайс с данными которые тебе нужны, а из-за этого слайса у тебя в памяти по прежнему весь файл наху валяется, лмао.

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

Хотя мне кажется в других языках похожее бывает, просто я особо не вдавался в подробности.

https://go.dev/blog/slices-intro
600 2965208
>>65050
Мальчик, иди в жопу.
601 2965260
>>65057
Ты как-то сложно всё это пишешь.
Слайс - указатель. Передавать его _не_ по значению - это надо иметь очень особенную причину.
Проблема не в том, как он передаётся.
А в том, что append иногда создаёт новый массив (len >= cap), а иногда - оставляет старый (len < cap). И ты на это влиять не можешь. Т.е. нет параметра, который говорил бы "хочу всегда новый слайс". А вот какая у слайса capacity - из кода не всегда понятно. Потому, что append приращивает её, опять же, по своему разумению - см. исходники.

Этот пример - это известный подводный камень Го. Я поэтому его и запостил.
И стало понятно, что никто из вас об этом раньше не слышал, хотя это очень известный прикол.
Об этом много написано, и это одна из тех вещей, которые сразу отталкивают новичков от Го. Типа "ребята, если у вас такое считается нормальным, то ну его нахуй такой язык".
И таких подводных камней в Го есть в количествах.

На самом деле, как раз таки append - это не такая большая проблема. Собственная реализация, которая делает именно то, что тебе нужно - пишется за 5 минут. И это очень даже Го-стайл - писать заново самые базовые вещи, просто чтобы жизнь мёдом не казалась.
602 2965264
>>65141

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



Люди просто хотят векторов как в плюсах
603 2965285
>>65264
Люди хотят того, что описывается словом "explicit".
Не находят и пишут сами, в итоге.
604 2965297
>>65285
А почему все не вносят с стандартную либу? Это же никак не повлияет ни на скорость компиляции ни на что-то еще. Просто удобства добавит и избавит от бойлерплейта. Пайк говорил об этом?
605 2965300
>>65260

>Слайс - указатель


уровень людей спорящих о том как аппенд непонятно работает
1702666114058.png35 Кб, 715x541
606 2965308
>>65260
Подожди, но это же вроде не так. Слайс не указатель. Слайс это структура, которая содержит указатель. Т.е. ты передаешь её по значению и у тебя каждый раз всегда получается новый слайс. Из-за этого и могут возникают расхождения при работе с аппендом.

Насчёт недостатка QoL фичей согласен. Если честно, я не очень понимаю как писать что-то не низкоуровневое/крупное на нём. Видимо поэтому он в основном в микросервисах используется, это его стезя.

И как раз, возможно, факт того что ты из коробки не можешь контролировать создание нового массива это и есть пример нехватки QoL. Хотя всегда можно написать newSlice := append(oldSlice[0:0:0], oldSlice...) или append([]int{}, oldSlice...)

https://go.dev/src/runtime/slice.go
607 2965396
>>65297
Хорошая стандартная библиотека - это многие годы труда.
И нужно ещё весьма нетривиальное коммюнити.
Причём очень _ленивых_ программистов.
А гошники - не ленивые.

Вот этот вот дурачкок - >>65300 - например, никак не уймётся, другой бы устал давно уже, но не этот. Потому, что гошник.

>Слайс не указатель. Слайс это структура, которая содержит указатель.


Чувак, ну ты же понял меня, правда? Или нет?

>Из-за этого и могут возникают расхождения при работе с аппендом.


Нет, не из-за этого. Ты вообще ничего не понял, получается.
Посмотри исходники аппенда там не так много, а лучше - попробуй написать свой.
Вот это ещё можешь почитать:
https://habr.com/ru/articles/660827/
608 2965409
>>65396
мне делать особо нечего. жду понедельника чтобы снова на гошечке писать))

>Нет, не из-за этого. Ты вообще ничего не понял, получается.


твой вопрос бы ПОЛНОСТЬЮ отпал бы, если бы слайс в аппенд передавался по поинтеру. может какие-то другие вопросы бы возникли, но это было бы поведение аппенда как в других языках. ну это так если что. на подумать.
609 2965482
>>65396
Окей, возможно что-то не понял. Ну вот ещё очень понял к чему здесь проблемы с монотонным расширением кэпа у слайса. Ну хорошо, типо да, наверное есть такая проблема, если это проблема. Хотя ты скорее для общего развития вкинул.

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

Сейчас может попробую понять что там происходит.
610 2965485
>>65308
Вот тут есть пример простой реализации Append, буквально в 10 строк:
https://go.dev/doc/effective_go#slices
611 2965512
>>65409

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


Это был бы ад, лол.

Я уже не помню подробностей, но, была хорошая статья на тему, почему надо избегать передачи слайсов через указатели. Кажется, пойнт там было в том, что указатель на бекинг-аррей может неожиданно поменяться (в другом месте программы), и - привет.
Вот тут ещё интересное обсуждение этой темы:
https://forum.golangbridge.org/t/slice-pass-as-value-or-pointer/2866
612 2965518
>>65485
Так он копирует тут слайс же. Ну вот я +- тоже самое сделал, у меня разные слайсы получились. Получается в итоге всегда новый в функции возвращается?

Да и в целом в результате grow'а slice[0:l+len(data)] возвращается новый слайс, как я понял.
613 2965520
>>65518
Точнее на copy похуй, я хуйню выделил. Копирование на моменте среза происходит уже. Как минимум.
a.png146 Кб, 1548x744
614 2965524
>>65512
с текущей механикой слайсов да.
но вообще-то аппенд тогда бы новый слайс не возвращал. и работал бы так же, как на пике
615 2965679
>>64703
Не путай язык и навыки программирования в целом.
изображение.png28 Кб, 577x655
616 2965704
Боже мой, надеюсь этот язык не используют ни для чего сложнее корзины на маркетплейсе.
617 2965738
>>64496
Он уже научился не хихикать при разговоре? Раздражает пиздец
618 2965776
>>64703
А теперь, пошёл учить что такое array, бегом, раз-раз-раз
619 2965781
какие долбаебы обитают вне хаскел и цпп треда это пиздец
620 2965785
>>65776
Лоооол, и много тут таких подводных камней? Где их больше, в си или в го?
3.JPG29 Кб, 584x954
621 2965799
>>65785
Каких "подводных камней"? Даже в питоне это работает именно так. Почитай что такое мутабельные и иммутабельные типы, пожалуйста и прекрати смешить людей
622 2965808
>>65518
Когда я говорил "новый слайс" или "старый слайс", я имел в виду, разумеется, массив, на который этот слайс ссылается. Мне кажется, это было очевидно из контекста. Сам по себе слайс - не важен в данном случае вообще, подразумевается, что он-то всегда новый.

А вот массив - не всегда. А элементы - они в массиве, как ты понимаешь.
И массив новый только тогда, когда в старый уже не лезет. Новый (и слайс и массив) - делается через make, увеличенного размера, потом в него копируется старый слайс (т.е. его массив).
А потом - в возвращаемый слайс (т.е. в его массив) добавляются новые элементы.
В старый или в новый массив, в зависимости от.

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

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

И не обращай внимания на дурачков, вроде >>65776 или >>65799.
Они слишком тупые даже для того, чтобы понять, о чём тут, собственно, разговор.
623 2965809
>>65039
В Ирландии нужны, как там в параше хз. Сейчас бтв составлю твой психологический портрет:
1. Постоянные апелляции к возрасту
2. Считаешь себя достаточно важным чтобы пренебрежительно говорить о кассирах и прочем скаме
3. Невежествен, тяжело даётся новая информация
Исходя из этого я предполагаю что ты 28-34 летний скуф, вечный околомиддл потому что пробиваться дальше уже не способен неприметный челик с синдромом вахтёра. Скорее всего пишешь сейчас на пхп или руби. Отпиши, интересно узнать сколько совпало, "мальчик"
624 2965811
>>65518
Дополню немножко:

>Да и в целом в результате grow'а slice[0:l+len(data)] возвращается новый слайс, как я понял.


Да, ты правильно понял.
Квадратные скобки - это оператор слайса, он возвращает новый _слайс_ (структуру с указателем), но массив остаётся тот же, на который указывал старый слайс. Это важно.
Новый массив делается _только_ через make().
625 2965812
>>65809
Мальчик, зачем ты срёшь здесь? Сходи в туалет.
626 2965813
>>65811
И да - вот над этим я от души поржал:

> ты 28-34 летний скуф

627 2965814
>>65812
Видимо много) Ладно не бухти, я не со зла
628 2965815
>>65813
Скуфом можно и в 18 стать я считаю, это больше про внешку и образ жизни
629 2965816
>>65815
Блядь, я каждый раз забываю, какой тут теперь детский сад.
Надо с этим завязывать.
изображение.png28 Кб, 545x666
630 2965818
>>65799

>мутабельные и иммутабельные типы


Причем здесь мутабельность, дело не в мутабельности, посмотри еще раз на код, append(sa, 5), где пятерка в слайсе? Её нет. Но почему в таком случае есть шестерка? Непонятно. В питоне всё работает так как и должно, данные никуда не выпадают, при запросе копии объект копируется, абсолютно прозрачное поведение.
631 2965820
>>65808
Окей, видимо я проглядел немного, мой косяк.

Да, массив новый только если планируемая длина превышает cap. Он пересоздаётся с размером +N переданных аргументов и в него помещаются старые элементы. Либо cap не превышается и слайс работает со старым массивом. Помещаются переданные аргументы внутрь. Возвращается копия слайса. Соответственно изменения увидим только если присвоим новый слайс в какой-то аргумент и в этом аргументе будут отображены элементы (если аппенд конечно не перезаписал ячейки массива, тогда в старых слайсах которые ссылаются на него есть возможность увидеть изменения). Ну и также в старых слайсах очевидно не увидим изменений если массив был пересоздан.

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

А как кстати авторы языка могли исправить этот момент, если они приняли решение принимать всё по значению? Не особо приходят в голову варианты, при таком подходе всегда есть риск рассинхрона же с текущей структурой слайса.
632 2965821
>>65818
Иногда полезно читать описание функции и знать её поведение

>>65808
Я тупой, а ты умный
1702684604274.png15 Кб, 395x645
633 2965823
>>65808
spamnahuiдожди,акspamnahuiкоепspamnahuiведениевspamnahuiобщеоspamnahuiидаетсявspamnahuiтвэspamnahuiомсspamnahuiучаекspamnahuiкпspamnahuiозрачное?\n[1,2spamnahui3spamnahui4spamnahui5spamnahui6spamnahui\n[1,2spamnahui3spamnahui4spamnahui5spamnahui\n[1,2spamnahui3spamnahui4spamnahui5spamnahui6spamnahui?spamnahui\nТогдапspamnahuiслеэspamnahuiогопspamnahuiипspamnahuiпыткедspamnahuiбавитьк`spamnahuic`чspamnahuiо-тонspamnahuiвоебspamnahuiдетпspamnahuiрезаписанпspamnahuiтыйиspamnahuiдекс.Иspamnahuiиоspamnahuiидаетсячspamnahuiопspamnahuiиаspamnahuiпендев`spamnahuic`нspamnahuiбspamnahuiдутиspamnahuiмененыоspamnahuiтальныесspamnahuiайсы?Тspamnahuiгдапspamnahuiикspamnahuiждомаspamnahuiпендепspamnahuiидётсяпspamnahuiресоздаватьмspamnahuiссивчspamnahuiолspamnahui.Уspamnahuiенspamnahuiпspamnahuiнимаю.Зspamnahuiпутался.
634 2965825
>>65823
Блять, переусердствовал с обходом спама-листа. Ладно, похуй.
635 2965827
>>65821

>Иногда полезно читать описание функции и знать её поведение


Поведение "я буду крутить рулетку и проебу твои данные если выпадет особое число, и ты даже об этом не узнаешь, пиши свою вставку если не нравится, тебя предупредили", охуенное поведение во всех смыслах.
1.JPG37 Кб, 676x994
636 2965831
>>65827
Если не читать описание функции и не знать разницу между []int и [3]int, то это всегда рулетка.

Вообще, если не знать ничего, мир вокруг становится магическим и волшебным
637 2965832
И кстати, ты всё ещё не прочёл про мутабельные и иммутабельные типы в голанге и как они себя ведут
638 2965834
>>65820

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



Да что же ты прицепился к этой передаче по значению?
Дело вообще не в этом. А в том, что в приведённом примере кода (>>64703) _не_видно_, что capacity увеличилась (массив увеличился) после первого append(), и теперь последующие (маленькие) аппенды _не_ создадут новые массивы, и все добавления будут идти в 1 массив, затирая друг друга.

Это _не_ надо решать изменением каких-то свойств языка, это про другое.

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

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

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

Вот тебе небольшая подборка того, что люди чувствуют при попытках вката в Го:
https://www.reddit.com/r/golang/comments/mjhf5h/why_people_hate_go/
https://www.reddit.com/r/golang/comments/13gju2x/why_so_much_hatred_toward_go/
https://www.reddit.com/r/golang/comments/p6ambn/why_is_go_getting_so_much_hate/
https://www.reddit.com/r/golang/comments/2j9fgz/why_everyone_hates_go/

Можешь сам погуглить, этого много в интернетах.
И нет, про питон ты такого не найдёшь.
1702689381163.mp41,4 Мб, mp4,
826x606, 0:11
639 2965836
>>65834
Окей, теперь претензия в полной мере понятна. Но если каждый раз создавать массив на аппенд, разве это не даст проигрыш по производительности тоже? Он же буквально будет итерировать одни и те же элементы в новый массив. Хотя может это не ощущается/не так работает и я сказал глупость, хз.

Тернистость я уже вкусил частично. Натыкаюсь на что-то, чего нет, или что-то работает не так как привык. Зато есть my honest reaction в виде видрила в подобные моменты.

Ладно, благодарю что уделил время. Пойду спать.
640 2966165
>>65834

>Да что же ты прицепился к этой передаче по значению?


>Дело вообще не в этом. А в том, что в приведённом примере кода (>>64703) _не_видно_, что capacity увеличилась (массив увеличился) после первого append(), и теперь последующие (маленькие) аппенды _не_ создадут новые массивы, и все добавления будут идти в 1 массив, затирая друг друга


так и вообще не надо делать допущения, что аппенд создаст новый массив или не создаст. если тебе что-то нужно, явно проверь cap или скопируй.
641 2966168
>>65832

> мутабельные и иммутабельные типы в голанге


в терминологии го такие термины не используются
642 2966170
>>66168
хотя наверное я не прав. стринги иммутабельные. базовые типы вроде интов тоже можно сказать что иммутабельные, но без особой смысловой нагрузки
643 2966228
>>66165

>если тебе что-то нужно, явно проверь cap или скопируй


Затереть элементы массива при аппенде это нормальное поведение, вы что, документацию не читали? Там же капасити, вы что, не проверяете капасити когда добавляете в массив?
644 2966255
>>66228
Нормальное поведение это делать так
a = append(a..)
Или так
b := append(a..)
А не блять так
b := append(a..)
c := append(a..)

Выстрелить себе в ногу можно легко в любом языке.
645 2966268
>>65808
Можешь пожалуйста показать пример адаптера к аппенду? Интересно взглянуть.
646 2966323
перекатите кто-нибудь
647 2966378
нет
648 2966629
>>66268
Адаптер, в общем случае - это функция, вызывающая другую функцию с определёнными условиями и/или преобразованием аргументов.

В данном случае (да, притянутом за уши, но, мы же тут учимся, да?) - нужно, чтобы append всегда создавал новый массив для слайса.
Ну, или всегда, когда передан доп. аргумент типа createNew bool.
Что для этого нужно? Вызывать append только тогда, когда cap(s) = len(s). А в других случаях - делать make + copy.

Но, на самом деле, в данном случае можно просто всегда делать make + copy, и назвать это appendNew(s, ...args).
649 2966637
>>66629
А, ну окей. Просто если стоит задача каждый раз создавать массив при аппенде, то действительно, можно в функции его создать+перекопировать/заапендить в новый созданный. Я думал есть какой-то жёсткий способ изменить поведение самого аппенда или типо того.

Кстати, насчёт доп аргументов. Немного офигел что в Го нельзя сделать аргумент опциональным/придать значение по умолчанию. Придётся опрокидывать фолсы/nil'ы в случае чего, мда.
cloudnativegotitmus.jpg199 Кб, 1143x1500
650 2966641
Вообще, если кому интересны реальные примеры адаптеров, декораторов и т.п. - можно посмотреть вот эту (весьма годную) книжку:
https://scanlibs.com/cloud-native-go-unreliable-environments/
Отзывы: https://www.amazon.com/dp/1492076333

Напр. глава 4, стр. 80 - функция Debouncе и т.п.
651 2966662
>>66641
Я вот сейчас думаю, а много голангеров в России не знают английского?
652 2966690
>>66662
Сейчас не знают английского только деревенщины в глуши где-то в Сибири, все остальные спокойно читают/воспринимают на слух
653 2966694
>>66662
Я сейчас чисто для прикола скопировал почти страницу текста с описанием паттерна Debounce в гугл-транслейт, и - это вполне можно читать. Особенно, если понимаешь, что debounce - это "устранение дребезга контактов" в электронике.
654 2966995
>>66690
В чатах и тредах постоянно вопрос "есть на русском". Это люди из ДСов пишут в том числе.
655 2967030
>>66662
Если бы я знал английский, то пошёл бы в переводчики и лутал сотыги, а не дрочил всякие языки программирования.
656 2967103
>>00329 (OP)
Фу, скуфидоны, зачем вы лезете в наш гоулэнг? Нанимающий менеджер дал добро на найм двух джавадебилов 30+, хотя наш лид был против и попустил их жозенько на собесе.
Уже пошел второй месяц как они тупят и не могут пройти код-ревью, т.к. не шарят как писать идиоматичный гоу код.
Планируем слить скуфиндяев, чтобы они вернулись обратно в свою говножаву. Запомните - гоулэнг онли для молодых. Скуфидонам, тем более с жавы, здесь не место!
657 2967104
>>66995

>Это люди из ДСов пишут в том числе


Это не коренные пишут, а провинциалы, которые приехали из той же Сибири
658 2967209
>>67103
Какая разница, если этот язык-недоразумение один хрен закопают как неудачный эксперимент, сейчас говна нажуются со своими микросервисами и маятник пойдет в обратку, собственно это уже происходит, потому что незачем усложнять простые вещи без нужды, а там где нужда есть, всё равно нет смысла тащить целый говёный язык и можно разрулить инструментами самой джавы.
659 2967229
>>67209
Именно поэтому все в ужасе бегут с жавы на гоулэнг, т.к. задолбались с магией спрэнг фримверка и хубирнейта. Про жор ресурсов вообще молчу
660 2967237
>>67104
Если чел коренной в дс это сразу делает его образованным?
661 2967241
>>67103

> наш


Не ваш. Говноленг написан скуфидонами
662 2967243
>>67237
Чел... я насмотрелся на программистов из сибирских пердей, которые приезжают в дс и устраиваются к нам в бигтех контору. В лучшем случае так и плетутся на лычках мидлов. Но большинство мы увольняем, т.к. они не тянут тот уровень и темп разработки
663 2967246
>>67243
Ты гордишься тем что ваш проект кроме вас никто не понимает?
664 2967253
>>67030

>переводчик в 2024


Проигрунькал.
665 2967258
>>67209
Джава рулит, безусловно.
А с компиляцией в нативный код - так вообще.

Но, в Го тоже есть своя прелесть.
И совсем необязательно писать на нём именно микросервисы ебать их в сраку, лол.
Я бы даже сказал, что вот именно микросервисы - наверное, лучше на джаве, если это не что-то совсем уж простое. Всё же абстракции решают. Только делать это надо без хуйбернейта и прочего спрыга.
666 2967265
>>67258
Добавлю, что мне нравится сам подход, принятый в Го для написания микросервисов. Это такой анти-спринг, и это просто прекрасно, потому, что overbloated хуета, вроде спринга, убивает джаву. После знакомства с Го я начал иначе смотреть на многие привычные вещи, и очень этому рад.
667 2967856
перекочуйте
668 2967896
У меня всё больше и больше складывается впечатление что го либо до сих пор очень сырой, либо создатели настолько помешаны на обратной совместимости, что боятся добавлять новые методы к уже существующим либам.

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

Я иначе не могу объяснить почему чтоб вызвать метод который уже есть блять в библиотеке, надо делать к нему интерфейс. Очень сильное чувство того что язык тупо недоделан...
669 2967898
>>67896
Собственно сабж
image.Image, который по сути представляет из себя интерфейс для image.RGBA. Чтоб иметь возможность работать с методами image.RGBA, надо делать преобразование в духе i.(*image.RGBA) либо делать интерфейс.
К чему эти ненужные телодвижения я вообще не понимаю... Это же производственный язык, а не симулятор программирования... И так почти везде.
670 2967900
671 2967902
>>67898
Что значит либо "делать интерфейс"? Он же уже сделан.
Или ты имел в виду реализацию интерфейса?

В любом случае, я только что попробовал такое:
i := image.RGBA{}
b := i.Bounds() //Метод из интерфейса image.Image
fmt.Println(b) //Выводит (0,0)-(0,0)

Т.е. всё работает.
Алсо, это ты там игры пытаешься писать?
672 2967903
>>67856
Мы не умеем.
Где ОП?

https://www.youtube.com/watch?v=vAUr-kwZckQ
673 2967904
>>67898

>image.Image, который по сути представляет из себя интерфейс для image.RGBA


и полдесятка других типов, включая кастомные
674 2967906
>>67902
Нет, я левый чел, просто на го решил перейти. Как пример, пробую некоторые свои программки переписать. Одна из них просто обрезает ватермарки.
675 2967908
>>67902
Он-то работает. Но картинка получается из image.Decode() который возврашает image.Image
676 2967917
>>67908
Так и в чём тогда проблема?
У тебя уже есть интерфейс, и ты не можешь вызвать его метод?
Алсо - возвращать интерфейс из функции - это плохая практика, рекомендуют принимать интерфейсы и возвращать конкретные типы (структуры).
677 2967918
>>67917
В интернетах предлагают делать так
https://ahmadrosid.com/blog/golang-img-crop

type SubImager interface {
SubImage(r image.Rectangle) image.Image
}
И потом
croppedImage := originalImage.(SubImager).SubImage(cropSize)

Это нормально в го так делать?
678 2967919
>>67898 >>67917
Или ты "методами" называешь поля структуры image.RGBA?
Имея на руках интерфейс, ты, естественно, к ним доступа не имеешь.
И тогда только кастовать.

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

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

В общем, это не про язык, а про практику его применения и про библиотеку.
679 2967922
>>67919
Так он не новый. Ему больше 10 лет. Есть и другая штука, меня она тоже весьма удивила. На обратную совместимость это же не может влиять никак
https://github.com/golang/go/issues/12572
680 2967923
>>67918
Всё, я понял, про какие методы ты писал, просто туплю уже, спать пора.

>Это нормально в го так делать?


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

И да, потом такая хуйня может упасть в рантайме.
Но, подразумевается, что программист знает, что делает.
681 2967924
>>67922
Я имел в виду - новый для тебя.
По поводу ссылки - как я и говорил, это не про язык, а про библиотеку, и она сырая.

>Ему больше 10 лет.


Это не много. А язык довольно своеобразный, и не слишком популярный.
И, в общем, это объясняет, почему стандартная библиотека сырая, и почему вообще так мало библиотек.
682 2967925
>>67923
Вот, да.
Фактически он сделал это
i_rgba, _ := i.(*image.RGBA)
i = i_rgba.SubImage(rect)

Это стандартная библиотека. Стандартная, мать его, библиотека.
683 2967926
>>67924
Так нет ведь. Тикет на гитхабе сделан 8 лет назад
Никто не просит им переделывать методы чтоб нарушать обратную совместимость. Только добавить новых и всё.
684 2967927
Ладно чёрт с ним. Я-то сделаю. Просто хочу сказать что разработчики голанга очень странные. И отсюда растут корни многих проблем. Само ядро сделано хорошо, но всё остальное какой-то кринж
685 2967928
>>67925

>i_rgba, _ := i.(*image.RGBA)


Ну да.
Только главное тут - не сам кастинг, а то, что проигнорировали error, поставив "_".
А потом оно падает в рантайме.
686 2967929
>>67928
Я проигнорировал ok (там буль) потому что эта строчка снимает интерфейс image.Image из структуры image.RGBA. Там в принципе не могут быть ошибки
687 2967930
>>67926
Если ты имел в виду, что надо просто добавить новые методы именно в интерфейс Image, то это не так работает.
Просто добавив методы в старый интерфейс, ты можешь поломать имеющийся код.

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

Про это много написано, вот первое, что выдаёт гугол:
https://groups.google.com/g/golang-nuts/c/-eq-Zrjc5Bs
688 2967931
>>67929
Я не про то, что ты проигнорировал, это понятно.
Я про то, как сделал тот чел по ссылке. И твой пример - это как раз эквивалент того, что он делает. Точнее - у него ещё хуже. Надо попробовать сделать так, только с явной ошибкой кастинга, интересно, получится или нет? Завтра попробую.
689 2967932
>>67930
У них решение на уровне "доделайте сами". Я прицепился к ней потому что в других стандартных либах наверняка творится что-то подобное.
690 2967935
>>67932
Все еще быстрее чем разбираться в тонне говна под названием спрэнг фримверк и лепить эти нелепые публик клусс МайСервисИмпл имплементс МайСервис, лол.
А когда речь заходит о тестировании, то вообще начинает орать в голосяндрий с этих попыток замокать репозитории (карл!) и прочие хрупкие тесты, лул
691 2967948
>>67935
https://youtu.be/jN8PlJpOo2o?t=6539

>2023


>java


>mybatis


Фу, аж пахнуло провинциальным аутсорс-бодишоп конторками, где люди в пропахших от соленого пота и уличной грязи одеждой сидят в арендованных офисах с пенопластовым потолком...
692 2967950
>>67926
Я (>>67923) как следует обдумал это всё.
И пришёл к выводу, что это не баг, а фича.
Причём - охуенная фича.
Без которой интерфейсы в Го не были бы настолько охуенны.

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

По поводу безопасности - если надо - можно проверять во время компиляции, реализует ли некий тип данный интерфейс:
var _ MyInterface = (*SomeType)(nil)
693 2967951
>>67948
Видео не смотрел.
Но, mybatis (а ещё лучше старый добрый iBatis) позволяет делать такие вещи, что хуйбернейт просто сосёт с проглотом.
Но, микросервисным зумерам не понять, разумеется.
Микросервисы - это деградация. И, я уверен, что эта ёбань закончится тогда же, когда закончится климатическая шиза и борьба с цисгендерным партриархальным угнетением.
694 2967962
Почему бесплатный вс код предупреждает о выходе новой версии го, а хваленный и дорогущий голэнд от жидбрейнс - нет?
695 2968017
>>67962
Потому что разработчики голанга рекомендовали вскод, а голэнд хз вообще кто
696 2968019
>>67950
Ну, это странно всё равно. Вместо того чтоб это было в две строчки, у меня код делится на одну где-то сверху и вторую где-то снизу.
Я понимаю что это конечно круто, может мне даж нравится, но это снижает читаемость.
697 2968057
>>67951
Микросервисы не закончатся еще долго, а когда и закончатся мы скорее перейдем на микромикросервисы а не обратно к монолита, потому что микросервисы сильно выгоднее для кабанчика
698 2968058
>>67962
Новая версия го у здоровых людей выходит когда ее в репозиторий зальют/когда решат проект обновить
15963857674720.png286 Кб, 1200x1200
699 2968134
>>67951

>Микросервисы - это деградация.


Двачую, почему-то каждый кабанчик уверен, что у него нагрузки на проекте уровня амазона и ему пиздец как нужны микросервисы при написании ебучего прототипа, на который в лучшем случае будет ходить сотня юзеров в месяц в ближайшие годы.
Сам перешел на подобный проект после нормального модульного монолита, и прямо комбо словил: развернуто около 20 разных сервисов в кубере, каждый в единственном экземпляре и с одной общей точкой входа, общение меду ними по gRPC, и все дружно ходят в один инстанс БД. Нагрузку обещают ту же сотню юзеров на ближайший год, так что с масштабированием и хайлоадом тоже все грустно.
Межсервисная связь напоминает человеческую многоножку, где чтобы сделать простейшее действие вроде регистрации пользователя, нужно будет по-очереди дернуть около 5 gRPC методов. Внедрение нормальных распределенных транзакций на уровне тех же саг затянулось на месяцы, пока обходимся разными костылями уровня открытия транзакции БД на одном из сервисов и пиханием прямо в нее rpc-метода в соседний. Если соседний сервис вернет ошибку, то можно будет откатить запись в БД и вернуть систему в исходное состояние, но работает очень ограниченно: для >2 членов многоножки например костыль ломается, и его нужно приправлять идемпотентными методами типа CreateOrReplaceUser(), которые в свою очередь будут активно засирать мусором базу.
Ну хоть платят неплохо и дают поиграться с хайповыми технологиями, так что я в принципе доволен и продолжаю зоонаблюдать. Будь я техлидом, переписал бы все на нормальный монолит и в хуй не дул.
Недавно вышла статья на хабре по теме, советую почитать https://habr.com/ru/articles/779362/
700 2968166
>>68057
Микросервисы - это дикий оверхед, тормоза, хаос.
И у кабанчиков (со временем) может стать меньше комбикорма по этой причине.
701 2968175
>>68134
Спасибо за охуительную историю.
Пост на хабре почитаю, название у него красивое.
Вообще, судя по некоторым признакам, до самых разных людей начинает (потихоньку) доходить, что идею микросервисов несколько заупотребляли в последние годы.
702 2968188
>>68019
Но, заметь, в итоге ты в две строчки обходишь ограничения API недоделанной библиотеки.

Вообще, я это понимаю так, что это цена, которую приходится платить за "динамическое" поведение в языке со статической типизацией.
Причём, это динамическое поведение организовано относительно несложными средствами, и правила просты и понятны (после окончания периода первоначального охуевания, лол).
703 2968200
>>68134
Видимо они не совсем понимают как надо разделять проект на сервисы и что они не обязательно должны быть микро.
704 2968207
>>00329 (OP)
Как лучше всего учить кубы? Книги либо говно, либо старые. Документация оч сухая и в целом не рассказывают как правильно работать с кубами. На ноуте куб не развернешь - жрет слишком много ресурсов. И т.д. и т.п. Сейчас в каждой вакансии требуют кубы и кафку. Как учить кафку, кста?
16505511059962.png620 Кб, 1280x785
705 2968218
>>68207

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


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

>Как учить кафку, кста?


Ставишь кафку, zookeeper, kafdrop лучше тоже через докер, поищи готовые compose-файлы и пишешь на гошке пару консюмер/продьюсер (желательно в разных сервисах, которые заодно развернешь в миникубе) с использованием готовых решений типа confluent-kafka-go.
Ну или купи vps за 5 баксов в месяц и делай все в нем, если боишься за свой ноут.
706 2968240
>>68218
Может есть какие-нибудь книги/курсы для изучения?
707 2968268
>>68240
Может и есть, но скорее всего почти все на англюсике. Ищи в гугле и официальных сайтах технологий, там обычно в секции tutorial/get started есть все необходимое для запуска.
А еще лучше загляни в гитхаб репу, скопируй example-код и попытайся его запустить, приобретешь в процессе в разы больше опыта чем курсовики, которым все разжевали и в рот положили.
https://github.com/confluentinc/confluent-kafka-go/blob/master/examples/consumer_example/consumer_example.go
Почему у нас столько курсозависимых? Никогда ими не пользовался, всегда изучал технологии уже в процессе разработки, впитывая информацию по мере поступления проблем. Смысл забивать голову кучей бесполезной инфы, если через неделю уже все забудется без подпитки механической памятью?
708 2968272
>>68240
С курсами в го вообще беда. За всё время не вышло ни одного нормального курса даже по основам. А по более продвинутым вещам и подавно. Приходится как курочка по зернышку собирать обрывки знаний.
709 2968290
>>68268
Так я читаю на английском. Книги просто либо старые либо говняные
710 2968303
>>68268
Курсы обычно новички читают, которые ещё не имеют коммерческий опыт
711 2968357
>>68290
Хороших тоже достаточно.
Хорошие книги - это издательства O'Reilly, Pragmatic, Apress, Manning.

По куберу: Kubernetes Up & Running, 3nd ed, Oct. 2022
Там даже рассказано, как сделать кластер на Raspberry Pi, лол.
https://scanlibs.com/kubernetes-up-running-3rd/

По Кафке: Kafka The Definitive Guide, 2nd ed, Mar. 2022
https://scanlibs.com/kafka-definitive-guide-2nd/

Брать на scanlibs.com. Там же ещё много всего.

Также, есть достаточно книг, где рассматривается разработка конкретного мини-проекта на Го, с последующим деплойментом в кубер-хуюбер.
712 2968454
>>68134
Микроархитектуры кал, пример с линуксом и миниксом доказал всё более, чем наглядно.
713 2968535
>>67962
>>68017
В чем вообще фишка Голэнда? Он хоть чем-то лучше VS Code?
714 2968538
>>68218

>Ну или купи vps за 5 баксов в месяц и делай все в нем, если боишься за свой ноут


А что с ноутом может произойти? Превращение?
715 2968550
>>68535
Там кнопочки красивее
716 2968605
>>68535
А в чём вообще фишка крузака?
Он хоть чем-то лучше форд-фокуса?
717 2968613
>>68550
VS Code красивее выглядит.

>>68605
Поясни, что имеешь в виду. По каким характеристикам сравниваешь Goland и VS Code?
718 2968616
>>68613

> Поясни, что имеешь в виду. По каким характеристикам сравниваешь Goland и VS Code?


По характеристике сел и поехал. Наверное если напердолить вскод будет неплохо, но мне платят за выполненные таски а не пердолинг с вскодом
719 2968617
Микросервисы и монолит - это крайности, а крайности как известно кал говна в большинстве случаев.
720 2968619
>>68616
Вскод универсален. Особенно если писать на разных языкахя привыкать заново к новое иде не нужно, всё в одном месте. Пердолиться с ним не надо, хз где вы откопали там какой-то пердолинг.
721 2968687
>>68619
Причём здесь пердолинг или не пердолинг?
IDE от джетбрейнс - это топ вообще, выше некуда, всё остальное даже рядом не лежало. Я этим пользуюсь уже лет дцать, и начал сильно задолго до того, как это стало мейнстримом.
Это мощный профессиональный инструмент.
Причём тут VS Code вообще?
722 2968689
>>68617
за распределенными монолитами будущее!
723 2968691
>>68687
Так сравнивают вскод с голендом
724 2968731
>>68619
Как будто с вариациями идеи нужно привыкать. Это буквально одна иде но с чуть чуть разным уникальным для языков функционалом
725 2968733
>>68134
Прочитал текст по ссылке (точнее - оригинал).
Это охуенно.
Надо каждого microservices-first еблана заставлять это читать до полного просветления.
726 2968751
>>68687
Чем конкретно софт от JetBrains лучше VS Code в контексте разработки на Go? С примерами лучше.
727 2968796
>>68751
Чувак, это вот как раз тот самый случай, когда "если надо объяснять, то не надо объяснять". Возьми сам, и посмотри.

Алсо, если тебе VS Code нравится больше - не слушай никого, и пользуйся.
Далеко не всем и не всегда нужны профессиональные инструменты. И для понимания некоторых вещей надо пройти определённый путь, и это иногда занимает годы. Понять, просто поговорив, не получится.
728 2968816
>>68796
А чего нет в VS Code? Работа с контейнерами есть, с гитом есть, ssh есть, до кучи всего добавляется плагинами, форматеры, всё это настраиваемое.
729 2968826
>>68796

>это вот как раз тот самый случай, когда "если надо объяснять, то не надо объяснять"


Нет.

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


>для понимания некоторых вещей надо пройти определённый путь


Ладно, это объясняет твое невладение вс кодом. Но ты попробуй, он не такой уж сложный.
730 2969019
>>68826
Пробовал. Это было очень давно и очень недолго. Не понравилось. И это говно ещё и засрало систему своими привязками, заебался чистить.
Ещё очень не понравился этот, как его, sublime text, на который не так давно фапали все нынешние любители вс кода

Я вообще очень привередливый. Например, Eclipse и инструменты на его основе я вообще использовать не могу, меня тошнит. А другим - нормально, одной рукой пишут, другой фапают.
С инструментами микрософта - примерно так же, хотя и в меньшей степени. А вот IDEA (и всё, что на её основе) - это просто чистый, незамутненный кайф.
При этом, я спокойно пишу несложные (а иногда и сложные) вещи в UltraEdit, или даже в Vim.

Но, возможно, дам вс коду ещё один шанс, когда-нибудь.
731 2969023
>>69019
Пиратишь идею?
732 2969085
>>69023
Использую китайски ключи.
С совершенно чистой совестью, т.к. заплатить им сейчас нельзя, при всём желании.

Алсо, для чистой джавы - community editon совершенно достаточно.
Но, у меня много всего, и надо ultimate.
733 2969195
>>69019
>>69085
Так ты не гошник, лол. Разговор был чисто про разработку на голанге.

Сравнение с саблаймом вообще пушка. Ты наверно лет 10 вс код не открывал.
734 2969225
>>68796
согласен. вон разрабы го до сих пор acme пользуются
735 2969263
>>69085
Где ключи можно нарыть?
736 2969268
>>69263
создай заявку в jira
737 2969554
Есть какие-нибудь адекватные примеры структуры проекта для сборки его через docker-compose вместе с базой данных? Который день ищу, но везде какой-то шлак попадает.
Собственно, основная проблема, что если просто скидать все файлы в корень проекта, то докер пытается скопировать всё в контейнер. Обычно первый запуск проходит успешно и видимо тут надо радоваться, но я решил собрать второй раз и получил ошибку, что он не может прочитать созданную им же самим папку с базой (там выставляются какие-то права только для root и не пускает обычного пользователя). На всяких стековерфлоу дают офигительные советы поменять права этой папке, запускать через sudo и прочие костыли для обхода проблемы, а не её решения. Да и в целом копировать кучу ненужных файлов в контейнер на мой взгляд не правильно, но найти красивое решение не могу.
738 2969580
>>69554
докеригнор https://docs.docker.com/engine/reference/builder/#dockerignore-file и всё остальное. хз че ты в докерфайле пишешь, но вопрос явно не про структуру папок в го проекте.
739 2969586
>>69263
В гугле. Искать нужно по-китайски.
И это называется не ключ, а "код активации".
740 2970068
>>69580
Не работает этот докеригнор. Многие тоже жалуются на проблемы с ним и в ответах рекомендуют правильно организовать папки.
741 2970474
Всё, что вы хотели знать о сексе в Go:
https://pkg.go.dev/github.com/emersion/go-vcard#Sex
742 2970519
>>70068
В общем, решил проблему. Надо докерфайл класть в отдельную папку с кодом на го, а файл докер-композ во внешней папке, где лежат всякие базы и прочие. Тогда конфликта не возникает и всё пересобирается корректно.
743 2970564
>>69554
Обычно делаю так.
папка app с проекторм
всё остальное в других папках, докерфайл лежит в корне. В самом докерфайле делается переход на папку app копирование всего оттуда куда надо и деплой.
744 2970572
>>70564

>докерфайл лежит в корне


У меня он цепляется за папку с базой и говорит, что нет доступа. И нет, чтобы пропустить и пойти дальше, но на этом вся сборка останавливается.
745 2970689
>>65738
Просто он раньше много времени проводил на конюшне
746 2970758
>>70572
Так пропиши ему доступ через chmod 755 -R в то место куда кидаешь или вообще сразу chmod +x
747 2971085
>>65738
Хихикает как шлюха, лол.
Тузов даёт в туза!
И акцент какой-то странный у него. Видимо, коренной москвич.

Вообще, у меня сложилось впечатление, что он просто дурачок какой-то.
См. пассаж на 35:11, например.
Ну, или инфоцыган.
748 2971798
>>71085

> программист


> не даёт в туза


Так не бывает
749 2972046
>>71798
Только не "программист", а "видео-блогер".
А так - всё правильно.
750 2972148
Перекат:
>>2972146 (OP)
751 2979141
>>59808

>Речь шла про то, что при агрессивном минимализме Го стектрейсы даже идеологически неприемлемы. Хотя, не удивлюсь, если сделают в дебаггере, например. Дженерики же сделали, пускай и через жопу. Хотя незадолго до того писали, что дженериков в Го не будет никогда, а если и будут, то в 2.0.


Как же тебе мозги промыли это пиздец.

В го есть и эксепшены и стектрейсы. Делаешь паник - и у тебя и эксепшн и стектрейс. Просто гойям этим пользоваться нельзя, а вот авторам стандартной библиотеки - можно.
752 2979169
>>63754

>Тем не менее на go написали k8s, docker, ngrok и много всего другого.


Так-то и на Perl пишут код, это же не значит что Perl хорошо спроектированный язык который стоит учить.
753 2979175
>>63786

>Вообще - конструктор - это и есть функция, просто в ООП языках это присыпано сахарком.


Вообще, в ООП главная фишка конструктора - что он вызывается ВСЕГДА, это гарантируется языком. Соответственно он может гарантировать консистентность данных. А в го приходится городить костыли с приватными типами и интерфейсами на ровном месте.
Вопрос о компании MAX Group LTD Макс 754 2982101
Дети, всем привет! кто-нибудь работал в компании MAX Group LTD? Офис в сити в мск.
Дали очень жирный Приглашение на ёлку, но компания кажется немного мутной.
Проекты на go и на 🎄
755 2984153
>>82101

>Чем предстоит заниматься:


>1. CryptoMerchant - платёжный шлюз, позволяющий интернет-магазинам принимать оплату в криптовалюте.


>2. Сервис резидентских и мобильных прокси с более 70 000 реальных IP-адресов по всему миру.


>ориентируемся на глобальный рынок и много зарабатываем: США, Канада, страны Латинской Америки, страны Восточной Европы, Китай, Индия.


Застолье занимается каким-то скамом. Это не значит, что тебя наебут я когда работал в подобной Застолье, они своих не кидали, но всё равно строчка в Письмо Деду Морозу так себе. Захочешь в МЯСКОТ устроиться и объясняй что за сервис прокси ты Белый Медведьатывал.
756 2993963
Посоны киньте пруф на свежий роадмап для вкатывания в голанг
757 2994046
>>93963
Хуй соси,деревенщина безграмотная
758 2994154
>>94046
дядя не хуесось, помоги дураку лучше
759 2994158
>>94154
Сколько у тебя лет коммерческого опыта?
760 2995792
>>94158
зеро
761 2995804
>>95792
Тогда забудь,го язык для свитчеров,а не для вкатунов. Приходи когда наберёшь опыта в беке на других языках
762 2997575
>>94154
Бро, не слушай красноглазика, он считает, чем больше новичков, тем больше демпинг зарплат на рынке. Поэтому не помогает.

Держи https://roadmap.sh/golang
Просто тупо иди шаг за шагом, главное не останавливайся
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 7 марта в 14:13.

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

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