
Daniel
20.12.2016
11:14:36
само собой столкновения с внешним миров не избежать
но там это можно обходить например с помощью railway oriented development

Sergey
20.12.2016
11:16:27

Руслан
20.12.2016
11:16:40

Quantum Harmonizer
20.12.2016
11:17:44
? я думал в ядре будет
думаю, в ядре — поддержка новых ключевых слов и операторов, а с помощью либ — реализации этого с помощью CompletableFeature и т. п.

Google

Sergey
20.12.2016
11:18:45
ну CompletableFuture это отдельные потоки
а тут как раз таки все в одном потоке должно выполнятся со стейт машиной, не?

Quantum Harmonizer
20.12.2016
11:19:20
не

Руслан
20.12.2016
11:19:27
В скале я видел репу, https://github.com/scala/async
Там поддержка корутин слабее чем в Котлин, например там только Future, а в котлине - любой тип)

Quantum Harmonizer
20.12.2016
11:20:29
и, соответственно, есть три части — "до", "параллельно" и "после"

Sergey
20.12.2016
11:21:30
ну так корутины ж как раз таки нужны чтобы не плодить потоки
а тут выходит что они поверх потоков работают, бред

Руслан
20.12.2016
11:21:49

Quantum Harmonizer
20.12.2016
11:22:07

Руслан
20.12.2016
11:22:22

Sergey
20.12.2016
11:22:54
в чем тогда отличие будет корутин от потоков?

Quantum Harmonizer
20.12.2016
11:23:25
Корутины — не потоки, а синтаксический механизм взаимодействия с ними.

Google

Quantum Harmonizer
20.12.2016
11:25:01
Дошёл до момента, когда нужно загрузить картинку. Отдал задачу в пул, свернул future, побежал дальше в event loop.
Отрендерил сотни кадров.
Картинка пришла, продолжил future.
Только весь этот зоопарк пишется, как синхронный код.

Sergey
20.12.2016
11:27:14
одно дело когда идут переключения контекстов между потоками, а другое дело когда программа сама контролирует стейты внутри потока и перебрасывает куда нужно. но спорить не буду, я не компетентен в этом)

Руслан
20.12.2016
11:29:49

Quantum Harmonizer
20.12.2016
11:31:02
Собственно, переключение контекста не происходит, пока нет горы исполняемых потоков, конкурирующих за меньшее количество ядер

Sergey
20.12.2016
11:31:21
ну пока нет конкуренции на ядро то да
а если у тебя всего 4 ядра, или даже 2?

Quantum Harmonizer
20.12.2016
11:32:52
Ну, бывает. И всё равно, какие есть варианты, кроме как запустить отдельный поток для UI и отдельный для IO?

Sergey
20.12.2016
11:33:21
зависит от того как будет юзаться ядро при этом

Oleksandr
20.12.2016
11:33:21

Sergey
20.12.2016
11:33:29
для UI оно ж активно юзается на перерисовку
а IO наоборот не очень

Руслан
20.12.2016
11:33:45
Я могу написать async\await для своей любимой

Oleksandr
20.12.2016
11:34:55
несколько фьючеров? Оо
зачем?

Антон
20.12.2016
11:35:04

Oleksandr
20.12.2016
11:35:15
это как джавовские mapToInt, тьфу-тьфу-тьфу?

Руслан
20.12.2016
11:36:36
Трололо)
Ты точно на скале пишешь? Твиттер стек юзал?

Google

Руслан
20.12.2016
11:36:59
Напомни какая там future)

Quantum Harmonizer
20.12.2016
11:37:27

Oleksandr
20.12.2016
11:39:40
ещё есть, например, таски из скалаз, но это маргинальщина
плюс они туда-сюда конвертируются

Quantum Harmonizer
20.12.2016
11:40:38
Раз заговорили о микровещах.
invokevirtual и invokeinterface на JVM различаются по скорости?

Руслан
20.12.2016
11:40:54
Ну или вот, Future, CompletableFuture, Deffered, ListanbleFuture
Небольшой списочек)

Sergey
20.12.2016
11:41:30
>Deffered
deferred вроде

Руслан
20.12.2016
11:41:58

Sergey
20.12.2016
11:42:29
>Future
это спринговое которое, которое появилось раньше чем джавовое CompletableFuture?

Руслан
20.12.2016
11:42:31
В котлине можно сделать go)
типо:
for (x in y) go { foo(x) }
На основе корутин

Quantum Harmonizer
20.12.2016
11:43:19

Руслан
20.12.2016
11:43:29
В скале вроде scala...Future

Oleksandr
20.12.2016
11:43:36

Руслан
20.12.2016
11:43:38
На тему колличества оберток

Oleksandr
20.12.2016
11:44:14

Google

Руслан
20.12.2016
11:45:04

Aleksei
20.12.2016
11:45:08

Aliaksei
20.12.2016
11:45:21
У них один интерфейс

Руслан
20.12.2016
11:46:05
Но реализация очень сильно отличается

Aliaksei
20.12.2016
11:46:18
CompletableFuture собтсвенно и есть самая правильная футура

Руслан
20.12.2016
11:46:31
CompletableFuture еще и имплиментит CompletionStage

Admin
ERROR: S client not available

Oleksandr
20.12.2016
11:46:40

Руслан
20.12.2016
11:46:46
Но много API дает Future
Тот же AWS SDK

Aliaksei
20.12.2016
11:47:20

Руслан
20.12.2016
11:47:41
И вот тут становятся очевидным плюсы реализации корутин в котлине)

Oleksandr
20.12.2016
11:47:57

Daniel
20.12.2016
11:48:09

Руслан
20.12.2016
11:48:22
Ты пишешь await для любой футуры

Aleksei
20.12.2016
11:48:40

Руслан
20.12.2016
11:48:45
используя оптимальную реализацию

Aliaksei
20.12.2016
11:48:58
у футур нет flatMap

Руслан
20.12.2016
11:49:21
В джаве)

Google

Oleksandr
20.12.2016
11:49:37

Руслан
20.12.2016
11:50:06
> совместимость со старым — не плюс, а необходимость
в мемориз

Oleksandr
20.12.2016
11:50:38

Руслан
20.12.2016
11:51:13
Вот сюда

Aliaksei
20.12.2016
11:52:19
Да, Бреслава толк лучше посмотреть

Oleksandr
20.12.2016
11:52:52
а есть паперы какие или толки?
код, да ещё и на котлине, читать не всегда хочется

Руслан
20.12.2016
11:53:08
Там прямо ссылка на толк в ридми
Правда уже устарело
С JVMLS

Aliaksei
20.12.2016
11:54:03
Сильно устарело?
я не следил

Руслан
20.12.2016
11:54:40
Ну с выходом M02 переделали)

Oleksandr
20.12.2016
11:59:09
так было не оптимально изначально, получается?

Aliaksei
20.12.2016
11:59:32
трололо)

Pavel ?
20.12.2016
11:59:58
судя по опросу только 251 человек из 875 понимают что такое scala и kotlin

Руслан
20.12.2016
12:00:53