Роман Елизаров - Корутины в Kotlin

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ก.ย. 2018
  • Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
    Подробности и билеты: jrg.su/Ypf1HW
    - -
    . . . . Асинхронное программирование повсюду. Современные программные системы находятся в постоянном общении друг с другом. Все языки программирования добавляют родные механизмы для асинхронного программирования, такие как async/await. Однако, Kotlin пошел другим путем к решению этой проблемы, через поддержку корутин.
    В этом докладе мы разберем различные подходы к асинхронному программированию. Их эволюцию, отличия и схожести. Рассмотрим ставший уже традиционным подход к решению этой проблемы через async/await, который основан на Futures/Promises, и увидим, как корутины в Kotlin дают нам более безопасную и простую модель программирования.
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 57

  • @radiopapus
    @radiopapus 8 หลายเดือนก่อน +7

    Без воды, все по делу. За 1 час я получил общее представление о работе корутин. 👍

  • @Boyarsskiy
    @Boyarsskiy 7 หลายเดือนก่อน +4

    Всегда приятно послушать информацию от создателя.

  • @ki11qwerty47
    @ki11qwerty47 5 ปีที่แล้ว +26

    шикарный доклад, спасибо

  • @whereispie
    @whereispie 2 ปีที่แล้ว +4

    Спасибо за доклад 😺❤️

  • @user-sf8xx1hq7c
    @user-sf8xx1hq7c 3 ปีที่แล้ว +4

    Супер, спасибо)

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil ปีที่แล้ว +1

    Спасибо, интересно и полезно

  • @alexgireff2180
    @alexgireff2180 2 ปีที่แล้ว +2

    наконец-то про корутины все в голове стало на свои места

  • @cjsoa
    @cjsoa 3 ปีที่แล้ว +1

    Спасибо стало чуть понятнее

  • @faizulla5838
    @faizulla5838 3 ปีที่แล้ว +1

    шикарно.... аж мозги приплыли к kotlin-у

  • @konstantinchvilyov9602
    @konstantinchvilyov9602 2 หลายเดือนก่อน

    Задача функции yield - передать значение повторителю и приостановить его до
    тех пор, пока не будет запрошено следующее значение.

  • @androidkotlin-6234
    @androidkotlin-6234 2 ปีที่แล้ว +1

    Я только начал изучать Kotlin, про корутины слышал, что это некий аналог thread из Java (Java уже осилил). По данному докладу понял только половину, но то, что понял, как минимум заложило базу, т.к. объяснение было доходчивым + шикарная демонстрация кода по словам. Видеоряд полностью соответствовал монологу.

    • @androidkotlin-6234
      @androidkotlin-6234 2 ปีที่แล้ว

      @bitmap спасибо за комментарий, я уже прошел курс по корутинам и flow

  • @kimpujong
    @kimpujong 3 ปีที่แล้ว +4

    На 28:52 эти таски выполнятся последовательно. По крайней мере разработчики этого ожидают. Чтобы они выполнились параллельно надо сделать что-то типа WaitAll или использовать TPL

    • @AlexeiVinidiktov
      @AlexeiVinidiktov 9 หลายเดือนก่อน

      Разве последовательно? Разве они не начали выполняться уже в тот момент, когда их объявили в var promise1 = ... , var promise2 = ?
      Когда мы ждем await promise1, разве в это время promise2 не отрабатывает в фоне?

  • @user-mf6uc9iw2z
    @user-mf6uc9iw2z ปีที่แล้ว

    Deferred это с jquery тема:)) Так что тоже занято

  • @dmitry833
    @dmitry833 3 ปีที่แล้ว +2

    Java озвучивает как [Ява]. Прям ностальгия. Сейчас так не говорят)

    • @kirillsh8383
      @kirillsh8383 3 ปีที่แล้ว +3

      даа, хороший был мотоцикл

  • @nikson9334
    @nikson9334 ปีที่แล้ว

    9:13 тут должны быть аплодисменты

  • @ekaterinagalkina7303
    @ekaterinagalkina7303 ปีที่แล้ว

    33:25 чет не поняла, а зачем 100 тыс потоков сравнивать со 100 тыс действий в одном потоке (по факту main). Я думала, может они в в разных хоть запустятся...

    • @ekaterinagalkina7303
      @ekaterinagalkina7303 ปีที่แล้ว

      чем это отличается от for(i in 0..100_000){
      println(".")
      }

  • @user-ni5nt2bs8j
    @user-ni5nt2bs8j 4 ปีที่แล้ว +2

    Почему в ентерпайзе нельзя самому создавать потоки?

  • @klerg321
    @klerg321 ปีที่แล้ว

    Пример с фибаначи очень плох - дважды возвращается 1, что может сбить с толку

  • @AlexJPep
    @AlexJPep 10 หลายเดือนก่อน

    Странно на 34:00 вызывать 100к потоков, обычно для таких операцию нужно делать пул потоков и запускать на нём. Вот вопрос как на пуле потоков отработает...

  • @jojomajo
    @jojomajo 4 ปีที่แล้ว +2

    Постоянный баг ведущего - он слипается после речи собеседника и запускается с некоторой задержкой

    • @handleftman
      @handleftman 3 ปีที่แล้ว +1

      и ты тут снова?)) если ты пришёл из просмотра другого видео (loftscool) где доту делали и автор (mobile developer) вскользь сказал о Романе, то знай! я иду по тем же граблям с отставанием в месяц)))

    • @anatoliisavin9649
      @anatoliisavin9649 3 ปีที่แล้ว

      @@handleftman можно видео про доту?)

    • @handleftman
      @handleftman 3 ปีที่แล้ว

      @@anatoliisavin9649 есть канал этого человека - "mobile developer", и есть его стрим на канале loftblog - "kotlin + jetpack приложение на андройде", думаю сможете найти? Ссылки затруднительно сейчас предоставить с телефона

    • @dimitrytvorogov3538
      @dimitrytvorogov3538 3 ปีที่แล้ว

      @@handleftman как успехи?

  • @user-li9be3jj3z
    @user-li9be3jj3z ปีที่แล้ว

    Бессмысленно и невнятно

  • @konstantinchvilyov9602
    @konstantinchvilyov9602 2 หลายเดือนก่อน

    generate [ˈʤenəreɪt] порождать, производить, вырабатывать, создавать, породить, [вы]давать

  • @konstantinchvilyov9602
    @konstantinchvilyov9602 2 หลายเดือนก่อน

    schedule [ˈʃedjuːl] планировать, намечать, назначить

  • @Mike19910711
    @Mike19910711 3 ปีที่แล้ว +3

    Отличный доклад. Всё очень понятно рассказывается, подробно подсвечивается на слайдах.

  • @leomak7580
    @leomak7580 5 ปีที่แล้ว +8

    хорошо рассказывает )

  • @pavelpristalov1483
    @pavelpristalov1483 5 ปีที่แล้ว +3

    Не всё актуально после выпуска корутин в release, но, в целом, отличное выступление! Спасибо!

    • @evgix
      @evgix 5 ปีที่แล้ว +4

      Что поменялось?

  • @user-qg6fn3qx9m
    @user-qg6fn3qx9m 5 ปีที่แล้ว +2

    Рекомендую приезжать в Амстердам Где вы и про корутины сможете узнать больше и про действия наркотиков на организм)

  • @savar33
    @savar33 4 ปีที่แล้ว +1

    18:00

  • @user-qq5od8ns2h
    @user-qq5od8ns2h 5 ปีที่แล้ว +4

    И чем отличается ваш синхонный код на 4:28 от "асинхронного кода" на 9:40? Что там, что тут каждая последующая строчка ждет завершения предыдущей. О чем выговорите вообще?

    • @user-qq5od8ns2h
      @user-qq5od8ns2h 5 ปีที่แล้ว +2

      Если весь прикол в том что в 1 варианте использовались тяжелые Threads, а во втором легкие Coroutines, то зачем нужно было показывать все эти Колбеки и Промисы, только голову морочите.

    • @tonypopov596
      @tonypopov596 4 ปีที่แล้ว +2

      Зависит от диспатчера
      если внутри него, например, очередь событий, то текущий контекст и стэк после вызова уйдут в очередь и трэд начнет выполнять другую операцию
      в случаях, когда мы ждем ответ от сервера, от базы, от записи на диск это сэкономит процессорное время
      в случаях долгих вычислений это способ разблокировать часть трэдов, выделив под выполнение долгих задач определенный пул

  • @ImaskarDono
    @ImaskarDono 5 ปีที่แล้ว +1

    Судя по ответу на вопрос на 51:13, получается, что пытаться переписать большой энтерпрайз код на котлин очень проблемно. Допустим, есть 20 библиотек в проекте, в каждой по 20 классов по 20 методов. И каждый из них может быть блокирующим. Теперь мы где-то пишем код на котлине с корутинами, но как только мы вызываем один из старых методов из старой библиотеки, мы не можем быть уверены, что этот метод и его дальнейшие вызовы не сделают дальше блокирующий вызов. И у старых методов неопределённый уровень вложенности, они все дру с другом переплетены. Получается, если мы хотим начать использовать корутины, то нам придётся отрефакторить вообще весь старый код, убрав из него блокирующие вызовы?

    • @user-be2cy2fb9u
      @user-be2cy2fb9u 5 ปีที่แล้ว

      полчается, что новый код нужно писать и использовать корутины, а старый раз работает - то пусть работает :)

    • @ImaskarDono
      @ImaskarDono 5 ปีที่แล้ว +1

      @@user-be2cy2fb9u старый будет блочить поток корутин и тормозить приложение

    • @user-be2cy2fb9u
      @user-be2cy2fb9u 5 ปีที่แล้ว

      @@ImaskarDono , ээээээ старый код как-то работает сейчас же, он написан с учетом блокировок... Вот и пусть работает. Работает - не трогай. В чем проблема непонятно. Если хочется залезть в него и напихать туда корутин - то ссзб

    • @ImaskarDono
      @ImaskarDono 5 ปีที่แล้ว

      @@user-be2cy2fb9u так вопрос в том, как сделать проект на корутинах, которые более удобны. Но пока нет обвязки, которая корутины учитыват (в тч орм и драйверы баз), никуда не приплывём.

    • @user-be2cy2fb9u
      @user-be2cy2fb9u 5 ปีที่แล้ว

      @@ImaskarDono, ну наверное, я пока опыта очень мало имею, поэтому судить сложно

  • @JashKa
    @JashKa 4 ปีที่แล้ว +7

    Роман просто шикарный пример того как вроде бы русскоязычный человек говорит, а 10-20% из речи - непонятно! :))))
    Ну ладно 3-5%. Но блиннннннн.... :))))
    Но не смотря на это доклад отличный, спасибо. Рекомендую перед этим докладом заслушать доклад Андрея Бреслава "Асинхронно, но понятно. Сопрограммы в Kotlin". Тогда будет ещё понятнее про что речь.

  • @vacsa
    @vacsa 5 ปีที่แล้ว +3

    Ссылку бы выложили со слайда, ленивки! А еще очень агрессивная баба с микрофоном, по другому ее и не назовешь, наверное злится, что не поняла, что такое коррутины.