Это копия, сохраненная 3 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Для вката в Go читай:
- Донован, Керниган "Язык программирования Go"
- https://www.golang-book.com/
- книги из списка https://github.com/dariubs/GoBooks
- а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
Пэкеджи можно искать тут https://github.com/avelino/awesome-go
Живем в ожидании Go2, пробрасываем ошибки, ищем обоснование, зачем нужны дженерики, смеемся над оопэшниками, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериков
Прошлый тред тут >>1700220 (OP)
Как думаете, если указать в резюме, что я являюсь ОПом тредов по Го на дваче, меня охотнее возьмут на работу?
УКАЗЫВАЮ
@
СПРАШИВАЮТ ЧТО ТАКОЕ ДВАЧ
@
ГОВОРЮ, ЧТО ЭТО ОДНО ИЗ ВЕДУЩИХ СООБЩЕСТВ ПО ГО ЯЗЫКУ В РУССКОЯЗЫЧНОМ ИНТЕРНЕТЕ
@
ПОЛУЧАЮ РЕСПЕКТ ОТ ХРЮШИ
Анон, стоит ли покупать курс на курсере по ГОленгу от майлача для более выгодного света в глазах эйчаров? он размазан на большой промежуток если не покупать, и я остановился а надо бы уже дальше выполнять задания. Вообще хотелось бы узнать на сколько эти филькины грамоты участвуют в трудоустройстве.
> для более выгодного света в глазах эйчаров?
Нет. Более того, многие даже пет-проекты на гитхабе не смотрят (но рассказать о них просят)
Да чет я смотрю даже за ведение треда на топ1 форуме по ГО в ру сегменте уважение и почет.
Вообще пытался попасть на обучение в озон кто-то?
На степике тебе тоже выдадут филькину грамоту, но бесплатно.
Я думаю, что если работодатель готов нанять человека без опыта - ему будет похер, прошел ты курсы, прочитал пару книг или просто зная другой язык прошелся по документации. Скорее всего тебе дадут тестовое, и это и будет решающим фактором.
>>736742
>Вообще пытался попасть на обучение в озон кто-то?
ИТТ или вообще? Итт было обсуждение, в основном задания с двумя каналами, которое было сломано. А вообще там больше 4к челиков участвовали, но по итогу только ~100 позвали на собеседование и в финал вышли только 40
2) В го завезли модули, там что-то хотели, но я не следил.
3) Какой шаблонизатор популярен в го сейчас (да в 2020 еще клепают обычные не реакт странички)
что вообще нового в го, вывалился года на 2 из него.
вопросики забыл, держите на всякий случай "???"
С 1.11 или 1.12 вроде.
>Кто юзал fiber какие подводные?
Юзал, охуенно было т.к. переходил с ноды+экспресс на го. По перформансу он топовый, по удобству тоже. Подводных нет.
Ну вот, это, наверное, и будет подводными камнями.
Скажите появились ли какие бест-практике по работе ошибок? Ну реально передавать ошибки по стеку или уже придумали какой-то сервис-логер?
По задачам. В куберах да, похуй.
На железе - лучше не сувать nginx, go без него отлично справляется.
1. Написать в лоб на net/http
2. На каком-нибудь фреймворке вроде gin
3. Сгенерировать сервер через go-swagger?
Лучше на gin или gorillamux. Из двух я бы рекомендовал gin. Через go-swagger точно лучше не генерировать.
>Через go-swagger точно лучше не генерировать
Почему? Читал, что тот генератор, который на джаве для опенапи генерирует не очень, а чем родной гошный плох?
Ясно, спасибо.
Та хер знает, когда последний раз проверял мне там что-то очень не понравилось, точно не помню что, давно было.
Могу предположить, что если раньше ты на го ничего большого не писал, то написать самому свои хендлеры будет интереснее.
Мне сначала понравилась идея с безголовыми cms, но почти каждую нужно допиливать напильником. strapi, например, вывалит в ответе вместе с эндпоинтом все связанные с ним поля из других таблиц, это не регулируется, другие цмски платные/закрытые или слишком продвинутые.
Мне бы что-то простое, чтобы хранить данные для статических страниц, забирать данные с формы фидбека и раздать права пользователям, чтобы они писали новости.
Небось с пхп перекатывается.
Ну вот значит будет сайт, в одном разделе будет БИЗНЕС-ПРОЦЕСС, где будут мутиться серьезные делишки, будет еще раздел, где пользователи могут написать, какие мы мудаки, и есть раздел новостей@объявлений, где будут постить всякие маркетологи.
Первый раздел самый трудоемкий, у него будет свой апи, а остальные разделы дешево и сердито работают на безголовом cms.
Как бы ты сделал?
Я бы наговнякал на джанге, а затем при каждом фича-реквесте говорил, что вся система - это только прототип, и на самом деле нужно все переписать, но в этот раз на это нужно в 3 раза больше времени, т.к. теперь будет и архитектура, и расширяемость, и энтерпрайз-подходы.
Правда меня, скорее всего, уволили, если речь идет о средней компании. Но с другой стороны - есть шансы на выбивание пары месяцев на пинание хуев
Какое-то слишком расплывчатое описание слишком женерик бложика
С нуля ебнул бы фронт в рамках бюджета и по микросервису на бизнес-процесс и новости@объявления, наверное
Текстовые носкл базы звучат страшнее
Это то еще удовольствие, на самом деле. Попробуй сделать экспорт в эксель-файл, а с ним уже можно работать через соответсвующие либы
мы сначала запускаем горутины в цикле, в которых отправляем значения в не буферизированный канал. на момент вызова горутин оттуда никто не читает. затем, когда цикл завершается, начинаем новый, в котором мы уже читаем из канала
почему во время первого цикла не происходит deadlock?
А почему там должен быть deadlock? Горутины же не блочат основной поток выполнения.
Дедлок - это когда все горутины заблочены (мьютексом или каналом, например) и никто не может больше нихера сделать. У тебя же спавняться горутины в цикле, и даже если wc сразу же возвращает результат (скорее всего - нет) горутины будут ждать, пока из канала не прочитают. Но основная горутина-то не блочится до тех пор, пока не попытаеться прочитать.
Я, кажется, понял философию Го. "Любой код всё равно рано или поздно превращается в говно, давайте сделаем язык, в котором терпеть говно легче"
мог бы, не парился вообще
а так костыльно реализовал на подсчете определенных тегов и их значений, в принципе, если теги +- не сильно различаются в таблицах, то моно унифицировать.
А как сделать чтобы он автоматом запускался при перезагрузке vpsки или после какого-нибудь краша?
Нормальная, ДОСТОЙНАЯ зарплата.
sudo systemctl enable name.service
перевожу сервисы с монги на постгресс, пилю интеграционные тесты, еще в ui на ректе баги фикшу
хз
Проигарл. Это насколько маленький мухосранск?
Мимо выкатился в го из мидло-пхп 4 месяца назад и получаю 130к в дс2
Уноси своё говно. Когда билды починят - тогда и приходи
Че как вы там, еще не ахуели от резкого уменьшения вакансий с 18 года на своей хуйне?
>Че как вы там, еще не ахуели от резкого уменьшения вакансий с 18 года на своей хуйне?
Так язык программирования это же просто один из способов записи твоих программистских универсальных знаний... если это действительно так, выучить новый язык программирования для того кто в принципе умеет программировать не должно занять больше одной недели времени...
> больше одной недели времени...
А еще выучить окружение, стандартную библиотеку, фреймворки, орм, генераторы, специфические внутренности чтобы каждый раз не натыкаться на втф, внутренний паттерны, кодстайлы, профайлинг, специфические паттерны тестирования. И в итоге твои две недели превращаются в минимум пару месяцев активного задротства, чтобы хотя-бы чуть выше джуна стать для работодателя. Ну и еще понижение зарплаты в большинстве случаев вытекающую сперму из жопы. Ну, зато ты SOLID и OOP знаешь, так сказать.
Имхо утверждение типа "язык не важен" - это классический самообман. Естественно важны умения именно разработки, но на одном знании синтаксиса далеко не уедешь, нужно огромное кол-во деталей еще знать.
Не надо проецировать свой опыт, это лишь подтверждение, что это проблема всяких туповатых Senior Bitrix Developer.
Для программиста, который ещё и в управлении рисками шарит, все пройдет как по маслу.
Это ж шутка была.
Гошники, конечно, не нужны десятками тысяч как джависты, что бы в тырпрайзе формошлепить, но остаются самым горячим и хорошо оплачиваемым направлением.
>>740457
Ты очень глуп, вероятно ты еще на уровне джуна. Я за свою почти 10 летнюю карьеру и на пхп писал, на пайтоне, на руби, на сишарп и на го. Работал больше архитектором, нежели именно кодером. Но то, что ты говоришь - это очень глупые утверждения неопытного человека. Знание языка и его инфраструктуры совершенно равнозначно важно, как и общие навыки программирования. Если ты отличный программист, но в языке знаешь только ключевые слова, типы и структуры - ты не напишешь на нем ничего путного,, либо введешь туда настолько много незначительных маленьких багов, что за тебя придется все переписать знающему спецу. Были у меня на опыте такие как ты, обычно это кстати студентота, которые выучили какой-нибудь питон с джангой, позадротили алгоритмы с паттернами и солидами, и на полном серьезе уверены, что могут язык сменить за пару недель без потери в качестве.
Удваиваю тебя. Domain knowledge не менее ценен чем programming knowledge.
Пиздишь, ждун желторотый, jQuery архитектор, блять.
Смена языка не проблема. Кроссадаптация работает. Лучше нанять хорошего программиста, чем знатока конкретных технологий.
Принеси эту мудрость faang&co компаниям. Вот ведь глупые, совершенно не спрашивают про инфраструктуру языков и вообще собеседования проводят на языке на твой вкус, при желании на грани эзотерики.
> 10 лет
> архитектор
мальчик, ты либо давай с пруфами, либо по фактам ответь, не аппелируя к своему несуществующему авторитету
Tiobe не показатель. Особенно говоря о го.
Его ж основная фишка простота, которая позволяет не гуглить большую часть вещей.
>>740694
Мда, на эти высеры даже отвечать не собираюсь. Когда адекватно захотите пообщаться - пишите.
>>740693
В FAANG еще и алгоритмы спрашивают, которые на работе ты никогда не будешь использовать в том же гугле, если ты не в передовой отдел попадешь, а раньше они спрашивали почему люки круглые или сколько теннисных шариков в автобус поместится. Смекаешь?
Но ты в любом случае не понял что я написал, я вроде не писал, что нельзя с одного языка на другой переключиться, я написал, что это не за неделю делается, за неделю ты только говнокодером на этом языке станешь, независимо от твоих общих скиллов программирования.
Неубедительно.
Странно слышать от "типа архитектора" такое. Уж архитектор должен понимать насколько все похоже. Суждения смахивают разве что на архитектора frsmework' name.
Я прошел путь php-python-java-go. Каждый раз перекатывался на другой язык без потерь в зп, без продакшн опыта, но никаких проблем это не вызывало. Все похоже.
Плюс был один проект, настоящий зоопарк языков, который я в качестве лида должен был переписать на го, поддерживая систему на плаву. Не было никаких проблем, что бы разобраться с кодом на неизвестных мне языках (код на луа для nginx и руби), пофиксить проблемы.
Все очень похожее.
>>740708
Ты меня оскорбляешь в каждом своем посте. Я бы не хотел работать с таким, как ты. Ты почему-то пытаешься сказать, что перейти с языка на язык можно, при этом я не понимаю зачем, ведь я не говорил, что нельзя. Ты может не тому человеку отвечаешь? Ты странный, если честно, я даже хз что сказать.
А че дженерики не обсуждаете? Они их на полном серьезе уже рассматривают и даже в go2 playground уже ввели.
Какие же всратые и ублюдские "дженерики" подвезли в go2: https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md
Ебал я рот этих пидорасов. Скобочки на скобочках в скобочках, контракты ультра уебищные и не интуитивно понятные. Я осознал весь контекст и понял синтаксис, но все равно каждый раз как смотрю на это говно - приходится напрягать мозг и парсить весь этот уебищный синтаксис почти каждый раз с нуля.
Если дженерики введут в таком виде, в каком сейчас собираются - я буду серьезно подумывать о том, чтобы сменить язык, ибо это уже ни в какие ворота не лезят. Я готов терпеть отсутствие сахара синтаксического, я готов терпеть сложности с каналами и мозгоеблю с синхронизацией, я готов терпеть interface{}. Но это уже слишком перебор.
Я особенно проиграл с мотивации не юзать другой вид скобочек "оптимизацией компайлера". Этот язык делают для компилятора или для людей? Что-то с последними изменениями кажется, что его делают не для людей, а чтобы потешить самолюбие некоторых пидорасов из гугла.
Двощую, на прошлой неделе глянул. Да проблема даже не в скобочках. Сама концепция будто один большой костыль. Как всегда они нашли оправдание к любому сомнительному решению, вот только от этого не легче, код то нам писать, а не думать о том, что такие поганые реализации сделаны ибо разрабы хуйланы любят в овероптимизации и оправдания.
>сложности с каналами и мозгоеблю с синхронизацией
https://www.youtube.com/watch?v=jYU_Yx6qqEM
О, никогда не писавший что-то сложнее на каналах, чем фан-ин/фан-аут и никогда не дебажевший десять тысяч пролитых горутин из-за бага, который позже после ишьюса был записан в доке, как "фича" закукарекал? Хотя ты наверн на мьютексах всё, что сложнее чем байты гонять туда сюда, пишешь.
Этот язык делают для компилятора. Для людей пиздуй в тред где на время компиляции люди сваливают в отпуск.
Им надо из D спиздить восклицательный знак ещё и будет норм.
Повторяю ещё раз - этот язык делают не для тебя. Этот язык никогда не делали для тебя с самого его создания. Не нравится - меняй работу.
>сложности с каналами и мозгоеблю с синхронизацией
Охуеть, зумеры совсем ёбу дали, им уже в го многопоточность сложной кажется
>>740922
Я с ним работаю уже 3 года. Нахуй идите.
> многопоточность сложной кажется
Дегенерат, речь не о сложности многопоточности, а о том, что с каналами ты только костылей нахуяришь больше, и сверху мьютексами крышку гроба закроешь.
Теперь понятен уровень интеллекта слепых фанбоев конкретных языков.
Из-за таких фанбоев как вы из языка получится PHP со смузи, блять.
Неосилятор, плиз. Каналы наоборот удобны в гошной модели. Лучше этого придумали только эрланг с эликсиром, только вот работы не завезли. Короче, дебс, тебе говорят не для тебя язык писали, пиздуй в жяваскрипт асинкавейтами в ивент луп пукать
Ну так выучись сразу на сеньора, что ты как маленький.
Нате, кушайте теперь свои монады в го, допросились https://github.com/reconquest/goava#resultt
реализовал - код делает то, что я задумывал. сейчас стал писать на это дело тесты и столкнулся со сложностями - в частности при тестировании метода Process(). по задумке этот метод всегда должен работать в фоне и слушать канал с тасками - то есть на практике он должен останавливаться только при полном выходе из программы. соответственно, особой необходимости в использовании какого-нибудь WaitGroup нет
вопрос: как правильно тестировать метод Process() или как можно его спроектировать, чтобы он был пригодным для тестирования?
семафор ты имхо заоверинжинерил - во-первых, для таких штук лучше использовать канал из struct{}, во-вторых, зачем он тебе? ты не контролируешь количество горутин, которые стартуешь?
дальше, не запускай в своем методе Process горутину, просто передавай туда канал и синхронно, при вычитывании из канала, обрабатывай свою таску
и еще, в SendUnprocess сначала обновляй статус таски, потом пиши ее в канал, либо вообще унеси эту логику обновления в Process - не нужно лишний раз самому себе устривать shared-state
>во-вторых, зачем он тебе? ты не контролируешь количество горутин, которые стартуешь?
семафор сделал для того, чтобы одновременно не запускать слишком много горутин. даже несмотря на то, что при запросе для получения необработанных тасков указывается лимит, можно же довольно быстро наплодить дохера горутин, не?
>просто передавай туда канал и синхронно, при вычитывании из канала, обрабатывай свою таску
я мб неправильно понял, но мы разве не лишаемся в таком случае возможности обрабатывать несколько тасков одновременно?
>унеси эту логику обновления в Process
допустим, я достал из бд небольшое количество записей для обработки, заслал их в канал и снова полез в бд за тасками - есть вероятность достать один и тот же таск повторно
> неосилятор
> я с ним работаю уже 3 года
Это ты дебс. Я отлично эту модель понимаю. Но когда тебе не хеллоуворлд писать нужно, а что-то серьезное - то у тебя выбор между тяжелоподдерживаемой хуйней нестабильной с каналами или говнокод с мьютексами.
Вы шизики тут наверное и дженерики не понимаете зачем в го будут полезны. Если вас лид не допускает к чему-то серьезнее перегона жсона туда сюда и поддержке микросервисов на 200 строк - не нужно проецировать свою тупость на других.
> sem
Для чего нужны строки 25 и 29? Это ты так ограничиваешь кол-во горутин? Хотел на этом моменте тебя долбаебом назвать, но не буду. Ты джун же?
Я в твоем коде вижу минимум одну точку, при которой может случиться протечка горутин хотя мб ты это где-то в другом месте фиксируешь, но ты мало кода кинул.
Покажи клиентский код, который с этими методами работает.
...а голова нам нужна чтобы есть
на, держи, неуч https://go2goplay.golang.org/p/UmukeBHNN9o
почитай го-блог, там написано как нужно паралелить выполнение тасок
Так он аналог очереди непрерывной хочет организовать, или буферного выполнения горутин. В любом случае его подход попахивает говном.
У тебя же 100 тасок будут выполняться по очереди 10 раз конкурентно, т.к. в send у тебя простейший генератор, блокирующийся на каждой итерации цикла.
>>741792
да, недоджун даже, только начал изучать го. в 25 строке кладем единицу (ну либо пустую структуру, как ты и писал ранее) в канал, чтобы при заполнении канала заблочиться на этом моменте и не создавать новые горутины до тех пор, пока другие, уже созданные горутины не прочитают из него (29 строка)
клиентский код простой, я действительно нигде не контролирую протечку:
taskChan := make(chan entity.Task)
go p.Process(taskChan)
go p.SendUnprocessed(taskChan)
>Так он аналог очереди непрерывной хочет организовать, или буферного выполнения горутин
да, так и есть. я просто, видимо, тащу подход из пхп, где очередь разгребается несколькими процессами
>В любом случае его подход попахивает говном.
спасибо за наводку)
> как ты и писал ранее
Не, с тобой щас 2 чувака общаются, я не писал, но структура памяти меньше сожрет, чем int, её или interface{} предпочтительнее юзать, когда тебе не важны данные, которые через канал проходят.
> taskChan := make(chan entity.Task)
> go p.Process(taskChan)
> go p.SendUnprocessed(taskChan)
Лол, ты их просто вкидываешь, ясн.
Тогда твое решение норм, имеет место быть. Оверинжинирить смысла нет особо.
> оно не так работает, перечитай
Так. 100 тасок на 10 горутин. Что не так?
> ну так и чем концептуально этот генератор отличается от генератора тасок из бд?
Тем, что у него может быть неопределеннок кол-во этих тасок, определяющихся набором данных из этой бд.
> вопрос: как правильно тестировать метод Process() или как можно его спроектировать, чтобы он был пригодным для тестирования?
Мокажешь свой чекер, и считаешь сколько раз он был вызван. sem лучше в атрибут твоего Processor засунуть, а не в общем скоупе хранить, соответственно sem в том же тесте и определяешь тестовый.
>>741827
Единственное добавлю, что хуйней какой-то занимаешься, обновляешь какую-то таску после того, как уже отправил её в канал и т.д. Не понятна ответственность этих методов и логичнее свести их в один, и отправить туда либо канал тасок и заполнять их с клиентской части кода, либо сразу слайс. Опять же не до конца понятен контекст и че ты вообще делаешь с этими тасками, а это важно.
ты наверно тоже не очень долго пишешь на го?
давай попробуем с наводочкой, а что будет если в этом примере поменять 10 на 100-200-х, а 100 на неопределенное значение?
> ты наверно тоже не очень долго пишешь на го?
Нет, давно. Твой код делит 100 тасок на 10 горутин, которые по 10 тасок конкурентно выполняет из этих 100. Ты свой код сам не понимаешь чтоль?
>хуйней какой-то занимаешься, обновляешь какую-то таску после того, как уже отправил её в канал и т.д.
я отправил ее в канал и сразу меняю ее статус и время последнего обновления в бд. вероятно, это имеет смысл в сам обработчик вынести
>логичнее свести их в один
так в моем случае SendUnprocessed() - это, по сути, и есть клиентская часть
>Опять же не до конца понятен контекст и че ты вообще делаешь с этими тасками, а это важно.
в бд лежат таски (+ добавляются новые по http), мне нужно каждый из тасков мониторить каждые 5 минут. для этого я запускаю горутину при запуске приложения, которая постоянно работает и достает из бд таски, которые надо обработать. таск содержит в себе url'ы, на которые надо постучаться по хттп и проверить ответ: если ошибка - кидаю уведомление в телегу/куда-то еще (в бд инфу об ошибке не храню, т.к на данный момент это не оч критично). желательно, чтобы была возможность проверять несколько тасков одновременно
Более полный код скинь - тогда можно обсуждать. Пока многие моменты не ясны, а именно что ты пытаешься по итогу сделать и как твои таски работают вообще.
это другой анон, не автор вопроса
Я другой анон.
У себя на галере я делал сервис отложенного выполнения заданий, очень похожих на то, что тут спрашивают. Я сделал по рутине на таску, зависимость есть, в прод уже пошло
> вместо того, чтобы в цикле пихать
Ток важно проследить, чтобы одну и ту же не вытащить одновременно, race condition так сказать
Можно чанками по max 100-1000 записей вытаскивать, и их передавать уже на обработку и ждать завершения
а, теперь понял. действительно, не живут. но тут снова возникает вопрос: как тестить такой метод, если у меня будет крутиться бесконечный цикл запросов к БД?
>>741882
>>741877
В таком случае лучше будет waitgroup юзать, а не канал с буфером. Если ты из какого-нибудь rabbitMQ тянешь с поддержкой атомик операций, то можно и каналом с буфером ограничиться, тогда рейс кондишена не будет банально. Если из какого-то sql хранилища, то нужно чанками и с waitgroup, ибо синхронизовать этот зоопарк будет проблематично
Так бесконечный цикл должен быть не внутри твоего process метода, а там, откуда ты его вызываешь. Либо добавить поддержку Closer (в деталях например done канал), чтобы ты мог самолично закрыть, но лучше Process методу оставить задачу на обработку одного чанка данных.
> ибо синхронизовать этот зоопарк будет проблематично
Можно с помощью мьютексов, обернуть вызов и апдейт в лок и заебись, но это оверхед добавляет, зато бесперебойно можно дергать, тогда и с буферизированным каналом можно также юзать дальше.
Мимо другой анон
> почитай го-блог, там написано как нужно паралелить выполнение тасок
Есть ссылка? Не могу найти
Ты так говоришь, словно это что-то плохое. В расте аналогичный функционал вообще в stdlib. Я думаю это лучше, чем возвращать nil, err. Единственное, нужно продумать как элегантно добавлять в таком случае контекст (что-то аналогичное врапу одной ошибки в другую)
Ему лишь бы набросить. Нет дженериков - плохо, есть - уродливые, были бы красивые - он бы писал, что их спиздили из языкнейм. Просто токсичный человечек из интернета.
> нравиться
тся
> Что именно
Самая большая претензия - синтаксис типов. Я не про скобочки, а про капсуляцию которую они сделали. Т.е. они решили добавить новых фич в интерфейс, например списки типов, при этом нет оверлоада операторов. Получается в 50% случаев мы банально не сможем использовать например comparable, или еще что, т.к. это тупо не будет поддерживаться языком, и ты либо используешь один из базовых типов, либо сосешь хуй и опять же отказываешься от дженериков и пишешь все сам, как и до них.
Да еще десяток минимум претензий есть. Если они введут их в таком виде, в котором они сейчас в плейграунде второго го - то это просто фиаско, братан.
>>742099
Нет, просто в отличии от тебя я пишу достаточно серьезный код, а не гонялово жсона в микросервисе на 100 строк.
Языки разные, но задачи-то одинаковые. В обоих случаях придётся микросервисы и круды писать
По шарпу куда больше вакансий для веба. А любой нормальный разработчик под винду пишет на wpf/uwp. Винформы не в почёте уже лет 5
Там же не формошлёпство, а нормальная вёрстка уже
Лол
Глянул содержание. Не совсем понял для кого книга. Он впихнул в неё вообще все, го с нуля до профайлинга и тестирования и в конце две главы про сети.
Хз, не читал. Если знаешь го, то можно просто последние главы почитать, а если не знаешь - лучше другую книгу найти, а не та, что за 500 страниц тебе и конкуренси и сети и всю основу языка галопом пересказывает. По одному конкуренси можно такого же объема книгу написать.
Какие либы мастхев го разрабу микросервисов? Понятно за gRPC, с ОРМ тож понятно (gorm), также понятно за всякие редисы и другие ки-валью хуйни.
А используете ли в работе что-то типа cobra (фреймворк для CLI), или веб фреймворки, как с логами дела, чем и куда хуярите? Было бы интересно послушать именно как обычно гоферы инфраструктуру микросервисов поддерживают и на чем обычно пишут.
>По одному конкуренси можно такого же объема книгу написать.
а что можно по конкуренси почитать, кроме go blog и effective go?
Concurrency in Go - Katherine Cox-Buday
Мне эта зашла. Там еще и за паттерны рассказывается. Но тож понимай, что книжки это лишь часть, надо самому пытаться разобраться, в некоторых моментах в пикбуке достаточно поверхностно рассказываются более сложные вещи, типа sync.Pool и т.д., но это я считаю очень хорошо, ибо заставляет самому во время прочтения гуглить, изучать и эксперементировать.
Я щас сижу читаю доку запа и ахуеваю с того, насколько там нихуя по факту не написано, вообще нихуя. Ясн. У запа документация одна из самых отвратных которые я вообще когда-либо читал. У меня аж жопа немного подгорела с ней. Сейчас попробовал узнать как можно хук свой накинуть или направить логи в самодельный writer - а нихуя. В доке есть один метод "Hook", регистрирующий обрезанную анонимку, у которой даже доступа к полям нет, под ним написано мол "для более сложной хуйни смотрите методнейм", а методнейма нет вообще во всей либе. Я чуть не поперхнулся, пиздос канеш. Как такое говнище вообще популярным стало в го среде? Я его даже в роадмапе видел.
У некоторых гугловых проектов ещё хуже. Там уже натурально берёшь имя пакета и ищешь другие проекты которые его используют чтобы понять что да как.
Спасибо за столь информативный ответ. Я в курсе.
Оно выглядит убого, сложное и тормозное. Или я слишком предвзят?
Я иногда xorm беру, но только для микропроектов... По работе только голый sql.
Ну я и спрашиваю. Хз кто использует. Прост он популярен у пендосов
Почему так?
fmt.Println(len(string)) показывает 8, но должен 4?
Потому что кириллицу автоматичсеки перекодирует?
Кириллица в utf-8 занимает 2 байта на символ. Когда ты len юзаешь - происходит конвертация строки в слайс байтов. Если нужно именно символы глянуть то юзай len([]rune("мама"))
ДомКлик
Сбербанк для экспертов
ivi
WILDBERRIES
Точка
МойОфис
OZON.ru Информационные технологии
Авито
Ручной анализ хэха дал вот эти результаты
>_ sql.Scanner = (*Float64)(nil)
Явно что-то с интерфейсом, но не очень понятно зачем
Проверка, что скул.сканнер реализует интерфейс флоат64. Выполняется на компайлтайме
Контр, страйк)))
По запросу gorm там ровно одна вакансия. А ещё я работаю в одной из перечисленных тобой контор и точно знаю что там горма нет
А, это из-за того, что интерфейсы удовлетворяются неявно, люди пишут, чтобы убедиться?
Спасибо.
200к
Интересная потому, что я недавно вкатился в эту область. Думаю, что за пару лет заебёт.
Надо перекатываться в руководители
Ну а какая может быть область, если это тред про го? Микросервисные бекенды, разумеется.
В бизнес области нет какой-то специфики, которую любой программачер не освоил бы за пару дней (читай не финтех)
А из какой области пришёл?
Кто-нибудь переходил из фронтенда в го? Или хотя бы из бекенда на ноде? Может какие-то советы по обходу подводных камней есть? Прошел тур оф го, читаю книгу диджитал оушена по го, но возможно каким-то другим методом лучше изучать го и всё с ним близко связанное? Может другая книга?
В Россиии запрещены митинги.
headless CRM для бложика - элементарно, но полезно.
Следом тоже самое, но на микросервисов.
Готово, ты гошник.
Звучит норм, надо попробовать
Пацаны, смотрите. Я нам тернарный оператор подвез:
(map[bool]int{true: a, false: a - 1})[a > b]
Кто-нибудь юзал CGO? Есть хоть одна IDE где есть подсветка хотя-бы базовая? Или как в 78м на ощупь придется ориентироваться? Пиздец боль.
А также для дохуищи функций, которые эти коллекции используют, например, сортировки вместо того пиздеца, который в пакете sort.
Голэнд не подсвечивает cgo никак, будто её нет и будто ты к пустоте обращаешься.
Если переписать весь stdlib голэнга с дженериками - он в 2 раза меньше будет, если не больше. И речь вообще не о коллекциях. Речь о некой абстракции над типом, которая сохраняет требуемые параметры. Это как интерфейс, но композитный и для встроенных типов.
Циклы не нужны, не использовал и использовать не буду. Те, кому не хватает замыкания итератора - не программисты, а диллетанты.
Согласен с тобой, братка.
MAP-REDUCE, MAP-REDUCE, СУКА!!!1111 ТОЛЬКО HIGHER-ORDER FUNCTION, ТОЛЬКО ХАРДКОР, ИЛИ ТЫ ИЗ ЭТИХ, GOTO-ПИДОРОВ???!!!
То ли дело interface{}, рефлексия и кодогенерация.
Зачем? Аннотации это уже совсем зашкварище.
Если ты этих слов не понимаешь - не значит, что их не понимают другие.
Есть CPU-intensive задачка. Go справляется неплохо, но хочется быстрее.
Начал гуглить. Готовых бинарников нет. Чо только вручную собирать?
Оно только компилит в бинарник? Нельзя бенчмарки позапускать и сравнить со стандартным го?
Рекурсивные решения для ряда задач выглядят намного элегантнее, чем итеративные, но вторые всегда производительнее.
Если бы го умел оптимизировать хвостовую рекурсию - было бы здорово.
Что плохого в том, что ряд задач станет легче решать?
> было бы здорово
Сильный аргумент.
Подумай теперь над тем, что такая оптимизация стоит ресурсов на имплементацию и последующую поддержку, стоят ли эти ресурсы твоего "здорово" для 2.5 задач, чтобы написать их медленнее, но "изящнее"?
Серверлесс саас васм на го с фаербейз.
Пусть сначала генерики закончат, а там можно будет потихоньку, лет за десять, добавить паттерн матчинг и оптимизацию рекурсии.
Рекурсивные решения во всех, кроме нескольких специфичных случаях - намного сложнее для чтения и их рекумендуется избегать максимально в любом языке программирования.
Ты так-то находишься в треде по обсуждению языка, автор которого считает дженерики, отладчик, тернарный оператор, дефолтные параметры функций, лямбды и пр. сложными концепциями. О какой рекурсии ты вообще говоришь? Удивлён, что в го вообще есть рекурсия
Рекурсия хоть поддерживается нативно архитектурой, при реализации вообще ничего делать не надо.
Конечно. Давайте писать целый цикл вместо:
array.FirstOrDefault(p => p.Id == 2)
Для тебя, наверное, вся теория категорий и ФП - ненужное говно
> лямбды
func foo(f func(int, int) int) int {
return f(2, 2);
}
foo(func(a int, b int) int {return 2 + 2}))
Конечно, это не однострочные лямбды.
Почему ты решил что я её освоить не могу, лол? Я говорю, что её безалаберное использование направо и налево чисто чтобы было - это говнокод, который только тешит чсв создателя, при этом тому, кто его читает уже придется вчитываться в то, как этот долбаеб контролит скоуп и что в коде происходит, не важно на каком языке.
Если ты в командах никогда не писал - это твоя проблема, лол. И да, я на литкоде спокойно делаю хард задачки, так что уж меня не нужно в незнании рекурсии обвинять, овощ.
Ты не понимаешь о чём пишешь
тестовое из Яшы)
>>гыгыгы смарити я смищно пашутил)))
Остается только загадкой, что ты делаешь в этой параше, если все двачеры хуесосы.
Могу предположить что парсер считает это как невнятный итерабельный сиквенс аргументов вместо ключей которые он ожидает для интерфейсов
Можешь использовать make(args...)
> Можешь использовать make(args...)
Всм? Мейк для слайсов, каналов и пары других типов, нельзя так вызывать.
Да ты прав я ночной втыкатель
Можешь приапендить к пустому слайсу https://play.golang.org/p/kFa_7TGHU2C
воркер стоит делать отдельной горутиной или вообще выносить в другой процесс?
Ты там по запросу майнишь биткоин штоле
Подобное считается нормальной практикой в любом языке. Если операция, которую ты хочешь выполнить занимает много времени - складываешь в очередь, в ответ возвращаешь статус операции, а из очереди воркеры берут и выполняют. Реализовать можешь как хочешь, зависит от нагрузки. Хоть горутиной в том же коде (но это скейлить нельзя), либо держать пул воркеров в иде отдельных процессов на этом, либо других серверах через какой-либо лодбалансер. Зависит от потребностей твоей системы.
потребность - снизить время ответа на http-запрос в основном. смотрю в сторону брокера сообщений, потому что в случае с горутиной при падении самого приложения пропадут и данные, а в случае с тем же кроликом они сохранятся в очереди
главное сомнение - необходимо ли пилить отдельный процесс для консьюмера (с одной стороны это вроде и не сервис и какой-либо логики в себе не несет, но с другой - я его могу держать хоть на другой машине, и это плюс) или держать его в отдельной горутине (по сути теми же каналами могу добиться того же результата, но не проебу данные, если что)
Реббит - считай чуть ли не стандарт общения между микросервисами.
У тебя есть бэкенд сервисы и фронтенд сервисы. В твоем случае бэкенд сервис - это сервис, который знаимается обработкой сложного запроса, т.е. делает сложную работу. А есть фронтенд сервис - он тупо принимает запрос и отправляет его в бэкенд сервис для обработки, а сам отвечает статусом или еще чем куда тебе нужно.
Принимаешь запрос - решаешь куда и кому его на обработку отправить. Вот и всё. Либо он тебе сам результат отправит обратно в той же очереди, либо сам запросишь, когда понадобится.
Что из себя представляет воркер? Отдельный автономный кусок го кода?
Аноны, что скажете про NATS?
> Отдельный автономный кусок го кода?
Я уже тебе 2 раза расписал что это такое, харе тупить. Это может быть и кусок кода который хуй заскейлишь, а может быть абсолютно отдельный микросервис. Ты заебал.
Лол, с питона зп возростет и при переходе на пхп, ты о чем? На го возрастет многократно, особенно если ты исключительно питонистом был и нормального кода в жизни не видел.
>с питона зп возростет и при переходе на пхп, ты о чем
Спорное утверждение
мимо питонист 180к на второй год работы
> питонист 180к на второй год работы
Спорное утверждение - это твои нафантазированные 180к через 2 года. На питоне сейчас что-то сложнее веб сайтов или ERP систем не пишется (не говоря о всяких дата саенсах, но там питон только как один из инструментов). На пыхе худо бедно даже интерпрайз есть и типизация.
> На питоне сейчас что-то сложнее ERP систем не пишется
> Enterpise resource planning
> На пыхе худо бедно даже интерпрайз есть
Это ты на ноль так хитро решил поделить?
Таки нет, работаю на букмекеров
>ERP ирл это совсем не то, что в википедии
ERP это конкретная энтерпрайзная хуита, как правило здоровая, дорогущая и жирная, ядро всего интырпрайза и всех его процессов.
Либо сами 1С и SAP или их манявелосипеды.
То, что дебичи в каких-то ноунейм конторах пытаются придумывать свои определения - это их проблемы.
Первое правило cgo - не использовать cgo. Либо перепиши на go, либо сделай обёртку и скрой от глаз все C-типы
Новое требование в го-вакансиях?
Кто вообще в здравом уме использует питон сейчас? Кроме датасайнтистов, которым бы поменьше думать над качеством кода, и побольше писать скриптики и запускать нейроночки.
Там, где используется пыхоплеяда, особой разницы нет, на чём говнокодить скриптики.
А что у него там ещё есть кроме этого?
Двачу. Особенно это хуево в поддержке, если динамически линковать. Но и даже если линковать статически, высока вероятность ловить сигфолты, которые ты из го никак не захендлишь. Т.е. паника в го - можно сделать recover, залогировать стек вызовов, отправить долгоживущим соединением завершение, что угодно. А краш в С - это минус процесс, и хуй знает в чем и где проблема
Этот прав.
Хотя не за неделю конечно. Если чисто новый язык, а проект знакомый и ты на нем хотя бы пол года или год, то за неделю уже можно писать нормальный код, хороший код за месяц, а охуительный где-то месяцев через 4.
Но обычно новый язык означает новую компанию (не налажена коммуникация) и новый проект (рисе не знакомо). И тогда первый импакт будет не через неделю, а через полтора месяца в лучшем случае. С учётом удаленки (коммуникация ещё хуже) урожай ещё на полтора
Ребята, подскажите с чего начать. Хочу написать личное приложение, в общем, для сталкинга ЕОТ в инсте. Конкретно - чтобы оно в память записвало текстовый файл и отмечало там, когда она заходила, а когда выходила из Инста. Мб API использовать, мб типа скринов делать каждые 5-10-15 минут(и ам будет писться типа "в сети 17 минут назад"
С чего начать вообще?
Лол, я такое же писал для вк. Но там и апи толком не было, нужно было тупо открыть урл определённого вида и смотреть на поле с временем последней активности.
Не, с инстой это так же просто не сработает, там нужно обмазываться документацией апи, ставить какие-то либы (вроде, там не REST, а что-то другое), получать токен, и ещё не факт, что там вообще можно посмотреть время, если не через официальный клиент.
Я через залогиненный десктоп смотрю. Отсюда https://www.instagram.com/direct/inbox/
Чтобы была отметка "В сети X мин. назад" - нужно, чтобы у тебя с этим персонажем был чат(т.е. если ты просто написал ей, а она не ответила - ты не будешь знать когда она онлайн, а когда нет).
Пыха, стоит отдать ей должное, совершила какой-то неебический рывок вперед. И по перфомансу, и по типизации, и по качеству экосистемы.
А что есть у питона? Половина проектов на 2.7 (да и современный не сильно быстрее), отсутствие внятной типизации и древняя, как говно мамонта, джанга?
>как говно мамонта, джанга?
Сама джанга медленно переезжает на async и есть куча фрейморков у которых все эти фишечки нового питона из коробки
У пыхи тоже не всё хорошо с обратной совместимостью. Правда, хз, насколько сложно переписывать на новые версии, наверное, легче, чем на питоне.
Вебня для питона - вообще пиздец. Говноджанга и сделанный целиком из костылей фласк, а всё остальное непопулярно и развито так себе.
> У пыхи тоже не всё хорошо с обратной совместимостью.
Пруфы? Там с пятой версии были какие-то ну совсем минорные изменения, типа приоритетов парсинга скобок при работе с динамически определяемыми свойствами объектов, а в целом ничего не ломалось, только добавлялось.
Исключая версии <5, конечно, но там, я надеюсь, всё мертво и уже давно.
Пруфов у меня не будет, ибо раз в 5/7 версиях ситуация исправилась, то мои сведения устарели. Несколько лет назад, ещё в шкалке, что-то делал с пыхой, были какие-то проблемы с mysql/mysqli, ещё охуевал с несовместимых версий dll-ек расширений. Не помню уже.
Лол, mysqli уже давно никто из вменяемых людей не использует, непонятно, много ли ты понимал в школе, а главное, судя по всему, у тебя были проблемы с тем, чтобы поставить экстеншен правильной версии к правильной версии пыхи на винде. Это не является проблемой совместимости языка, а скорее проблема платформы: в винде нельзя легко и просто через `apt-get install php-mysql` поддерживать совместимость пакетов.
>У пыхи тоже не всё хорошо с обратной совместимостью.
Если бы пыха так сильно не парилась над обратной совместимостью, как делает сейчас - ее разработчики уже давно бы жили в 3020 году. Однако не считаться с огромной кучей говна, которую наворотили на старых версиях пыхи, не получается.
В крестах та же хуйня.
> легко и просто через `apt-get install php-mysql`
Ставить одну версию библиотеки сразу для всей системы это не легко и просто, это отложенные боль и унижение.
DOCKER
Не, ну так-то да, докеры-шмокеры, но вы видели, там чувак вручную библиотеки подкладывает, в виде dll'ек! Если ему про контейнеры начать рассказывать, он кукухой двинется.
Ну я тогда совсем шкилой был, только-только прочитал книжку по сишке для начинающих и начал читать про кресты. Докер же тогда только появился, и о нём ещё никто не знал, да и я охуел бы, если бы увидел его.
>Ставить одну версию библиотеки сразу для всей системы это не легко и просто, это отложенные боль и унижение.
Если сидишь на примитивной бинарной параше без слотов
Ага, лучше пересобирать кеды и фоксятину по 5-6 часов из-за пары забытых USE-флагов.
https://medium.com/servicetitan-engineering/go-vs-c-part-2-garbage-collection-9384677f86f1
Печально, что такая огромная разница. С другой стороны у го такое же преимущество по длительности STW, но не знаю, перевешивает ли это производительность шарповского GC.
Кто шарит в го, там что-то улучшается с GC?
GC 'это tradeoff - хочешь максимальный throughput - делай полный STW, хочешь маленькие STW паузы или вообще без них - плати производительностью в рантайме. Хорошо когда в языке можно выбрать, но увы создатели Go сделали сами этот выбор.
Помню полгода назад мне тут один тип усиралсы, пытаясь доказать какой невъебенный по всем параметрам сборщик мусора. в Go
маловероятно. да и в любом случае ремоут для джуна - не лучший выбор: как для работодателя, так и для самого джуна
)) Я живу в пердях, ну и 4 месяца уже работал удаленно на джаве
>хочешь маленькие STW паузы или вообще без них
А какие есть примеры GC без пауз? Я нашел только три варианта для джавы
Ой, не та ссылка. То что тебе нужно - ниже:
> Do not allocate objects and []byte buffers - just reuse them as much as possible.
> sync.Pool is your best friend.
Почему нет? Чем в офисе джуну будет лучше? Разве что в курилке побазарить за жизнь с согребцами можно
например, тем, что в офисе ты куда быстрее перестанешь быть балластом для команды разработки, т.к у тебя есть возможность получать ответы на свои тупые вопросы гораздо быстрее, чем на удаленке - коллегам будет сложнее тебя игнорить
Так все и так в курсе, что go не самый быстрый из компилируемых языков. Он никогда к этому и не стремился. Суть го в простой многопоточности и GC.
Но да. Учитывая легковесность языка то, что он усирается в тестах не то, что своему прямому конкуренту (плюсам), а еще и его монструозному старшему брату - достаточно печально.
>А какие есть примеры GC без пауз? Я нашел только три варианта для джавы
Prod ready реализации я знаю только для джавы. GC вообще без STW упирается в то, что нужны барьеры чтения.
Их можно реализовать как в Shenandoah GC - когда ты на каждом переходе по ссылке делаешь барьер чтения.
Или как в Azul Zing - когда барьеры чтения реализуются на уровне ОС изначально у них вообще в железе их реализовывали, потом перешли на кастомные ядра линукса и x86
>А какие есть примеры GC без пауз?
Object Pool. Самый ходовой паттерн времен J2ME и игр на кнопочных мобилках с парой метров оперативы.
Мусора нет вообще, потребление памяти = const, всё летает.
Ну хз, у меня первая работа была удаленкой, со мной нормально общались, отвечали на вопросы в скайпе и слеке.
Из языков с GC он среди самых быстрых, не?
Плюсы разве считаются прямым конкурентом го? Я думал, с плюсами конкурируют си, раст, D. По мне так закономернее противопоставлять го с джавой и сишарпом. И го не проигрывет сишарпу, они проигрывают друг другу. Го сильно уделывает сишарп по длительности пауз. Надо было в пост со ссылкой добавить пикчи и про это тоже, а то там только про преимущество сишарпа.
это, скорее, исключение из правил, как мне кажется. хотя я рад буду ошибиться
> Плюсы разве считаются прямым конкурентом го
Да, упрощенный и медленный аналог типа. По крайней мере создатели так считали. Но я хз как го может на уровне плюсов быть даже близко.
Он не конкурент сишарпу точно, сишарп это ООП язык с кучей всего для огромных систем. На го ты огромную систему если напишешь - поседеешь.
У го своя ниша - это средней сложности язык для небольших утилит/сервисов. Тащемта и все, для другого его использовать - это в ногу себе стрелять. А учитывая что он еще и с шарпом даже не на равных по производительности - появляется сомнение, что го вообще хоть в каких-то случаях предпочтительнее другим, более нормальным языкам.
Я сам пишу на нем больше 2х лет, но у меня всегда задней мыслью "нахуя?". Хз, наверн пхп макаки такие же мысли имеют.
Создатели тогда уж скорее отталкивались от си, а не от плюсов.
Насчёт сравнения с шарпом, на котором пишут огромные системы — на го ведь тоже пишут, только по-другому. Дробят на микросервисы.
Не совсем понимаю, что ты имеешь в виду под отставанием в производительности. Где-то да, где-то наоборот отгоняет. Во многих бенчмарках они идут примерно рядом.
Яннп, но если с идиоматическими ембедами по файлнейму оно будет паковать всё в пщную структу, по итогу запихивая всё в один бинарник, - еще один нереальный плюс к и так охуенному мультистейжу контейнерингу
> они идут примерно рядом
Я к тому, что го должен на голову обгонять сишарп, учитывая гораздо меньшую функциональность и нацеленность на производительность. Смысл тогда от всех ограничений, которые вводятся разработчиками голэнга (начиная от всяких "угловатые скобочки дольше парсить, поэтому мы дадим вам дженерики с круглыми", и заканчивая отсутствием сахара), если язык медленный сам по себе и не может адекватно обогнать жирного неповоротливого тырпрайз гиганта. Меня это реально печалит, не должно так быть.
>>757180
Спасибо за экспертную оценку.
>"угловатые скобочки дольше парсить, поэтому мы дадим вам дженерики с круглыми"
Ну вообще дженерики будут с квадратными скобками.
>язык медленный сам по себе
Анон, мне кажется, что ты всё-таки начинаешь слегка толстить. Сам по себе го как раз не медленный, а очень даже быстрый. Медленный он по сравнению с сишечкой, плюсами, растом. Да и то не чтобы прям сильно медленный по сравнению с ними.
Вполне нормально сравнивать.
Есть нативные кресты, нативный раст, оба они обгоняют .Net Даже в самом .Net ввели режим без жита, а в юнити и вовсе делают делают специальное подмножестов языка C# со специальным компилятором для производительности.
То есть практика и факты выше говорят что Jit нихуя не рулит и это наоборот фейл, что язык, скомпилированный нативно идет вровень с языком, скомпилированным в байткод, не?
>Медленный он по сравнению с сишечкой, плюсами, растом. Да и то не чтобы прям сильно медленный по сравнению с ними.
А должен быть посередине, между жирножитом и сишечкой. А он на уровне жирножита.
>>756866
Пиздец, я не устаю охуевать от долбоёбов, такое ощущение, что они в каком-то другом мире живут, где названия те же, а вещи совсем другие.
Го не является полноценной заменой си и плюсам и никогда не был.
Смотри за руками:
Си (и плюсы) используется в большинстве для системного по (драйвера, ядра и так далее, а также реалтаймов, где особо важно гарантированное время отклика (АЭС какие-нибудь), потому что очередность и длительность пауз гц не особо предсказуем в микро-масштабе.
В вебе си использовали очень редко и исключительно для максимально нагруженных компонентов (типа веб-серверов или баз данных). Есть ещё Яндекс, который на нём пишет вообще всё, но они долбоёбы.
Соответственно, "конкурировать" с сями го мог бы только в этой крайне узкой нише, и то непонятно, си (а также раст, д, хаскель и тп) по определению будет удачнее для серверов и бд.
Теперь про го.
Го же позиционируется как очень простой и очень быстрый язык для веба.
У него я вижу две три ниши:
1) Оптимизация производительности у больших систем - никто не запрещает использовать ту же джаву с сисярпом, но го намного экономнее по памяти, делает намного более короткие паузы гц и в нём намного легче описывать какие-то кооперативные алгоритмы. Соответственно, ты берёшь какие-то узкие места, где прочие языки жрали слишком много или слишком долго отдавали ответ и выносишь их в сервисы на го. Их можно было бы написать и на сях, но по принципу Парето ты и так получишь 80% дополнительной производительности от гошечки, тратить в разы больше ресурсов на борьбу с UB и прочей хернёй на сях никому не надо. Собственно, на сях их и раньше не писали, просто пытались приготовить на той же джаве, тюнили гц, заводили отдельный джавовый сервис, где всё работало "на магии" и так далее.
2) Написание сложных систем - как ни странно, на го можно писать сложные системы и получается вполне юзабельно. Богатую доменную модель ты, конечно, не построишь (будто её кто-то когда-то успешно строил на больших проектах), а вот анемичную - вполне, гошное структурно-процедурное программирование изи для этого подходит. Если ты не полный говнокодер и нормально структурируешь код (вот тут я грустно вздохну и скажу, что в сообществе го есть куча денегератов-нигилистов, пришедших то ли из си, то ли откуда-то ещё, которые любят понапихать всё вместе скопом в один файл или один пакет и называют это "простотой". Конкуренты тут опять джава и сисярп, а плюсы гошечки здесь в том, что она очень простая (а ещё в философии "в го есть только один способ что-то сделать, самый прямой", а, значит, можно быстро обучать новычков, быстро разбираться в чужом коде, быстро шлёпать код и выкатывать его. Во многом спорная концепция, но я работал на больших проектах на го, и должен сказать, что работается вполне нормально, жить можно.
3) Быстрое написание прототипов сложных и нагруженных систем, всякие стартапы - раньше все на свете стартапы писались и выстреливали на php, лол. Да даже сейчас, какой-нибудь ситимобил, яндекс-еда или что-то другое имеют под капотом пехапешное легаси. Сейчас можно всё писать на го и это сразу будет быстрее и без ряда пехапешных костылей (например, для двустороннего мессаджинга) при прочих равных. Тут рядом пробегала, кстати, нода и передавала привет.
>>757470
> То есть практика и факты выше говорят что Jit нихуя не рулит и это наоборот фейл, что язык, скомпилированный нативно идет вровень с языком, скомпилированным в байткод, не?
Надо очень вдумчиво смотреть бенчмарки, в 95% случаев авторы конкретно так лажают в коде или сравнивают какую-нибудь хуйню в виде скорости ответа заглушки от встроенного сервера, что к реальности не имеет никакого отношения.
Вообще JIT должен давать (и даёт) во-первых бонус к числодробилкам, а во-вторых, за счёт компиляции на конечной машине он оптимизируется конкретно под неё, что даёт прирост, если у тебя тысячи машин и они бывают различными. Если у тебя 2.5 сервера, то да, ты можешь скомпилировать код "под них" локально и JIT тебе не поможет.
>>757264
> Я к тому, что го должен на голову обгонять сишарп, учитывая гораздо меньшую функциональность и нацеленность на производительность.
Смотри ещё на потребление ресурсов, на размеры и частоту пауз.
>>756866
Пиздец, я не устаю охуевать от долбоёбов, такое ощущение, что они в каком-то другом мире живут, где названия те же, а вещи совсем другие.
Го не является полноценной заменой си и плюсам и никогда не был.
Смотри за руками:
Си (и плюсы) используется в большинстве для системного по (драйвера, ядра и так далее, а также реалтаймов, где особо важно гарантированное время отклика (АЭС какие-нибудь), потому что очередность и длительность пауз гц не особо предсказуем в микро-масштабе.
В вебе си использовали очень редко и исключительно для максимально нагруженных компонентов (типа веб-серверов или баз данных). Есть ещё Яндекс, который на нём пишет вообще всё, но они долбоёбы.
Соответственно, "конкурировать" с сями го мог бы только в этой крайне узкой нише, и то непонятно, си (а также раст, д, хаскель и тп) по определению будет удачнее для серверов и бд.
Теперь про го.
Го же позиционируется как очень простой и очень быстрый язык для веба.
У него я вижу две три ниши:
1) Оптимизация производительности у больших систем - никто не запрещает использовать ту же джаву с сисярпом, но го намного экономнее по памяти, делает намного более короткие паузы гц и в нём намного легче описывать какие-то кооперативные алгоритмы. Соответственно, ты берёшь какие-то узкие места, где прочие языки жрали слишком много или слишком долго отдавали ответ и выносишь их в сервисы на го. Их можно было бы написать и на сях, но по принципу Парето ты и так получишь 80% дополнительной производительности от гошечки, тратить в разы больше ресурсов на борьбу с UB и прочей хернёй на сях никому не надо. Собственно, на сях их и раньше не писали, просто пытались приготовить на той же джаве, тюнили гц, заводили отдельный джавовый сервис, где всё работало "на магии" и так далее.
2) Написание сложных систем - как ни странно, на го можно писать сложные системы и получается вполне юзабельно. Богатую доменную модель ты, конечно, не построишь (будто её кто-то когда-то успешно строил на больших проектах), а вот анемичную - вполне, гошное структурно-процедурное программирование изи для этого подходит. Если ты не полный говнокодер и нормально структурируешь код (вот тут я грустно вздохну и скажу, что в сообществе го есть куча денегератов-нигилистов, пришедших то ли из си, то ли откуда-то ещё, которые любят понапихать всё вместе скопом в один файл или один пакет и называют это "простотой". Конкуренты тут опять джава и сисярп, а плюсы гошечки здесь в том, что она очень простая (а ещё в философии "в го есть только один способ что-то сделать, самый прямой", а, значит, можно быстро обучать новычков, быстро разбираться в чужом коде, быстро шлёпать код и выкатывать его. Во многом спорная концепция, но я работал на больших проектах на го, и должен сказать, что работается вполне нормально, жить можно.
3) Быстрое написание прототипов сложных и нагруженных систем, всякие стартапы - раньше все на свете стартапы писались и выстреливали на php, лол. Да даже сейчас, какой-нибудь ситимобил, яндекс-еда или что-то другое имеют под капотом пехапешное легаси. Сейчас можно всё писать на го и это сразу будет быстрее и без ряда пехапешных костылей (например, для двустороннего мессаджинга) при прочих равных. Тут рядом пробегала, кстати, нода и передавала привет.
>>757470
> То есть практика и факты выше говорят что Jit нихуя не рулит и это наоборот фейл, что язык, скомпилированный нативно идет вровень с языком, скомпилированным в байткод, не?
Надо очень вдумчиво смотреть бенчмарки, в 95% случаев авторы конкретно так лажают в коде или сравнивают какую-нибудь хуйню в виде скорости ответа заглушки от встроенного сервера, что к реальности не имеет никакого отношения.
Вообще JIT должен давать (и даёт) во-первых бонус к числодробилкам, а во-вторых, за счёт компиляции на конечной машине он оптимизируется конкретно под неё, что даёт прирост, если у тебя тысячи машин и они бывают различными. Если у тебя 2.5 сервера, то да, ты можешь скомпилировать код "под них" локально и JIT тебе не поможет.
>>757264
> Я к тому, что го должен на голову обгонять сишарп, учитывая гораздо меньшую функциональность и нацеленность на производительность.
Смотри ещё на потребление ресурсов, на размеры и частоту пауз.
>Вообще JIT должен давать
Вообще это оторванный от реальности пиздежь. В реальности (Android,Mono,Unity3D) спешно прикручивали AOT и это было самой ожидаемой фичей.
> (и даёт)
Дает -O2 в настройках компиляторов нативных языков, JIT не дает нихуя кроме оверхеда по определению.
> а во-вторых, за счёт компиляции на конечной машине он оптимизируется конкретно под неё
В реальности он там нихуя не оптимизируется, он пропукивается несколько часов от уровня днищенского дна и питона до уровня настройки -O1 в лучшем случае.
Просто на серверах уже привыкли заливать проблемы баблом и новыми стойками и от того такой манямирок.
Когда речь зашла о эндюзерском железе, то там с заливкой баблом обломинго - пользователь пошлет вас нахуй с вашими JIT тормозами и пойдет к конкурентам-байтоебам у которы прикладуха не тормозит.
Отсюда и AOT в андроиде.
Скорее всего - очень глупая. Разве что тебе нужно накостылять прототип "на вчера". Хотя и в таком случае тебе может быть быстрее в разработке все это в монгу сложить.
>Скорее всего - очень глупая.
Почему?
>Разве что тебе нужно накостылять прототип "на вчера".
Именно так.
>быстрее в разработке все это в монгу сложить
Быстрее ли? Дело в том, что я с субд никогда не работал.
>Почему?
По тому что БД решают кучу различных проблем, в т.ч. и проблему конкурентного доступа к одному и тому же файлу, кеширование, эффективный поиск. Даже если тебе не нужен ACID - твое решение становиться жутко непереносимым и вызовет в будущем кучу проблем.
>Быстрее ли? Дело в том, что я с субд никогда не работал.
Самое время начать
>Донован, Керниган "Язык программирования Go"
Вот эта не устарела?
Опыт программирования есть два года, но на динамикоскриптодрисне (+TS). Может мне лучше какую-то другую книгу взять?
Не слушай этих недоумков. Просто чтобы ты понимал уровень компетенции разработчиков на Пщ. Проходил собеседование в нескольких очень крупных компаниях, которые решили пердолить свои нескучные проекты на Пщ. При общении с лидами выяснилось, что они просто не понимают что такое транзакции, модель памяти в Пщ и то что в Пщ присутствует сборщик мусора.
>транзакции
Транзакции это обычные транзакции, или в го это еще како-то узкоспециализированный тремин?
мимо
Транзакции внутри СУБД. Они попросту не понимали, что это такое и зачем это нужно. Я тогда просто охуел с их осведомленности и поспешил на выход, лол.
Взлольнул с деревенского! Ты только не грусти, старина. Глядишь пройдет еще несколько десятилетий и твой Пщ допилят хотя бы до уровня развития виртуальных машин 2000-х годов, лул.
Я прочитал "Язык программирования 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 код не будет настолько нечетаемым говном
> Ну вообще дженерики будут с квадратными скобками.
Это недавно только сказали, после волны батхерта у комунити.
> Сам по себе
Сам по себе - это значит как изолированный язык, без CGO и других штук. Не тупи, анонч. И нет, я не толстю.
>>757279
Я не сру. Мне го нравится и я на нем уже больше 3х лет пишу. Тыкать в явные минусы языка - это значит срать и толстить? Тебе бы над интеллектом поработать своим. Фанбойство до добра не доводит.
>>757625
Я этот высер даже читать не буду, по началу уже понятна полная некомпетентность в вопросе, про гц паузы и UB вообще молчу. Просвящайся: https://golang.org/doc/faq
> Я этот высер даже читать не буду, по началу уже понятна полная некомпетентность в вопросе, про гц паузы и UB вообще молчу. Просвящайся: https://golang.org/doc/faq
Аргументированно не можешь ничего сказать, только пердеть в тред?
>Сам по себе - это значит как изолированный язык
Ну так это абсолютно бессмысленно. Ок, как ты собираешься изолированно оценивать скорость языка? Это можно сделать только в сравнении с другими
Тебе же написали, что язык без библиотек, а не в изоляции от всего мира.
Хуямп, судила! Ты что хочешь, чтоб я снял кеды и тебе по ебальнику дал?
Язык общего назначения, но по факту язык написания микросервисов обслуживания соединений. Все остальное скорее вопреки.
Да у многих языков общего назначения де-факто одна-две области. Другой вопрос, что у пщ она скорее ближе по степени узости к 1С, чем к тем же крестам, джавашарпам и пыхоплеяде.
Лолчто опять в тред приходят дауны, понабравшиеся каких-то странных идей непонятно откуда и ни месяца не отработавшие на обсуждаемом стеке.
В 7 из 10 компаний, о которых я знаю, на пщ пишут вполне себе бизнес-логику.
Зачастую это стартапы, которые написали говномонолит на пехапе и теперь распиливают его на сервисы, но иногда и с нуля пишут.
Я в последнее время работаю в финтехе, тут на го пишется дохрена всего, от обработки транзакций до расчёта всяких рейтингов.
При этом можно вспомнить авито, озон, баду, яндекс-еду (вспомнил сходу) и прочих, кто пишет логику и на го, и на чём-то ещё. Не говоря про тех, кто пишет отдельные сервисы типа рассылок нотификаций от mailru или медиасерверов vk.com, которые не бизнес-логика, а просто нагруженные функциональные сервисы, поверх которых и лежит логика.
И не вспоминая про ML, который в последнее время активно пропихивают в го кстати вот это очень спорное решение имхо
Короч на го пишут просто дохуя всего и сводить его до "языка для обслуживания соединений" можно только нихуя не разбираясь в области.
> В 7 из 10 компаний, о которых я знаю
> Я в последнее время работаю в финтехе
Анон, пали годные конторы, куда можно устроиться мидл гоферу, по-братски. Без палева, конечно, чтобы без всяких деанонов тебя. Я бы просто на вакансию откликнулся. Тоже в финтех хочется. Ещё умею бек на js/ts, фронт на vue/react, раньше работал с этим.
Плюсую неглядя, щас много компаний прям активно полезли в го (но требуют обязательно опыта с пыхой/питоном/what-ever чтобы поддерживать легаси) и прям как язык общего назначения его используют и для бизнес-логики в том числе
>>773746
зайди в любой гошный русско-язычный канал что в телеге, что в слаке и в зависимости от, либо по тегу либо по чату зайди в job вот это откровение, правда
> зайди в любой гошный русско-язычный канал что в телеге
Что-то не густо гошных каналов, не знаю, где из искать. Вот по js их тонна прямо.
https://t.me/gogolang - телега
https://golang-ru.slack.com/ - слак
>>773746
Всё постоянно меняется, смотри свежие вакансии (я сейчас на европейцев работаю, мы вроде не ищем пока).
тетрис - не запустился
Ну так и что он тебе написал, ещё не запустился?
Мертвый тред, мертвого языка.
Нечего обсуждать, пока что. Дженерики пока в драфтах, последний релиз больше технический, чем свистелкоперделковый, у новичков глупых вопросов пока нет.
>у новичков глупых вопросов пока нет.
Впрочем, как и самих новичков. Это же не хайповый питон.
Подскажите, пожалуйста, вот это - валидный способ инициализации подобной ебанины, или я что-то не так делаю?
https://play.golang.org/p/gqiSggrHVwZ
Если это валидно, подскажите, пожалуйста, как заставить wire генерить что-то подобное?
Сервис - это структура, которая содержит все, что ей нужно - интерфейс логера, интерфейс репозитория, поинтеры на другие сервисы. Пример того, что я пытаюсь сделать - я скинул на плейграунд
На самом деле там просто логика и по хорошему нужно создать еще один сервис, который будет вызывать первые два, но у меня пока руки до этого не дошли
Потому что с точки зрения кода могут существовать циклические ссылки и это даже типа нормально (гц тот же умеет распознавать такие ссылки, чтобы понимать, чистить ему объект или нет).
А с точки зрения архитектуры приложения цикл в графе зависимостей - это пиздец, хотя бы по той причине, что невозможно инициализировать компоненты в валидном порядке: если ты первым инициализировал компонент (сервис) А, то он ещё невалиден, пока ты не инициализируешь и не прокинешь в него сервис Б и наоборот.
Именно поэтому и запрещены циклы импортов в пакетах, к примеру.
Правильный путь - создаешь общий компонент С и пихаешь его и в А, и в Б, тогда порядок инициализации будет валидным: С,А,Б
Как повезет. Ищи, есть ли в конторах в твоем городе вакансии по го, и есть ли курсы по го.
Но в целом, на го вкатиться сложнее, чем на java или javascript из-за востребованности последних
Есть, но мало.
В жс не хочу - фронтенд.
В джаву не хочу - конкуренция бесконечная + по итогу с грязными дедами придется сидеть в опенспейсе.
Какие момент?
>Синтаксис почитал, хочется примеров
Мне знания синтаксиса хватало для осиливания автогенерируемых доков
>не всякая хуйня 2016 года
Хуйня потому что 2016 года? лол
Если Москва и не брезгуешь офисом, то сможешь
Как первый язык го не подходит. Советую начать с Java, а потом уже перекатишься куда угодно. Конкуренция есть только если ты нулевой и нихуя не делаешь.
Потому что современным смузихлёбам стрёмно начинать с чего-то не хипстерского, лол.
Разве что с глорихолом в стене
нисколько
возможно, я не так объяснил
делаю кату с кодварс, в ней необходимо "вычислить" наиболее весомое слово. каждая буква в слове имеет "стоимость" по позиции в алфавите(a=1, b=2, e=5 и т.д.)
Ну так берешь аскии-значение каждой буквы (интовое значение руны для латинского алфавита), вычитаешь 0х60 или со скольки там начинаются буквы и вот тебе стоимость буквы
Спасибо
Вышло как-то так
https://play.golang.org/p/XOyVBOHGLEy
Не переборщил с функциями? Может что-то другое посоветуешь?
Примерно да.
Но я бы немного переделал, сделал функцию, в которую передаешь строку, а получаешь одно слово
Хотел разделить, чтобы было наглядней, но, видимо увлёкся. В большЕм проекте такое было бы черевато.
Спасибо
>Имплаинг, что в компуктер саенс что-то поменялось за двадцать лет и фундаментальные знания о разработке ПО не получить от топ 1 энтерпрайз языка
Ах, да. И лучше тут советов не спрашивай.
Заходят ts, java и go программисты в бар
ts программист говорит:
-getBeer<chery>();
java программист говорит:
-new Beer<chocolate>()
Go программист:
-А с каким вкусом у вас по умолчанию? Со вкусом мочи? Ну, что же поделать, давайте
расскажи об этом бельгийцам, варящим крики/ламбики и англичанам/ирландцам/американцам, варящим стауты
Крупных и средних*
Фриланс не нужен
Но вообще говорят, что го - это своего рода "новый php", ещё лет через пять может занять и нишу во фрилансе, частично.
подозреваю, речь идет об отборочной задаче в школу озона по го, где сломаны тесты и ни одно решение не проходило
Прошел за две недели около 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 лет обросли жирком и стали буксовать. Работы полно, и людей не хватает. Лишь бы опыт разработки был, и какая-никакая база знаний.
Прошел за две недели около 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 лет обросли жирком и стали буксовать. Работы полно, и людей не хватает. Лишь бы опыт разработки был, и какая-никакая база знаний.
>Лишь бы опыт разработки был, и какая-никакая база знаний.
В этом-то и проблема, чувак...в этом проблема...
Почти все вопросы которые ты тут привел, знаю на зубок (опыт). Но при этом опыта на галере вообще нет никакого. В го вкатился месяца два назад. А в мухосрани полторы вакансии на мидла, плюс одна на трейни, которую я проебал (не успел).
Удачи анон.
Двачирую, перекатился с js/ts/node фуллстека
Недавно сам проходил собесы на го разработчика. Так что подтверждаю вышесказанное.
От себя добавлю:
1)Почти всегда спрашивают про устройство слайсов и дают задачу на них. Чаще всего это задача на append в функции
2) Обязательно спросят про мультипоточность. Частый вопрос: чем горутины отличаются от потоков процессора. Обязательно про каналы вопрос. Также популярный вопрос: как завершить выполнение горутины? Ну и обычно еще про waitgroup спрашивают.
3) Любят спрашивать про ООП в го
4) Еще популярный вопрос про то, можно ли писать асинхронно в мэп, и если нельзя, то как это исправить. Ну и в принципе про то, что такое мэп
5) Иногда спрашивают про выделение памяти на куче/стеке, при каких условиях.
6) Из смежных областей, спрашивают про redis, docker, kubernetes
Доберёшься до оптимизаторов и реализации библиотеки, скажешь "да ну в пизду", расхочешь.
Ещё спрашивают про строки под капотом, иногда про юникод, руны.
Естественно, спрашивают и про бд, как и везде в бекенде.
Ну и архитектура, веб, стандартная тема.
7) Как работает мапа под капотом и почему можно создать мапу с разными типами если в Го нет дженериков?
8) Стэк и хип именно в го, чем они отличаются в других яп
9) Планироващик в Го
10) Что будет если передать что-то в закрытый канал?
11) Отличия len и capacity
12) Race condition, и вообще каких правил нужно придерживаться когда пишешь конкурентную программу
13) ctx.Context
Вот кстати про планировщик и гц (особенно актуальных версий) в свободном доступе очень мало инфы, все советуют читать исходники и разбираться самому.
Компилятор чего? Своего языка? Если так - возьми какую-то динамикопарашу, вроде питона или тайпскрипта, по тому что если язык взлетит (этого не произойдет, скорее всего) тебе все равно нужно будет переписать компилятор на свой язык.
>8) Стэк и хип именно в го, чем они отличаются в других яп
Стек как стек, хип как хип, ничем особо не отличаются, вроде.
Читал что в IT у каждого языка есть своя зарплатная вилка, скажите пожалуйста, перспективно ли вообще изучать этот язык и средние зарплаты при работе с этим языком (не секрет что в интернете много пиздежа на эту тему)
Нет, не стоит. Вакансий для новичков нет, максимум - стажировки для студентов топ вузов, по этому критерию ты явно не подходишь. Везде требуют людей с опытом на других языках, так что затея сомнительная, выбирай что-то более ходовое и массовое, Java, C#, там значительно легче будет устроится. Потом сможешь перекатиться.
Спасибо за ответ, я еще думаю про мобильную разработку, а именно для iOS Swift изучить и писать на нем. Читал что можно без Objective-С обойтись в iOS, в отличии от Android, где к Kotlin'у еще Java должна быть обязательна.
Стоит ли по твоему Swift изучать?
Это фронтенд-то изи, где пытаешься на 50 стульях одновременно усидеть, чтобы работало и в древнем IE, и на мобилках, со всякими вебпаками и реактами-хуяктами, и всё должно быть красивенько, с анимациями и быстро? Причём стек и подходы меняются каждый год. Я пизданулся учить всё это после сравнительно лёгких крестов и ушёл в бек.
мимо
Я вебпак самостоятельно ни разу не настраивал, хотя мидлом являюсь давно. IE тоже давно не поддерживал. Последние 3 года стек у меня один - реакт и его экосистема. Анимации изучить проще, чем например базы данных, очереди, связь микросервисов между собой или ещё какую-нибудь сетевую бекендерскую вещь. Всякие grpc, amqp, webrtc, многопоточность и так далее, мне кажется это сложнее анимаций
Зарплата как минимум такая же как в бекенде, но при этом по ощущениям она достигается проще и быстрее
это если ты дохуя совестливый и обязательный
> я сильно на ЗП помешан,
> имею 95-105к чистыми
Проорал с этого нищего. Если ты "помешан" и при этом получаешь всего сотку, то что было бы, не будь ты "помешан"? Получал бы 15?
>10) Что будет если передать что-то в закрытый канал?
>11) Отличия len и capacity
>12) Race condition, и вообще каких правил нужно придерживаться когда пишешь конкурентную программу
>13) ctx.Context
>3) Любят спрашивать про ООП в го
>1)Почти всегда спрашивают про устройство слайсов и дают задачу на них. Чаще всего это задача на append в функции
>5) Иногда спрашивают про выделение памяти на куче/стеке, при каких условиях.
>2) Обязательно спросят про мультипоточность. Частый вопрос: чем горутины отличаются от потоков процессора. Обязательно про каналы вопрос. Также популярный вопрос: как завершить выполнение горутины? Ну и обычно еще про waitgroup спрашивают.
Это чисто базавые знания. Алгоритмы и структуры - это в целом вопрос не про язык програмирования.
Про структуры данных и вообще все что нужно стажеру, описано в книгах (на выбор):
- Go in Action
- Golang для профи: Go, Цукалос М. первое издание. можешь ещё второе навернуть
Не смеши пидоран, твои условные 150 не в сильном выигрыше от его 100. Да и ту же 100ку иметь в этой стране тоже не плохо, с учетом что он не потоеблядок (судя с его слов)
>хочу перейти с машиниста в метро в IT, присмотрелся к Go, вроде не сложный язык
Не сложный язык? Лол, язык может и не сложный, только программирование это не язык. Программирование это алгоритмы, вычисления, архитектура компьютера, операционные системы (Linux), архитектура ПО, парадигмы программирования, базы данных, различные инструменты и библиотеки, и еще много всего.
>я сильно на ЗП помешан, не жадный, но нравится когда платят хорошо. В метро в настоящий момент имею 95-105к чистыми, это мало для меня
Ты обратился не по адресу. Программирование это не деньги, это работа, профессия. Чтобы начать зарабатывать хотя бы 200к нужно пройти через многое, а ты как я вижу этого не понимаешь и скорее всего не хочешь или не сможешь сделать. Хочешь деньги, иди куда угодно, но не в программирование. Программирование это инженерия, только дурак может думать, что придет такой из ниоткуда, без бекграунда, с улицы можно сказать, и такой хоп и стал профи инженером с зарплатой 100500к/сек. Это ключевой момент.
>перспективно ли вообще изучать этот язык
Смотри ответ на первый вопрос. Программирование это не язык. Твое знание языка никому не нужно.
Мда, скучная хуета получается. Да и куда на вас не посмотри, всюду чсвшные пидоры
>скучная хуета получается
Хочешь не скучно, учись на дизайнера/фото-видео монтажера/звукорежиссера/на кого-то еще.
>куда на вас не посмотри, всюду чсвшные пидоры
Лол, спешите видеть, это пишет чсвшник без математического/инженерного бэкраунда, которому подавай 300к/сек после прочтения книги C++ за 21 день. Отчасти ты прав, но как еще объяснишь суровую реальность человеку, который надел розовые очки, и думает, что любой ноунейм может за месяцок другой стать инженером, не обучаясь годами, как это в общем-то принято. За пару месяцев даже на станке работать не научишься, не говоря уже о карьерном росте и повышении зарплаты.
Структуры данных:
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. И все алгоритмы поиска/сортировки в выше перечисленных структурах данных
Если это Авито, то готовься к тесту из 100 вопросов за полчаса. На каждый вопрос около 10 секунд на раздумия и ответ, так что времени посмотреть в шпаргалку тупо не будет. Темы будут распределяться примерно так: алгоритмы/структуры данных/Python(хотя тебя наверно спрашивать не будут)/Go(выше по треду расписали)/ООП и паттерны/тестирование(Mock-объекты, тесткейсы, библиотека Testing)/Web (HTTP, TCP/UDP)/SQL/Git.
Сам не прошел дальше этого теста, да и слава богу. С каких это пор Авито и Додо-пиццы стали считать себя вторыми гугло-яндексами, что проводят по 3-4 собеса с верчением деревьем и решением олимпиадных задач на листочках? Слишком много понта, да и в резюме потом не похвастаешься работой в "очередная компани-нейм, мы ходим быть как FAANG". Но это для перезвоним-треда скорее нытье
>С каких это пор Авито и Додо-пиццы стали считать себя вторыми гугло-яндексами, что проводят по 3-4 собеса с верчением деревьем и решением олимпиадных задач на листочках?
Лол, это школьно-университетский уровень. Да и необязательно прямо все задания ответить, главное показать, что у тебя есть хороший фундамент знаний. Или ты думаешь, что тебя должны брать на работу с зарплатой 100к+ даже без знаний/умений школьного уровня?
Правильный ли выбор я сделал или надо было стандартный Python для такого учить?
Уже сто раз перетирали. Эта хуйня никому не нужна и ничего не показывает.
И нормальный разработчик ее уже давно не помнит.
И если реальный faang это использует что бы снизить поток кандидатов, что бы не задохнуться, то янлексы-авито-додошки с этими заданиями похожи на обезьян с очками.
Норм.
На гошечке админы тоже начали потихоньку писать, либо много, язык простой, нет еботни с версиями питона и совместимостью либ.
>нормальный разработчик ее уже давно не помнит
>Нормальный разработчик
>НОРМАЛЬНЫЙ
Лол. Ты неуч, а не разработчик. Если ты этого не можешь, то что ты можешь вообще? Как можно разрабатывать без умения работать с древовидными структурами данных? Почти все можно представить в виде дерева. То же дерево каталогов. Как блять ты будешь писать код? На завод!
Чего? Все,э то единственный нормальный редактор.
А кто знает, как вот в такое идею преобразить? (Это с лэндоса по ссылке) какая тема?
тема называется night owl
Идеально. Для разработки cli tools отлично подходит, и в целом удобно получить на выходе один исполнительный файл. В стандартной либе есть необходимое для работы с сетью и с ОС
Мне похоже тоже предстоит собес у них. Ты тестовое делал? Какое направление?
Мне похоже тоже предстоит собес у них. Ты тестовое делал? Какое направление?
Самый крутой и мощный редактор на данный момент. Почти ничем не уступает ни одной IDE, во остальном во многом их превосходит.
>Чем он лучше голенда?
Легковесность, универсальность, модульность, мощь конфигурации, etc. А теперь ответь чем он хуже.
Я не знаю чем они хуже и чем лучше друг друга. Я ньюфажек в го. Только на пхп и жс в вскоде пишу, голендом не пользовался, поэтому сам хочу узнать
Ну так по словам экзаменующего я и ответил выше среднего только с тестами и линуксами знатно проебался, но видимо ПРОХОДНОГО БАЛЛА НЕ ХВАТИЛО, чтобы меня позвали дальше. При этом на нормальных собеседованиях, где я рассказывал о своем опыте, решал пару задачек по теме, и беседовал о тонкостях сборки мусора и конкурентного программирования, у меня все прошло успешно, и свой оффер и не один в хорошую компанию я получил.
Я могу понять FAANG, в которые прилетают тысячи резюме от индусов каждый день, и которым надо как-то фильтровать эту лавину вкатывальщиков. Но блять, АВИТО, серьезно? Даже в мейле был более щадящий отбор! У нас не кремниевая долина, Go-миддлы сейчас на хайпе и расхватываются как горячие пирожки за неделю-другую открытого резюме.
А эти долбоебы отсеивают потенциальных работников из-за недобора сраных баллов. Кого они хотят набрать такими дикими фильтрами, профессионального вкатывальщика с полугодовалым опытом хождений по собеседованиям? Это же две совершенно разных скилловых ветки, все эти вопросы тупо заучиваются, чтобы после получения работы все благополучно забыть из-за отсутствия практики.
Почитай их блог на хабре, там тоже идет коллективное охуевание в комментариях:
https://habr.com/ru/company/avito/blog/443700/
Ищи не сильно известные компании, у таких нету выебонов. У меня в конторе штук 20-30 гошников, на мидла у нас собес походу проще чем на джуна в авито, вилка зп 140-180
Ты москвич? Зачем ты грубишь? В моей МАОУ СОШ учителям было похуй на дисциплину в классе и в школе учились проблемные дети, некоторые из которых, успели отсидеть по малолетке и были на учете в милиции.
Извини, на нервах сегодня.
Но должны ли Авитояндексы ориентироваться на говнообразование в провинциях? Уровень-то реально школьный, я ещё в 9 или 10 классе решал задачи про графы Новосибирск, далеко не самая элитная школа.
Алгоритмы и структуры данных (особенно на задачах от этих двух контор) - это базовый уровень для программиста, азы CS, не знать это - примерно, как не уметь завязывать шнурки, очень странно. Да, есть обувь без шнурков, но навык-то всё равно базовый.
Да и крупняку нужно от силы 50 человек в год нанять, а собесятся реально тысячи, как ты думаешь им отсеивать людей? Очевидно, что берут лучших.
Мимо, прошёл все собесы в Авито, Яндекс и Мейл, без особых проблем. Задачи на алгоритмы там тривиальные, решается как правило рекурсией, динамическим программированием и просто внимательностью
Я родился и вырос в провинциальном городе на 100к человек, который на половину построили заключенные, которые потом там и жили после отсидки.
Родители меня отдали в муниципальную школу по прописке, где надо мной издевались и били начиная с самого первого класса. На мои проблемы в учебе, родители просто не обращали внимание и предлагали "подождать, т.к. сейчас время такое". А на избиения со стороны одноклассников и оскорбление учителей - просто не давать повода и не давать сдачи.
Я всегда отказывался от предложений пройти собеседования в крупные компании, такие как Яндекс, Сбербанк, Дойче, Мейл, Касперский, Тинькофф и т.д. т.к. я понимаю, что я ничего из себя не представляю...
>Я всегда отказывался от предложений пройти собеседования в крупные компании, такие как Яндекс, Сбербанк, Дойче, Мейл, Касперский, Тинькофф
И правда били, в основном по голове.
Меня били кулаками в затылок, травители, которые сидели сзади. Сидишь, что-нибудь записываешь за учителем и вдруг тебе в затылок прилетает кулаком. Да так, что аж в глазах темнеет и начинает подташнивать. Учитель сразу на меня кричать начинает, что я Ванечку и Рустэма провоцирую. Так и получал по затылку целых 5 лет. Мамка говорила, чтобы я не давал сдачи и сидел тихо и терпел.
> по затылку целых 5 лет. Мамка говорила, чтобы я не давал сдачи и сидел тихо и терпел.
нахуя ты тут это пишешь?
Это копия, сохраненная 3 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.