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

Поділитися
Вставка
  • Опубліковано 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

КОМЕНТАРІ • 85

  • @IK-ow2zk
    @IK-ow2zk Рік тому +14

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

  • @alexpanov4678
    @alexpanov4678 2 роки тому +5

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

  • @bakla_zhan
    @bakla_zhan 10 місяців тому

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

  • @derter2007
    @derter2007 Рік тому

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

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z 4 роки тому +5

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

  • @dmitryd1572
    @dmitryd1572 2 місяці тому +1

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

  • @user-qp3lt4ps8c
    @user-qp3lt4ps8c 6 місяців тому

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

  • @FUNMASHIN
    @FUNMASHIN 9 місяців тому

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

  • @kazakhification
    @kazakhification 3 роки тому +4

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

  • @sovrinfo
    @sovrinfo Рік тому

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

  • @user-ku4iu3ed9n
    @user-ku4iu3ed9n 11 місяців тому

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

  • @alexanonymous5823
    @alexanonymous5823 3 роки тому +13

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

  • @defer99
    @defer99 7 місяців тому

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

  • @patrickjustice7371
    @patrickjustice7371 2 роки тому

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

  • @alexanderyurkin9363
    @alexanderyurkin9363 Рік тому

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

  • @mini_clop
    @mini_clop Рік тому +2

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

    • @alexanderloginov2762
      @alexanderloginov2762 Рік тому

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

  • @vic_shine
    @vic_shine 4 роки тому +35

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

    • @alexander.emelin
      @alexander.emelin 3 роки тому +4

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

    • @realmoftheminone
      @realmoftheminone 2 роки тому +1

      О ты же чел из Fiber

    • @mini_clop
      @mini_clop Рік тому

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

  • @minmara4537
    @minmara4537 Місяць тому

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

  • @petrkassadinovich2705
    @petrkassadinovich2705 16 днів тому

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

  • @kalmurza
    @kalmurza 10 місяців тому +1

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

  • @timurkash
    @timurkash 3 роки тому +8

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

  • @vp_arth
    @vp_arth 2 місяці тому

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

  • @arnowt
    @arnowt Рік тому +1

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

    • @antonsergeyev
      @antonsergeyev Рік тому +1

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

    • @arnowt
      @arnowt Рік тому

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

  • @freeshooter3163
    @freeshooter3163 Рік тому +6

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

  • @wideybro
    @wideybro 2 роки тому +47

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

    • @user-ub7qu4yo2i
      @user-ub7qu4yo2i 2 місяці тому +3

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

  • @user-vt5uk4cj1h
    @user-vt5uk4cj1h 2 роки тому +1

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

    • @antonsergeyev
      @antonsergeyev Рік тому +2

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

  • @freeshooter3163
    @freeshooter3163 Рік тому

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

    • @dd-qz2rh
      @dd-qz2rh 5 місяців тому

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

  • @z3r0slab96
    @z3r0slab96 Рік тому +2

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

    • @ilya_de
      @ilya_de Рік тому +3

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

  • @ArtemCYOU
    @ArtemCYOU 10 місяців тому +2

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

  • @madbad1310
    @madbad1310 6 місяців тому

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

    • @user-lc8zz3hn7k
      @user-lc8zz3hn7k 6 місяців тому

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

    • @johndoe9604
      @johndoe9604 5 місяців тому

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

  • @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$

  • @akiloci2198
    @akiloci2198 Рік тому

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

    • @andreinorka2832
      @andreinorka2832 Рік тому

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

    • @z3r0slab96
      @z3r0slab96 Рік тому

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

    • @ngrx8750
      @ngrx8750 Рік тому +1

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

  • @batfist6595
    @batfist6595 2 роки тому +1

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

  • @shprodt8841
    @shprodt8841 Рік тому +1

    23:58

  • @platon041970
    @platon041970 Рік тому

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

  • @yuri_djur
    @yuri_djur 3 роки тому +9

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

    • @gregandark8571
      @gregandark8571 3 роки тому

      🔯

    • @ottoreder9305
      @ottoreder9305 Рік тому

      @@gregandark8571 USSR :)

    • @gregandark8571
      @gregandark8571 Рік тому

      @@ottoreder9305 ussr = ✡️

    • @achepkunov
      @achepkunov Рік тому +2

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

  • @maksimus.ssirotkin1124
    @maksimus.ssirotkin1124 4 місяці тому

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

    • @maksimus.ssirotkin1124
      @maksimus.ssirotkin1124 4 місяці тому

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

  • @YanA-bk1nb
    @YanA-bk1nb 14 днів тому

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

  • @bringcloud3009
    @bringcloud3009 Рік тому +1

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

  • @freeshooter3163
    @freeshooter3163 Рік тому +2

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

    • @antonsergeyev
      @antonsergeyev Рік тому +5

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

  • @andreyg5875
    @andreyg5875 2 роки тому +1

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

  • @vladimirlos5432
    @vladimirlos5432 Рік тому

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

  • @expmodish9940
    @expmodish9940 Рік тому +4

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

  • @faxriddinburkhanov6303
    @faxriddinburkhanov6303 2 роки тому +5

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

  • @konstantintanat4462
    @konstantintanat4462 Рік тому +2

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