GO (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего.
Живем в ожидании Go2, пробрасываем ошибки, ищем обоснование, зачем нужны дженерики, смеемся над оопэшниками, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериков
>>1736188 УКАЗЫВАЮ @ СПРАШИВАЮТ ЧТО ТАКОЕ ДВАЧ @ ГОВОРЮ, ЧТО ЭТО ОДНО ИЗ ВЕДУЩИХ СООБЩЕСТВ ПО ГО ЯЗЫКУ В РУССКОЯЗЫЧНОМ ИНТЕРНЕТЕ @ ПОЛУЧАЮ РЕСПЕКТ ОТ ХРЮШИ
Анон, стоит ли покупать курс на курсере по ГОленгу от майлача для более выгодного света в глазах эйчаров? он размазан на большой промежуток если не покупать, и я остановился а надо бы уже дальше выполнять задания. Вообще хотелось бы узнать на сколько эти филькины грамоты участвуют в трудоустройстве.
>>1736731 На степике тебе тоже выдадут филькину грамоту, но бесплатно.
Я думаю, что если работодатель готов нанять человека без опыта - ему будет похер, прошел ты курсы, прочитал пару книг или просто зная другой язык прошелся по документации. Скорее всего тебе дадут тестовое, и это и будет решающим фактором.
>>1736742 >Вообще пытался попасть на обучение в озон кто-то? ИТТ или вообще? Итт было обсуждение, в основном задания с двумя каналами, которое было сломано. А вообще там больше 4к челиков участвовали, но по итогу только ~100 позвали на собеседование и в финал вышли только 40
1) Кто юзал fiber какие подводные? 2) В го завезли модули, там что-то хотели, но я не следил. 3) Какой шаблонизатор популярен в го сейчас (да в 2020 еще клепают обычные не реакт странички)
что вообще нового в го, вывалился года на 2 из него.
>>1737001 >Кто юзал fiber какие подводные? Юзал, охуенно было т.к. переходил с ноды+экспресс на го. По перформансу он топовый, по удобству тоже. Подводных нет.
Хочу написать на го апи для сайта. Раньше на го ничего большого не писал. Что лучше: 1. Написать в лоб на net/http 2. На каком-нибудь фреймворке вроде gin 3. Сгенерировать сервер через go-swagger?
>>1737272 >Через go-swagger точно лучше не генерировать Почему? Читал, что тот генератор, который на джаве для опенапи генерирует не очень, а чем родной гошный плох?
Кто может поянить про ponzu? Куча звезд на гитхабе, апи эндпоинты генерятся в одну команду ...и все. Хочешь разделить привилегиии пользователей - пиши с нуля фронтенд с ролями (и наверное отдельной бд для юзеров, потому что сам понзо свои данные хранит в каких-то nosql файловых базах). На любые вопросы разраб предлает прислать ему пулл реквест с решением проблемы. Мне сначала понравилась идея с безголовыми cms, но почти каждую нужно допиливать напильником. strapi, например, вывалит в ответе вместе с эндпоинтом все связанные с ним поля из других таблиц, это не регулируется, другие цмски платные/закрытые или слишком продвинутые. Мне бы что-то простое, чтобы хранить данные для статических страниц, забирать данные с формы фидбека и раздать права пользователям, чтобы они писали новости.
>>1738312 Ну вот значит будет сайт, в одном разделе будет БИЗНЕС-ПРОЦЕСС, где будут мутиться серьезные делишки, будет еще раздел, где пользователи могут написать, какие мы мудаки, и есть раздел новостей@объявлений, где будут постить всякие маркетологи. Первый раздел самый трудоемкий, у него будет свой апи, а остальные разделы дешево и сердито работают на безголовом cms. Как бы ты сделал?
>>1738425 Я бы наговнякал на джанге, а затем при каждом фича-реквесте говорил, что вся система - это только прототип, и на самом деле нужно все переписать, но в этот раз на это нужно в 3 раза больше времени, т.к. теперь будет и архитектура, и расширяемость, и энтерпрайз-подходы.
>>1738451 Правда меня, скорее всего, уволили, если речь идет о средней компании. Но с другой стороны - есть шансы на выбивание пары месяцев на пинание хуев
>>1738425 Какое-то слишком расплывчатое описание слишком женерик бложика С нуля ебнул бы фронт в рамках бюджета и по микросервису на бизнес-процесс и новости@объявления, наверное Текстовые носкл базы звучат страшнее
есть одна гуглошита, которая закрыта для теребонькая из апи, но доступная просто через обычный запрос. Как ее лучше спарсить? Взять все из бади и прокрутить в стринг типа как xml?
читал "learn go with tests" (https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/concurrency), там вот такой пример кода. объясните, пожалуйста, почему он работает? я, может, читаю его неправильно мы сначала запускаем горутины в цикле, в которых отправляем значения в не буферизированный канал. на момент вызова горутин оттуда никто не читает. затем, когда цикл завершается, начинаем новый, в котором мы уже читаем из канала почему во время первого цикла не происходит deadlock?
>>1738897 Дедлок - это когда все горутины заблочены (мьютексом или каналом, например) и никто не может больше нихера сделать. У тебя же спавняться горутины в цикле, и даже если wc сразу же возвращает результат (скорее всего - нет) горутины будут ждать, пока из канала не прочитают. Но основная горутина-то не блочится до тех пор, пока не попытаеться прочитать.
>>1739281 Я, кажется, понял философию Го. "Любой код всё равно рано или поздно превращается в говно, давайте сделаем язык, в котором терпеть говно легче"
>>1738538 мог бы, не парился вообще а так костыльно реализовал на подсчете определенных тегов и их значений, в принципе, если теги +- не сильно различаются в таблицах, то моно унифицировать.
>>1740398 >Че как вы там, еще не ахуели от резкого уменьшения вакансий с 18 года на своей хуйне? Так язык программирования это же просто один из способов записи твоих программистских универсальных знаний... если это действительно так, выучить новый язык программирования для того кто в принципе умеет программировать не должно занять больше одной недели времени...
>>1740399 > больше одной недели времени... А еще выучить окружение, стандартную библиотеку, фреймворки, орм, генераторы, специфические внутренности чтобы каждый раз не натыкаться на втф, внутренний паттерны, кодстайлы, профайлинг, специфические паттерны тестирования. И в итоге твои две недели превращаются в минимум пару месяцев активного задротства, чтобы хотя-бы чуть выше джуна стать для работодателя. Ну и еще понижение зарплаты в большинстве случаев вытекающую сперму из жопы. Ну, зато ты SOLID и OOP знаешь, так сказать.
>>1740399 Имхо утверждение типа "язык не важен" - это классический самообман. Естественно важны умения именно разработки, но на одном знании синтаксиса далеко не уедешь, нужно огромное кол-во деталей еще знать.
Это ж шутка была. Гошники, конечно, не нужны десятками тысяч как джависты, что бы в тырпрайзе формошлепить, но остаются самым горячим и хорошо оплачиваемым направлением.
>>1740512 >>1740457 Ты очень глуп, вероятно ты еще на уровне джуна. Я за свою почти 10 летнюю карьеру и на пхп писал, на пайтоне, на руби, на сишарп и на го. Работал больше архитектором, нежели именно кодером. Но то, что ты говоришь - это очень глупые утверждения неопытного человека. Знание языка и его инфраструктуры совершенно равнозначно важно, как и общие навыки программирования. Если ты отличный программист, но в языке знаешь только ключевые слова, типы и структуры - ты не напишешь на нем ничего путного,, либо введешь туда настолько много незначительных маленьких багов, что за тебя придется все переписать знающему спецу. Были у меня на опыте такие как ты, обычно это кстати студентота, которые выучили какой-нибудь питон с джангой, позадротили алгоритмы с паттернами и солидами, и на полном серьезе уверены, что могут язык сменить за пару недель без потери в качестве.
Принеси эту мудрость faang&co компаниям. Вот ведь глупые, совершенно не спрашивают про инфраструктуру языков и вообще собеседования проводят на языке на твой вкус, при желании на грани эзотерики.
>>1740685 >>1740694 Мда, на эти высеры даже отвечать не собираюсь. Когда адекватно захотите пообщаться - пишите.
>>1740693 В FAANG еще и алгоритмы спрашивают, которые на работе ты никогда не будешь использовать в том же гугле, если ты не в передовой отдел попадешь, а раньше они спрашивали почему люки круглые или сколько теннисных шариков в автобус поместится. Смекаешь?
Но ты в любом случае не понял что я написал, я вроде не писал, что нельзя с одного языка на другой переключиться, я написал, что это не за неделю делается, за неделю ты только говнокодером на этом языке станешь, независимо от твоих общих скиллов программирования.
Странно слышать от "типа архитектора" такое. Уж архитектор должен понимать насколько все похоже. Суждения смахивают разве что на архитектора frsmework' name.
Я прошел путь php-python-java-go. Каждый раз перекатывался на другой язык без потерь в зп, без продакшн опыта, но никаких проблем это не вызывало. Все похоже.
Плюс был один проект, настоящий зоопарк языков, который я в качестве лида должен был переписать на го, поддерживая систему на плаву. Не было никаких проблем, что бы разобраться с кодом на неизвестных мне языках (код на луа для nginx и руби), пофиксить проблемы.
>>1740705 >>1740708 Ты меня оскорбляешь в каждом своем посте. Я бы не хотел работать с таким, как ты. Ты почему-то пытаешься сказать, что перейти с языка на язык можно, при этом я не понимаю зачем, ведь я не говорил, что нельзя. Ты может не тому человеку отвечаешь? Ты странный, если честно, я даже хз что сказать.
Ебал я рот этих пидорасов. Скобочки на скобочках в скобочках, контракты ультра уебищные и не интуитивно понятные. Я осознал весь контекст и понял синтаксис, но все равно каждый раз как смотрю на это говно - приходится напрягать мозг и парсить весь этот уебищный синтаксис почти каждый раз с нуля.
Если дженерики введут в таком виде, в каком сейчас собираются - я буду серьезно подумывать о том, чтобы сменить язык, ибо это уже ни в какие ворота не лезят. Я готов терпеть отсутствие сахара синтаксического, я готов терпеть сложности с каналами и мозгоеблю с синхронизацией, я готов терпеть interface{}. Но это уже слишком перебор.
Я особенно проиграл с мотивации не юзать другой вид скобочек "оптимизацией компайлера". Этот язык делают для компилятора или для людей? Что-то с последними изменениями кажется, что его делают не для людей, а чтобы потешить самолюбие некоторых пидорасов из гугла.
>>1740766 Двощую, на прошлой неделе глянул. Да проблема даже не в скобочках. Сама концепция будто один большой костыль. Как всегда они нашли оправдание к любому сомнительному решению, вот только от этого не легче, код то нам писать, а не думать о том, что такие поганые реализации сделаны ибо разрабы хуйланы любят в овероптимизации и оправдания.
>>1740778 О, никогда не писавший что-то сложнее на каналах, чем фан-ин/фан-аут и никогда не дебажевший десять тысяч пролитых горутин из-за бага, который позже после ишьюса был записан в доке, как "фича" закукарекал? Хотя ты наверн на мьютексах всё, что сложнее чем байты гонять туда сюда, пишешь.
>>1740908 Еблан, им скобочки заменить на другие - это добавить 2 ифа в исходник компилятора, буквально. Мне похуй на увеличение скорости компиляции на 0.002сек, если код после этого будет читаемым.
> многопоточность сложной кажется Дегенерат, речь не о сложности многопоточности, а о том, что с каналами ты только костылей нахуяришь больше, и сверху мьютексами крышку гроба закроешь.
Теперь понятен уровень интеллекта слепых фанбоев конкретных языков.
Из-за таких фанбоев как вы из языка получится PHP со смузи, блять.
>>1740988 Неосилятор, плиз. Каналы наоборот удобны в гошной модели. Лучше этого придумали только эрланг с эликсиром, только вот работы не завезли. Короче, дебс, тебе говорят не для тебя язык писали, пиздуй в жяваскрипт асинкавейтами в ивент луп пукать
Даже если выучить го. То есть ли смысл? В основном берут же только сеньоров. Вбейте в поиск hh.ru - требуется только сеньоры или мидлы с кучей багажей знаний. Го можно конечно учить, но не для джунов. А на рынке джуны могут найти работу только на php местах. Россия, СНГ.
есть 2 метода для фоновой обработки тасков: один делает запросы в БД и достает таски с нужным статусом и отправляет их в канал; другой - читает из этого канала и делает непосредственно обработку (шлет хттп-запросы). необходимо, чтобы одновременно могло обрабатываться несколько тасков. эти методы запускаются в двух отдельных горутинах
реализовал - код делает то, что я задумывал. сейчас стал писать на это дело тесты и столкнулся со сложностями - в частности при тестировании метода Process(). по задумке этот метод всегда должен работать в фоне и слушать канал с тасками - то есть на практике он должен останавливаться только при полном выходе из программы. соответственно, особой необходимости в использовании какого-нибудь WaitGroup нет
вопрос: как правильно тестировать метод Process() или как можно его спроектировать, чтобы он был пригодным для тестирования?
>>1741692 семафор ты имхо заоверинжинерил - во-первых, для таких штук лучше использовать канал из struct{}, во-вторых, зачем он тебе? ты не контролируешь количество горутин, которые стартуешь?
дальше, не запускай в своем методе Process горутину, просто передавай туда канал и синхронно, при вычитывании из канала, обрабатывай свою таску
и еще, в SendUnprocess сначала обновляй статус таски, потом пиши ее в канал, либо вообще унеси эту логику обновления в Process - не нужно лишний раз самому себе устривать shared-state
>во-вторых, зачем он тебе? ты не контролируешь количество горутин, которые стартуешь? семафор сделал для того, чтобы одновременно не запускать слишком много горутин. даже несмотря на то, что при запросе для получения необработанных тасков указывается лимит, можно же довольно быстро наплодить дохера горутин, не?
>просто передавай туда канал и синхронно, при вычитывании из канала, обрабатывай свою таску я мб неправильно понял, но мы разве не лишаемся в таком случае возможности обрабатывать несколько тасков одновременно?
>унеси эту логику обновления в Process допустим, я достал из бд небольшое количество записей для обработки, заслал их в канал и снова полез в бд за тасками - есть вероятность достать один и тот же таск повторно
>>1741312 > неосилятор > я с ним работаю уже 3 года Это ты дебс. Я отлично эту модель понимаю. Но когда тебе не хеллоуворлд писать нужно, а что-то серьезное - то у тебя выбор между тяжелоподдерживаемой хуйней нестабильной с каналами или говнокод с мьютексами.
Вы шизики тут наверное и дженерики не понимаете зачем в го будут полезны. Если вас лид не допускает к чему-то серьезнее перегона жсона туда сюда и поддержке микросервисов на 200 строк - не нужно проецировать свою тупость на других.
>>1741692 > sem Для чего нужны строки 25 и 29? Это ты так ограничиваешь кол-во горутин? Хотел на этом моменте тебя долбаебом назвать, но не буду. Ты джун же?
Я в твоем коде вижу минимум одну точку, при которой может случиться протечка горутин хотя мб ты это где-то в другом месте фиксируешь, но ты мало кода кинул.
Покажи клиентский код, который с этими методами работает.
>>1741792 >>1741792 да, недоджун даже, только начал изучать го. в 25 строке кладем единицу (ну либо пустую структуру, как ты и писал ранее) в канал, чтобы при заполнении канала заблочиться на этом моменте и не создавать новые горутины до тех пор, пока другие, уже созданные горутины не прочитают из него (29 строка)
клиентский код простой, я действительно нигде не контролирую протечку: taskChan := make(chan entity.Task) go p.Process(taskChan) go p.SendUnprocessed(taskChan)
>>1741824 >Так он аналог очереди непрерывной хочет организовать, или буферного выполнения горутин да, так и есть. я просто, видимо, тащу подход из пхп, где очередь разгребается несколькими процессами
>В любом случае его подход попахивает говном. спасибо за наводку)
>>1741827 > как ты и писал ранее Не, с тобой щас 2 чувака общаются, я не писал, но структура памяти меньше сожрет, чем int, её или interface{} предпочтительнее юзать, когда тебе не важны данные, которые через канал проходят.
> taskChan := make(chan entity.Task) > go p.Process(taskChan) > go p.SendUnprocessed(taskChan)
Лол, ты их просто вкидываешь, ясн.
Тогда твое решение норм, имеет место быть. Оверинжинирить смысла нет особо.
>>1741831 > оно не так работает, перечитай Так. 100 тасок на 10 горутин. Что не так?
> ну так и чем концептуально этот генератор отличается от генератора тасок из бд? Тем, что у него может быть неопределеннок кол-во этих тасок, определяющихся набором данных из этой бд.
>>1741692 > вопрос: как правильно тестировать метод Process() или как можно его спроектировать, чтобы он был пригодным для тестирования?
Мокажешь свой чекер, и считаешь сколько раз он был вызван. sem лучше в атрибут твоего Processor засунуть, а не в общем скоупе хранить, соответственно sem в том же тесте и определяешь тестовый.
>>1741833 >>1741827 Единственное добавлю, что хуйней какой-то занимаешься, обновляешь какую-то таску после того, как уже отправил её в канал и т.д. Не понятна ответственность этих методов и логичнее свести их в один, и отправить туда либо канал тасок и заполнять их с клиентской части кода, либо сразу слайс. Опять же не до конца понятен контекст и че ты вообще делаешь с этими тасками, а это важно.
>>1741853 > ты наверно тоже не очень долго пишешь на го? Нет, давно. Твой код делит 100 тасок на 10 горутин, которые по 10 тасок конкурентно выполняет из этих 100. Ты свой код сам не понимаешь чтоль?
>>1741851 >хуйней какой-то занимаешься, обновляешь какую-то таску после того, как уже отправил её в канал и т.д. я отправил ее в канал и сразу меняю ее статус и время последнего обновления в бд. вероятно, это имеет смысл в сам обработчик вынести
>логичнее свести их в один так в моем случае SendUnprocessed() - это, по сути, и есть клиентская часть
>Опять же не до конца понятен контекст и че ты вообще делаешь с этими тасками, а это важно. в бд лежат таски (+ добавляются новые по http), мне нужно каждый из тасков мониторить каждые 5 минут. для этого я запускаю горутину при запуске приложения, которая постоянно работает и достает из бд таски, которые надо обработать. таск содержит в себе url'ы, на которые надо постучаться по хттп и проверить ответ: если ошибка - кидаю уведомление в телегу/куда-то еще (в бд инфу об ошибке не храню, т.к на данный момент это не оч критично). желательно, чтобы была возможность проверять несколько тасков одновременно
>>1741862 Более полный код скинь - тогда можно обсуждать. Пока многие моменты не ясны, а именно что ты пытаешься по итогу сделать и как твои таски работают вообще.
>>1741871 Я другой анон. У себя на галере я делал сервис отложенного выполнения заданий, очень похожих на то, что тут спрашивают. Я сделал по рутине на таску, зависимость есть, в прод уже пошло
>>1741870 >>1741862 > если на каждую таску заводить по рутине? Да, можно, вместо того, чтобы в цикле пихать. Я это и имел в виду под сведением этого всего в один метод. Логически не понятно зачем тебе Process без SendUnprocessed. Похоже они друг без друга не живут в твоем приложении.
>>1741877 а, теперь понял. действительно, не живут. но тут снова возникает вопрос: как тестить такой метод, если у меня будет крутиться бесконечный цикл запросов к БД?
>>1741884 >>1741882 >>1741877 В таком случае лучше будет waitgroup юзать, а не канал с буфером. Если ты из какого-нибудь rabbitMQ тянешь с поддержкой атомик операций, то можно и каналом с буфером ограничиться, тогда рейс кондишена не будет банально. Если из какого-то sql хранилища, то нужно чанками и с waitgroup, ибо синхронизовать этот зоопарк будет проблематично
>>1741887 Так бесконечный цикл должен быть не внутри твоего process метода, а там, откуда ты его вызываешь. Либо добавить поддержку Closer (в деталях например done канал), чтобы ты мог самолично закрыть, но лучше Process методу оставить задачу на обработку одного чанка данных.
>>1741891 > ибо синхронизовать этот зоопарк будет проблематично Можно с помощью мьютексов, обернуть вызов и апдейт в лок и заебись, но это оверхед добавляет, зато бесперебойно можно дергать, тогда и с буферизированным каналом можно также юзать дальше.
>>1741691 Ты так говоришь, словно это что-то плохое. В расте аналогичный функционал вообще в stdlib. Я думаю это лучше, чем возвращать nil, err. Единственное, нужно продумать как элегантно добавлять в таком случае контекст (что-то аналогичное врапу одной ошибки в другую)
>>1742083 Ему лишь бы набросить. Нет дженериков - плохо, есть - уродливые, были бы красивые - он бы писал, что их спиздили из языкнейм. Просто токсичный человечек из интернета.
> Что именно Самая большая претензия - синтаксис типов. Я не про скобочки, а про капсуляцию которую они сделали. Т.е. они решили добавить новых фич в интерфейс, например списки типов, при этом нет оверлоада операторов. Получается в 50% случаев мы банально не сможем использовать например comparable, или еще что, т.к. это тупо не будет поддерживаться языком, и ты либо используешь один из базовых типов, либо сосешь хуй и опять же отказываешься от дженериков и пишешь все сам, как и до них.
Да еще десяток минимум претензий есть. Если они введут их в таком виде, в котором они сейчас в плейграунде второго го - то это просто фиаско, братан.
>>1742099 Нет, просто в отличии от тебя я пишу достаточно серьезный код, а не гонялово жсона в микросервисе на 100 строк.
>>1742418 Глянул содержание. Не совсем понял для кого книга. Он впихнул в неё вообще все, го с нуля до профайлинга и тестирования и в конце две главы про сети.
Хз, не читал. Если знаешь го, то можно просто последние главы почитать, а если не знаешь - лучше другую книгу найти, а не та, что за 500 страниц тебе и конкуренси и сети и всю основу языка галопом пересказывает. По одному конкуренси можно такого же объема книгу написать.
>>1736180 (OP) Какие либы мастхев го разрабу микросервисов? Понятно за gRPC, с ОРМ тож понятно (gorm), также понятно за всякие редисы и другие ки-валью хуйни.
А используете ли в работе что-то типа cobra (фреймворк для CLI), или веб фреймворки, как с логами дела, чем и куда хуярите? Было бы интересно послушать именно как обычно гоферы инфраструктуру микросервисов поддерживают и на чем обычно пишут.
Мне эта зашла. Там еще и за паттерны рассказывается. Но тож понимай, что книжки это лишь часть, надо самому пытаться разобраться, в некоторых моментах в пикбуке достаточно поверхностно рассказываются более сложные вещи, типа sync.Pool и т.д., но это я считаю очень хорошо, ибо заставляет самому во время прочтения гуглить, изучать и эксперементировать.
>>1742558 Я щас сижу читаю доку запа и ахуеваю с того, насколько там нихуя по факту не написано, вообще нихуя. Ясн. У запа документация одна из самых отвратных которые я вообще когда-либо читал. У меня аж жопа немного подгорела с ней. Сейчас попробовал узнать как можно хук свой накинуть или направить логи в самодельный writer - а нихуя. В доке есть один метод "Hook", регистрирующий обрезанную анонимку, у которой даже доступа к полям нет, под ним написано мол "для более сложной хуйни смотрите методнейм", а методнейма нет вообще во всей либе. Я чуть не поперхнулся, пиздос канеш. Как такое говнище вообще популярным стало в го среде? Я его даже в роадмапе видел.
>>1742562 У некоторых гугловых проектов ещё хуже. Там уже натурально берёшь имя пакета и ищешь другие проекты которые его используют чтобы понять что да как.
А кто-то реально использует горм в 2020? А зачем? Оно выглядит убого, сложное и тормозное. Или я слишком предвзят? Я иногда xorm беру, но только для микропроектов... По работе только голый sql.
>>1742926 Кириллица в utf-8 занимает 2 байта на символ. Когда ты len юзаешь - происходит конвертация строки в слайс байтов. Если нужно именно символы глянуть то юзай len([]rune("мама"))
>>1742690 ДомКлик Сбербанк для экспертов ivi WILDBERRIES Точка МойОфис OZON.ru Информационные технологии Авито Ручной анализ хэха дал вот эти результаты
Кто-нибудь переходил из фронтенда в го? Или хотя бы из бекенда на ноде? Может какие-то советы по обходу подводных камней есть? Прошел тур оф го, читаю книгу диджитал оушена по го, но возможно каким-то другим методом лучше изучать го и всё с ним близко связанное? Может другая книга?
>>1736180 (OP) Кто-нибудь юзал CGO? Есть хоть одна IDE где есть подсветка хотя-бы базовая? Или как в 78м на ощупь придется ориентироваться? Пиздец боль.
>>1745444 Если переписать весь stdlib голэнга с дженериками - он в 2 раза меньше будет, если не больше. И речь вообще не о коллекциях. Речь о некой абстракции над типом, которая сохраняет требуемые параметры. Это как интерфейс, но композитный и для встроенных типов.
А можете рассказать о gccgo? Есть CPU-intensive задачка. Go справляется неплохо, но хочется быстрее. Начал гуглить. Готовых бинарников нет. Чо только вручную собирать? Оно только компилит в бинарник? Нельзя бенчмарки позапускать и сравнить со стандартным го?
Рекурсивные решения для ряда задач выглядят намного элегантнее, чем итеративные, но вторые всегда производительнее. Если бы го умел оптимизировать хвостовую рекурсию - было бы здорово. Что плохого в том, что ряд задач станет легче решать?
Подумай теперь над тем, что такая оптимизация стоит ресурсов на имплементацию и последующую поддержку, стоят ли эти ресурсы твоего "здорово" для 2.5 задач, чтобы написать их медленнее, но "изящнее"?
>>1745974 Рекурсивные решения во всех, кроме нескольких специфичных случаях - намного сложнее для чтения и их рекумендуется избегать максимально в любом языке программирования.
>>1746253 Ты так-то находишься в треде по обсуждению языка, автор которого считает дженерики, отладчик, тернарный оператор, дефолтные параметры функций, лямбды и пр. сложными концепциями. О какой рекурсии ты вообще говоришь? Удивлён, что в го вообще есть рекурсия
>>1746253 Почему ты решил что я её освоить не могу, лол? Я говорю, что её безалаберное использование направо и налево чисто чтобы было - это говнокод, который только тешит чсв создателя, при этом тому, кто его читает уже придется вчитываться в то, как этот долбаеб контролит скоуп и что в коде происходит, не важно на каком языке.
Если ты в командах никогда не писал - это твоя проблема, лол. И да, я на литкоде спокойно делаю хард задачки, так что уж меня не нужно в незнании рекурсии обвинять, овощ.
>>1748646 Могу предположить что парсер считает это как невнятный итерабельный сиквенс аргументов вместо ключей которые он ожидает для интерфейсов Можешь использовать make(args...)
в го считается нормальной практика постановки в очередь (с использованием какого-нибудь rabbitmq) данных при post-запросе и дальнейшей их обработки? вроде того, как делают в пыхе: приходит post-запрос, ставим данные из него в очередь и сразу отдаем ответ. и какой-то воркер разгребает очередь воркер стоит делать отдельной горутиной или вообще выносить в другой процесс?
>>1748848 Подобное считается нормальной практикой в любом языке. Если операция, которую ты хочешь выполнить занимает много времени - складываешь в очередь, в ответ возвращаешь статус операции, а из очереди воркеры берут и выполняют. Реализовать можешь как хочешь, зависит от нагрузки. Хоть горутиной в том же коде (но это скейлить нельзя), либо держать пул воркеров в иде отдельных процессов на этом, либо других серверах через какой-либо лодбалансер. Зависит от потребностей твоей системы.
потребность - снизить время ответа на http-запрос в основном. смотрю в сторону брокера сообщений, потому что в случае с горутиной при падении самого приложения пропадут и данные, а в случае с тем же кроликом они сохранятся в очереди
главное сомнение - необходимо ли пилить отдельный процесс для консьюмера (с одной стороны это вроде и не сервис и какой-либо логики в себе не несет, но с другой - я его могу держать хоть на другой машине, и это плюс) или держать его в отдельной горутине (по сути теми же каналами могу добиться того же результата, но не проебу данные, если что)
>>1748991 Реббит - считай чуть ли не стандарт общения между микросервисами.
У тебя есть бэкенд сервисы и фронтенд сервисы. В твоем случае бэкенд сервис - это сервис, который знаимается обработкой сложного запроса, т.е. делает сложную работу. А есть фронтенд сервис - он тупо принимает запрос и отправляет его в бэкенд сервис для обработки, а сам отвечает статусом или еще чем куда тебе нужно.
Принимаешь запрос - решаешь куда и кому его на обработку отправить. Вот и всё. Либо он тебе сам результат отправит обратно в той же очереди, либо сам запросишь, когда понадобится.
скажу, что перед тем как тащить к себе какую-то технологию (а особенно хранилище данных) стоит подумать, а ту ли проблему ты собираешься решать этой технологией
>>1749235 > Отдельный автономный кусок го кода? Я уже тебе 2 раза расписал что это такое, харе тупить. Это может быть и кусок кода который хуй заскейлишь, а может быть абсолютно отдельный микросервис. Ты заебал.
>>1749870 Лол, с питона зп возростет и при переходе на пхп, ты о чем? На го возрастет многократно, особенно если ты исключительно питонистом был и нормального кода в жизни не видел.
>>1750104 > питонист 180к на второй год работы Спорное утверждение - это твои нафантазированные 180к через 2 года. На питоне сейчас что-то сложнее веб сайтов или ERP систем не пишется (не говоря о всяких дата саенсах, но там питон только как один из инструментов). На пыхе худо бедно даже интерпрайз есть и типизация.
>>1750218 ERP ирл это совсем не то, что в википедии. Считай какой-нибудь сайт, который парсит интернет магазины на цены - это тоже вид ERP. Модное слово навешивают на всё подряд, чтобы перед заказчиком выебнуться, так сказать.
>>1750195 Кто вообще в здравом уме использует питон сейчас? Кроме датасайнтистов, которым бы поменьше думать над качеством кода, и побольше писать скриптики и запускать нейроночки.
>>1751311 Двачу. Особенно это хуево в поддержке, если динамически линковать. Но и даже если линковать статически, высока вероятность ловить сигфолты, которые ты из го никак не захендлишь. Т.е. паника в го - можно сделать recover, залогировать стек вызовов, отправить долгоживущим соединением завершение, что угодно. А краш в С - это минус процесс, и хуй знает в чем и где проблема
>>1740457 Этот прав. Хотя не за неделю конечно. Если чисто новый язык, а проект знакомый и ты на нем хотя бы пол года или год, то за неделю уже можно писать нормальный код, хороший код за месяц, а охуительный где-то месяцев через 4. Но обычно новый язык означает новую компанию (не налажена коммуникация) и новый проект (рисе не знакомо). И тогда первый импакт будет не через неделю, а через полтора месяца в лучшем случае. С учётом удаленки (коммуникация ещё хуже) урожай ещё на полтора
>>1736180 (OP) Ребята, подскажите с чего начать. Хочу написать личное приложение, в общем, для сталкинга ЕОТ в инсте. Конкретно - чтобы оно в память записвало текстовый файл и отмечало там, когда она заходила, а когда выходила из Инста. Мб API использовать, мб типа скринов делать каждые 5-10-15 минут(и ам будет писться типа "в сети 17 минут назад"
>>1751980 Лол, я такое же писал для вк. Но там и апи толком не было, нужно было тупо открыть урл определённого вида и смотреть на поле с временем последней активности.
>>1752037 Не, с инстой это так же просто не сработает, там нужно обмазываться документацией апи, ставить какие-то либы (вроде, там не REST, а что-то другое), получать токен, и ещё не факт, что там вообще можно посмотреть время, если не через официальный клиент.
Чтобы была отметка "В сети X мин. назад" - нужно, чтобы у тебя с этим персонажем был чат(т.е. если ты просто написал ей, а она не ответила - ты не будешь знать когда она онлайн, а когда нет).
>>1751497 Пыха, стоит отдать ей должное, совершила какой-то неебический рывок вперед. И по перфомансу, и по типизации, и по качеству экосистемы. А что есть у питона? Половина проектов на 2.7 (да и современный не сильно быстрее), отсутствие внятной типизации и древняя, как говно мамонта, джанга?
>>1752064 >как говно мамонта, джанга? Сама джанга медленно переезжает на async и есть куча фрейморков у которых все эти фишечки нового питона из коробки
>>1752064 У пыхи тоже не всё хорошо с обратной совместимостью. Правда, хз, насколько сложно переписывать на новые версии, наверное, легче, чем на питоне. Вебня для питона - вообще пиздец. Говноджанга и сделанный целиком из костылей фласк, а всё остальное непопулярно и развито так себе.
>>1752077 > У пыхи тоже не всё хорошо с обратной совместимостью. Пруфы? Там с пятой версии были какие-то ну совсем минорные изменения, типа приоритетов парсинга скобок при работе с динамически определяемыми свойствами объектов, а в целом ничего не ломалось, только добавлялось. Исключая версии <5, конечно, но там, я надеюсь, всё мертво и уже давно.
>>1752089 Пруфов у меня не будет, ибо раз в 5/7 версиях ситуация исправилась, то мои сведения устарели. Несколько лет назад, ещё в шкалке, что-то делал с пыхой, были какие-то проблемы с mysql/mysqli, ещё охуевал с несовместимых версий dll-ек расширений. Не помню уже.
>>1752098 Лол, mysqli уже давно никто из вменяемых людей не использует, непонятно, много ли ты понимал в школе, а главное, судя по всему, у тебя были проблемы с тем, чтобы поставить экстеншен правильной версии к правильной версии пыхи на винде. Это не является проблемой совместимости языка, а скорее проблема платформы: в винде нельзя легко и просто через `apt-get install php-mysql` поддерживать совместимость пакетов.
>>1752077 >У пыхи тоже не всё хорошо с обратной совместимостью.
Если бы пыха так сильно не парилась над обратной совместимостью, как делает сейчас - ее разработчики уже давно бы жили в 3020 году. Однако не считаться с огромной кучей говна, которую наворотили на старых версиях пыхи, не получается.
>>1752484 > легко и просто через `apt-get install php-mysql` Ставить одну версию библиотеки сразу для всей системы это не легко и просто, это отложенные боль и унижение.
>>1754006 Не, ну так-то да, докеры-шмокеры, но вы видели, там чувак вручную библиотеки подкладывает, в виде dll'ек! Если ему про контейнеры начать рассказывать, он кукухой двинется.
>>1754146 Ну я тогда совсем шкилой был, только-только прочитал книжку по сишке для начинающих и начал читать про кресты. Докер же тогда только появился, и о нём ещё никто не знал, да и я охуел бы, если бы увидел его.
>>1754006 >Ставить одну версию библиотеки сразу для всей системы это не легко и просто, это отложенные боль и унижение. Если сидишь на примитивной бинарной параше без слотов
А секрет успеха прост оказался - программистам не нужны 100500 фич, им нужна прикладная сишка, то есть безопасная, с батарейками и хоть каким-то тулингом.
Печально, что такая огромная разница. С другой стороны у го такое же преимущество по длительности STW, но не знаю, перевешивает ли это производительность шарповского GC.
>>1755741 GC 'это tradeoff - хочешь максимальный throughput - делай полный STW, хочешь маленькие STW паузы или вообще без них - плати производительностью в рантайме. Хорошо когда в языке можно выбрать, но увы создатели Go сделали сами этот выбор.
Помню полгода назад мне тут один тип усиралсы, пытаясь доказать какой невъебенный по всем параметрам сборщик мусора. в Go
>>1755991 Ой, не та ссылка. То что тебе нужно - ниже: > Do not allocate objects and []byte buffers - just reuse them as much as possible. > sync.Pool is your best friend.
>>1756015 например, тем, что в офисе ты куда быстрее перестанешь быть балластом для команды разработки, т.к у тебя есть возможность получать ответы на свои тупые вопросы гораздо быстрее, чем на удаленке - коллегам будет сложнее тебя игнорить
>>1755741 Так все и так в курсе, что go не самый быстрый из компилируемых языков. Он никогда к этому и не стремился. Суть го в простой многопоточности и GC.
Но да. Учитывая легковесность языка то, что он усирается в тестах не то, что своему прямому конкуренту (плюсам), а еще и его монструозному старшему брату - достаточно печально.
>>1755977 >А какие есть примеры GC без пауз? Я нашел только три варианта для джавы Prod ready реализации я знаю только для джавы. GC вообще без STW упирается в то, что нужны барьеры чтения.
Их можно реализовать как в Shenandoah GC - когда ты на каждом переходе по ссылке делаешь барьер чтения.
Или как в Azul Zing - когда барьеры чтения реализуются на уровне ОС изначально у них вообще в железе их реализовывали, потом перешли на кастомные ядра линукса и x86
>>1756607 Из языков с GC он среди самых быстрых, не? Плюсы разве считаются прямым конкурентом го? Я думал, с плюсами конкурируют си, раст, D. По мне так закономернее противопоставлять го с джавой и сишарпом. И го не проигрывет сишарпу, они проигрывают друг другу. Го сильно уделывает сишарп по длительности пауз. Надо было в пост со ссылкой добавить пикчи и про это тоже, а то там только про преимущество сишарпа.
>>1756773 > Плюсы разве считаются прямым конкурентом го Да, упрощенный и медленный аналог типа. По крайней мере создатели так считали. Но я хз как го может на уровне плюсов быть даже близко.
Он не конкурент сишарпу точно, сишарп это ООП язык с кучей всего для огромных систем. На го ты огромную систему если напишешь - поседеешь.
У го своя ниша - это средней сложности язык для небольших утилит/сервисов. Тащемта и все, для другого его использовать - это в ногу себе стрелять. А учитывая что он еще и с шарпом даже не на равных по производительности - появляется сомнение, что го вообще хоть в каких-то случаях предпочтительнее другим, более нормальным языкам.
Я сам пишу на нем больше 2х лет, но у меня всегда задней мыслью "нахуя?". Хз, наверн пхп макаки такие же мысли имеют.
>>1756866 Создатели тогда уж скорее отталкивались от си, а не от плюсов.
Насчёт сравнения с шарпом, на котором пишут огромные системы — на го ведь тоже пишут, только по-другому. Дробят на микросервисы.
Не совсем понимаю, что ты имеешь в виду под отставанием в производительности. Где-то да, где-то наоборот отгоняет. Во многих бенчмарках они идут примерно рядом.
анон, написал сегодня скрипт с воркером работающим через горутины, для перекидывания даты из кликхауса в аэроспайк, около 30кк записей. скоро уже 300к в сек? мимо джун.
>>1757219 Яннп, но если с идиоматическими ембедами по файлнейму оно будет паковать всё в пщную структу, по итогу запихивая всё в один бинарник, - еще один нереальный плюс к и так охуенному мультистейжу контейнерингу
>>1756879 > они идут примерно рядом Я к тому, что го должен на голову обгонять сишарп, учитывая гораздо меньшую функциональность и нацеленность на производительность. Смысл тогда от всех ограничений, которые вводятся разработчиками голэнга (начиная от всяких "угловатые скобочки дольше парсить, поэтому мы дадим вам дженерики с круглыми", и заканчивая отсутствием сахара), если язык медленный сам по себе и не может адекватно обогнать жирного неповоротливого тырпрайз гиганта. Меня это реально печалит, не должно так быть.
>>1757264 >"угловатые скобочки дольше парсить, поэтому мы дадим вам дженерики с круглыми" Ну вообще дженерики будут с квадратными скобками.
>язык медленный сам по себе Анон, мне кажется, что ты всё-таки начинаешь слегка толстить. Сам по себе го как раз не медленный, а очень даже быстрый. Медленный он по сравнению с сишечкой, плюсами, растом. Да и то не чтобы прям сильно медленный по сравнению с ними.
Есть нативные кресты, нативный раст, оба они обгоняют .Net Даже в самом .Net ввели режим без жита, а в юнити и вовсе делают делают специальное подмножестов языка C# со специальным компилятором для производительности.
То есть практика и факты выше говорят что Jit нихуя не рулит и это наоборот фейл, что язык, скомпилированный нативно идет вровень с языком, скомпилированным в байткод, не?
>>1756879 >>1756866 Пиздец, я не устаю охуевать от долбоёбов, такое ощущение, что они в каком-то другом мире живут, где названия те же, а вещи совсем другие.
Го не является полноценной заменой си и плюсам и никогда не был. Смотри за руками: Си (и плюсы) используется в большинстве для системного по (драйвера, ядра и так далее, а также реалтаймов, где особо важно гарантированное время отклика (АЭС какие-нибудь), потому что очередность и длительность пауз гц не особо предсказуем в микро-масштабе. В вебе си использовали очень редко и исключительно для максимально нагруженных компонентов (типа веб-серверов или баз данных). Есть ещё Яндекс, который на нём пишет вообще всё, но они долбоёбы. Соответственно, "конкурировать" с сями го мог бы только в этой крайне узкой нише, и то непонятно, си (а также раст, д, хаскель и тп) по определению будет удачнее для серверов и бд.
Теперь про го. Го же позиционируется как очень простой и очень быстрый язык для веба. У него я вижу две три ниши: 1) Оптимизация производительности у больших систем - никто не запрещает использовать ту же джаву с сисярпом, но го намного экономнее по памяти, делает намного более короткие паузы гц и в нём намного легче описывать какие-то кооперативные алгоритмы. Соответственно, ты берёшь какие-то узкие места, где прочие языки жрали слишком много или слишком долго отдавали ответ и выносишь их в сервисы на го. Их можно было бы написать и на сях, но по принципу Парето ты и так получишь 80% дополнительной производительности от гошечки, тратить в разы больше ресурсов на борьбу с UB и прочей хернёй на сях никому не надо. Собственно, на сях их и раньше не писали, просто пытались приготовить на той же джаве, тюнили гц, заводили отдельный джавовый сервис, где всё работало "на магии" и так далее. 2) Написание сложных систем - как ни странно, на го можно писать сложные системы и получается вполне юзабельно. Богатую доменную модель ты, конечно, не построишь (будто её кто-то когда-то успешно строил на больших проектах), а вот анемичную - вполне, гошное структурно-процедурное программирование изи для этого подходит. Если ты не полный говнокодер и нормально структурируешь код (вот тут я грустно вздохну и скажу, что в сообществе го есть куча денегератов-нигилистов, пришедших то ли из си, то ли откуда-то ещё, которые любят понапихать всё вместе скопом в один файл или один пакет и называют это "простотой". Конкуренты тут опять джава и сисярп, а плюсы гошечки здесь в том, что она очень простая (а ещё в философии "в го есть только один способ что-то сделать, самый прямой", а, значит, можно быстро обучать новычков, быстро разбираться в чужом коде, быстро шлёпать код и выкатывать его. Во многом спорная концепция, но я работал на больших проектах на го, и должен сказать, что работается вполне нормально, жить можно. 3) Быстрое написание прототипов сложных и нагруженных систем, всякие стартапы - раньше все на свете стартапы писались и выстреливали на php, лол. Да даже сейчас, какой-нибудь ситимобил, яндекс-еда или что-то другое имеют под капотом пехапешное легаси. Сейчас можно всё писать на го и это сразу будет быстрее и без ряда пехапешных костылей (например, для двустороннего мессаджинга) при прочих равных. Тут рядом пробегала, кстати, нода и передавала привет.
>>1757470 > То есть практика и факты выше говорят что Jit нихуя не рулит и это наоборот фейл, что язык, скомпилированный нативно идет вровень с языком, скомпилированным в байткод, не? Надо очень вдумчиво смотреть бенчмарки, в 95% случаев авторы конкретно так лажают в коде или сравнивают какую-нибудь хуйню в виде скорости ответа заглушки от встроенного сервера, что к реальности не имеет никакого отношения. Вообще JIT должен давать (и даёт) во-первых бонус к числодробилкам, а во-вторых, за счёт компиляции на конечной машине он оптимизируется конкретно под неё, что даёт прирост, если у тебя тысячи машин и они бывают различными. Если у тебя 2.5 сервера, то да, ты можешь скомпилировать код "под них" локально и JIT тебе не поможет.
>>1757264 > Я к тому, что го должен на голову обгонять сишарп, учитывая гораздо меньшую функциональность и нацеленность на производительность. Смотри ещё на потребление ресурсов, на размеры и частоту пауз.
Вообще это оторванный от реальности пиздежь. В реальности (Android,Mono,Unity3D) спешно прикручивали AOT и это было самой ожидаемой фичей.
> (и даёт)
Дает -O2 в настройках компиляторов нативных языков, JIT не дает нихуя кроме оверхеда по определению.
> а во-вторых, за счёт компиляции на конечной машине он оптимизируется конкретно под неё
В реальности он там нихуя не оптимизируется, он пропукивается несколько часов от уровня днищенского дна и питона до уровня настройки -O1 в лучшем случае.
Просто на серверах уже привыкли заливать проблемы баблом и новыми стойками и от того такой манямирок.
Когда речь зашла о эндюзерском железе, то там с заливкой баблом обломинго - пользователь пошлет вас нахуй с вашими JIT тормозами и пойдет к конкурентам-байтоебам у которы прикладуха не тормозит.
>>1758496 Скорее всего - очень глупая. Разве что тебе нужно накостылять прототип "на вчера". Хотя и в таком случае тебе может быть быстрее в разработке все это в монгу сложить.
>>1758516 >Почему? По тому что БД решают кучу различных проблем, в т.ч. и проблему конкурентного доступа к одному и тому же файлу, кеширование, эффективный поиск. Даже если тебе не нужен ACID - твое решение становиться жутко непереносимым и вызовет в будущем кучу проблем.
>Быстрее ли? Дело в том, что я с субд никогда не работал. Самое время начать
>>1758998 Не слушай этих недоумков. Просто чтобы ты понимал уровень компетенции разработчиков на Пщ. Проходил собеседование в нескольких очень крупных компаниях, которые решили пердолить свои нескучные проекты на Пщ. При общении с лидами выяснилось, что они просто не понимают что такое транзакции, модель памяти в Пщ и то что в Пщ присутствует сборщик мусора.
>>1759014 Транзакции внутри СУБД. Они попросту не понимали, что это такое и зачем это нужно. Я тогда просто охуел с их осведомленности и поспешил на выход, лол.
>>1759029 Взлольнул с деревенского! Ты только не грусти, старина. Глядишь пройдет еще несколько десятилетий и твой Пщ допилят хотя бы до уровня развития виртуальных машин 2000-х годов, лул.
>>1759179 Я прочитал "Язык программирования Go" (Алан Донован, Брайан Керниган, 2016 год), в целом доволен, интересные примеры, показаны сильные стороны языка, да и не слишком затянуто. Книге 4 года, но она все еще актуальная, т.к. расказывает про фундаментальные вещи.
>Package unsafe's safety rules allow converting an unsafe.Pointer into uintptr when calling certain functions. Previously, in some cases, the compiler allowed multiple chained conversions (for example, syscall.Syscall(…, uintptr(uintptr(ptr)), …)). The compiler now requires exactly one conversion. Code that used multiple conversions should be updated to satisfy the safety rules.
Наконец-то они до этого дошли, теперь unsafe код не будет настолько нечетаемым говном
>>1757412 > Ну вообще дженерики будут с квадратными скобками. Это недавно только сказали, после волны батхерта у комунити.
> Сам по себе Сам по себе - это значит как изолированный язык, без CGO и других штук. Не тупи, анонч. И нет, я не толстю.
>>1757279 Я не сру. Мне го нравится и я на нем уже больше 3х лет пишу. Тыкать в явные минусы языка - это значит срать и толстить? Тебе бы над интеллектом поработать своим. Фанбойство до добра не доводит.
>>1757625 Я этот высер даже читать не буду, по началу уже понятна полная некомпетентность в вопросе, про гц паузы и UB вообще молчу. Просвящайся: https://golang.org/doc/faq
>>1764382 > Я этот высер даже читать не буду, по началу уже понятна полная некомпетентность в вопросе, про гц паузы и UB вообще молчу. Просвящайся: https://golang.org/doc/faq Аргументированно не можешь ничего сказать, только пердеть в тред?
>>1764382 >Сам по себе - это значит как изолированный язык Ну так это абсолютно бессмысленно. Ок, как ты собираешься изолированно оценивать скорость языка? Это можно сделать только в сравнении с другими
>>1773260 Да у многих языков общего назначения де-факто одна-две области. Другой вопрос, что у пщ она скорее ближе по степени узости к 1С, чем к тем же крестам, джавашарпам и пыхоплеяде.
>>1773260 Лолчто опять в тред приходят дауны, понабравшиеся каких-то странных идей непонятно откуда и ни месяца не отработавшие на обсуждаемом стеке. В 7 из 10 компаний, о которых я знаю, на пщ пишут вполне себе бизнес-логику. Зачастую это стартапы, которые написали говномонолит на пехапе и теперь распиливают его на сервисы, но иногда и с нуля пишут. Я в последнее время работаю в финтехе, тут на го пишется дохрена всего, от обработки транзакций до расчёта всяких рейтингов. При этом можно вспомнить авито, озон, баду, яндекс-еду (вспомнил сходу) и прочих, кто пишет логику и на го, и на чём-то ещё. Не говоря про тех, кто пишет отдельные сервисы типа рассылок нотификаций от mailru или медиасерверов vk.com, которые не бизнес-логика, а просто нагруженные функциональные сервисы, поверх которых и лежит логика. И не вспоминая про ML, который в последнее время активно пропихивают в го кстати вот это очень спорное решение имхо Короч на го пишут просто дохуя всего и сводить его до "языка для обслуживания соединений" можно только нихуя не разбираясь в области.
>>1773362 > В 7 из 10 компаний, о которых я знаю > Я в последнее время работаю в финтехе Анон, пали годные конторы, куда можно устроиться мидл гоферу, по-братски. Без палева, конечно, чтобы без всяких деанонов тебя. Я бы просто на вакансию откликнулся. Тоже в финтех хочется. Ещё умею бек на js/ts, фронт на vue/react, раньше работал с этим.
>>1773362 Плюсую неглядя, щас много компаний прям активно полезли в го (но требуют обязательно опыта с пыхой/питоном/what-ever чтобы поддерживать легаси) и прям как язык общего назначения его используют и для бизнес-логики в том числе
>>1773746 зайди в любой гошный русско-язычный канал что в телеге, что в слаке и в зависимости от, либо по тегу либо по чату зайди в job вот это откровение, правда
>>1788693 Нечего обсуждать, пока что. Дженерики пока в драфтах, последний релиз больше технический, чем свистелкоперделковый, у новичков глупых вопросов пока нет.
Говнокодирую петпроджект, наткнулся на свой хуевый дизайн архитектуры, по этому у меня 2 сервиса ссылаются друг на друга. Подскажите, пожалуйста, вот это - валидный способ инициализации подобной ебанины, или я что-то не так делаю? https://play.golang.org/p/gqiSggrHVwZ Если это валидно, подскажите, пожалуйста, как заставить wire генерить что-то подобное?
>>1788988 Сервис - это структура, которая содержит все, что ей нужно - интерфейс логера, интерфейс репозитория, поинтеры на другие сервисы. Пример того, что я пытаюсь сделать - я скинул на плейграунд
>>1788992 На самом деле там просто логика и по хорошему нужно создать еще один сервис, который будет вызывать первые два, но у меня пока руки до этого не дошли
>>1789237 Потому что с точки зрения кода могут существовать циклические ссылки и это даже типа нормально (гц тот же умеет распознавать такие ссылки, чтобы понимать, чистить ему объект или нет). А с точки зрения архитектуры приложения цикл в графе зависимостей - это пиздец, хотя бы по той причине, что невозможно инициализировать компоненты в валидном порядке: если ты первым инициализировал компонент (сервис) А, то он ещё невалиден, пока ты не инициализируешь и не прокинешь в него сервис Б и наоборот. Именно поэтому и запрещены циклы импортов в пакетах, к примеру. Правильный путь - создаешь общий компонент С и пихаешь его и в А, и в Б, тогда порядок инициализации будет валидным: С,А,Б
Студентота второго курса универа. Смогу ли нормально вкатиться в го и потом найти работу или он как первый продакшен язык работодателям нахуй не упал и я буду как лох сидеть без работы потом всю жизнь?
А есть книжечка где там на примере каких-нибудь сервисов поясняются моменты? Синтаксис почитал, хочется примеров, да что-нибудь поновее. А не всякая хуйня 2016 года.
>>1790095 Какие момент? >Синтаксис почитал, хочется примеров Мне знания синтаксиса хватало для осиливания автогенерируемых доков >не всякая хуйня 2016 года Хуйня потому что 2016 года? лол
>>1789854 Как первый язык го не подходит. Советую начать с Java, а потом уже перекатишься куда угодно. Конкуренция есть только если ты нулевой и нихуя не делаешь.
>>1791641 нисколько возможно, я не так объяснил делаю кату с кодварс, в ней необходимо "вычислить" наиболее весомое слово. каждая буква в слове имеет "стоимость" по позиции в алфавите(a=1, b=2, e=5 и т.д.)
>>1791722 Ну так берешь аскии-значение каждой буквы (интовое значение руны для латинского алфавита), вычитаешь 0х60 или со скольки там начинаются буквы и вот тебе стоимость буквы
>>1791020 >Имплаинг, что в компуктер саенс что-то поменялось за двадцать лет и фундаментальные знания о разработке ПО не получить от топ 1 энтерпрайз языка Ах, да. И лучше тут советов не спрашивай.
>>1736180 (OP) Заходят ts, java и go программисты в бар ts программист говорит: -getBeer<chery>(); java программист говорит: -new Beer<chocolate>() Go программист: -А с каким вкусом у вас по умолчанию? Со вкусом мочи? Ну, что же поделать, давайте
>>1798435 Крупных и средних* Фриланс не нужен Но вообще говорят, что го - это своего рода "новый php", ещё лет через пять может занять и нишу во фрилансе, частично.
Тред немного забуксовал, так что расскажу свою историю вката. Увеличил свою зарплату почти в два раза с 80к до 150, ДС, получил кучу плюшек вроде ДМС, абонементов и удобный график, так что своим решением полностью доволен. Вкатывался разумеется не с нуля, сам бывший плюсовик с двумя годами опыта, который успел немного поработать на проекте с бэком из Golang микросервисов (сам в это время был фронтом и ковырял Qt). И в какой-то момент, разочаровавшись в плюсах, я решил попробовать приписать себе немного опыта Go, чтобы при смене работы кидать резюме на оба стека. Прошел за две недели около 20 собесов, и что хочу сказать. Такое чувство, что у всех работодателей есть ровно одна методичка, из которой они берут задачки на собеседования. У некоторых блять даже функции называются одинаково, вроде test3abc(), поэтому к концу второй недели я уже настолько преисполнился, что при первом взгляде на код уже знал, где спрятан подводный камень и что нужно поправить. По этой методичке существует два типа задач: 1. Задачи на слайсы. Обычно первой дается вот такая задачка: a := []string{"a", "b", "c"} b := a[1:2] b[0] = "x" Нужно вывести значение слайса а. Почти во всех задачах подводный камень обычно один, и состоит в том что слайс b ссылается на данные слайса a, поэтому изменяя b, мы заодно приведем a к виду "axc". Нужно на зубок знать внутреннее строение слайса, знать про size и capacity, про аллокацию памяти на куче/стеке, как происходит увеличение размера и т.д. Дальше будут усложненные версии этой задачи, вроде добавления append где может произойти копирование, если размер слайса превысит capacity и т.д. Еще могут спросить про map, но обычно ограничиваются вопросом о структуре, хэш-таблица или красно-черное дерево. И про коллизии тоже спросят. 2. Задачи на горутины. Обычно все начинается примерно с такого: func main() { for i := 0; i < 10; i++ { go func() { fmt.Println(i) }() } fmt.Println("test") } Спросят, что выведется на консоль test и мб пару цифр, после чего main-горутина завершится, и попросят исправить. Могут попросить вывести 10 разных чисел а значит нужно передать i в качестве параметра в горутину, заставить каналы вывести числа перед "test" тут нужен WaitGroup, чтобы завершить все горутины перед его выводом, создать канал и настроить вывод через него и т.д. Большую часть собеса я проводил именно в этой секции, спрашивают жестко и практически обо всем. Нужно обязательно знать каналы (буферизированыые и нет, чем отличаются и как блокируются), библиотеку sync (спрашивали по WaitGroup, Mutex и Atomic), и паттерны вроде fan-in/out. 3. Тут обычно разнится, кто-то попросит составить SQL-запрос, кто-то даст задачку с литкода, а кто-то попросит на словах накидать простенький HTTP-сервер. Конечно, этими задачами обычно не ограничивается, будут в процессе спрашивать про алгоритмы, структуры данных, основы протоколов и веба, но обычно ограничиваются базой, по теории особо не дрючат.
Джунам конечно мой рассказ поможет слабо, но если в треде есть перебежчики с других языков, то дерзайте! Язык молодой и поэтому в вакансиях нет требований к большому формальному опыту, не придется в кровавом энтерпрайзе фиксить баги десятилетнего монолита с миллионом строк (хотя может быть придется распиливать подобный на микросервисы), платят очень хорошо мне и 180к предлагали, но я выбрал интересующее меня направление. Вакансий много, и не только в ДС, мне эйчарки предлагали удаленку практически в каждом миллионнике страны. Причем я специально интересовался: перекатываются и рубисты, и питонщики, и джависты с плюсовиками, с той же пыхи массово народ сбегает и переписывает свои стартапные монолиты, которые за 5-10 лет обросли жирком и стали буксовать. Работы полно, и людей не хватает. Лишь бы опыт разработки был, и какая-никакая база знаний.
>>1800486 Почти все вопросы которые ты тут привел, знаю на зубок (опыт). Но при этом опыта на галере вообще нет никакого. В го вкатился месяца два назад. А в мухосрани полторы вакансии на мидла, плюс одна на трейни, которую я проебал (не успел). Удачи анон.
>>1800486 Недавно сам проходил собесы на го разработчика. Так что подтверждаю вышесказанное. От себя добавлю:
1)Почти всегда спрашивают про устройство слайсов и дают задачу на них. Чаще всего это задача на append в функции 2) Обязательно спросят про мультипоточность. Частый вопрос: чем горутины отличаются от потоков процессора. Обязательно про каналы вопрос. Также популярный вопрос: как завершить выполнение горутины? Ну и обычно еще про waitgroup спрашивают. 3) Любят спрашивать про ООП в го 4) Еще популярный вопрос про то, можно ли писать асинхронно в мэп, и если нельзя, то как это исправить. Ну и в принципе про то, что такое мэп 5) Иногда спрашивают про выделение памяти на куче/стеке, при каких условиях. 6) Из смежных областей, спрашивают про redis, docker, kubernetes
>>1802544 Ещё спрашивают про строки под капотом, иногда про юникод, руны. Естественно, спрашивают и про бд, как и везде в бекенде. Ну и архитектура, веб, стандартная тема.
>>1802544 7) Как работает мапа под капотом и почему можно создать мапу с разными типами если в Го нет дженериков? 8) Стэк и хип именно в го, чем они отличаются в других яп 9) Планироващик в Го 10) Что будет если передать что-то в закрытый канал? 11) Отличия len и capacity 12) Race condition, и вообще каких правил нужно придерживаться когда пишешь конкурентную программу 13) ctx.Context
>>1804528 Вот кстати про планировщик и гц (особенно актуальных версий) в свободном доступе очень мало инфы, все советуют читать исходники и разбираться самому.
>>1802827 Компилятор чего? Своего языка? Если так - возьми какую-то динамикопарашу, вроде питона или тайпскрипта, по тому что если язык взлетит (этого не произойдет, скорее всего) тебе все равно нужно будет переписать компилятор на свой язык.
Приветствую аноны, стоит ли вкатываться в Go? На самообучение хорошо способен, хочу перейти с машиниста в метро в IT, присмотрелся к Go, вроде не сложный язык. Но вот в чем дело, я сильно на ЗП помешан, не жадный, но нравится когда платят хорошо. В метро в настоящий момент имею 95-105к чистыми, это мало для меня, хоть и никуда их не трачу. Читал что в IT у каждого языка есть своя зарплатная вилка, скажите пожалуйста, перспективно ли вообще изучать этот язык и средние зарплаты при работе с этим языком (не секрет что в интернете много пиздежа на эту тему)
>>1807143 Нет, не стоит. Вакансий для новичков нет, максимум - стажировки для студентов топ вузов, по этому критерию ты явно не подходишь. Везде требуют людей с опытом на других языках, так что затея сомнительная, выбирай что-то более ходовое и массовое, Java, C#, там значительно легче будет устроится. Потом сможешь перекатиться.
>>1807147 Спасибо за ответ, я еще думаю про мобильную разработку, а именно для iOS Swift изучить и писать на нем. Читал что можно без Objective-С обойтись в iOS, в отличии от Android, где к Kotlin'у еще Java должна быть обязательна.
>>1807168 Это фронтенд-то изи, где пытаешься на 50 стульях одновременно усидеть, чтобы работало и в древнем IE, и на мобилках, со всякими вебпаками и реактами-хуяктами, и всё должно быть красивенько, с анимациями и быстро? Причём стек и подходы меняются каждый год. Я пизданулся учить всё это после сравнительно лёгких крестов и ушёл в бек.
>>1807174 Я вебпак самостоятельно ни разу не настраивал, хотя мидлом являюсь давно. IE тоже давно не поддерживал. Последние 3 года стек у меня один - реакт и его экосистема. Анимации изучить проще, чем например базы данных, очереди, связь микросервисов между собой или ещё какую-нибудь сетевую бекендерскую вещь. Всякие grpc, amqp, webrtc, многопоточность и так далее, мне кажется это сложнее анимаций
Предстоит собес на Go стажера/джуна. Что нужно знать из алгоритмов, структур данных и особенностей языка для успешного прохождения? Выше в треде видел описание вопросов с собесов, но вряд ли это релевантно для джуна.
>>1807143 > я сильно на ЗП помешан, > имею 95-105к чистыми Проорал с этого нищего. Если ты "помешан" и при этом получаешь всего сотку, то что было бы, не будь ты "помешан"? Получал бы 15?
>>1807738 >10) Что будет если передать что-то в закрытый канал? >11) Отличия len и capacity >12) Race condition, и вообще каких правил нужно придерживаться когда пишешь конкурентную программу >13) ctx.Context >3) Любят спрашивать про ООП в го >1)Почти всегда спрашивают про устройство слайсов и дают задачу на них. Чаще всего это задача на append в функции >5) Иногда спрашивают про выделение памяти на куче/стеке, при каких условиях. >2) Обязательно спросят про мультипоточность. Частый вопрос: чем горутины отличаются от потоков процессора. Обязательно про каналы вопрос. Также популярный вопрос: как завершить выполнение горутины? Ну и обычно еще про waitgroup спрашивают.
Это чисто базавые знания. Алгоритмы и структуры - это в целом вопрос не про язык програмирования.
>>1807738 Про структуры данных и вообще все что нужно стажеру, описано в книгах (на выбор): - Go in Action - Golang для профи: Go, Цукалос М. первое издание. можешь ещё второе навернуть
>>1807772 Не смеши пидоран, твои условные 150 не в сильном выигрыше от его 100. Да и ту же 100ку иметь в этой стране тоже не плохо, с учетом что он не потоеблядок (судя с его слов)
>>1807143 >хочу перейти с машиниста в метро в IT, присмотрелся к Go, вроде не сложный язык Не сложный язык? Лол, язык может и не сложный, только программирование это не язык. Программирование это алгоритмы, вычисления, архитектура компьютера, операционные системы (Linux), архитектура ПО, парадигмы программирования, базы данных, различные инструменты и библиотеки, и еще много всего.
>я сильно на ЗП помешан, не жадный, но нравится когда платят хорошо. В метро в настоящий момент имею 95-105к чистыми, это мало для меня Ты обратился не по адресу. Программирование это не деньги, это работа, профессия. Чтобы начать зарабатывать хотя бы 200к нужно пройти через многое, а ты как я вижу этого не понимаешь и скорее всего не хочешь или не сможешь сделать. Хочешь деньги, иди куда угодно, но не в программирование. Программирование это инженерия, только дурак может думать, что придет такой из ниоткуда, без бекграунда, с улицы можно сказать, и такой хоп и стал профи инженером с зарплатой 100500к/сек. Это ключевой момент.
>перспективно ли вообще изучать этот язык Смотри ответ на первый вопрос. Программирование это не язык. Твое знание языка никому не нужно.
>>1807933 >скучная хуета получается Хочешь не скучно, учись на дизайнера/фото-видео монтажера/звукорежиссера/на кого-то еще.
>куда на вас не посмотри, всюду чсвшные пидоры Лол, спешите видеть, это пишет чсвшник без математического/инженерного бэкраунда, которому подавай 300к/сек после прочтения книги C++ за 21 день. Отчасти ты прав, но как еще объяснишь суровую реальность человеку, который надел розовые очки, и думает, что любой ноунейм может за месяцок другой стать инженером, не обучаясь годами, как это в общем-то принято. За пару месяцев даже на станке работать не научишься, не говоря уже о карьерном росте и повышении зарплаты.
>>1807793 Я и имел в виду алгоритмы и структуры данных отдельно от языка. Знания нескольких видов сортировок, обходов графов будет достаточно или нужно что-то ещё?
>>1807738 Структуры данных: 1.Linked List 2.Stack/Queue 3.Slice/Array 4.LRU Cache(хотя у джуна вряд ли будут спрашивать) 5. B-Tree 6. Графы 7. Map в Go
Алгоритмы: 1. Big O notation 2. QuickSort, MergeSort, Bubble 3. BFS, DFS, A* мб 4. И все алгоритмы поиска/сортировки в выше перечисленных структурах данных
>>1807998 Если это Авито, то готовься к тесту из 100 вопросов за полчаса. На каждый вопрос около 10 секунд на раздумия и ответ, так что времени посмотреть в шпаргалку тупо не будет. Темы будут распределяться примерно так: алгоритмы/структуры данных/Python(хотя тебя наверно спрашивать не будут)/Go(выше по треду расписали)/ООП и паттерны/тестирование(Mock-объекты, тесткейсы, библиотека Testing)/Web (HTTP, TCP/UDP)/SQL/Git. Сам не прошел дальше этого теста, да и слава богу. С каких это пор Авито и Додо-пиццы стали считать себя вторыми гугло-яндексами, что проводят по 3-4 собеса с верчением деревьем и решением олимпиадных задач на листочках? Слишком много понта, да и в резюме потом не похвастаешься работой в "очередная компани-нейм, мы ходим быть как FAANG". Но это для перезвоним-треда скорее нытье
>>1808058 >С каких это пор Авито и Додо-пиццы стали считать себя вторыми гугло-яндексами, что проводят по 3-4 собеса с верчением деревьем и решением олимпиадных задач на листочках? Лол, это школьно-университетский уровень. Да и необязательно прямо все задания ответить, главное показать, что у тебя есть хороший фундамент знаний. Или ты думаешь, что тебя должны брать на работу с зарплатой 100к+ даже без знаний/умений школьного уровня?
Мамин эникей, выбрал Go в качестве инструмента автоматизации "скачай&&установи файлы" и подобного. Правильный ли выбор я сделал или надо было стандартный Python для такого учить?
Уже сто раз перетирали. Эта хуйня никому не нужна и ничего не показывает. И нормальный разработчик ее уже давно не помнит.
И если реальный faang это использует что бы снизить поток кандидатов, что бы не задохнуться, то янлексы-авито-додошки с этими заданиями похожи на обезьян с очками.
>>1808217 >нормальный разработчик ее уже давно не помнит >Нормальный разработчик >НОРМАЛЬНЫЙ Лол. Ты неуч, а не разработчик. Если ты этого не можешь, то что ты можешь вообще? Как можно разрабатывать без умения работать с древовидными структурами данных? Почти все можно представить в виде дерева. То же дерево каталогов. Как блять ты будешь писать код? На завод!
>>1808216 Идеально. Для разработки cli tools отлично подходит, и в целом удобно получить на выходе один исполнительный файл. В стандартной либе есть необходимое для работы с сетью и с ОС
>>1808419 Я не знаю чем они хуже и чем лучше друг друга. Я ньюфажек в го. Только на пхп и жс в вскоде пишу, голендом не пользовался, поэтому сам хочу узнать
>>1808147 Ну так по словам экзаменующего я и ответил выше среднего только с тестами и линуксами знатно проебался, но видимо ПРОХОДНОГО БАЛЛА НЕ ХВАТИЛО, чтобы меня позвали дальше. При этом на нормальных собеседованиях, где я рассказывал о своем опыте, решал пару задачек по теме, и беседовал о тонкостях сборки мусора и конкурентного программирования, у меня все прошло успешно, и свой оффер и не один в хорошую компанию я получил. Я могу понять FAANG, в которые прилетают тысячи резюме от индусов каждый день, и которым надо как-то фильтровать эту лавину вкатывальщиков. Но блять, АВИТО, серьезно? Даже в мейле был более щадящий отбор! У нас не кремниевая долина, Go-миддлы сейчас на хайпе и расхватываются как горячие пирожки за неделю-другую открытого резюме. А эти долбоебы отсеивают потенциальных работников из-за недобора сраных баллов. Кого они хотят набрать такими дикими фильтрами, профессионального вкатывальщика с полугодовалым опытом хождений по собеседованиям? Это же две совершенно разных скилловых ветки, все эти вопросы тупо заучиваются, чтобы после получения работы все благополучно забыть из-за отсутствия практики. Почитай их блог на хабре, там тоже идет коллективное охуевание в комментариях: https://habr.com/ru/company/avito/blog/443700/
>>1808454 Ищи не сильно известные компании, у таких нету выебонов. У меня в конторе штук 20-30 гошников, на мидла у нас собес походу проще чем на джуна в авито, вилка зп 140-180
>>1812234 Ты москвич? Зачем ты грубишь? В моей МАОУ СОШ учителям было похуй на дисциплину в классе и в школе учились проблемные дети, некоторые из которых, успели отсидеть по малолетке и были на учете в милиции.
>>1812262 Но должны ли Авитояндексы ориентироваться на говнообразование в провинциях? Уровень-то реально школьный, я ещё в 9 или 10 классе решал задачи про графы Новосибирск, далеко не самая элитная школа. Алгоритмы и структуры данных (особенно на задачах от этих двух контор) - это базовый уровень для программиста, азы CS, не знать это - примерно, как не уметь завязывать шнурки, очень странно. Да, есть обувь без шнурков, но навык-то всё равно базовый. Да и крупняку нужно от силы 50 человек в год нанять, а собесятся реально тысячи, как ты думаешь им отсеивать людей? Очевидно, что берут лучших. Мимо, прошёл все собесы в Авито, Яндекс и Мейл, без особых проблем. Задачи на алгоритмы там тривиальные, решается как правило рекурсией, динамическим программированием и просто внимательностью
>>1812800 Я родился и вырос в провинциальном городе на 100к человек, который на половину построили заключенные, которые потом там и жили после отсидки. Родители меня отдали в муниципальную школу по прописке, где надо мной издевались и били начиная с самого первого класса. На мои проблемы в учебе, родители просто не обращали внимание и предлагали "подождать, т.к. сейчас время такое". А на избиения со стороны одноклассников и оскорбление учителей - просто не давать повода и не давать сдачи. Я всегда отказывался от предложений пройти собеседования в крупные компании, такие как Яндекс, Сбербанк, Дойче, Мейл, Касперский, Тинькофф и т.д. т.к. я понимаю, что я ничего из себя не представляю...
>>1813053 >Я всегда отказывался от предложений пройти собеседования в крупные компании, такие как Яндекс, Сбербанк, Дойче, Мейл, Касперский, Тинькофф И правда били, в основном по голове.
>>1813066 Меня били кулаками в затылок, травители, которые сидели сзади. Сидишь, что-нибудь записываешь за учителем и вдруг тебе в затылок прилетает кулаком. Да так, что аж в глазах темнеет и начинает подташнивать. Учитель сразу на меня кричать начинает, что я Ванечку и Рустэма провоцирую. Так и получал по затылку целых 5 лет. Мамка говорила, чтобы я не давал сдачи и сидел тихо и терпел.