Это копия, сохраненная 22 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ТУПОЕБСКИЙ ХОМЯК ЭДИШН
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, богатую и универсальную стандартную библиотеку функций и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.
Обсуждаем язык, смеемся с залетных крестоносцев, обсуждаем почему нам не нужны дженерики, наследование и эксепшены, по каждому багу находим трехстраничный пост в официальном блоге Go, объясняющий почему это на самом деле фича, ждем, когда нам завезут дженерики, наследование и эксепшены.
Растобляди завидуют, сектантская запарта не переваривает.
С чего начать:
- В обязательном порядке проходим Go Tour: https://tour.golang.org/welcome/1 (есть на Русском)
- Читаем документацию прямо по порядку (пункт "Learning Go"): https://golang.org/doc/
- Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/Alikhll/golang-developer-roadmap (постоянно обновляется сообществом)
Литература:
- Донован, Керниган "Язык программирования Go"
- Также хорошие книги для начала: https://www.golang-book.com/
- Книги из списка https://github.com/dariubs/GoBooks
- А также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
Полезные дополнения:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
Обновляемый список с пакетами: https://github.com/avelino/awesome-go
Небольшой канал треда: t.me/golang2ch
Предыдущий тред умирает здесь: >>1905210 (OP)
Шаблон шапки: https://pastebin.com/61qHsr2T
Расовое превосходство Go очевидно и не нуждается в доказательстве.
inb4 шарп спиздил модель зеленых тредов из го
Ты так говоришь, будто гринтреды изобрели в пщ, лол. Но даже если бы это было правдой, начнём с того, что все популярные языки спиздели лямбды из борщехлёбской хуйни без задач и спокойно живут себе, а борщехлёбская хуйня без задач так и осталась никому не нужной.
Смотри конкретно модель реализации шедулера в Go и в шарпе, а потом попробуй разобраться кто у кого спиздил. Желательно чтобы ты больше не унижался. спасибо
В огороде бузина, а в Киеве дядька.
> все популярные языки спиздели лямбды из борщехлёбской хуйни без задач и спокойно живут себе, а борщехлёбская хуйня без задач так и осталась никому не нужной.
Так в этом и суть. Лямбды в мейнстримной параше появились только сейчас, а в том, что ты называешь борщехлебской хуйней, были ещё когда твоя бабка была молодая. Точно так же зависимые типы. В идрисе есть уже 15 лет, а в общепринятый мейнстрим завезут ещё через 15.
Пиздец. Ну и ограниченный язык.
Ну да, нахуй нужны эти ваши метапрограммирования, DSL, лямбды, ADT, logic programming, это же всё долбоебов придумывалась, а не для лаканичного и человекочитаемого кода сформированного в виде коротких формул.
На счет шарпа не знаю, но от го отказываются крупные компании которые его же и пиарили 5 лет назад, включая сам гугол, стоит задуматься..
> Так для чего же он был создан таким простым? Вот пара цитат Роба Пайка (прим.пер.: один из соавторов языка Go):
> Ключевой момент здесь, что наши программисты (прим.пер.: гуглеры) не исследователи. Они, как правило, весьма молоды, идут к нам после учебы, возможно изучали Java, или C/C++, или Python. Они не в состоянии понять выдающийся язык, но в то же время мы хотим, чтобы они создавали хорошее ПО. Именно поэтому их язык должен прост им для понимания и изучения.
> Он должен быть знакомым, грубо говоря похожим на Си. Программисты работающие в Google рано начинают свою карьеру и в большинстве своем знакомы с процедурными языками, в частности семейства Си. Требование в скорой продуктивности на новом языке программирования означает, что язык не должен быть слишком радикальным.
> Что? Так Роб Пайк в сущности говорит, что разработчики в Google не столь хороши, потому они и создали язык для идиотов (прим.пер.: dumbed down), так чтобы они были в состоянии что-то сделать. Что за высокомерный взгляд на собственных коллег? Я всегда считал, что разработчики Google отобраны из самых ярких и лучших на Земле. Конечно они могут справиться с чем-то посложнее?
В C их нет и ничего, тонны хорошего ну, постоянно проблемы с переполнением буфера, но это другой вопрос софта написали.
> я.ебать(твояМамка)
Чё за язык у вас, переменные можно использовать до их инициализации?
мимо безопасный свифт помидор
У нас на уровне языка нет понятия инициализации, есть только понятие объявления, var я Я
При этом в переменной "я" оказывается нулевое значение для типа "Я" (0 для чисел, false для булов, nil для поинтеров и т.д.)
Метод можно вызывать и у nil значения, что само по себе не запрещено. Правда всё упадет с паникой, если ты попытаешься этот nil задереференсить. Но у тебя метод может этого и не делать, например. Или сам проверить условный self на nil и обработать это как-то, например провести ленивую инициализацию, если необходимо.
Вообще, в go считается хорошим правило make zero value useful, в стандартной либе это реализовано в случае sync.Mutex и sync.WaitGroup, которые после объявления готовы к использованию. В остальных случаях обычно пишут функции-конструкторы.
На самом деле не совсем так, инициализация через make есть для 3-х типов: слайса, мапы и канала. Но там особая ситуация, т.к. там нужно указать length и/или capacity. В первых двух случаях это нужно для того, чтобы сразу аллоцировать достаточное кол-во памяти, чтобы потом при добавлении элементов не копировать несколько раз данные в новую область памяти.
Благодаря C компьютерные программы - самое ненадежное из всего созданного человеком.
Ну и сравнивать goвно с говняшной это конечно тоже нужно быть гением.
> Я всегда считал, что разработчики Google отобраны из самых ярких и лучших на Земле.
Туда официально белых не берут https://www.cnews.ru/news/top/2018-03-05_google_rasporyadilas_brat_na_rabotu_tolko_zhenshchin . А у остальных пикрелейтед. Алсо, пщ официально БЛМ параша, на сайте указано. Используешь пщ = сойбой, куколд.
Гоферы, помогите разобраться
Пытаюсь осилить сей язык, параллельно решая маленькие задачки, наткнулся на просторах на упоминание задачки, где нужно инвертировать контент файла
И у меня вроде всё кое-как получилось, глазами вижу результат, но вот в самом конце содержимое выдать в stdout через ReadAll на 45 строчке не вышло, что я делаю не так? Вроде как Flush должен был решить проблему мою
https://play.golang.org/p/Nguk776CGI8
Файлик там простой, вида типа
1
2
3
Попытайся отделить логику (функцию, которая принимает io.Reader и io.Writer) от реального взаимодействия с файлами. Скорее всего у тебя проблема во втором. И да, bufio.Writer.Flush не флашит сам файл, он именно сбрасывает буфер из bufio.Writer'а
Ты такой умник, что запостил это в ML–треде >>1986303 → перед тем как попасть в правильный. Давай разберем все Робом пайком написанное, в этот раз без лишних иллюзий и маня–фантазий.
>наши программисты (прим.пер.: гуглеры) не исследователи.
Всё так. Гугл – это рекламная компания, в которой программисты должны продвигать технические решения вперед, причем сам этот технический процесс заключен в довольно консервативные рамки. Речь идет не об искусстве, не проедании грантов в университете, не наебывании дяди, а о том, чтобы зарабатывать гуглу деньги. Речь идет о ремесле.
>Они не в состоянии понять выдающийся язык, но в то же время мы хотим, чтобы они создавали хорошее ПО.
Это неправильный перевод. Brilliant скорее переводится как блестящий, а не выдающийся. Тут есть tongue–in–cheek со стороны Пайка, а именно стоит сперва обратить внимание на то, кто такой Роб пайк и какой у него бекграунд. Роб пайк — это чувак, который бОльшую часть своей жизни провел в чистой воды расовой исследовательской среде, где не гуглеры, а реальные исследователи, проедатели R&D корпобюджетов и всяких грантов от американских исследовательских институтов. Там же он своими руками создал UNIX, там же создал plan9 и ты удивишься, но в списке его заслуг можно найти Newsquak, Limbo и другие прорывные на тот момент технологии. Не говоря уже о самом большом его достижении, plan9, это вообще навеки оставило его в пантеоне величайших компьютерных исседователей. Теперь, лапочка, когда ты понял бекграунд этого чувака, ты должен понимать значение этой цитаты. Одно дело фантазировать на тему, а другое дело выполнять работу (продвигать техническое решение вперед) и поверь, Роб пайк не имеет никаких иллюзий на этот счет. Пайка и Томпсона пригласили работать в гулаг. Они поработали, чето там поделали (я даже не хочу вспоминать sawzall, пожалуйста, не надо) и у них появились определенные претензии к тому С++ и джаве, что на тот момент использовались в 95% кода гугла, в связи с чем они решили сделать свой язык. Это нормально. Как оказалось, помимо нормальности, этот язык еще оказался связан и с успехом. Потому что делали его профи, а не какие–то феминные томбои из университета, которым нужно что–то кому–то доказывать. Никому из создателей Go не надо ничего доказывать, их желания полностью сопряжены с рабочими задачами, с продвижением технического решения вперед. Это именно то, что Go позволяет делать. Не фантазировать, не умничать, не заниматься "искусством" я вообще ору со всех программистишек, которые думают что в этом ремесле больше искусства, чем например в литье а делать то, за что тебе платят деньги. Продвигать. техническое. решение. ВПЕРЕД
>Он должен быть знакомым, грубо говоря похожим на Си.
Совершенно верно. В любом ремесле, предпочтение всегда отдается более привычным инструментам.
>Что? Так Роб Пайк в сущности говорит, что разработчики в Google не столь хороши, потому они и создали язык для идиотов
Это не так. Роб пайк пытается сказать тебе–дурачку и таким дурачкам как ты, что есть большая разница между рабочей средой, где разрабатываются коммерческие продукты и рисерческой дармоедской средой, где приоритетом являются понты "блестящими" языками.
Если ты хочешь, чтобы твой язык блестел, достаточно помыть рот.
>Что за высокомерный взгляд на собственных коллег?
Иметь реальный, адекватный взгляд на вещи — это не высокомерие. Пайк держит своих "коллег" за тех, кем они являются — кодерами на зарплате, единственная задача которых, я повторюсь, продвигать техническое решение вперед. Поэтому он подарил нам Go — язык, который, на его взгляд, максимально эффективно позволяет справляться с этой задачей.
>Конечно они могут справиться с чем-то посложнее?
Не могут. Ты когда–то был в литейном цехе? Клещи, изложница — ты не найдешь там сложных инструментов. Потому что они не нужны в этом рабочем процессе. Все кто считают иначе — нихуя не понимают в ремесле.
Ты такой умник, что запостил это в ML–треде >>1986303 → перед тем как попасть в правильный. Давай разберем все Робом пайком написанное, в этот раз без лишних иллюзий и маня–фантазий.
>наши программисты (прим.пер.: гуглеры) не исследователи.
Всё так. Гугл – это рекламная компания, в которой программисты должны продвигать технические решения вперед, причем сам этот технический процесс заключен в довольно консервативные рамки. Речь идет не об искусстве, не проедании грантов в университете, не наебывании дяди, а о том, чтобы зарабатывать гуглу деньги. Речь идет о ремесле.
>Они не в состоянии понять выдающийся язык, но в то же время мы хотим, чтобы они создавали хорошее ПО.
Это неправильный перевод. Brilliant скорее переводится как блестящий, а не выдающийся. Тут есть tongue–in–cheek со стороны Пайка, а именно стоит сперва обратить внимание на то, кто такой Роб пайк и какой у него бекграунд. Роб пайк — это чувак, который бОльшую часть своей жизни провел в чистой воды расовой исследовательской среде, где не гуглеры, а реальные исследователи, проедатели R&D корпобюджетов и всяких грантов от американских исследовательских институтов. Там же он своими руками создал UNIX, там же создал plan9 и ты удивишься, но в списке его заслуг можно найти Newsquak, Limbo и другие прорывные на тот момент технологии. Не говоря уже о самом большом его достижении, plan9, это вообще навеки оставило его в пантеоне величайших компьютерных исседователей. Теперь, лапочка, когда ты понял бекграунд этого чувака, ты должен понимать значение этой цитаты. Одно дело фантазировать на тему, а другое дело выполнять работу (продвигать техническое решение вперед) и поверь, Роб пайк не имеет никаких иллюзий на этот счет. Пайка и Томпсона пригласили работать в гулаг. Они поработали, чето там поделали (я даже не хочу вспоминать sawzall, пожалуйста, не надо) и у них появились определенные претензии к тому С++ и джаве, что на тот момент использовались в 95% кода гугла, в связи с чем они решили сделать свой язык. Это нормально. Как оказалось, помимо нормальности, этот язык еще оказался связан и с успехом. Потому что делали его профи, а не какие–то феминные томбои из университета, которым нужно что–то кому–то доказывать. Никому из создателей Go не надо ничего доказывать, их желания полностью сопряжены с рабочими задачами, с продвижением технического решения вперед. Это именно то, что Go позволяет делать. Не фантазировать, не умничать, не заниматься "искусством" я вообще ору со всех программистишек, которые думают что в этом ремесле больше искусства, чем например в литье а делать то, за что тебе платят деньги. Продвигать. техническое. решение. ВПЕРЕД
>Он должен быть знакомым, грубо говоря похожим на Си.
Совершенно верно. В любом ремесле, предпочтение всегда отдается более привычным инструментам.
>Что? Так Роб Пайк в сущности говорит, что разработчики в Google не столь хороши, потому они и создали язык для идиотов
Это не так. Роб пайк пытается сказать тебе–дурачку и таким дурачкам как ты, что есть большая разница между рабочей средой, где разрабатываются коммерческие продукты и рисерческой дармоедской средой, где приоритетом являются понты "блестящими" языками.
Если ты хочешь, чтобы твой язык блестел, достаточно помыть рот.
>Что за высокомерный взгляд на собственных коллег?
Иметь реальный, адекватный взгляд на вещи — это не высокомерие. Пайк держит своих "коллег" за тех, кем они являются — кодерами на зарплате, единственная задача которых, я повторюсь, продвигать техническое решение вперед. Поэтому он подарил нам Go — язык, который, на его взгляд, максимально эффективно позволяет справляться с этой задачей.
>Конечно они могут справиться с чем-то посложнее?
Не могут. Ты когда–то был в литейном цехе? Клещи, изложница — ты не найдешь там сложных инструментов. Потому что они не нужны в этом рабочем процессе. Все кто считают иначе — нихуя не понимают в ремесле.
Переменная инициализировалась по умолчанию когда ты ее объвил на стеке при помощи var. Все нормально.
Бла Бла Бла, тупые аргументы–не–аргументы от маня–фантазера, который не знает:
(а) историю вычислений, портабельности софта
(б) обстоятельств рынка производства ПО
(в) ...судя по сказанному, ничего другого он тоже знать не может...
>Растобляди завидуют,
Нет конечно. В сегменте низкоуровневых языков раст самый выразительный - зачем его вообще сравнивать с языками со сборкой мусора.
И каким образом порезанность языка, отсутствие в нем элементарных фич, помогает "продвигать техническое решение"? Элементарно кода в разы больше писать приходится. Приходится концентрироваться не на логике, а на костылях.
У тебя методичка дырявая, протекает. Ничего "элементарного" в этом нет, приходи когда узнаешь что такое нюансы и компромиссы.
Как-то похуй чем там исторически обусловленна убогость и околонулевая выразительность говняшной, и по каким нелепым причинам она получила такое широкое распространение в свое время. Даже если тому были некие непреодолимые причины, это никак не меняет того, что это обьективно хуевый язык, совершенно не приспособленный для написания чего-либо сложнее автоматизации сливных бачков, и что все нужно было делать по-другому.
Не совсем понял, как тогда реально взаимодействовать с файлами, если не через ридеры-врайтеры, но спасибо за ответ! Попробую покопаться ещё, нагуглить много не получилось
> я вообще ору со всех программистишек, которые думают что в этом ремесле больше искусства, чем например в литье
Ты не прав. Программирование - искусство. Вернее математика - это искусство, прекрасная и идеальная база нашей реальности, а программирование это просто способ оформить формулы как нечто реальное.
https://youtu.be/DxfEbulyFcY
https://youtu.be/lctXaT9pxA0
https://youtu.be/X-iSQQgOd1A
Никто кроме растеров не сравнивает эту парашу с нормальными языками. Это кокрастоке растобляди–маргиналы лезут в нормальные немаргинализированные отрасли со своими советами и рекоммендациями насчет того, как правильно на самом деле делать вещи.
Но ведь остальные языки действительно неправильные. Ансейф, GC, WUT-моменты на каждом шагу.
Что растеры, что хаскелисты — это все сорта одного и того же запартного говна.
По существу хоть когда-нибудь что-нибудь напишешь?
Алсо, насчет нюансов:
>Василь Иваныч, а что такое «нюанс»?
>Ну, Петька, это так не объяснишь, это показывать надо… Становись-ка раком да скидавай портки.
>Петька встал, Василь Иваныч сзаду заехал и говорит:
>Вот видишь, Петька, у тебя хуй в жопе, и у меня хуй в жопе. Но есть один нюанс!
Ты сам не по существу пишешь, вот тебе шаблон:
- Go - хуйня недоязык.
- А вот мой %язык-нейм% изящный и правильный.
Хороший анекдот. А что тебе по–существу сказать? Раст — это ворованная LLVM параша, если в 2012 году еще казалось что из этого исследовательского языка может получиться что–то годное, чтобы оно имело собственный путь, то сейчас от этих иллюзий ничего не осталось. Гошечка пошла по совсем другому, своему пути, где с самого начала центровые чуваки сказали что на уступки идеологам никто идти не собирается и в результате смогли сохранить свою идентичность. Ты говоришь "порезанность языка" будто это что–то плохое, а у меня есть эмперические данные что эта порезанность — это в данном случае не баг, а фича, что говорится. Ты говоришь приходится концентрироваться на "костылях", но я в своей практике работы с го редко когда встречаю костыли. Обычно это очень предметный код, где за 10 минут ревью ты сразу видишь места для оптимизаций, а все структурные ошибки набитым глазом выкупаются еще быстрее. Элементарно — это когда тебе не надо задротить, а решение продвигается будто само по себе. Растобляди воняют насчет полиморфизма, хотя на самом деле в расте этого полиморфизма и нет–то, ну ладно в последнем релизе добавили константные дженерики, только смыслу? Все равно это все уже в С++ есть много лет и дает больше возможностей. Что касается го, так тут с самого начала всем сказали что "будем мономорфизировать" и это работает. Компилируется все быстро, кодогенерация есть в стандартной библиотеке и опять–таки, дает много больше возможстей, чем ограниченные говномакросы в том же расте. Ты генерируешь один раз, а потом компилируешь — и компилируешь быстро. Да, мономорфизация, да, нет каких–то там гарантий, но это никому не мешает. Потому что у языка есть какой–то свой путь, который четко обусловлен обстоятельствами его использования, а не фантазиями насчет того, как должны выглядеть воображаемые пирамидки в коде. Какую конкретику я могу тебе предоставить? Для кого–то программирование это средство достижения поставленных задач, для нормальных пацанов, а для кого–то это какая–то бесконечная игра в фантазию, которая заканчивается не продуктом, а такими же фантазиями. Если получится довести до рынка — уже успех, в то время как в любой другой немаргинализированной среде это только база. Подразумевается что без этого не может быть никаких разговоров, у маргиналов это не подразумевается.
Хороший анекдот. А что тебе по–существу сказать? Раст — это ворованная LLVM параша, если в 2012 году еще казалось что из этого исследовательского языка может получиться что–то годное, чтобы оно имело собственный путь, то сейчас от этих иллюзий ничего не осталось. Гошечка пошла по совсем другому, своему пути, где с самого начала центровые чуваки сказали что на уступки идеологам никто идти не собирается и в результате смогли сохранить свою идентичность. Ты говоришь "порезанность языка" будто это что–то плохое, а у меня есть эмперические данные что эта порезанность — это в данном случае не баг, а фича, что говорится. Ты говоришь приходится концентрироваться на "костылях", но я в своей практике работы с го редко когда встречаю костыли. Обычно это очень предметный код, где за 10 минут ревью ты сразу видишь места для оптимизаций, а все структурные ошибки набитым глазом выкупаются еще быстрее. Элементарно — это когда тебе не надо задротить, а решение продвигается будто само по себе. Растобляди воняют насчет полиморфизма, хотя на самом деле в расте этого полиморфизма и нет–то, ну ладно в последнем релизе добавили константные дженерики, только смыслу? Все равно это все уже в С++ есть много лет и дает больше возможностей. Что касается го, так тут с самого начала всем сказали что "будем мономорфизировать" и это работает. Компилируется все быстро, кодогенерация есть в стандартной библиотеке и опять–таки, дает много больше возможстей, чем ограниченные говномакросы в том же расте. Ты генерируешь один раз, а потом компилируешь — и компилируешь быстро. Да, мономорфизация, да, нет каких–то там гарантий, но это никому не мешает. Потому что у языка есть какой–то свой путь, который четко обусловлен обстоятельствами его использования, а не фантазиями насчет того, как должны выглядеть воображаемые пирамидки в коде. Какую конкретику я могу тебе предоставить? Для кого–то программирование это средство достижения поставленных задач, для нормальных пацанов, а для кого–то это какая–то бесконечная игра в фантазию, которая заканчивается не продуктом, а такими же фантазиями. Если получится довести до рынка — уже успех, в то время как в любой другой немаргинализированной среде это только база. Подразумевается что без этого не может быть никаких разговоров, у маргиналов это не подразумевается.
> - Go - хуйня недоязык.
> - А вот мой %язык-нейм% изящный и правильный.
Все верно. Что не так?
> Ты говоришь "порезанность языка" будто это что–то плохое
Это сука и есть зло. Зло в чистом виде. Ненавижу всяки питухоны, и жс-ы из-за того, что они нихуя не расширяемые, и любой код, что выходит за пределы их юзкейсов и возможностей превращается в нечитаемое, уродливое нечто.
мимо лиспо-пролого-боярин
> кодогенерация есть
Макака, котарая не знает про DRY, ты? Хватит оправдывать своё говно на костылях
>пок пок свой путь кококок не баг а фича нормальные пацаны just use for loops
Что-то ничему новому за столько лет гопетухи так и не научились.
Ну давай ты хоть расскажешь про эти эти самые
>эмперические данные про то что порезанность - хорошо
Только плиз без смехотворных фантазий про
>Обычно это очень предметный код, где за 10 минут ревью ты сразу видишь места для оптимизаций, а все структурные ошибки набитым глазом выкупаются еще быстрее.
Потому как в процедурных гоу-полотнах вся предметность растворяется в низкоуровневых (а других в гоувне просто нет) тумба-юмба деталях реализации и никакая доменная логика так не проглядывается, пока не прочтешь все целиком снизу-вверх 3 раза.
>Элементарно — это когда тебе не надо задротить, а решение продвигается будто само по себе.
Это называется duct tape programming который работает хорошо только кода пишешь манясервисы на 300 строк, и если нужно что-то менять, то весь код просто выбрасывается и пишется по новой.
Гоу в принципе не подходит для монолитов и даже для SOA, онли микросервисы, просто потому что язык другого не позволяет. А перекладывать архитектурные задачи на инфраструктуру - ну такое, конечно модная тема была лет 5 назад, но многие уже обожглись и спрыгнули.
Ни разу ничего такого я не писал, считаю все существующие на данный момент неборщехлебные языки говнищем. Голанг где-то лучше, где-то хуже. Иначе я бы в этом треде не сидел.
А я наоборот четкую идеологию в ущерб удобству и здравому смыслу только в go вижу. На любой вопрос почему в этом языке нету X адепты голанга начинают улулюкать и рассказывать что X НИНУЖНО, как им хорошо живется без X, X это вообще неправильно и т.д.
> Потому как в процедурных гоу-полотнах вся предметность растворяется в низкоуровневых (а других в гоувне просто нет) тумба-юмба деталях реализации и никакая доменная логика так не проглядывается, пока не прочтешь все целиком снизу-вверх 3 раза.
Двачну. Современный Паскаль какой-то. Поскорее бы похоронили это говно, чтобы глаща не мозолило.
Потому что го-вно. У него еще и работой с памятью сборщик мусора отвечает прям в рантайме занимается, знал?
>нормальные пацаны just use for loops
А нет разве? Или ты думаешь что если тебе комбинаторы завезли, то ты сразу супермозг? Внезапно, оказывается, на линейных комбинаторах много не напишешь! Ну, до тих пор пока тебе нужно делать какие–то тривиальные преобразования, по типу собрать сумму по списку, то наверное, напишешь, но как только оказывается что логика список негомогененная, и где–то возникают новые порядки, сразу комбинаторы садятся на жопу. Это, кстати, очень связанно с параллелизмом, см. такие языки как Futhark, где это большая проблема — запихнуть логику в комбинаторы второго порядка, чтобы сохранить при этом все плюшки многоядерности в GPU.
>Потому как в процедурных гоу-полотнах вся предметность растворяется в низкоуровневых
Это не так. На низком уровне у тебя низкоуровневые детали, на более высоком уровне — высокоуровневые. Что тебя смущает, обработка ошибок? Или все–таки отсутствие комбинаторов на уровне языка? Плиз, с ошибками все просто: ты либо их обрабатываешь, либо нет. Го делает очень больно, если ты их не обрабатываешь. А что касается комбинаторов и прочей Фпараши, так я могу только дать флаг в руки: большинство прикладных задач наивно не помещаются в комбинаторную логику, а ненаивный подход создает такие накладные расходы, что с таким успехом можно сразу и на фортране писать. Не смеши мои носки.
>никакая доменная логика так не проглядывается
Это не так. В нормальном коде на го, доменная логика всегда проглядывается, причем не хуже, чем в любом другом языке программирования.
>Это называется duct tape programming который работает хорошо только кода пишешь манясервисы на 300 строк
Я не хочу открывать для тебя секреты, но duct tape progamming это в принципе весь programming в целом. Если ты думаешь иначе, то у тебя банально мозги промыты какой–то методичкой, которая утверждает иначе. "Ну у нас–то мы действительно делаем правильно!" Это такая глупость, которая в 2021 году даже не требует внимания, настолько очевидно, что это глупость. Ты вообще хоть день программировал в нормально конторе? Представляешь себе немного, как выглядит любой технический процесс? Скажи мне, ололо мастер правильного программирования, что это такое, как не duct tape programming? Разница заключается лишь в том, как ты относишься к этому процессу, вставляешь ли ты палки в колеса, или решаешь эти проблемы?? На этом этапе и становится ясно, что ты либо клеишь изоленту, либо ее отдираешь. По сути, третьего не дано. Все, кто говорят иначе — просто дешевые пиздаболы, которые пытаются продать свою (очередную) секту. Вся суть ремесла в том, чтобы писать грамотный код в инварианте, а не пытаться подогнать его под какую–то конкретную логику, которая тебе кажется эстетичной. Надеюсь, ты когда–то это поймешь.
>А перекладывать архитектурные задачи на инфраструктуру
С подключением. Все "архитектурные", как ты говоришь, задачи — это задачи инфраструктуры. Код должен выполнять конкретные манипуляции между устройствами ввода и вывода за оптимальное время. По этой причине ORM это параша (покажи мне хотя бы одну ORM которая используется в гугле/фейсбуке/амазоне/да где угодно) и ровно по этой же причине любой дроч на "конструкции" такой же бесполезный, потому что в конце–концов это просто манипуляции поверх I/O, а мы уже очень, очень давно, умеем писать эту хуйню. Ты говоришь сишка с ее переполнениями, ок, но это даже 15 лет как не является стандартом. Все кто пишут на сишке сегодня — пишут на ней совсем иначе, как писали на ней 20 лет назад. Переполнения? Плиз. Тебе предлагается оставить свою методичку в другом месте, завалить ебало и писать корректные вещи, завместо нытья по поводу выдуманных вещей.
>нормальные пацаны just use for loops
А нет разве? Или ты думаешь что если тебе комбинаторы завезли, то ты сразу супермозг? Внезапно, оказывается, на линейных комбинаторах много не напишешь! Ну, до тих пор пока тебе нужно делать какие–то тривиальные преобразования, по типу собрать сумму по списку, то наверное, напишешь, но как только оказывается что логика список негомогененная, и где–то возникают новые порядки, сразу комбинаторы садятся на жопу. Это, кстати, очень связанно с параллелизмом, см. такие языки как Futhark, где это большая проблема — запихнуть логику в комбинаторы второго порядка, чтобы сохранить при этом все плюшки многоядерности в GPU.
>Потому как в процедурных гоу-полотнах вся предметность растворяется в низкоуровневых
Это не так. На низком уровне у тебя низкоуровневые детали, на более высоком уровне — высокоуровневые. Что тебя смущает, обработка ошибок? Или все–таки отсутствие комбинаторов на уровне языка? Плиз, с ошибками все просто: ты либо их обрабатываешь, либо нет. Го делает очень больно, если ты их не обрабатываешь. А что касается комбинаторов и прочей Фпараши, так я могу только дать флаг в руки: большинство прикладных задач наивно не помещаются в комбинаторную логику, а ненаивный подход создает такие накладные расходы, что с таким успехом можно сразу и на фортране писать. Не смеши мои носки.
>никакая доменная логика так не проглядывается
Это не так. В нормальном коде на го, доменная логика всегда проглядывается, причем не хуже, чем в любом другом языке программирования.
>Это называется duct tape programming который работает хорошо только кода пишешь манясервисы на 300 строк
Я не хочу открывать для тебя секреты, но duct tape progamming это в принципе весь programming в целом. Если ты думаешь иначе, то у тебя банально мозги промыты какой–то методичкой, которая утверждает иначе. "Ну у нас–то мы действительно делаем правильно!" Это такая глупость, которая в 2021 году даже не требует внимания, настолько очевидно, что это глупость. Ты вообще хоть день программировал в нормально конторе? Представляешь себе немного, как выглядит любой технический процесс? Скажи мне, ололо мастер правильного программирования, что это такое, как не duct tape programming? Разница заключается лишь в том, как ты относишься к этому процессу, вставляешь ли ты палки в колеса, или решаешь эти проблемы?? На этом этапе и становится ясно, что ты либо клеишь изоленту, либо ее отдираешь. По сути, третьего не дано. Все, кто говорят иначе — просто дешевые пиздаболы, которые пытаются продать свою (очередную) секту. Вся суть ремесла в том, чтобы писать грамотный код в инварианте, а не пытаться подогнать его под какую–то конкретную логику, которая тебе кажется эстетичной. Надеюсь, ты когда–то это поймешь.
>А перекладывать архитектурные задачи на инфраструктуру
С подключением. Все "архитектурные", как ты говоришь, задачи — это задачи инфраструктуры. Код должен выполнять конкретные манипуляции между устройствами ввода и вывода за оптимальное время. По этой причине ORM это параша (покажи мне хотя бы одну ORM которая используется в гугле/фейсбуке/амазоне/да где угодно) и ровно по этой же причине любой дроч на "конструкции" такой же бесполезный, потому что в конце–концов это просто манипуляции поверх I/O, а мы уже очень, очень давно, умеем писать эту хуйню. Ты говоришь сишка с ее переполнениями, ок, но это даже 15 лет как не является стандартом. Все кто пишут на сишке сегодня — пишут на ней совсем иначе, как писали на ней 20 лет назад. Переполнения? Плиз. Тебе предлагается оставить свою методичку в другом месте, завалить ебало и писать корректные вещи, завместо нытья по поводу выдуманных вещей.
>в ущерб удобству и здравому смыслу
А как ты себе вообще представляешь что такое здравый смысл? Рассел говорит: "Есть одна рука, есть другая рука, значит реальность существует и в ней есть хотя бы две руки." Ахуенный аргумент, только вот ни в каком формализме он смысла не имеет и если ты дольше двух дней в этой теме, то ты понимаешь что это тупо дроч на семантику. Что такое здравый смысл? Комбинаторы — это здравый смысл? Если ты математик–комбинаторик, то это вообще единственный смысл. Если ты алгебраист, то внезапно, это глупость, потому что львиную долю форм ты так не запишешь.
>На любой вопрос почему в этом языке нету X адепты голанга начинают улулюкать и рассказывать что X НИНУЖНО, как им хорошо живется без Х
Да потому что им действительно хорошо живется без этой хуйни. О какой хуйне идет речь? Дженерики? Пожалуйста, умники, мне приходилось писать сложные структуры данных, распределенные балансные деревья и прочью хуйню — каждый раз ты пишешь эту хуйню по–разному. Внезапно, это не учебник по computer science, есть реальные ограничения и ты вокруг этих ограничений танцуешь. Толковый чувак напишет эту дрянь на любом языке, быдло ничего не напишет и будет только лишь ныть про дженерики. У нас в С++ есть дженерики последние 30 лет и что? Ты сильно в восторге от С++? Я не думаю. Львиную долю жизнь я прописал на С++ и не могу сказать что потратил время как–то особенно хорошо. Ну да, есть полиморфизм, ну да, пишешь умно, но какой ценой? Нельзя делать вид, что на поддержку, в коде, этих потуг не уходит 50% времени. Уходит ведь. Потому что это потуги, потому что это дроч на очередные "пирамидки", на очередную семантику, которой СДВГшный программист пытается занять себе мозги, вместо продукта, который он разрабатывает.
Если речь идет об обработке ошибок, то см. выше что я писал. Ты либо обрабатываешь ошибки, либо ты этого не делаешь. Го делает больно, когда ты этого не делаешь. Все очень просто, "магически", по мановению палочки, ничего нигде не обрабатывается. Остальные пререкания это просто дроч на семантику того, как ты это делаешь. В го этого дроча нет.
Других "проблем" в го нет.
>в ущерб удобству и здравому смыслу
А как ты себе вообще представляешь что такое здравый смысл? Рассел говорит: "Есть одна рука, есть другая рука, значит реальность существует и в ней есть хотя бы две руки." Ахуенный аргумент, только вот ни в каком формализме он смысла не имеет и если ты дольше двух дней в этой теме, то ты понимаешь что это тупо дроч на семантику. Что такое здравый смысл? Комбинаторы — это здравый смысл? Если ты математик–комбинаторик, то это вообще единственный смысл. Если ты алгебраист, то внезапно, это глупость, потому что львиную долю форм ты так не запишешь.
>На любой вопрос почему в этом языке нету X адепты голанга начинают улулюкать и рассказывать что X НИНУЖНО, как им хорошо живется без Х
Да потому что им действительно хорошо живется без этой хуйни. О какой хуйне идет речь? Дженерики? Пожалуйста, умники, мне приходилось писать сложные структуры данных, распределенные балансные деревья и прочью хуйню — каждый раз ты пишешь эту хуйню по–разному. Внезапно, это не учебник по computer science, есть реальные ограничения и ты вокруг этих ограничений танцуешь. Толковый чувак напишет эту дрянь на любом языке, быдло ничего не напишет и будет только лишь ныть про дженерики. У нас в С++ есть дженерики последние 30 лет и что? Ты сильно в восторге от С++? Я не думаю. Львиную долю жизнь я прописал на С++ и не могу сказать что потратил время как–то особенно хорошо. Ну да, есть полиморфизм, ну да, пишешь умно, но какой ценой? Нельзя делать вид, что на поддержку, в коде, этих потуг не уходит 50% времени. Уходит ведь. Потому что это потуги, потому что это дроч на очередные "пирамидки", на очередную семантику, которой СДВГшный программист пытается занять себе мозги, вместо продукта, который он разрабатывает.
Если речь идет об обработке ошибок, то см. выше что я писал. Ты либо обрабатываешь ошибки, либо ты этого не делаешь. Го делает больно, когда ты этого не делаешь. Все очень просто, "магически", по мановению палочки, ничего нигде не обрабатывается. Остальные пререкания это просто дроч на семантику того, как ты это делаешь. В го этого дроча нет.
Других "проблем" в го нет.
Если ты обрабатываешь ошибки, то тебе не нужны "отладочные данные" в проде. В протвином случае ты принимаешь решение НЕ обрабатывать ошибки. ОК, это легетимное решение. Поэтому тебе дают отладочные данные. Не хочешь их иметь? Для этого есть сборочные флаги, которые их исключают.
По умолчанию, предполагается что ты ленивый (так и есть).
>ГОвноЛанг
>компетентные профи
Чет проиграл с такой самоироничной толстоты в шапке, лол.
мимо
>Внезапно, оказывается, на линейных комбинаторах много не напишешь
Вот это кстати действительно горькая правда, куда легче написать и понять:
for {
c1 <- colorList
c2 <- colorList
if c2 != c1
c3 <- colorList
if c3 != c2 && c3 != c1
}
Чем начать городить какую-то хуйню с комбинаторами. Хотя в той же скале это всего лишь синтаксический сахар.
Удвою это, нахуй комбинаторы!
довен, даже при установке флагов - бинарник дохуя отладочных данных содержит. Все функции в таблице экспорта, вопрос - нахуя? Если я их не импортирую.
Затем что если готовый бинарник будет весить 10кб, а не 20мб, никто не будет покупать винты. Если бинарник будет жрать 650кб, а не полгига, никто не купит память. И так далее.
а еще коронавирус придумали чтобі нас всех убіть
Когда попросил одноклассников не приносить в /pr/ goвняк
> Что тебя смущает, обработка ошибок? Или все–таки отсутствие комбинаторов на уровне языка?
Отсутствует возможность у языка строить абстракции.
> Внезапно, оказывается, на линейных комбинаторах много не напишешь!
И нахуй тебе линейные комбики, если есть структурная рекурсия?
Вы там на будущее добавьте в шапку
https://www.practical-go-lessons.com
Весьма неплохая вещь.
>но от го отказываются крупные компании которые его же и пиарили 5 лет назад, включая сам гугол
После некоторого хайпа пошел на спад, потом немного устаканилось
там вскукарек был "гугел отказался от голанга".
Ты мне даешь какой-то непонятный рейтинг, где CSS оказывается язык, лол, а ассемблер мол вообще пропал между 2012 и 2013-м.
ты либо долбоеб, либо пиздабол, читай на каких данных они эту картинку рисовали https://redmonk.com/sogrady/2021/03/01/language-rankings-1-21/
другой анон
Давай, расскажи как ты квиксорт отдельно оптимизировал под целые числа и с плавающей точкой.
Я никого не защищаю, но какие отрасли маргинализованные, а какие нет?
Дискорд еще от него отказывался года 2 назад. Там был какой то фатальный недостаток в сборщике мусора го, из за которого у них спайки рисовались на cpu графиках. Перешли на раст кста.
Фатальный недостаток был скорее в самом сервисе дисковода, где обезьяны–неосиляторы пытались сделать из программы на Го буквально аналог редиса, причем вручную выглючали GC и закономерно получили по рукам. С тех пор сборщик был заточен и под эффективную работу даже в таких случаях, но поезд ушел: блогпост "мы уходем в раст" был написан, всем обезьянам завезли новую методичку, где го кал, а раст ахуенный.
Популярнось Го растет значительно быстрее, чем Раста. Особенно в бизнесе, особенно в тырпрайзе.
Ну ты же понимаешь что эти рейтинги ни о чем не говорят? Что раст, что скала, powershell, CSS — показатели этих технологий очевидным образом искажены (не говоря уже о том, что многие из них языками программирования не являются). Количество проектов на расте? Не смешите меня, у каждого второго клоуна–аутиста есть hello world на гитхабе, который умеет примерно чуть меньше, чем нихуя. При этом в бизнесе раст не используется _вообще_ в то время, как го используется везде. По графику может показаться что это технологии одного калибра, когда в реальности, раст — это маргинальная хуйня пошиба хаскеля, а го — это топ-5 актуальная технология для прода.
>Фатальный недостаток был скорее в самом сервисе дисковода, где обезьяны–неосиляторы пытались сделать из программы на Го буквально аналог редиса, причем вручную выглючали GC и закономерно получили по рукам. С тех пор сборщик был заточен и под эффективную работу даже в таких случаях
Откуда такие технические подробности?
Из их собственного блога, конечно же. https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f Ну и еще чуваки из той команды отписывали на оранжевом сайте, я в двух словах понял в чем там заключалась история. Russ Cox из команды Go потом работал с ними в последствии для решения подобного класса проблем. То есть что сделали обезьяны? Они сделали грубо говоря один огромный мап с кучей ссылок (лол) понятное дело что когда эта хуйня на куче (она только там и может быть если ты хочешь использовать динамичесские аллокации, аки map) и ты будешь ее постоянно дергать, фрагментировать, что время от времени нужно будет ее балансировать. Что собственно говоря и делал на тот момент GC в гошечке. Потом в поздних ревизиях concurrent M&S сборщика этот недостаток устранили адаптивным путем (я не помню в каком коммите, но это точно делал russ cox) А что касается растоблядей в дискорде, для того чтобы понять насколько их блог–пост идеологический бред, достаточно просто читануть пару параграфов:
>Discord is a product focused company, so we’ll start with some product context.
...И далее следует примерно НОЛЬ продуктовой информации; любой продуктовик (и я в том числе) сразу понимает, что текст писал дилетант, который примерно нихуя не понимает в продуктах. Это моментальный красный флаг в самом начале статьи, который намекает на то, что дальше ничего толкового быть не может.
>With the Go implementation, the Read States service was not supporting its product requirements. It was fast most of the time, but every few minutes we saw large latency spikes that were bad for user experience.
Во–первых, программные решения это не то, что поддерживает, а то, что может удовлетворять, либо не удовлетворять ограничения. Во–вторых, тупая шлюха все еще ничего не сказала об этих ограничениях. Кроме того, что "large spikes" судя по всему для них неудовлетворительно, хотя хуй знает что это за спайки. Давай посмотрим дальше.
>After investigating, we determined the spikes were due to core Go features: its memory model and garbage collector (GC).
Да-да, конечно, виной всему ни в коем случае не ваш говнокод с кучей ссылок в масштабной хэш–таблице, а именно лейаутинг и сборщик мусора. 100%, отличное оправдание, все обезьяны здесь уже моментально, без всякого сомнения, верят на слово!
>In other words, instead of freeing immediately after the memory is out of use, memory hangs out for a bit until the garbage collector can determine if it’s truly out of use.
Опять обсреньк, это просто бред больной шлюхи. Уже в 2018 году сборщик делал concurrent mark, поэтому на самом деле никого ждать не надо, сразу понятно используется участок или нет. Другое дело что ни один рантайм, да что там, ни один уважаемый аллокатор (я не говорю про арены) не делает моментальные освобождения, ведь это тупо фрагментирует память. Опять–таки, если структура твоего лейаута сложнее, чем вектор.
>These latency spikes definitely smelled like garbage collection performance impact, but we had written the Go code very efficiently and had very few allocations. We were not creating a lot of garbage.
>[...}
>Thus, we figured a smaller LRU cache would be faster because the garbage collector would have less to scan. So we added another setting to the service to change the size of the LRU cache and changed the architecture to have many partitioned LRU caches per server.
Нет, ну этот китч я даже комментировать не хочу. Мусор они не генерировали, за исключением записей и инвалидаций (это кэш, карл!) в ХЭШ–ТАБЛИЦЕ! СУКА.
На самом деле, проблемы с большими кэшами, аренами, оффсетами по производительности и т.д. это все известная лапша. И много кто с ней сталкивается в любом языке с рантаймом, в том числе и в Go, где конкретно с этим классом проблем столкнулись практически одновременно БД чуваки из Cockroach и dgraph (две просто ахуительные СУБД написанные на Go):
Dgraph сделали свое решение Ristretto https://dgraph.io/blog/post/introducing-ristretto-high-perf-go-cache/
Cockroach сделали Pebble для более широкого класса K/V задач, решение на основе RocksDB https://www.cockroachlabs.com/blog/pebble-rocksdb-kv-store/
Кстати, у них есть также ахуенный анализ сложности cgo https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ и лекция, которая покрывает большинство проблем, с которыми тебе никогда не придется столкнуться https://www.cockroachlabs.com/community/tech-talks/challenges-writing-massive-complex-go-application/
В итоге имеем что? Обезьяны из дисковода оказались не в состоянии сделать кэш, не в состоянии сделать аллокатор, не в состоянии сделать арену. Да что уж говорить, как оказалось, они в своих потугах ничего не смогли сделать. В итоге, по задаче идеологов, переписали все с нуля на расте (с учетом прошлых ошибок, конечно) и вуаля, внезапно начало работать.
Из их собственного блога, конечно же. https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f Ну и еще чуваки из той команды отписывали на оранжевом сайте, я в двух словах понял в чем там заключалась история. Russ Cox из команды Go потом работал с ними в последствии для решения подобного класса проблем. То есть что сделали обезьяны? Они сделали грубо говоря один огромный мап с кучей ссылок (лол) понятное дело что когда эта хуйня на куче (она только там и может быть если ты хочешь использовать динамичесские аллокации, аки map) и ты будешь ее постоянно дергать, фрагментировать, что время от времени нужно будет ее балансировать. Что собственно говоря и делал на тот момент GC в гошечке. Потом в поздних ревизиях concurrent M&S сборщика этот недостаток устранили адаптивным путем (я не помню в каком коммите, но это точно делал russ cox) А что касается растоблядей в дискорде, для того чтобы понять насколько их блог–пост идеологический бред, достаточно просто читануть пару параграфов:
>Discord is a product focused company, so we’ll start with some product context.
...И далее следует примерно НОЛЬ продуктовой информации; любой продуктовик (и я в том числе) сразу понимает, что текст писал дилетант, который примерно нихуя не понимает в продуктах. Это моментальный красный флаг в самом начале статьи, который намекает на то, что дальше ничего толкового быть не может.
>With the Go implementation, the Read States service was not supporting its product requirements. It was fast most of the time, but every few minutes we saw large latency spikes that were bad for user experience.
Во–первых, программные решения это не то, что поддерживает, а то, что может удовлетворять, либо не удовлетворять ограничения. Во–вторых, тупая шлюха все еще ничего не сказала об этих ограничениях. Кроме того, что "large spikes" судя по всему для них неудовлетворительно, хотя хуй знает что это за спайки. Давай посмотрим дальше.
>After investigating, we determined the spikes were due to core Go features: its memory model and garbage collector (GC).
Да-да, конечно, виной всему ни в коем случае не ваш говнокод с кучей ссылок в масштабной хэш–таблице, а именно лейаутинг и сборщик мусора. 100%, отличное оправдание, все обезьяны здесь уже моментально, без всякого сомнения, верят на слово!
>In other words, instead of freeing immediately after the memory is out of use, memory hangs out for a bit until the garbage collector can determine if it’s truly out of use.
Опять обсреньк, это просто бред больной шлюхи. Уже в 2018 году сборщик делал concurrent mark, поэтому на самом деле никого ждать не надо, сразу понятно используется участок или нет. Другое дело что ни один рантайм, да что там, ни один уважаемый аллокатор (я не говорю про арены) не делает моментальные освобождения, ведь это тупо фрагментирует память. Опять–таки, если структура твоего лейаута сложнее, чем вектор.
>These latency spikes definitely smelled like garbage collection performance impact, but we had written the Go code very efficiently and had very few allocations. We were not creating a lot of garbage.
>[...}
>Thus, we figured a smaller LRU cache would be faster because the garbage collector would have less to scan. So we added another setting to the service to change the size of the LRU cache and changed the architecture to have many partitioned LRU caches per server.
Нет, ну этот китч я даже комментировать не хочу. Мусор они не генерировали, за исключением записей и инвалидаций (это кэш, карл!) в ХЭШ–ТАБЛИЦЕ! СУКА.
На самом деле, проблемы с большими кэшами, аренами, оффсетами по производительности и т.д. это все известная лапша. И много кто с ней сталкивается в любом языке с рантаймом, в том числе и в Go, где конкретно с этим классом проблем столкнулись практически одновременно БД чуваки из Cockroach и dgraph (две просто ахуительные СУБД написанные на Go):
Dgraph сделали свое решение Ristretto https://dgraph.io/blog/post/introducing-ristretto-high-perf-go-cache/
Cockroach сделали Pebble для более широкого класса K/V задач, решение на основе RocksDB https://www.cockroachlabs.com/blog/pebble-rocksdb-kv-store/
Кстати, у них есть также ахуенный анализ сложности cgo https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ и лекция, которая покрывает большинство проблем, с которыми тебе никогда не придется столкнуться https://www.cockroachlabs.com/community/tech-talks/challenges-writing-massive-complex-go-application/
В итоге имеем что? Обезьяны из дисковода оказались не в состоянии сделать кэш, не в состоянии сделать аллокатор, не в состоянии сделать арену. Да что уж говорить, как оказалось, они в своих потугах ничего не смогли сделать. В итоге, по задаче идеологов, переписали все с нуля на расте (с учетом прошлых ошибок, конечно) и вуаля, внезапно начало работать.
go run hello.go, это чтобы просто запустить файл, но если ты хочешь больше одного файла запускать, менеджить зависимости и т.д. тогда надо делать mkdir hello && cd hello && mod init hello. Внутри достаточно делать go build && ./hello
Ты же писал, что дженерики вообще не нужны, потому что нормальные пацаны оптимизируют все под каждый тип данных.
Я писал совсем другое, ты просто жопой читаешь. Я сказал что экзотические структуры данных, балансные структуры, распределенные структуры обычно пишутся под конкретный лейаут, под очень конкретные операции. Там тупо не нужны дженерики. Вернее, они может даже и нужны, но в перспективе использование конфликтирующих типов оказывается напряжнее, чем просто придерживаться конвенции.
Что касается квиксорта, так там вообще это не проблема. Есть интерфейс для сортировки, который позволяет тебе создать произвольный slice type, для которого ты можешь менять критерии сортировки посредством полиморфизма, инкапсуляции. В некоторых случаях это намного удобнее, чем городить кастомные сравнивающие лямбды. Плюс есть sort.Slice, который сортирует произвольный слайс с твоей сравнивающией функцией. Конкретно что касается сортировки в го, я тут никогда не упирался в дженерики. В дженерики обычно упираешься когда делаешь какие–то простые, но по сути универсальные структуры данных, деревья. Для этих вещей есть кодогенераторы (ничем не зуже макросов в том же расте, точно такая же мономорфизация) Хотя действительно порой забиваешь и делаешь interface{}, но обычно это все рефакторится на какие–то более конкретные интерфейсы с сохранением безопасности. Паттерн матчинга нет, но никто не запрещает тебе его сделать ручками.
>но по сути универсальные структуры данных, деревья.
НЕНУЖОН
Просто имплементируешь метод Less, и делаешь деревья какие хош.
https://pkg.go.dev/github.com/google/btree#Item
Ну да, так обычно и делают.
Не помогает
1280x720, 0:41
Хотя не, помогло
\x ->
Магия FP. Онли лямбды, онли минимализм. Нахуй этот ООП-цирк, когда есть лямбды.
Это я реквестил. Вот вчера наткнулся на https://habr.com/ru/company/mailru/blog/490340/, правда самоподдув не удался.
Только еще больше жопа сгорела с того, какой же дегенерат это писал, и с того факта что существует уйма дэбилов которые во всё это верят.
Ну это дефолтный шитпост с хабра. Там день через день подобная хуета публикуется с размазываением абстрактных фантазий по дереву от очередного графомана. А я правда хочу понять, почему сука нельзя сделать НОРМАЛЬНО ебучий обработчик. Да хер с ним даже, это сложно и не 'ПУТЬ GO', ну или исключения ебаные добавить. Невозможно же читать этот пиздец, даже в стандартных библиотеках.
Просто сделай макрос для этой хуйни и забей хуй. Почему у тебя пылает от безобидной строчки кода? Или ты попросту решил что ты лучше всех, типа ты "не такой", повторять одну и ту же строчку это "не для тебя"?
Ты не можешь читать этот "пиздец" потому что ты дурилка не хочешь ошибки обрабатывать. Приходи в тред когда подрастешь.
Тогда оно и в C есть.
Да ничего я не решил, просто это на мой, не самый опытный взгляд это выглядит очень топорно и я хотел бы понять почему именно так сделано. А нахожу только невнятный бред, как на хабре выше, либо отмазы, про то, что в гугле по историческим причинам запрещены исключения, как будто это единственный вариант.
>>1990710
То есть в других языках никто ошибки не обрабатывает, только гоша такой весь золотой, на две строчки логики строчка бессмысленной лапши. Понял - понял.
указатель на тип - это по сути отдельный тип данных, который идет в комплекте с любым типом (кроме интерфейсов)
Хуета же подход, в самом деле. Чаще всего никакой обработки, кроме падения с log.Fatal() не требуется, и такой общий обработчик на несколько ошибок очень помог бы. Но нет, давайте копипастить, ибо таков путь.
Во!! Я и хочу такой самоподдув, как у тебя, чтобы чувствовать, что это не язык ебануто спроектирован, а все остальные говно ебаное.
Ток надо политинформацию найти грамотную.
Я не занимаюсь самподдувом, просто смотрю на предметную область с высоты мноgoлетнего опыта. Когда–то у тебя тоjе так получится, все впереди.
Просто сейчас на распутье, куда перекатиться из одной олокоИТ смежной области, но петухон кое-как знаю
Ну сложную бизнес логику обычно на go не пишут. Чаще всего используют для вынесения высокопроизводительных частей кода в микросервисы на go.
Да.
Чем этот своеобразный подход так хорош и почему его все хуесосят и ниодной статьи нормально объясняющей его превосходство нет?
>Ряяя, сначала добейся!! На опыте!! Нипаймешь!!
Выглядит как самоподдув.
>Бизнес–логика не может быть "сложной", лол, хватит сочинять.
Ну как поработаешь с чем то сложнее магазина про продаже носков - тогда и поймешь.
Банковский софт, трейдинg, клиринg (APEX) для тебя достаточно сложно, умник?
> Бизнес–логика не может быть "сложной", лол, хватит сочинять.
Как тебе требования в духе "необходимо автоматически проводить платёжные документы указанного типа, счёт получателя в которых начинается с таких-то цифр, счёт отправителя есть в указанной таблице специальных счетов, но только в первый день месяца, если он не является выходным"? И такой хуйни по сравнению с крудами в проекте просто дохуя.
мимо джавист
>необходимо автоматически проводить платёжные документы указанного типа, счёт получателя в которых начинается с таких-то цифр, счёт отправителя есть в указанной таблице специальных счетов, но только в первый день месяца, если он не является выходным
Изи, за свою карьеру неоднократно делал такие вещи как для управления инвентарем/персоналом, так и в финтехе (clearning, compliance). ничеgo сложноgo в этом нет
А еще в идеале, чтобы на "репостных" сториз он шёл на акканут оригинаьной сториз и сохранялоригинал оттуда
Это и есть сложная логика. Сложной логикой называют не то что её сложно писать лол, а то что её много и в ней всё взаимосвязано.
Видимо недостаточно, раз работая с этим ты остался таким узколобым фанатиком.
>Ребзя мне тут сказали, что в бекенде петухон почти все
Это правда, новые сервисы на питоне это либо обертка над МЛ хотя на самом деле можно для этого использовать что угодно, даже го либо интернет-магазины на джанге. Если хочешь вкатиться в бекенд бери ноду, на нее вакансий в 4 раза больше, только соглашайся на работу только если они не юзают тайпскрипт, иначе будешь 95% времени фрустрировать.
>и скоро на его замену придет гошечка. Это правда?
Я думаю когда-нибуть го придет на замену джаве и шарпам, но это случиться не завтра и не послезавтра.
Да, держи.
1) Ставишь https://github.com/facebookarchive/python-instagram
2) Прикручиваешь логику
3) Пихаешь в крон
4) ???????
5) ПРОФИТ!
>только соглашайся на работу только если они не юзают тайпскрипт, иначе будешь 95% времени фрустрировать.
Это еще почему?
>TypeError: "foo" is not a function
>TypeError: Cannot read property of undefined
>TypeError: null is not an object
при том что, блядь, typeof null => "object"
По сравнению с ванильным жиесоговном выглядит, как манна небесная.
Ну я так и подумал, поэтому и удивился.
что такое "логика" в данном контексте и что такое крон? Я 0 в программировнии. Просто гуглил, и в Инете написано что Го лёгкий язык.
>что такое "логика" в данном контексте
Получения списка сторсисов, сопоставление его с локальным списком сторисов, найти несовпадения и скачать их.
>что такое крон
Линуксовый сервис, с помощью которого можно запускать скрипты с некоторой заданной периодичностью
>Я 0 в программировнии.
Тогда тебе нужно либо заплатить денег фрилансерам, либо найти энтузиастов, которые тебе за так напишут это, либо научиться программировать и только после этого попробовать реализовать что-то подобное. С нуля это слишком сложно. Попробуй курсы на степике, если у тебя цель обучиться программированию.
> Просто гуглил, и в Инете написано что Го лёгкий язык.
Так часто говорят, но это не совсем корректно. Это как с топором и пилой - с пилой тебе нужно меньше навыков, чтобы эффективно работать, но тебе всё еще нужны навыки. Когда так говорят, то подразумевают, что знающим любой другой язык будет проще начать писать на го. Но для начала нужно знать другой язык, а так же предметную область - в твоем случае это HTTP API и работа с файлами.
Это сказано про языки, которые поощряют обработку исключений в самурайском стиле: возвращайся с победой или не возвращайся совсем. В языках, в основе которых лежат исключения, функции возвращают только корректные результаты. Если функция не может этого сделать, то поток управления идёт совсем по другому пути.
Очевидно, что непроверенные исключения представляют собой небезопасную модель программирования. Как вы можете писать надёжный код при наличии ошибок, если не знаете, какие выражения могут кинуть исключение? Java пытается уменьшить риски с помощью концепции проверенных исключений. И насколько я знаю, в других популярных языках не существует аналогов этого решения. Исключения есть во многих языках, и везде, кроме Java, они не проверяются.
Очевидно, что Go пошёл по другому пути. Программисты на Go считают, что надёжные программы создаются из частей, которые обрабатывают сбои до обработки успешных путей прохождения. Учитывая, что язык создавался для серверной разработки, создания многопоточных программ, а также программ, обрабатывающих данные, входящие по сети, программисты должны во главу угла ставить работу с неожиданными и повреждёнными данными, таймаутами и сбоями подключения. Конечно, если они хотят делать надёжные продукты.
#хейтерыСосать
>Блог компании Mail.ru Group
Эту графонманию уже раза 3 в треде обоссывали. Сам придумал хуйню - сам с ней поспорил, приправил все это шизоидными высерами про абстрактные ценности и хоба - готова очередная говностатья на хабр, насяльник премию даст.
>надёжные программы создаются из частей, которые обрабатывают сбои до обработки успешных путей прохождения
Как это связано с реализацией обработки через ебанутую копипасту через строку? Доебался конкретно до непроверяемых исключений, которые в полутра полуметртвых языках активно используют, охуеть аргументация. Остальные языкки видимо пздц опасные и ошибки не обрабатывают. Каким же надо быть куколдом чтобы такой пиздец всерьез принимать.
>непроверенные исключения представляют собой небезопасную модель программирования
Ахаха, неудачники. Так и будете крэшиться после каждого необработанного эксепшена? Ах да, у вас же даже экспепшонов нету
window.addEventListener('error', function () { return false }) // похуй, пляшем
мимо javascript-господин
Бизнес логика это еввенты и документооборот
Да написать это херня, а вот читабельность кода эти многочисленные проверки ухудшают просто в разы.
Когда научишься в скролл приходи
Двачну. И лучше избавиться от функций и перейти таки к процедурам. Так же надо избавиться от юникода. Система типов тоже нахуй не нужна, излишество.
Утрою тогда, ведь программисты должны во главу угла ставить работу с неожиданными и повреждёнными данными, таймаутами и сбоями подключения, а эти ваши циклы замусоривают мой код, и иногда приходится даже по нескольку строк писать без err != nill.
Внезапно вздвачну, goto логика выигрывает в каждом случае.
Мне кажется, или там как раз нужная >>1990998 тематика? https://t.me/s/istories_workshop
Типа парсинг и работа с рез-ми
Хочу свою ГТА, но больше, глубже и качестенее. чем 4 и5. И чем 6-ая часть(в будущем)
или С++ онли?
Хоть кто-то ведется на этот маркетинговый буллщит? В нормальных языках функции декларируют как возвращаемый тип, так и возможные типы исключений. Можно их обрабатывать, а можно забить хуй и пусть там наверху разбираются. Это адекватный подход, в отличие от if err != nil
То есть школьник, ясно.
Да.
>Сколько по-твоему людей участвует в создании ААА-тайтла?
от 100
>>1992797
>Сколько из них – программисты?
20% от команды
>>1992797
>Сколько примерно процентов из всего продукта составляет программирование?
Ну тут как считать. Все 100 Гггабайт игры - код.
ССколько времени? Человекочасов?
Я думаЮ, дохуя.
Я лишь сравшивал, го для ААА-геймдева подоздит или нихуя? Я хочу оупен-ворлд игру круче, чем будет ГТА 6. Графон, оптимизация, кастомизабельность кастомного движка, задел на апргрейды и будущее.
100 гигабайт это код? А текстуры, модели, музыка и т.д.? Или это тоже кодом генерируется, как в .kkrieger?
ну текстуры, модели - это все завязано на движке
музыка тоже. как она проигрывается, синхронихируется, компрессируется и т.д. и т.п
Ну смотри, ты же у нас в одного пилишь всю игру, допустим ты лично создал с нуля ИДЕАЛЬНЫЙ движок, знаешь его до каждой строчки кода, лол. Твои действия дальше?
Ищу сценариста,делюсь с ним идеей игры. Нанимаю прогеров, создаём ООО, даю им разобраться с движокм и приступаем к игре. Оупен ворлд , сюжет + мультиплеер, карта - город и пригород, в 2-3-4 раза больше ГТА 5. Питер. Дохуя локаций(ВО, крепость, пушкино, ленино, купчино, кронташтд, петергоф, мб кусок выборга? дохуя моделей нужно будет сделтаь, да), зданий, итереьров, баров на первых этажах, подвалов, мосты, порты, заправки, в общем, пиздец как работы 3д-модельерам и художникам. Машины и общее качесто моделей должн ыбы на уровне ГТА и лушче, а не как в Хеви Рейн или СЕйнтс Роу.
Радио, разговры НПС на уице по телефону, все пересвзяанное межд собой.
Красивая и иделаьно оптимизирваонная графика, на уровне того, ка ГТА 5 восприимется сейчас, чтобы воспринималсь в будущем(когда выдет +5..10...15?? лет%%вы заметили что игры 2000 в 2010 выглядели а кговно а игры 2010 в 2020 выглядят бодрячком? МЕ2, бетман, гта4/5, анчертед 2). Вода, мосты, пляжи, каналы, ночь и вечеР, улицы полные источников света, теефонов, фар, фонарей.
Комедийно-драмтиеский сюжет в стиле ГТА, с юмором, но не как Сейтнс Роу балаган.
уМультиплеер. Охренительый сетевой код, чтобы 80-100 плееров на сервере выдерживал. ЧТобы душевно было.
А как тогда все основные десктопные и серверные ОС написаны на Си и нормально?
Потому что ОС - это байтоёбский софт, который невозможно написать не на байтоёбском языке, а в те времена, когда писалась их основная кодовая база, разрабов того же Раста даже в яйцах их батьков ещё не было.
Но ведь ты говоришь
> совершенно не приспособленный для написания чего-либо сложнее автоматизации сливных бачков, и что все нужно было делать по-другому.
а он, оказывается, приспособлен для задач даже более сложных, чем сверхбыстрое асинхронное перекладывание жсонов, которым занимаются все сидящие в треде
>>1992940
А корованы можно будет грабить?
> сверхбыстрое асинхронное перекладывание жсонов, которым занимаются все сидящие в треде
Лол, тут половина - не гоферы, а жирные тролли.
Тем не менее, занимаются они тем же самым, просто на других языках
>А корованы можно будет грабить?
Логика в идеях очень обширная и глубокая. Без роста деревьев в рил тайм(понмии кто общения Мульнье 10+ летней давности? эх время летит), но хочу общий уровень качества мира и геймплейя как рдр 2 и гта 6.
Пока думаю вот, как в GTA VC пасхалка с появляющимся в опредленной предполуночное время изображением пениса, составленном из горящих окон отеля, была реализованна. В оопреденное игровое время менялась текстура облицовки? или что?
Чел, представть.
Питер 90-ых или ранних нулевых. Купчино, Дыбено, Автово в роли гетто, НАШИ блять улицы, гаражи, тусклые поребрики(ты вообще обращал внимание как реалистично в ГТА 5 нарисованны текстуры асфальта? их там десятки разных! и бордюры тоже). Мажорный центр, Васька с лысыми парняи и рокерами по вечерам, порты с фсбшными мутками, город охуенно пёстрый. А я ещё загород хочу. И Кронштадт. Каналы, туристы, разговры на улицах. разовры и музыка из баров с кабанчикма на корпоративах. учи интеренсхы миссий, от закладок до уровня фсб.
Я даже думал о физике управления авто, мне в принципе нравится гта 5 больше чем гта 4(можно перемещатся быстрее), но было бы забавно(до N-того раза, после котрого захочется разбить клаву) сделать например на просёлочных частях колею и вохможность немного застрять. НЕ МАДРАННЕР, а что-нибудь казуальне по фану, типа больше непослушности и меньше сцепеления.
Радио, полицеское радиос заспинные в стиле гта 4-5 речами(предзаписааные названия улиц и типа преступлений).
Я только в обшмх чертах держу в голове, хз как реализовтаь свободный масс-шутинг в РФ. Не будет ли инородно выглядеть, не желая превратиь игру в Сейнтс Роу балаган и оставляеясь в рамках сатиры типа ГТА 4 и 5.
Но блин я хчоу игру уровня ААА+, как рдр2/гта6. ДАже просто сделать пустой город такого уровня - это 500+ моделей зданий, высококачественные и всё в одной стилистике. Без повторящихся черт, вывесок и т.д. . Качестенные модели 50+ разных машин, а не как в Хеви Рейн. ЧТобы шины простреливались. Чтоы диски высекали искры и пыль. Это ж сколько работы. А когда трубы глушителя в воде - пузыри из них выплывают. Чтобы про стрельбе в стёкла - они разбивлись как тдельные объекты.
Свет для кадогого здания, мокап, сценарий, сотни страниц реплик актеров. Графика, оптвимизация, саундизнай, дизайн сцен, вообще сборка открытого бесшовного мираю. Движок и инструменты для создания игры.
мне интересно, когда например на сервере 24 человека - максиумум, и я на складе рядом с портом стреляю в стойку для интсрумнетов и они падают на пол - у других игроков в этот момет на карте - котоыре находятся рядом или вдругом конце карты - тоже пдают?
Или я взрываю бочки с топливом на холмах к востоку от ЛС - другие игроки увидят их взорванными, если подъедут ко мне?
Перешел с жявы, и меня поражает дикость местной экосистемы, словно в 2007 вернулся.
мимо лишпер
Нет. Я же говорю не про мод, а про ААА+ игру
Поиграй лучше в васянский аддон для гта «Барвиха». Примерно так твоя говноигра будет выглядеть
Чел, я говорю про ААА+ некстген/каррентген. Не мод, не просто поделие, а игру уровня сливок индустрии, уровня ГТА. не Мафии 2/3, не Сенйтс Роу и Слипинг Догс, а самой ГТА. Чтобы каждая деталь, свет, мусо на улице, освещение, цвета, анимацяи и физик(инерция) персонажей на уровне ГТА.
Ясен хуй, это игра на 3+ года разработки с несе. сотнями вовлечённых людей и бюджетом в 10+ млн долларов(скорее даже в неск. десятков миллионов).
Сюжета нормального там естественно как всегда не будет, только на графоний дрочить
толсто
Будет классный сюжет и мультиплеер с душой.
Вкатиться невозможно, весь этот хайп вокруг айти поднят продаванами курсов. Конкуренция такая, что все итт скоро пойдут писать код на goвне за еду. Не стоит вскрывать эту тему.
Ладно бы, если докер. Без кубернетеса и знания экосистемы авс сейчас никуда...
>В нормальных языках функции декларируют как возвращаемый тип, так и возможные типы исключений.
Т.е. для тебя кроме жабы других языков нет, я правильно понял?
Стандарта нет, каждый дрочит как хочет. У меня на работе http сервер из стандартной либы, тебе я бы рекомендовал попробовать https://github.com/go-kit/kit , а если не понравиться - смотри что-то другое в https://awesome-go.com/
Выглядит интересно, спасибо, погляжу.
Сам патч https://go-review.googlesource.com/c/net/+/301454
Пропозал по HTTP3 в Go https://github.com/golang/go/issues/32204
Никогда
так наоборот - go-way как раз с интерфейсами. а вот толстоту я не выкупил, это правда
Оставить только пустой, и дело с концом.
Священный грааль с более адекватной обработкой ошибок и шлюхами дженериками, да. По итогу окажется, что все сделали через жепу, потому что НИНУЖНО РРЯЯЯЯ!!1
>По итогу окажется, что все сделали через go-way, потому что программисты должны во главу угла ставить работу с неожиданными и повреждёнными данными, таймаутами и сбоями подключения
Поправил тебя.
Так это новая методичка пока не вышла просто, вот все и в смятении. Вот выйдет, напишут вдохновенных гайдлайнов, скажут интерфейсы ваши, дженерики - это от лукавого, не было ооп нормального, неча и начинать. Вот тогда заживем наконец.
Тут главное не ошибиться, где все еще GO-WAY, а где просто шиза свидетелей GO-WAY. Тонкая грань, и судя по отсутствию нормальных енумов и дженериков, создатели пщ ее не особо ощущают.
Я из треда в тред повторяю и повторю ещё раз - дженерики от лукавого, не нужны. Если у тебя часто встречается случай, когда тебе надо иметь одинаковую функцию, но с разными типами данных, тебе надо генерировать код таких функций. Вот какой-то удобный инструмент для генерации (например встроенный подъязык и генератор в составе тулчейна) я бы хотел видеть. Явное лучше неявного, всегда. Но это не значит, что явное нельзя автоматизировать.
>когда тебе надо иметь одинаковую функцию, но с разными типами данных, тебе надо генерировать код таких функций
>какой-то удобный инструмент для генерации
Называется дженериком, лол. Реализуется на уровне самого языка.
А из интерфейсов, которые суть утиной типизации дохуя сразу получается оптимизированный двоичный код
Не верю исходнику - сиравно смотрю дизасм.
Для индусов надо делать язык, в котором будет запрещена копипаста, иначе они всё равно наговнякают индусокода
Го пошел другим путем, он это наоборот поощряет, один из главных принципов го вэй - RY ( Repeat yourself ).
И шизики на серьезе утверждают что так правильнее, и лучше повторить тот же код 20 раз, зато явно и наглядно, чтобы не возникало необходимости вчитываться в код.
> Го пошел другим путем, он это наоборот поощряет, один из главных принципов го вэй - RY ( Repeat yourself ).
Ебать принцип. Сейчас бы столпы DRY, KISS, SOLID нарушать.
Сейчас бы молиться на эти столпы и использовать их везде, даже если в этом нет острой необходимости.
Не доводи до абсурда. Я лишь указал тебе на то, что эти "принципы" - на самом деле лишь рекомендации, и есть ситуации, когда их применение лишь усложняет код. Примеры приводить лень, да и похуй.
Сначала ты такой: ну это всего лишь рекомендации, не буду усложнять код
Ты через несколько месяцев: бляяяядь как в это говнище всунуть очередное требование, чтобы оно всё к хуям не развалилось
Для тебя, если есть хороший опыт - вполне может быть.
Но транслировать такие идеи - чистое зло, особенно для нубов. Ебанашки начинают повторять это как мантру и хуярить говнокод, потому что еще неспособны самостоятельно оценивать перспективы масштабирования. Каждый сам к этому придет со временем, но до этого лучше воспринимать все эти принципы как обязательные.
Когда наконец-то будешь писать что-то сложнее мувисерчера и тудушки, сам же откажешься от этого кала. Хотя никогда не будешь лол.
Эх, шас бы дебажить импорт импорта класса с обобщенным апи и проверкой данных через 200 функций перевода времени с тихоокеанского в юникс тайм
Никогда не используй указатели.
Использовать :
>когда ты во главу угла ставишь работу с неожиданными и повреждёнными данными, таймаутами и сбоями подключения.
Не использовать:
Когда хочешь невырвиглазный код.
Все по методичке кстати!
указатели это для компилятора ил иструктур на Си, в остальных случаях ты будешь ограничен ООП-хуетой с разной иерархией одних и тех-же объектов типа поликлиника ЕБланНейм и он должен знать как его нужно лечить, но если ебланнейм пошел туда не лечится а лечить(ремонтировать) поликлинику то другое.
Вообщем хуета, и надо роли строить и данные тащить отдельно через указатели
Стопе, я изобрел процедуры вот ведь незадача, жаль ебланы на СИ++ строят дом с крыши и внутри площадь выделяют через хип.вдруг не вместится гипотетический холодильник на 50к литров
Данила спок
Я понял, но Go пишут пессимисты. А что, если не получится? А что, если не вернёт ответ? А что, если не существует? А что, если ... С такии настроем надо в тестировщики идти, ей-богу.
На это го это ещё не в крайней степени, так что жить можно.
А почему они приходят повреждённые, с таймаутами и сбоями? Потому что приходят от сервиса на го. Таким образом, если хотя бы один сервис сделать на го, все взаимодействующие с ним тоже придётся на него переписывать. Язык — раковая опухоль.
Не можешь победить - возглавь, пока не поздно.
Моча съела говно. Есть шарп, делающий быдложабу и goвно ненужными.
>А я люблю обмазываться не свежими сртификатами от майкрософт и дрочить. Каждый день я хожу по земле с черным мешком для мусора и собераю в него все сертификаты которые вижу. На два полных мешка целый день уходит...
Проблема в том, что не знаю что вообще написать. Я работаю с кубером и терраформом, которые написаны на go. Может какой-то плагин или оператор написать, но я хз что. Подкиньте идей проектов для новичков в этой области
Нужно просто подставить жопу настоящему гоферу, чтобы он посадил в тебе зерно, иначе никак духом го проникнуться не получится.
Больше кода, ниже удобочитаемость, хуже производительность, зоопарк фреймворков, больше костылей, выше вероятность получить непредсказуемое поведение, больше узких мест в архитектуре, требования к проектированию гораздо выше, список можно продолжать.
мимо охуевший архитектор
if err != nil тоби в сраку, архитектор блять. Накодогенерируют себе лычек и выебываются. Ты хоть на го писать пробовал? Без фреймворков бойлерплейта еще больше, чем в жяве, при этом нормальных фреймворков для построения веб крудов не завезли, все какая-то ограниченная хуйня.
>на го писать пробовал
Конечно. Единственное, что мне в нём не нравится и что нужно убирать - то, что именованному возвращаемому значению нужен ретёрн.
>бойлерплейта еще больше
Всё равно меньше
>нормальных фреймворков для построения веб крудов не завезли
GORM
>все какая-то ограниченная хуйня
Приведи пример реальных ограничений, которые не преодолеваются самостоятельно в несколько строк.
>Приведи пример
Нет аналога спринга, который и жсон распарсит, и в базу сходит, и шедулинг организует, и роутинг предоставит в несколько строк. Или ты сможешь привести пример настолько удобного фреймворка на го? Подозреваю, что либо снова придется все руками пилить, либо подтягивать и изучать 100500 библиотек с непохожими друг на друга апи.
Я???
Какие ограничения? У спринга кастомизируемость во все поля, потому что это по сути просто DI контейнер, который в свою очередь обрастает модулями. Ничего на гвозди не прибито, хочешь - накостыль свой велосипед, никто не запрещает.
В масштабном проде важно, чтобы код было легко поддерживать. И только потом его скорость, иначе бы все писали на сях/плюсах. А как ты понимаешь, бойлерплейт не очень хорошо сказывается на простоте поддержки кода.
Ты либо толстишь, либо не понимаешь, что написать хттп сервер на стандартной либе сложнее, чем используя что-то типа echo:
e := echo.New()
e.POST("/suction", func(context echo.Context) error {
...celebrate and suck some dick...
}
e.Start(":8080")
Просто потому, что интерфейсов и бойлерплейта в стандартной либе больше. Соответственно, выше вероятность ошибки и приходится больше кода читать. Магия стреляет в ногу только в специфичных юзкейсах, что довольно редко случается.
Потому что язык делали не хипсторки с их Either/Result/Optional, а деды из времён сишки.
Не взлетит, так как он уже никому нахуй не нужен. Ведь дауны на самоподдуве из-за отсутствия фреймов теперь гордятся тем, что сами выбирают или костылят каждый говнокомпонент, и называют это go-way.
В итоге для каждой хуйни есть тысячи разных библиотек, поддержка каждой из них происходит двумя с половиной людьми, все как одна кривые и убогие,
развиваются с нулевой скоростью, информации по ним кроме часто скудной официальной документации нету, забрасываются и умирают как мухи по желанию левой пятки автора.
ТОЛЬКО ВЫИГРАЛИ
Ну хуй знает, в конторах часто пишут свои либы, иногда даже свои имплементации для std.
>при этом нормальных фреймворков для построения веб крудов не завезли, все какая-то ограниченная хуйня.
https://github.com/gofiber/fiber
Мимо перекатыш из бекенда на node.js + express, fiber вдохновлялся экспрессом
Ну твою ж мать, еще один роутер, обещающий колоссальную производительность. И как мне выбрать самый быстрый, если бенчмарков почти нет? Свои писать? Ну збс теперь, как только спринг на го допишу, сразу займусь бенчмаркингом роутеров.
Потому-что пидрилы не знают что нил только в неинициализированных и динамически созданных полях, а так нулл спокойно заменяется вложеным булем в булю
Например я говорю вон там дает памела андерсон помацать за сиськи за углом.
Тебя спрашивавют правда? Ты или даешь ссылку на меня или кажешь нулл, так как не знаешь данные мои правдивы или нет.
Разве что модули, не надо больше все исходники держать в GOPATH.
Обезьяны игого?
Что, синтаксис не осилил? ХАХАХА
Он реально очень быстрый, в репозитории есть ссылки на бенчмарки
https://github.com/smallnest/go-web-framework-benchmark
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite
Потому что это золотая середина по перформансу, удобству разработки и скорости разработки. А узкие места всё равно делают на плюсах и расте.
А некоторые извращуги на cgo и unsafe
Это утверждение 100% верно и для плюсов, как ты думаешь - это хороший знак?
мимо студент плюсовик
Так вообще везде, может в ентерпрайзах чуть меньше
Вариации на тему прокси-серверов. Ты запускаешь на локальной машине клиента, а сервере или серверах серверную часть одну или несколько. Между ними идёт трафик по вебсокетам в каком-то закомуфлированном виде.
Что-нибудь с веб или tcp сокетами, связанное с торрентом или блокчейном
>где придется юзать основные особенности го т е горутины и каналы
Любой проект сложнее хеллоуворлда
Cделай "шардинг" для sqlite базы по сети, с обработкой ошибок, таймаутами и так далее.
Создай детецентрализованную дб, на каком-нибудь p2p-протоколе.
Двачую, забейте на это говно и идите строителями, прогеры уже никому не нужны а вот строители дефицит
Наверное, имеется в виду, что он использует именно TS, а не чистый JS, как тот чед справа. Хз, на что это намёк, но хуёва та шутка, которую нужно объяснять.
Пишешь код на TS, а в браузере уже сконпелированный JS запускается, всё просто же.
Самое смешное, что картинка правдива, банальное мужское ретивое помогает разруливать очень сложные ситуации как в организационном плане так и в техническом.
Аналогично со структурами, возвращаемыми методами интерфейса: нормально ли, если они будут находиться в том же пакете, где лежит реализация этого интерфейса? Вообще, стоит ли пытаться избавиться от decoupling'а на уровне пакетов или достаточно сделать это на уровне структур?
Хз, вообще не эксперт в чистом-хуистом коде, и в go-way. Но зачем городить какую то хуету с объявлением интерфейса в месте использования и тд. У тебя есть интерфейс, с какой то одной бизнес функцией, он лежит в отдельном паекте, рядом с этим же интерфейсом лежат структуры с которые он использует, и кастомные ошибки тоже, это часть контракта этого интерфейса. Внутри этого пакета делаешь еще один пакет с реализацией этого функционала и все. Так ты отвязываешься от реализации, и от клиентов которые используют этот интерфейс. В твоих же случаях все просто пиздец как связано и сложно найти концы где какие там интерфейсы реализуются. Опять же, ты нарушаешь этой хуйней solid, а именно принцип единой отвественности, у тебя есть какой то god object который имеет несколько назначений (интерфейсов).
Например если это репоизторий какой-то для доступа к бд, то ты создаешь на каждую бизнес сущность (табличку) отдельный интерфейс репозитория, и отдельную реализацию этого репозитория. Все entity которые возвращает репозиторий лежат рядом с интерфейсом, потому что это часть этого интерфейса
>у тебя есть какой то god object который имеет несколько назначений (интерфейсов)
Необязательно один, это могут быть разные структуры, это просто пример.
>Например если это репоизторий какой-то для доступа к бд, то ты создаешь на каждую бизнес сущность (табличку) отдельный интерфейс репозитория, и отдельную реализацию этого репозитория. Все entity которые возвращает репозиторий лежат рядом с интерфейсом, потому что это часть этого интерфейса
Это нарушает принцип разделения интерфейса. Допустим, я на бизнес-сущность создал один интерфейс репозитория из 7 методов. Он используется несколькими клиентами, и бОльшая часть из них использует всего 2 из 7 методов. А зависит по итогу от всех семи. Именно этого я стараюсь избежать за счет объявления интерфейса в месте использования методов.
П.С. Я в итоге решил свою проблему за счет того, что кладу кастомные ошибки рядом с сущностями, а интерфейсы все так же объявляю по мере и в месте использования. С клиентами (например, http-клиентами) поступил примерно так, как ты описал: создал отдельный пакет с интерфейсом клиента, описал структуры и ошибки и внутри него создал еще один пакет с реализацией.
Единственное, что мне все еще не нравится - это то, что по итогу у меня много конфликтующих имен пакетов, типа internal/handler/user и internal/service/user. Мб я неправильно структурировал проект, конечно. Благо, они совместно используются только в main.
Мне кажется у тебя слишком глубокая вложенность, я бы сделал либо
internal/handler/user.go и internal/service/user.go
либо
internal/user/handler.go и internal/user/service.go
(жирным - название пакета)
господи стыд какой
В моем случае просто помимо user service существуют еще и другие, и у каждого из них есть свои dto и вспомогательные структуры. Не хочется, чтобы все эти вещи лежали в общей куче. Ну и не хочется префиксовать названия структур/констант/функций, если они повторяются для разных сущностей
Так традиционная практика:
-Пишем хуйню на языке X
-Хуйня получилась кривая, рассказываем какой язык X говно
-Переписываем хуйню правильно на язык Y, уже хорошо понимая где мы ранее допускали ошибки
-Рассказываем какой язык Y заебатый
Как же охуенно, что я уже 2 года ничего не писал на этом goвне. Спасибо, Господи, за нормальные языки программирования!
Два AbstractSingletonProxyFactoryBean этому господину.
В какие языки перекатился?
Есть запись уже?
Ты хуйню какую-то делаешь, инфа 100%
Используй каналы везде где только можно, где нельзя - выдумывай хуйню на атомиках или мутексах
Тем, что они упрощают многопоточный код (по крайней мере, так говорят): проще закинуть сообщение в канал и не думать, что происходит на другой стороне, чем держать в голове, что вот к этому ресурсу доступ будет из множества горутин, а значит надо вешать мьютекс.
С другой стороны, если контеншн за ресурс относительно маленький, мьютексы производительнее каналов.
все там были
>>2008512
> по крайней мере, так говорят
откуда вы только блять лезете.jpg
сходите вместе с >>2008425 почитайте про концепции shared memory и message passing, потом про паттерны многопоточных приложений, вспомните про кисс и солид, а потом подумайте о цене поддержки, масштабировании, gracefull shutdown'е, gracefull degradation'е и течке с локами вашей рекурсивной поеботы
да-да, и не забывайте дедушку амдала и на каждом этапе задаваться вопросом "а не хуйню ли я делаю"
нахуй я все это пишу, все равно же никто прислушиваться не станет
Баззворд на баззворде, а по делу нихуя. Иногда проще навесить лок, чем ебаться с каналами-карнавалами. В той же стандартной либе локи используются.
Так дело в том, что с каналами работать намного удобнее и проще, чем анальная ебля с мьютексами
Не во всех случаях, конечно же. И это именно то, что я пытался донести. Идиома mutex hat в качестве пруфа.
Как стать таким же охуенным как ты?
У меня никогда такого шрифта не было, ведь я не глиносексуал.
Обычно когда начинаешь учить другой язык, на предыдущий хуй забиваешь (из моего опыта), только если с первым ты не связан рабскими рабочими узами.
А тебе не похуй? Горутин можешь хоть миллион наспавнить, там динамический стек, я не думаю, что у тебя там сотни тысяч запросов в секунду обрабатываются. Главное проконтролируй, что они не текут (т.е. не ломаются и не остаются в памяти). Пул горутин - это уже скорее воркеры различные, которые в фоне просто висят.
А если и сотни тысяч? Прям щас работаю над проектом, где общая нагрузка где-то 300к рпс. И вот как туда прикручивать горутины, чтоб не наебнулось?
Прикручивай в лоб, если выяснится, что сосёшь из-за шедулера, будешь переделывать. Преждевременная оптимизация это плохо
Но ведь у тех кто сразу начинает писать на нормальном языке нету жалоб на производительность
поиск по пацанским цитатам запили со ссылками на соц.сети, кто их постил, статистикой постинга, лайками и на что еще фантазии хватит
Короче, хочу развиваться в вэбе в бэке. Смотрю сейчас в стороны: пхп + ларавель, джс + нода, го.
Склоняюсь больше к го, т.к. интересен его синтаксис.
Есть пара вопросов к вам - гуру.
1. Как первый ЯП выбирать Го это совсем хуёво? Я имею в виду изучать само программирование с помощью этого языка.
2. Вкатываться после тестера в го разрабы в 26-27 лет поздно или нормально?
3. Какая реальная вилка по зп на джуна го с техническим бэком (ну помимо технической хуйни, кстати, я успел поработать на складе, заводе и в вузе, и в логистике, но в резюме не пишу об этом и стараюсь об этом не говорить)
>Для индусов надо делать язык, в котором будет запрещена копипаста, иначе они всё равно наговнякают индусокода
Любой язык с форматированием кода пробелами. Я не смог в nim lang копипастить. Всё сбивается, вложенные блоки оказываются вложены не туда, куда хотел. Nim lang - язык в котором приходится писать самому!
Я на фрилансе 20-25к имею в месяц. Все бабки уходят на еду домой и на интернеты, телефоны, интернеты и т.д.
По канону - да, без всяких GORM, всё руками, всё явно, побольше бойлерплейта, как у дедов в прошлом веке.
можно через database/sql, можно взять орм - например, ent
если не хочется орм, но и впадлу писать запросы руками - то можешь взять squirrel или dbr
> Склоняюсь больше к го, т.к. интересен его синтаксис.
Странная мотивация, на синтаксис должно быть пофиг, язык это же просто инструмент для решения задач
> 1. Как первый ЯП выбирать Го это совсем хуёво? Я имею в виду изучать само программирование с помощью этого языка.
Норм, но наверное шарп лучше был бы, или джава, или даже тайпскрипт как вариант (я сам бек пишу на ноде/тс в том числе, помимо го)
> 2. Вкатываться после тестера в го разрабы в 26-27 лет поздно или нормально?
Я бы сразу в разрабы шел, зачем время терять в тестировании?
> 3. Какая реальная вилка по зп на джуна го с техническим бэком
Москва 60-120к, остальные города 40-80к, остальной постссср кроме России хз
>Странная мотивация, на синтаксис должно быть пофиг, язык это же просто инструмент для решения задач
Ну я бы не сказал. Мне чисто эстетически приятнее читать код на го, чем на какой-нибудь джаве/пхп. Мне проще его воспринимать - это неплохо так влияет на эффективность моей работы.
Мимо другой анон
Не может у тебя быть такого проекта. Если бы была такая нагрузка - были бы реплики, разделяющие нагрузку. Один процесс не справится с такой нагрузкой, если это не хеллоуворлд.
Я же сказал - общая нагрузка. Естественно, там сильно больше одного инстанса. Но написано это все на жяве, и интересно, есть ли смысл переписывать рпсную часть на го и выносить в отдельный компонент, будет ли прирост? inb4: все индивидуально и надо замерять, где узкие места, а не заниматься хуйней.
Мне вообще по синтаксису тайпскрипт приятнее всего, на го конструкции иногда слишком громоздкие получаются + бойлерплейт и всратая обработка ошибок
Потому что это очередное поделие от криворуких обезьян-олимпиадников из жид брейнс. Просто пара примеров, чтобы понимать примерный уровень:
1. Я использовал как интеллиж, так и голанд, и в обоих продуктах одна и та же проблема: периодически они перестают понимать импорты и видеть модули. Иногда решается очисткой кэша, иногда приходится сносить репозиторий и ставить заново. И это тянется уже несколько лет, несколько лет эти пидарасы не могут пофиксить такой явный баг, который, блять, еще и кочует из продукта в продукт.
2. Не знаю насчет голанда, но интеллиж течет, как сука: нельзя оставлять открытым более чем на неделю, иначе сожрет всю память. Я уж не знаю, как они умудрились получить утечки памяти в поделии на жяве, где верхний предел конфигурируется на уровне жвм, но они блять справились.
3. Охуительный юзер экспириенс. Ебучий баннер на старте, который всегда показывается поверх остальных окон. И мало того, все твои закрытые проекты на старте вместо тихого открытия в фоне, открываются в окнах, каждое из которых дергает фокус на себя, перекрывая прочие окна и просто не давая тебе заниматься другими делами, пока это говно грузится.
Это да, сам иногда с таких перлов охуеваю. Но всё равно лучше ничего не придумали.
Ой да ну нахуй. Я вместе с vscode начинал знакомство с го, не представляешь сколько он мне нервов и времени сожрал.
Пока написал хелловорд, я успел столкнуться с:
-Бесконечным сохранением файла
-Через 10 секунд после запуска вскода, просто пропадало всё автодополнение
-Каким-то хуем вскод через раз ругался на импорт пакета "fmt", типо он не используется. При том что я юзал fmt.printLn и все компилилось
-Вообще не понимаю как, но этот сраный "редактор кода" несколько раз протекал и загружал всю систему, не мог в браузере сидеть. С мощными и громоздкими IDE от жидов такого ни разу не было, что характерно.
Хотя, для шарпа я всегда с удовольствием его использовал, никаких проблем ни разу не было. Так что всё же не он виновник перечисленных проблем, это всё кривой extension.
Полюбил go только после установки goland.
Так ведь ЖидBrains.
Да, во всех. Ты сравниваешь через "==" не значения переменных, а ссылки на объекты.
в нормальных языках компилер ругнётся если ты попытаешься их сравнить
>Не пизди.
Сейчас попробовал в go playground это проделать, действительно при сравнении int и uint64 компилятор ругается.
Но я не один в один с такой проблемой столкнулся, у меня была переменная "a" типа uint64, со значением 0, которое задавалось извне.
Теперь самое интересное: a == 0 возвращало false, a == uint64(0) возвращало true. А если явно перед сравнением задать a = 0, то a == 0 тоже возвращал true. Очень странно...
Потому что fmt может еще очень много похожих вещей делать, и выносить из него только print было бы странно.
Но этой функции нет в спеке по этому код с ее использованием может в любой момент перестать компилироваться
Но этой функции нет в спеке по этому код с ее использованием может в любой момент перестать компилироваться
путь_к_функции.имя_функции() - это статический вызов в любом языке где есть пакеты
Только в некоторых путь к стандартной либе неявно добавляется, в некоторых можно статически импортировать функцию, а некоторые го
Не, почему не просто fmt.Printl("Hello world!") ? Зачем оборачивать в функцию?
Это из примера какого то? Видимо демонстрация как вывести результат функции. Можно и просто сразу строку вывести
Или ты про main? Это точка входа в программу, с нее начинается исполнение кода, в отличии от питона и жс, где код исполняется сразу сверху файла
>С такии настроем надо в тестировщики идти
Слыш, оптисист, блять. Когда у тебя крупная бэкэнд система то у тебя просто по закону больших чисел все потенциальные проблемы БУДУТ реализованы.
А теперь марш нахуй в жабоскрипте окошечки для веба пилить.
И тем забавнее твоя аргументация, ведь на го не получится построить достаточно высокоуровневые абстракции, без которых ни одна большая кодобаза не обходится. Хотя бы просто из-за отсутствия дженериков.
А теперь марш и дальше пилить микросервисы.
>>2016805
Все-таки ООП. Инкапсуляция представлена типами и их методами, полиморфизм - интерфейсами, а наследование, в отличие от других языков, - композицией. Ничего не мешает создать тип, наследующий свойства и методы другого типа, просто включив этот тип в объявление структуры. Тут особо умные возразят, что это нихуя не труЪ наследование, потому что отношение между сущностями не "является", а "содержит" (типа как автомобиль состоит из множества деталей, не являясь ни одной из них), но пошли они нахуй, ибо композиция позволяет получить то же поведение, что дает классическое наследование, но при этом более гибко, не связывая жестко сущности между собой. Так что я бы сказал, что в го у нас ООП на стероидах.
Ну тогда и сишка - ООП.
Согласен с каждым словом, вот только большинство гошников ужасно плюются когда такое заявляешь, при этом возразить ничего не могут. Наверное у них или детские травмы от абстрактных абстракций над абстракциями из прошлых языков, или они просто не знают что такое ООП, а думают что "ну это как в джаве епты"
>то же поведение
Это какое? Я не могу, например, передать экземпляр дочерней структуры в функцию, принимающую родительскую.
Во-первых, зачем? Используй интерфейсы, если тебе нужна функция, ожидающая какое-то общее для нескольких сущностей поведение. Во-вторых, если тебе все-таки это нужно, передай вложенную структуру.
Люди с тревожно-депрессивным расстройством на нем пишут. Или начинают писать нормальные, а выходят уже с приобретенным F41.2
Как и на крестах, кстати.
Мимо крестодебил с F41.2, даже от гомоармии откосил
А всё, кавычки лишние
Я другой анон, но предположу, что твой собеседник недавно узнал про итераторы кстати, есть ли они в говне? и пихает их куда попало
Но итераторы как раз для циклов используются везде. Учитывая что в голанге утиная типизация для интерфейсов итераторы как раз подходят под семантику языка.
Может это ты ебанулся?
>Растобляди завидуют, сектантская запарта не переваривает.
Это в ОП-посте написано. Ещё раз спрашиваю: что такое сектанская запарта?
Не сижу в /b на любых бордах уже 9 лет.
Раньше, когда только учил синтаксис, делал всякие задачки, смотрел на чужие проекты, он сам и go-way мне ну очень во многих моментах не нравился. Но чем-то сука привлекал.
Зато как только начал на нем писать более-менее настоящий проект, он начал мне сразу же люто доставлять. И нету ничего страшного в его специфичной обработке ошибок и прочих непривычных для других языков вещах.
Алсо, больше всего меня отталкивало отсутствие каких-то единых принятых инструментов, фреймворков с единственной расово верной структурой проекта, подходами и т.д., зато как только прочувствовал вкус свободы, сразу же все эти вещи стали мне отвратны.
Вот такие то дела. От ненависти до любви один шаг.
> он сам и go-way мне ну очень во многих моментах не нравился. Но чем-то сука привлекал
Когда-то наткнулся на понятие "притягивающее уродство", оно как нельзя лучше описывает такое. Это как ехать в метро, увидеть мужика с лицом странной формы и странным взглядом и пялиться на него исподтишка всю дорогу.
Это когда во главе угла лежит обработка ошибок не толстота, а цитата из блога майл ру, а все остальное НИНУЖНО.
>итераторы
Их нет, но ты можешь использовать горутину + канал + контекст, по ощущениям то же самое (можно использовать в for-range)
Как-то так, https://play.golang.org/p/QuWfMqU2gq-
Контекст нужен чтобы не допускать утечку горутин, за этим нужно следить. Но зато мы размазываем наши вычисления по нескольким тредам, что может быть полезно для тяжелых задач
А мне норм
Спасибо, обязательно вкачусь в этот замечательный язык.
на чем угодно, работающим с вебом можно написать имиджборду.
Посоветуйте, с чего начать можно, тип, я видел в треде php небольшой интерактивный курс, решая который ты повышаешь свой скилл (как я понял, это авторский курс анона), а есть ли что-то подобное для go, чтобы было примерно так-же (интерактивный курс), а не только гайды и прочее
Это не совсем то, о чем я говорил. В разделе пыхи там прям дают задачки/идеи проектов, а здесь же просто синтаксису изучают, не?
Без опыта php тебе тяжело будет с го, поучись сначала решать интерактивные задачики с php-треда.
А если есть опыт с с# на базе университета - все равно стоит пыху погонять? Есть ли смысл тогда го дрочить, если есть пыха?
Есть. Похапе + goвно это нынче весьма популярный стек.
Кубернетесы и прометеусы на нем пишут, сынок.
Клитор у своей мамаши-шлюхи подрежь
Пробовал когда-то не так уж давно, но нихуя не вышло, т.е. если плагинов нет, то всё збс, главное приложение маленького объема и работает, а с плагинами - хуй.
Девопс - это всякая админская скриптота, чтобы автоматизировать сборку дистрибутивов приложений и деплой на сервера. Пишут обычно на баше и питоне.
Why are you gay?
Да.
Нельзя, статикошиз.
Провели исследование, гоферы не осилят дженерики
Ждать в начале 2022-го, не раньше
Аноны, поясните за работу GC в сишном коде. Когда я подгружаю DLL на Go в приложение на C и начинаю работать с памятью этого приложения из DLL, то насколько далеко лезет GC? Будет ли он сканить всю память процесса? Больше всего интересует задержка GC. Будет ли она околонулевая, если в DLL не будет аллокаций памяти? Или GC будет всю кучу сканить и ложиться на 10 мс?
Нет, GC не лезет в память, выделенную сишкой.
https://tour.golang.org/flowcontrol/5
Зачем например там минус перед иксом
Нечто вроде этого:
type T interface{}
type U interface{}
//go:generate <заклинание> T={TypeA, TypeB} U={TypeC, TypeD}
func DoSomething(val T) U {
...
}
1) Проверяем, является ли число отрицательным
2) Если да - рекурсивно вызываем сами себя и к результату добавляем "i", возвращаем
3) Если нет - берем квадратный корень и приводим его результат к строке
Можно, https://github.com/cheekybits/genny так и работает. Вопрос только в том, что это требует дополнительной внешней тулзы, а так же нет нормального способа прикрутить к такой реализации constraint'ы. А значит есть возможность нагенерить некомпилируемого кода, что не есть хорошо.
Хуя горит
Сейчас бы использовать кодогенерацию и считать себя умным, лол!
Тащемта плюсы начинались с транспилинга в сишку. Прямо таки рафинированная кодогенерация из палаты кода и генерации
Там была одна конкретная тулза Cfront с единственным правильным синтаксисом, а не 100500 всянских <заклинаний>.
А сишка с транспилинга в ассемблер! А ассемблер с транспилинга в машинный код!
Что ты повторяешь про васянов как попугай? Разумеется, должен быть единственно верный официальный инструмент для генерации кода, возможно основанный на одном из васяподелий. Вопрос не в васянстве, а в подходе
Вот когда никогда единственный верный инструмент появится, тогда дженерики и не будут нужны.
func rootsq (x int) int {
return (x * x)
fmt.Println(rootsq(2))
}
Рекомендую первым делом пройти го тур, а ещё лучше прочитать какую нибудь книгу типа: "С++ для начинающих".
>С++
>от Гоши Дударя
Какие же зумеры дегенераты, просто пиздец. Предпочесть мутные видеокурсы от ютубного эксперта по всему нормальных книжкам.
По соотношению потраченные силы/профит такой же унылый и нахуй не нужный.
Долбоёб, ты действительно считаешь, что тот анон - полностью обнадеженный, пытающийся впопыхах вкатиться в эту сферу, будет забивать себе мозги Страуструпом? Ты хочешь сказать, что ему ещё прийдется дополнительно превозмогать и читать тех. литературу? Пускай поверхностно пройдется по всему этому делу и поймет, надо ли оно ему.
Ну я читал его книгу и смотрел Тимофея на ютубе, и могу смело сказать что кресты это пиздос какой уродливый язык, учить по нему прогрество лишнее забивание головы старым нечитабельным говном
Вот только когда пытаюсь аналогичное провернуть через го ( стандартная библиотека database/sql, драйвер lib/pq ), он мне рыгает ошибку и дальше ожидает даты формата mm.dd.yyyy. ЧЗХ? Куда мне вообще копать?
С добрым утром, соня.
сложные конструкции требуют сложного мышления
ПЩ делался для
-- быстрого обучения недорогих разрабов
-- уменьшения количества человеко-ошибок
-- быстрого выполнения
Вот и всё
Ну обучение действительно быстрое. А то, что рабы дорогие вышли - так это рыночек порешал, язык не самый популярный
Двачую, я с бекенда на ноде, с джаваскрипта быстро переучился на го, работать легче и зарплата повысилась неплохо, хотя я и до этого нормально так зарабатывал.
Ты менял компанию, чтобы перейти на го? Если да, то какое к тебе было отношение? У тебя ж по сути нет продакшен опыта с го, так что с этой стороны ты джун, хотя опыт разработки в целом есть.
Не менял, перешёл в другую команду внутри своей компании, проработал чуть больше полугода, потом в итоге в резюме написал полтора года опыта на го, то есть включил туда весь срок работы в этой компании.
Понял, спасибо.
Я переходил с пхп на го без коммерческого опыта на го - довольно много работодателей готовы со мной были пообщаться, несмотря на это. Просто спрашивали, что я делал на прошлых местах, какие задачи решал, какими инструментами пользовался.
2 или 3 оффера я получил из 6-7 собесов.
Так что можно не сильно переживать на этот счет - как к джуну адекватные конторы к тебе точно не будут относиться.
Не везде (в одной конторе предложили столько же, сколько получал; в другой - на ~30% меньше), но в итоге ушел на +30%
https://play.golang.org/p/A-5ovbM1v6q
Что такое "локалка пыхи" и зачем она тебе при попытке запустить го сервер?
Локально это запускается через go run ./path/to/cmd/server/main.go
Пишет 404 page not found
Выглядит словно ты пытаешься через https долбиться в http порт
> по всей России
Это что за откровенное наебалово?
Вторая пикча - отфильтрована по айти с вариантом "Go"
Фикс первой пикчи, случайно приложил результат без фильтра по ойти, вот корректная
Их 2500, пчел. Go в выборку тоже надо включать, а не только Golang. Это вполне дохуя.
ПЕРЕКАТ https://2ch.hk/pr/res/2061078.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/2061078.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/2061078.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/2061078.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/2061078.html (М)
Дебил, на скрин глянь, там специально фильтр по айти и программированию для тупых сделан, ты, видимо, еще ниже тупых
Я пошутить пытался. Ну, братишка, ну не стукай
Это копия, сохраненная 22 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.