Alex
Сейчас мне интересно как это красиво и идиоматично для раста сделать.
Alex
а еще я почти не умею писать на расте, ухаха.
Мерль
Он намного сложнее го
Неа, примерно одинаковые На го даже в чём то сложнее, по крайней мере почему-то людям сложнее осознавать концепцию горутин (сужу по новичкам)
Alex
я наверное ща вручную структуры запилю, потом отрефакторю на, к примеру, serde
Маjко
бля в токио ничего сложного нет
Есть, если это что-то сложнее хэлловорлда. На нем писать не удобно после async/await. Запили хотя бы банальную фьючу: запрос на сервер и, если запрос не удался, повторение его заданное количество раз
Anonymous
питон сложнее го
Alex
горутины это промисы?
Мерль
а еще я почти не умею писать на расте, ухаха.
Отличный способ изучать язык, имхо
Anonymous
как минимум асинхронность
Alex
Отличный способ изучать язык, имхо
именно, потому и взялся.
Маjко
Неа, примерно одинаковые На го даже в чём то сложнее, по крайней мере почему-то людям сложнее осознавать концепцию горутин (сужу по новичкам)
Что сложного в горутинах, если ты умеешь в треды? Если не умеешь — конечно сложно, но это проблема сложности многопоточного программирования как такового, а не го
Мерль
питон сложнее го
В смысле синтаксиса - да В смысле сложности концепций - там всё одна хрень
Alex
я с языками где есть async await мало работал
ну футуры это типо похожий принцип
Anonymous
разве повтор операции относится к фьюче?
Мерль
горутины это промисы?
Не забивай голову, у тебя есть руст :3 Неа, горутины это функции, которые выполняются асинхронно на пуле потоков
Anonymous
в js promises это тоже самое
Маjко
разве повтор операции относится к фьюче?
А вот тебе это нужно сделать внутри вложенной цепочки фьюч. Асинхронно.
Маjко
По этому да, нужна фьюча
Anonymous
хмм ок
Anonymous
попробую завтра
Маjко
Треды тоже всем мозги выносят, да
Ну вот о том и речь, что для новичка сложна концепция многопоточности, а не горутины
Маjко
Они проще тредов
Alex
а что сложного в многопоточности? кроме синхронизации конечно
Маjко
а что сложного в многопоточности? кроме синхронизации конечно
А что такое многопоточность без синхронизации? :D
Alex
числодробилка
Alex
посчитай от 5-10, посчитай от 11-20
Alex
.join()
Мерль
гринтреды это пул потоков верно? )
Неа Гринтреды - это треды, которые сделаны в рантайме языка (в отличие от системных, их обеспечивает ось) Из можно бежать в одном потоке (например, так в скале сделано вроде) или на пуле потоков (Go)
Маjко
числодробилка
Очень реальный пример использования многопоточности, да
Alex
Очень реальный пример использования многопоточности, да
посчитать что то в несколько потоков со строго заданными интервалами?
Alex
ну хз, вполне себе пример.
Маjко
Для обучния многопоточности — да
Маjко
а каким образом должно задаваться количество раз?
Переменной, глобальной переменной, чем хочешь)
Anonymous
кк
Мерль
HKT вообще не приоритет, хочу змаетить. ПРиоритет на упрощении языка и упрощении использования Tokio, чтобы его могли легко осилить ноькамеры из js/python/etc
Пока этого приоритета не видно. Хотя если запилят таки async, то моё сердце воспоет и я поверю в человечество снова
Маjко
т.е гринтреды нужны по сути для асинхронщины?
Да, это такая простая асинхронность которая выглядит как обычная многопоточная программа
Маjко
Читай саммари
Anonymous
хм
Anonymous
то есть просто делаем фьючю и внутри нее closure и вызываем его рекурсивно
Маjко
то есть просто делаем фьючю и внутри нее closure и вызываем его рекурсивно
Забыл добавить важный момент, опишу целиком: Есть список IP, хотя бы один должен быть отпингован Идем циклом пока что-нибудь не отпингуется, возвращаем IP успешного пинга Если ничего не пинганулось, возвращаем ошибку Вот так будет наиболее близко к той задаче, которую я решал
Anonymous
бля ну и какое отношение это имеет к токио?
Маjко
Суть в том что когда есть mutable state жить становится больно
Маjко
Прямое
Маjко
Есть задача
Anonymous
а
Маjко
Надо реализовать асинхронно
Маjко
Примитивами фьюч
Anonymous
lazy static там не пойдет?
Маjко
Где?
Anonymous
а стоп я понял
Anonymous
Arc Mutex нужен
Маjко
Не нужен
andrei
Vec<Future<IP>> -> Vec<Future<Result<IPOk, IPErr>>>
andrei
лол
Anonymous
о
Anonymous
а что нужно?
Маjко
Там даже RefCell не нужен, в принципе
Маjко
Да пиши как пишешь
Маjко
Проще с мьютеком или cell
Мерль
Речь о том, как правильно выполнить часть цепочки несколько раз, так?
Маjко
Я потом уже это оптимизировал и выкидывал
Anonymous
+ Есть шикарный Kotlin и потенциал для реализации новых языков на платформе безграничен. Java не C++, Oracle заложили развитие экосистемы даже без Java как центрального языка.
Лол, эт не совсем так, тот же инвоук даинемик появился не так давно. Да и посмотри на код c2 и обосрись от страха)
Маjко
Vec<Future<IP>> -> Vec<Future<Result<IPOk, IPErr>>>
Блин, это то да, но в реальной задаче так не прокатывало, так что прошу придерживаться задачи)
Anonymous
а нам же ничего не нужно мутировать
Anonymous
мютекс не нужен)))
Anonymous
надо попрактиковаться с токио
Маjко
С async await это сведется к #[async] fn ping(ips: &[IP]) -> Result<IP, PingError> { for ip in ips { match await!(ping(ip)) { Ok(ip) => return Ok(ip), _ => () } } }