Антон Сергеев, «Go под капотом»

Kolesa Go Meetup:
Доклад о том, как работает go изнутри, и чем его принципы отличаются от других популярных языков. Что нужно знать о работе компилятора, операционной системы и компьютера, чтобы пользоваться go эффективно. Также рассмотрим, как устроены горутины, и почему в языке есть несколько способов сделать одно и то же, когда речь идет о конкурентности.
Полезные ссылки:
habr.com/ru/company/mailru/bl...
rakyll.org/codegen/ • GopherCon 2018: Kavya ... morsmachine.dk/go-scheduler
www.ardanlabs.com/blog/2018/0...
blog.cloudflare.com/how-stack...
dave.cheney.net

Пікірлер: 85

  • @IK-ow2zk
    @IK-ow2zk Жыл бұрын

    С первых слов понятно, что лекция будет огненная! Спасибо большое за доклад!

  • @alexpanov4678
    @alexpanov46782 жыл бұрын

    Спасибо! С нетерпением ждем новых докладов Антона!)

  • @bakla_zhan
    @bakla_zhan10 ай бұрын

    Спасибо большое за интересный доклад!

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z4 жыл бұрын

    Очень интересно. Спасибо

  • @dmitryd1572
    @dmitryd15722 ай бұрын

    Толковый доклад, спасибо большое !

  • @FUNMASHIN
    @FUNMASHIN9 ай бұрын

    Отличный доклад!

  • @user-qp3lt4ps8c
    @user-qp3lt4ps8c6 ай бұрын

    Интересный доклад, респект автору!

  • @derter2007
    @derter2007 Жыл бұрын

    Доклад огонь, докладчику респект!

  • @sovrinfo
    @sovrinfo Жыл бұрын

    Спасибо за видео. Коммент в поддержку!

  • @user-ku4iu3ed9n
    @user-ku4iu3ed9n Жыл бұрын

    Хороший доклад, интересно послушать о кишках го)

  • @defer99
    @defer998 ай бұрын

    Отличный доклад, спасибо. Было бы интересно послушать и про аллокации памяти с garbage collector )

  • @kazakhification
    @kazakhification3 жыл бұрын

    Good explanation! I see you dived much profoundly. Thanks for your speach.

  • @alexanonymous5823
    @alexanonymous58233 жыл бұрын

    просто огонь=)) очень понятно про и простыми словами про го=))

  • @vic_shine
    @vic_shine4 жыл бұрын

    Про работу каналов Go, в таком глубоком формате, - было бы тоже интересно послушать ;) Спасибо!

  • @alexander.emelin

    @alexander.emelin

    3 жыл бұрын

    kzread.info/dash/bejne/hqRp2sqNfanbfLg.html - про каналы, плюс на медиуме отличная статья medium.com/a-journey-with-go/go-buffered-and-unbuffered-channels-29a107c00268

  • @realmoftheminone

    @realmoftheminone

    2 жыл бұрын

    О ты же чел из Fiber

  • @mini_clop

    @mini_clop

    Жыл бұрын

    @@alexander.emelin От души, душево в душе!

  • @patrickjustice7371
    @patrickjustice73712 жыл бұрын

    сразу лайк за зелёные треды, мало кто про них вспоминает

  • @minmara4537
    @minmara4537Ай бұрын

    отличный доклад, надеюсь на текущий момент рантайм не сильно поменялся)))

  • @vp_arth
    @vp_arth2 ай бұрын

    Очень переживал за паутинку

  • @alexanderyurkin9363
    @alexanderyurkin9363 Жыл бұрын

    9:44 issue по внедрению вытесняющей многозадачности закрыт. Подскажите, вытесняющую многозадачность внедрили?

  • @mini_clop
    @mini_clop Жыл бұрын

    Спасибо за доклад, очень интересно и доступным языком! Подскажите где можно посмотреть про работу: каналов, мьютексов и взаимодействие с контекстом ?

  • @alexanderloginov2762

    @alexanderloginov2762

    Жыл бұрын

    D. Curry Unix system programming. W. Stevens Unix IPC E. Raymond The Art of UNIX programming Если ничего не напутал с названиями.

  • @freeshooter3163
    @freeshooter3163 Жыл бұрын

    Очень хотел использовать GO в звездолёте, но облом по времени выполнения. Ладно, буду на ассемблере и Сишке пилить 😎

  • @user-rj5kt3ft8w

    @user-rj5kt3ft8w

    Жыл бұрын

    напилил?

  • @wideybro
    @wideybro2 жыл бұрын

    Почему он похож на маскота GO? 😅

  • @user-ub7qu4yo2i

    @user-ub7qu4yo2i

    2 ай бұрын

    Он стал превращаться в GO

  • @kalmurza
    @kalmurza10 ай бұрын

    Ни фига себе, у этого видео 60К просмотров 👍🏻

  • @petrkassadinovich2705
    @petrkassadinovich270527 күн бұрын

    8:28 - побуду немного душным. В коммунизме идеал распределения описывается фразой: "От каждого по способностям, каждому по потребностям". То есть, больше схоже с тем, что спикер записал в "Кооперативную" модель. Я не спец по измам, но этот момент помню))

  • @timurkash
    @timurkash3 жыл бұрын

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

  • @ArtemCYOU
    @ArtemCYOU10 ай бұрын

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

  • @arnowt
    @arnowt Жыл бұрын

    Здравствуйте, спасибо за доклад! У меня остался вопрос. Допустим я пишу парсер. Есть 1ярд подготовленных урлов. Как лучше организовать рабочий цикл. Запустить скажем 1000 горутин (которые будут складывать результат в бд) и потом скармливать им через канал новые урлы в цикле. Или сразу в основном цикле на каждый урл создавать горутину?

  • @antonsergeyev

    @antonsergeyev

    Жыл бұрын

    Привет! Первый способ точно лучше. Такой подход называется worker pool, он позволяет предсказуемо контролировать потребление ресурсов. Простой пример приведён здесь gobyexample.com/worker-pools, есть и более усложнённые варианты. А пытаться создать 1 миллиард горутин я не пробовал, но рискну предположить, что не получится :)

  • @arnowt

    @arnowt

    Жыл бұрын

    @@antonsergeyev да, я уже протестировал оба варианта. Он действительно не создаёт ярд горутин. Создаёт какое-то кол-во тыс и потом по мере завершения одних создаёт другие и да, это сильно медленнее.

  • @z3r0slab96
    @z3r0slab96 Жыл бұрын

    1:20 программы на go собранные gc ВСЕГДА статические, если вы не используете сишные вызовы с cgo Для hello world вовсе необязательно включать fmt, есть встроенная функция print()

  • @ilya_de

    @ilya_de

    Жыл бұрын

    print делает вывод в STDERR а не в STDOUT

  • @user-vt5uk4cj1h
    @user-vt5uk4cj1h2 жыл бұрын

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

  • @antonsergeyev

    @antonsergeyev

    Жыл бұрын

    Думаю, что в современных версиях языка функция Goschedule уже не очень актуальна - в язык уже добавили принудительное вытеснение горутин (на момент доклада его ещё не было). Так что я склоняюсь к тому, что суета не нужна :)

  • @freeshooter3163
    @freeshooter3163 Жыл бұрын

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

  • @dd-qz2rh

    @dd-qz2rh

    5 ай бұрын

    Умение вибирать правильний инструмент для конкретной задачи ето один из основних скилом хорошего разраба. Не понимание для чего существуют разние уровни абстракции реализование при помощи разних ЯП ето призник слабого или же начинающего специалиста. На Си, как и на асемблере, можна написать абсолютно все. Ети же горутини и били на нем написани прежде чем переписани на го при уже работающем компиляторе го язика.

  • @madbad1310
    @madbad13106 ай бұрын

    Я всякое слышал, от коллег в том числе, но Schedule как "скеджюал" мой новый абсолютный фаворит.

  • @user-lc8zz3hn7k

    @user-lc8zz3hn7k

    6 ай бұрын

    Гугл Переводчик предлагает произность как "шеджюл"

  • @johndoe9604

    @johndoe9604

    5 ай бұрын

    это правильное произношение

  • @akiloci2198
    @akiloci2198 Жыл бұрын

    На каком уровне надо быть, что бы в это всё врубаться с первого раза?

  • @andreinorka2832

    @andreinorka2832

    Жыл бұрын

    Высшего образования хватит

  • @z3r0slab96

    @z3r0slab96

    Жыл бұрын

    А что не понятно?

  • @ngrx8750

    @ngrx8750

    Жыл бұрын

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

  • @sergeys.3500
    @sergeys.3500 Жыл бұрын

    За printf() без trailing newline нужно казнить. Настолько сложно было " " добавить? bash-5.1$ echo "main(void) { printf(\"hello world\!\"); }" > main.c bash-5.1$ cc main.c 2>/dev/null && ./a.out hello world!bash-5.1$

  • @shprodt8841
    @shprodt8841 Жыл бұрын

    23:58

  • @batfist6595
    @batfist65952 жыл бұрын

    А почему... неважно

  • @maksimus.ssirotkin1124
    @maksimus.ssirotkin11244 ай бұрын

    Человек сильно разбирается в коммунизме)))

  • @maksimus.ssirotkin1124

    @maksimus.ssirotkin1124

    4 ай бұрын

    Идеал коммунизма как раз второе, правда его ни кто не видел.))

  • @yuri_djur
    @yuri_djur3 жыл бұрын

    "Отнять и поделить" это лозунг совершенно других граждан.

  • @gregandark8571

    @gregandark8571

    3 жыл бұрын

    🔯

  • @ottoreder9305

    @ottoreder9305

    Жыл бұрын

    @@gregandark8571 USSR :)

  • @gregandark8571

    @gregandark8571

    Жыл бұрын

    @@ottoreder9305 ussr = ✡️

  • @achepkunov

    @achepkunov

    Жыл бұрын

    Ага, тоже не понравилось. При том, что не в тему, и в итоге все равно добавили. Потому, что,... ой, лучше тут остановлюсь)

  • @platon041970
    @platon041970 Жыл бұрын

    .....извратили Forth😁

  • @YanA-bk1nb
    @YanA-bk1nb25 күн бұрын

    Я один слышу дрэды? 😅

  • @bringcloud3009
    @bringcloud3009 Жыл бұрын

    Вот бы еще async/await в Golang вместо всех этих chan и go

  • @user-rj5kt3ft8w

    @user-rj5kt3ft8w

    9 ай бұрын

    нет

  • @konstantintanat4462
    @konstantintanat4462 Жыл бұрын

    Что за фигня верху записи плавает?

  • @andreyg5875
    @andreyg58752 жыл бұрын

    Это в РФ конфа? Просто смешной акцент у тех кто вопросы задавал)))

  • @AnelKerimbekova

    @AnelKerimbekova

    2 жыл бұрын

    это Алматы :))

  • @freeshooter3163
    @freeshooter3163 Жыл бұрын

    Научите пацана правильно произносить англ. shedule. Он видно ардуинщик, если у него это звучит как "скечул"

  • @antonsergeyev

    @antonsergeyev

    Жыл бұрын

    Спасибо за отзыв. Но во-первых, schedule всё-таки пишется через "c". Во-вторых, есть 2 варианта произношения - британский "shehjool" и американский "skehjool". Возможно, вам просто ближе британский :) Кстати, посмотрел у вас на канале видео про esp32 - очень интересно и глубоко осветили тему. Я сам на нём программировал в магистратуре, но не знал всех тонкостей об устройстве железа 👍

  • @vladimirlos5432
    @vladimirlos5432 Жыл бұрын

    "Треды большие и сложные, а корутины должны быть простыми."... Дальше слушать стало безразлично...

  • @expmodish9940
    @expmodish9940 Жыл бұрын

    Всё хорошо, хороший доклад, но при чем здесь коммунизм про отнять и поделить?! Молодой человек хорошо разбирается в программировании, но ни черта не знает о марксизме, политэкономии и философии. Так вот поправлю юного подавана: "не отнять и поделить", а "обобществить". ;-).

  • @hardlabor9412

    @hardlabor9412

    2 ай бұрын

    🤡🤡🤡

  • @faxriddinburkhanov6303
    @faxriddinburkhanov63032 жыл бұрын

    Java надо учить а не go

  • @patrickjustice7371

    @patrickjustice7371

    2 жыл бұрын

    слишком толсто

  • @bobsimple8291

    @bobsimple8291

    2 жыл бұрын

    нет, за php будущее

  • @user-bk5fz8wd9g

    @user-bk5fz8wd9g

    2 жыл бұрын

    js

  • @user-zo2yd5dh2l

    @user-zo2yd5dh2l

    2 жыл бұрын

    1С форева!

  • @ventilyator

    @ventilyator

    Жыл бұрын

    посоны переходите на питон

Келесі