@kotlin_lang

Страница 118 из 982
Sasha
28.04.2017
17:05:56
ну вроде как жизнь должна облегчить, но пока что проблем больше. К слову, анко не первая попытка как то облегчить написание ui, но как видим все равно все пишут по старинке.

Sasha
28.04.2017
17:11:06
не все!!!11
ну я тоже анко юзаю и не только, к сожалению.

Google
? animufag ?
28.04.2017
17:12:33
А не проще изходить из проблемы, а не плодить новых?
Исходя из какой проблемы вы бы выбрали котлин?

Sasha
28.04.2017
17:13:43
Исходя из какой проблемы вы бы выбрали котлин?
Это было давно, уже не помню. Интересно было просто, наверное.

кто нибудь kotlin js юзал в андроиде?

Quantum Harmonizer
28.04.2017
17:16:29
зачем юзать JS в андроиде, если там есть почти JVM? ;)

Михаил
28.04.2017
17:17:00
react native какой-нить)

Sasha
28.04.2017
17:18:09
? animufag ?
28.04.2017
17:19:06
Это было давно, уже не помню. Интересно было просто, наверное.
Ну я к тому что большая часть всего выбирается исходя из того чем тебе интересно заниматься в рамках задачи.

Sasha
28.04.2017
17:19:29
react native какой-нить)
нет, внутри вебвью всякие фигни обрабатывать

Quantum Harmonizer
28.04.2017
17:19:46
? animufag ?
28.04.2017
17:20:51
Почему «интересно»? Как насчёт «менее больно/муторно»? :)
Ну да запилили котлин на новом проекте а работа осталась той же рутиной

Quantum Harmonizer
28.04.2017
17:21:56
Alexey
28.04.2017
17:46:11
ребят, кто вдуплил в корутины? насколько я понял этo kak Future в джаве

Google
Руслан
28.04.2017
18:09:25
https://github.com/apache/groovy закрыли груви ?

Alexey
28.04.2017
18:10:40
kak tak?

Руслан
28.04.2017
18:12:32
ребят, кто вдуплил в корутины? насколько я понял этo kak Future в джаве
Ты можешь использовать Future с корутинами, но сами корутины куда больше чем фючер

Alexey
28.04.2017
18:13:08
Ты можешь использовать Future с корутинами, но сами корутины куда больше чем фючер
я не вдуплил разницу. future же также можно запустить, и получить результат с помощью get() где нужно

Badya
28.04.2017
18:14:31
Future обычно выполняются в отдельном пуле потоков

Руслан
28.04.2017
18:14:55
Например ты скачал данные, теперь их надо обработать и отобразить/отправить

Тут конечно есть CompletableFuture

Alexey
28.04.2017
18:15:57
собственно я не понял зачем нужны корутины

Badya
28.04.2017
18:16:02
в корутине все интересней)

Alexey
28.04.2017
18:16:14
потому что не понял разницу с уже существующими Future

Badya
28.04.2017
18:16:17
потому что это все равно Future

Руслан
28.04.2017
18:16:54
Badya
28.04.2017
18:17:08
в корутине ты как бы переключаешь контекст выполнения - потоки переиспользуются и т.д.

Руслан
28.04.2017
18:17:08
А то лень с телефона всё объяснять

Badya
28.04.2017
18:18:52
опять же фьючер ты сделал - отправил и ждешь (полишь или коллбек какой) - потом обрабатываеш

а в корутине ты ее заряжаешь и уходишь делать - потом возвращаешься туда где остановился

Google
Alexey
28.04.2017
18:19:53
а, ну да если тебе надо знать когда завершилось future, тебе надо completable future

Руслан
28.04.2017
18:20:38
Ключевые отличия: Код последовательный, проще писать/читать ветвиться, делать циклы Корутины легче потока, можешь в своём коде создать много корутин

Badya
28.04.2017
18:21:13
если у тебя один поток и задача в асинке быстрая - ты не заметишь, а если у тебя в асинке варится долгая кухня - ты делаешь там yield и постоянно прокручиваешь остальные корутины - возвращаясь к долгоиграющей в свободное время

Alexey
28.04.2017
18:21:46
Ключевые отличия: Код последовательный, проще писать/читать ветвиться, делать циклы Корутины легче потока, можешь в своём коде создать много корутин
вот я не предстиавлял никогда как мождно сделать последовательный код на нескольких потоках, но rx перевернуло мое представление. Корутины чем-то похзожи на Rx ?

Badya
28.04.2017
18:22:32
Конечно легче - там новый поток можно вообще не выделять

Руслан
28.04.2017
18:23:02
В целом корутины не отменяют фьючи, можно и нужно использовать код с фьючами в коритнах. Это другой способ писать асинхронный код

Badya
28.04.2017
18:23:45
Руслан, вот тут не понятно, зачем мне фьюча если есть корутина

если в корутине мне надо будет еще асинк - я из нее сделаю корутину

Igor
28.04.2017
18:25:07
Badya
28.04.2017
18:25:08
сложности с корутинами возникают, когда исключение внутри корутины вылетает

Руслан
28.04.2017
18:25:46
перенесли на svn апаче?
Какой язык - такая система контроля версий

Igor
28.04.2017
18:26:57
Какой язык - такая система контроля версий
Даже не знаю что хуже: вендорлок или apach (groovy тоже начинал с пивотал, а где оказался)?

Badya
28.04.2017
18:28:36
Рекомендую старый доклад Сергея https://www.youtube.com/watch?v=YWLHELcvNbE

понять что такое корутина станет легче)

а ну и конечно с синхронизацией гораздо меньше заморочек

Руслан
28.04.2017
18:31:48
вот я не предстиавлял никогда как мождно сделать последовательный код на нескольких потоках, но rx перевернуло мое представление. Корутины чем-то похзожи на Rx ?
Под капотом - не знаю. С точки зрения написания кода - очень сильное различие. В Rx ты же так же чейнишься как в CompletableFuture

Quantum Harmonizer
28.04.2017
18:35:39
вот я не предстиавлял никогда как мождно сделать последовательный код на нескольких потоках, но rx перевернуло мое представление. Корутины чем-то похзожи на Rx ?
В rx нет никакой магии, ты просто отдаёшь нужный код в виде лямбд/анонимок, а Rx его выполняет там, где ты скажешь. В корутинах есть немного магии — код, написанный в синхронном стиле, выполняется асинхронно. Компилятор разбивает один метод на несколько частей, которые и выполняются асинхронно.

Google
Igor
28.04.2017
18:36:13
вот я не предстиавлял никогда как мождно сделать последовательный код на нескольких потоках, но rx перевернуло мое представление. Корутины чем-то похзожи на Rx ?
Кстати, учитывая что async/await взято с C# и ты скорее всего будешь только их юзать, вот годный доклад https://youtu.be/lh8cT6qI-nA

Руслан
28.04.2017
18:36:40
Про лёгкость есть тесты какие, или где узнать насколько конкретно легче?
Ну конкретно можно взять и запустить пару десятков миллионов корутин на машине, и посмотреть сколько памяти будет потребляться. Говорили вроде там 1-2 объекта на корутину.

Alexey
28.04.2017
18:36:43
типо там это решается как выполнять синхронно асинхронныйкод

Igor
28.04.2017
18:38:23
Ну конкретно можно взять и запустить пару десятков миллионов корутин на машине, и посмотреть сколько памяти будет потребляться. Говорили вроде там 1-2 объекта на корутину.
Давай по честному у Бреслава в видео был Delay. Если ты запустишь там реальную работу, то там быстро забъется очередь и результата от "1kk коррутин" придется ждать очень долго

Admin
ERROR: S client not available

Igor
28.04.2017
18:40:03
Ну так давай тогда и треды нагрузим полезной работой)
Про то что коррутины нельзя сравнивать и с GO-рутинами думаю все знают.

Руслан
28.04.2017
18:40:22
нет, не знаю :)

Igor
28.04.2017
18:40:47
нет, не знаю :)
Да ладно, помню тебя же прижали этим вопросом на радио-т

Quantum Harmonizer
28.04.2017
18:41:04
а чем корутина от файбера отличается?
Корутина — сахар для раскладывания Future и им подобных по потокам, fiber — легковесный поток, который суспендится, когда начинает ожидать. Если я правильно понял.

Алексей
28.04.2017
18:41:21
приветствую! решил попробовать Kotlin и внезапно для себя обнаружил довольно странное поведение при пошаговой отладке. суть в том, что если в методе есть два return'а, и выражение if, которое определяет, на какой из этих ретурнов сделать переход, делаются _оба_ ретурна

вот пример

http://screencloud.net/v/mwgIp

жму F9

http://screencloud.net/v/4K2A7

как такое может быть?

Google
Alexey
28.04.2017
18:41:33
я не слышал про fiber, черт, моя жизнь зря прожита ?

Igor
28.04.2017
18:42:21
Корутина — сахар для раскладывания Future и им подобных по потокам, fiber — легковесный поток, который суспендится, когда начинает ожидать. Если я правильно понял.
Да, коррутины это про трансформацию кода, в этом весь magic компилятор - ВСЕ Дальше это делегирование в стандарные библиотеки Java (которые можно юзать без Kotlin)

Quantum Harmonizer
28.04.2017
18:42:51
корутина в котлине так же делает
Только она делает это на уровне компилятора. FIber в Quasar, если я правильно понимаю, суспендится в рантайме, и там должна быть странная магия, типа как в ForkJoinPool.

Quantum Harmonizer
28.04.2017
18:43:42
а как fiber понимает где заснуть?
а хз, никогда не пользовался

Руслан
28.04.2017
18:44:30
Да ладно, помню тебя же прижали этим вопросом на радио-т
ну там вопрос в том что ты можешь запустить подсчет числа фибоначи и в котлине это забьет экзекьютор, в го типо нет (на самом деле я хз, если у меня цикл с чиселками остановит ли го посередине его)

а хз, никогда не пользовался
ну я помню там были аннотации @Suspend

Igor
28.04.2017
18:45:10
Только она делает это на уровне компилятора. FIber в Quasar, если я правильно понимаю, суспендится в рантайме, и там должна быть странная магия, типа как в ForkJoinPool.
По моему Бреслав рассказывал что Quasar это тоже самое что котлин коррутины, только трансформации там глобальные, а не как в Котлин внутри метода.

Руслан
28.04.2017
18:46:34
fiber @Suspendable { // The fiber will be created and will start executing this body }

Вот так в котлине использование квазара выглядит

Видимо, я слишком плохо читал Quasar.
Там много магии, типо > Using ThreadLocals in a fiber works as you’d expect – the values are local to the fiber.

Igor
28.04.2017
18:47:39
Видимо, я слишком плохо читал Quasar.
Есть теория что на JVM и не сделать нормальные файберы (как не трансформируй код) без перепила HotSpot

Igor
28.04.2017
18:50:32
нормальные это какие?
с засыпанием в любой точке (как в GO)

Руслан
28.04.2017
18:51:13
засыпание в любой точке лишь означает что чаще управление уходит в твой скедулер

Quantum Harmonizer
28.04.2017
18:51:26
с засыпанием в любой точке (как в GO)
Если "любая" точка определяется во время компиляции, то какие проблемы?

Алексей
28.04.2017
18:52:15
а разработчики Котлина тут есть?

Quantum Harmonizer
28.04.2017
18:52:27
Есть.

Страница 118 из 982