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

2019 ж. 11 Қар.
86 762 Рет қаралды

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

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

    @alexpanov4678@alexpanov46782 жыл бұрын
  • Очень интересно. Спасибо

    @user-mt9bq2xe1z@user-mt9bq2xe1z4 жыл бұрын
  • С первых слов понятно, что лекция будет огненная! Спасибо большое за доклад!

    @IK-ow2zk@IK-ow2zk Жыл бұрын
  • Спасибо большое за интересный доклад!

    @bakla_zhan@bakla_zhan10 ай бұрын
  • Отличный доклад!

    @FUNMASHIN@FUNMASHIN9 ай бұрын
  • Доклад огонь, докладчику респект!

    @derter2007@derter2007 Жыл бұрын
  • Интересный доклад, респект автору!

    @user-qp3lt4ps8c@user-qp3lt4ps8c6 ай бұрын
  • Толковый доклад, спасибо большое !

    @dmitryd1572@dmitryd15722 ай бұрын
  • Спасибо за видео. Коммент в поддержку!

    @sovrinfo@sovrinfo Жыл бұрын
  • Good explanation! I see you dived much profoundly. Thanks for your speach.

    @kazakhification@kazakhification3 жыл бұрын
  • Хороший доклад, интересно послушать о кишках го)

    @user-ku4iu3ed9n@user-ku4iu3ed9n11 ай бұрын
  • просто огонь=)) очень понятно про и простыми словами про го=))

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

    @defer99@defer997 ай бұрын
  • сразу лайк за зелёные треды, мало кто про них вспоминает

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

    @vic_shine@vic_shine4 жыл бұрын
    • kzhead.info/sun/h9RuqMyMhHirf40/bejne.html - про каналы, плюс на медиуме отличная статья medium.com/a-journey-with-go/go-buffered-and-unbuffered-channels-29a107c00268

      @alexander.emelin@alexander.emelin3 жыл бұрын
    • О ты же чел из Fiber

      @realmoftheminone@realmoftheminone2 жыл бұрын
    • @@alexander.emelin От души, душево в душе!

      @mini_clop@mini_clop Жыл бұрын
  • с версии 1.14 уже некооперативный, то есть preemptible

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

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

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

    @alexanderyurkin9363@alexanderyurkin9363 Жыл бұрын
  • отличный доклад, надеюсь на текущий момент рантайм не сильно поменялся)))

    @minmara4537@minmara4537Ай бұрын
  • Ни фига себе, у этого видео 60К просмотров 👍🏻

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

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

    @freeshooter3163@freeshooter3163 Жыл бұрын
    • напилил?

      @user-rj5kt3ft8w@user-rj5kt3ft8w Жыл бұрын
  • Очень переживал за паутинку

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

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

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

      @arnowt@arnowt Жыл бұрын
  • Почему он похож на маскота GO? 😅

    @wideybro@wideybro2 жыл бұрын
    • Он стал превращаться в GO

      @user-ub7qu4yo2i@user-ub7qu4yo2i2 ай бұрын
  • сейчас уже только вытесняющая и никакой кооперативности уже не осталось в новой версии

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

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

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

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

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

    @z3r0slab96@z3r0slab96 Жыл бұрын
    • print делает вывод в STDERR а не в STDOUT

      @ilya_de@ilya_de Жыл бұрын
  • А почему... неважно

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

    @madbad1310@madbad13106 ай бұрын
    • Гугл Переводчик предлагает произность как "шеджюл"

      @user-lc8zz3hn7k@user-lc8zz3hn7k6 ай бұрын
    • это правильное произношение

      @johndoe9604@johndoe96045 ай бұрын
  • За 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$

    @sergeys.3500@sergeys.3500 Жыл бұрын
  • На каком уровне надо быть, что бы в это всё врубаться с первого раза?

    @akiloci2198@akiloci2198 Жыл бұрын
    • Высшего образования хватит

      @andreinorka2832@andreinorka2832 Жыл бұрын
    • А что не понятно?

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

      @ngrx8750@ngrx8750 Жыл бұрын
  • 23:58

    @shprodt8841@shprodt8841 Жыл бұрын
  • .....извратили Forth😁

    @platon041970@platon041970 Жыл бұрын
  • "Отнять и поделить" это лозунг совершенно других граждан.

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

      @gregandark8571@gregandark85713 жыл бұрын
    • @@gregandark8571 USSR :)

      @ottoreder9305@ottoreder9305 Жыл бұрын
    • @@ottoreder9305 ussr = ✡️

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

      @achepkunov@achepkunov Жыл бұрын
  • Человек сильно разбирается в коммунизме)))

    @maksimus.ssirotkin1124@maksimus.ssirotkin11244 ай бұрын
    • Идеал коммунизма как раз второе, правда его ни кто не видел.))

      @maksimus.ssirotkin1124@maksimus.ssirotkin11244 ай бұрын
  • Я один слышу дрэды? 😅

    @YanA-bk1nb@YanA-bk1nb12 күн бұрын
  • Вот бы еще async/await в Golang вместо всех этих chan и go

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

      @user-rj5kt3ft8w@user-rj5kt3ft8w9 ай бұрын
  • Научите пацана правильно произносить англ. shedule. Он видно ардуинщик, если у него это звучит как "скечул"

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

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

    @andreyg5875@andreyg58752 жыл бұрын
    • это Алматы :))

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

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

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

      @hardlabor9412@hardlabor94122 ай бұрын
  • Java надо учить а не go

    @faxriddinburkhanov6303@faxriddinburkhanov63032 жыл бұрын
    • слишком толсто

      @patrickjustice7371@patrickjustice73712 жыл бұрын
    • нет, за php будущее

      @bobsimple8291@bobsimple82912 жыл бұрын
    • js

      @user-bk5fz8wd9g@user-bk5fz8wd9g2 жыл бұрын
    • 1С форева!

      @user-zo2yd5dh2l@user-zo2yd5dh2l2 жыл бұрын
    • посоны переходите на питон

      @ventilyator@ventilyator Жыл бұрын
  • Что за фигня верху записи плавает?

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