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

Sdílet
Vložit
  • čas přidán 11. 11. 2019
  • 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

Komentáře • 85

  • @alexpanov4678
    @alexpanov4678 Před 2 lety +5

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

  • @derter2007
    @derter2007 Před rokem

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

  • @bakla_zhan
    @bakla_zhan Před 10 měsíci

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

  • @IK-ow2zk
    @IK-ow2zk Před rokem +14

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

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z Před 4 lety +5

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

  • @user-qp3lt4ps8c
    @user-qp3lt4ps8c Před 6 měsíci

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

  • @kazakhification
    @kazakhification Před 3 lety +4

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

  • @dmitryd1572
    @dmitryd1572 Před 2 měsíci +1

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

  • @FUNMASHIN
    @FUNMASHIN Před 9 měsíci

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

  • @sovrinfo
    @sovrinfo Před rokem

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

  • @user-ku4iu3ed9n
    @user-ku4iu3ed9n Před 11 měsíci

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

  • @alexanonymous5823
    @alexanonymous5823 Před 3 lety +13

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

  • @defer99
    @defer99 Před 7 měsíci

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

  • @patrickjustice7371
    @patrickjustice7371 Před 2 lety

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

  • @vic_shine
    @vic_shine Před 4 lety +35

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

    • @alexander.emelin
      @alexander.emelin Před 3 lety +4

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

    • @realmoftheminone
      @realmoftheminone Před 2 lety +1

      О ты же чел из Fiber

    • @mini_clop
      @mini_clop Před rokem

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

  • @mini_clop
    @mini_clop Před rokem +2

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

    • @alexanderloginov2762
      @alexanderloginov2762 Před rokem

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

  • @alexanderyurkin9363
    @alexanderyurkin9363 Před rokem

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

  • @minmara4537
    @minmara4537 Před měsícem

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

  • @timurkash
    @timurkash Před 3 lety +8

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

  • @petrkassadinovich2705
    @petrkassadinovich2705 Před 16 dny

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

  • @kalmurza
    @kalmurza Před 10 měsíci +1

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

  • @arnowt
    @arnowt Před rokem +1

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

    • @antonsergeyev
      @antonsergeyev Před rokem +1

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

    • @arnowt
      @arnowt Před rokem

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

  • @freeshooter3163
    @freeshooter3163 Před rokem +6

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

  • @user-vt5uk4cj1h
    @user-vt5uk4cj1h Před 2 lety +1

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

    • @antonsergeyev
      @antonsergeyev Před rokem +2

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

  • @z3r0slab96
    @z3r0slab96 Před rokem +2

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

    • @ilya_de
      @ilya_de Před rokem +3

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

  • @freeshooter3163
    @freeshooter3163 Před rokem

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

    • @dd-qz2rh
      @dd-qz2rh Před 5 měsíci

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

  • @vp_arth
    @vp_arth Před 2 měsíci

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

  • @madbad1310
    @madbad1310 Před 6 měsíci

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

    • @user-lc8zz3hn7k
      @user-lc8zz3hn7k Před 6 měsíci

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

    • @johndoe9604
      @johndoe9604 Před 5 měsíci

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

  • @wideybro
    @wideybro Před 2 lety +47

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

    • @user-ub7qu4yo2i
      @user-ub7qu4yo2i Před 2 měsíci +3

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

  • @ArtemCYOU
    @ArtemCYOU Před 10 měsíci +2

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

  • @sergeys.3500
    @sergeys.3500 Před rokem

    За 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$

  • @batfist6595
    @batfist6595 Před 2 lety +1

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

  • @akiloci2198
    @akiloci2198 Před rokem

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

    • @andreinorka2832
      @andreinorka2832 Před rokem

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

    • @z3r0slab96
      @z3r0slab96 Před rokem

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

    • @ngrx8750
      @ngrx8750 Před rokem +1

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

  • @shprodt8841
    @shprodt8841 Před rokem +1

    23:58

  • @yuri_djur
    @yuri_djur Před 3 lety +9

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

    • @gregandark8571
      @gregandark8571 Před 3 lety

      🔯

    • @ottoreder9305
      @ottoreder9305 Před rokem

      @@gregandark8571 USSR :)

    • @gregandark8571
      @gregandark8571 Před rokem

      @@ottoreder9305 ussr = ✡️

    • @achepkunov
      @achepkunov Před rokem +2

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

  • @maksimus.ssirotkin1124
    @maksimus.ssirotkin1124 Před 4 měsíci

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

    • @maksimus.ssirotkin1124
      @maksimus.ssirotkin1124 Před 4 měsíci

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

  • @platon041970
    @platon041970 Před rokem

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

  • @YanA-bk1nb
    @YanA-bk1nb Před 13 dny

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

  • @bringcloud3009
    @bringcloud3009 Před rokem +1

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

  • @vladimirlos5432
    @vladimirlos5432 Před rokem

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

  • @freeshooter3163
    @freeshooter3163 Před rokem +2

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

    • @antonsergeyev
      @antonsergeyev Před rokem +5

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

  • @andreyg5875
    @andreyg5875 Před 2 lety +1

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

  • @expmodish9940
    @expmodish9940 Před rokem +4

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

  • @faxriddinburkhanov6303
    @faxriddinburkhanov6303 Před 2 lety +5

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

  • @konstantintanat4462
    @konstantintanat4462 Před rokem +2

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