Size: a a a

Programming Offtop

2020 November 18

AK

Anton Korotkikh in Programming Offtop
саша сок #KotlinGang
ну async / await можно и на лямбдах построить

fun do() = async {

}
do.await()
мутно себе это представляю, особенно когда типовй случай async await - это разлиное нагромаждение параллеьных и последовательных вызовов, их комбинации. при этом пользовтаелю абсолютно не надо запариваться какой executor и как всю эту кашу переваривает. т.е. в той же жабе нельзя эмулировать async / await
источник

с#

саша сок #KotlinGang... in Programming Offtop
Anton Korotkikh
мутно себе это представляю, особенно когда типовй случай async await - это разлиное нагромаждение параллеьных и последовательных вызовов, их комбинации. при этом пользовтаелю абсолютно не надо запариваться какой executor и как всю эту кашу переваривает. т.е. в той же жабе нельзя эмулировать async / await
можно, но оно по факту никак не будет связано с корутинами

public Promise<Int> asyncInt() {
   return async(() -> longOperation())
}

psv main(...) {
   asyncInt().await()
}
источник

AK

Anton Korotkikh in Programming Offtop
и насколько я понимаю алг.эффекты ближе к try catch, нежели к асинку. мы пробрасываем некое действие, ловим его сквозь код и возвращаемся обратно реагировать на него
источник

с#

саша сок #KotlinGang... in Programming Offtop
саша сок #KotlinGang
можно, но оно по факту никак не будет связано с корутинами

public Promise<Int> asyncInt() {
   return async(() -> longOperation())
}

psv main(...) {
   asyncInt().await()
}
просто это никому не надо, но в том же котлине async / await без всяких компиляторных штук реализовано (если не считать сами корутины это просто high-order-function)
источник

RU

Roman Ushakov in Programming Offtop
Скрипты на котлине вместо bash'а, что может быть лучше
источник

RU

Roman Ushakov in Programming Offtop
источник

VP

Vladimir Petrakovich in Programming Offtop
Roman Ushakov
Скрипты на котлине вместо bash'а, что может быть лучше
Скрипты на баше?
источник

RU

Roman Ushakov in Programming Offtop
SomeScript.sh
источник

I

Igor in Programming Offtop
Алексей
а зачем тогда вообще эффекты без типобезопасности?
Смотрим в таком порядке и потом обсудим.
1) https://youtu.be/Noeek0429rM
2) https://youtu.be/kwdK1_6N95M
@ankorotkikh @qweeeerty @themishkun
YouTube
Алгебраические эффекты. Никита Шильников.
Алгебраические эффекты — горячая тема в теории языков программирования. Регулярно выходят статьи и доклады о том, как глубже, дальше и сильнее обрабатывать эффекты. Но какое это имеет отношение к реальной жизни? Оказывается, самое непосредственное. Например, алгебраические эффекты лежат в основе механизма работы хуков в реакте, а реакт в представлении не нуждается.
В прошлом году я рассказал об общей идее эффектов и вкратце показал как выглядит код, использующий эффекты. Примеры были выборочные, а сама идея изложена в общих чертах. В этом году я хочу разобрать из чего состоит библиотека эффектов и как сделать свою. Погрузимся в детали, чтобы понять, как эффекты будут взаимодействовать с существующим кодом. Цель — наглядно убедиться, что порог входа куда ниже, чем может показаться. Посмотрим на реализацию наиболее типичных эффектов вроде получения текущего времени и доступа к общему состоянию. В конце разберем работу в многопоточной среде, чтобы совсем уж ничего не бояться.
источник

AN

Alexander Nozik in Programming Offtop
Roman Ushakov
Скрипты на котлине вместо bash'а, что может быть лучше
уже несколько вариантов. Там есть проблема долгого старта, но ее решают демоном.
источник

А

Алексей in Programming Offtop
Anton Korotkikh
и насколько я понимаю алг.эффекты ближе к try catch, нежели к асинку. мы пробрасываем некое действие, ловим его сквозь код и возвращаемся обратно реагировать на него
в хаскеле на монадах нормально эффекты делают
вроде как
источник

I

Igor in Programming Offtop
Roman Ushakov
Скрипты на котлине вместо bash'а, что может быть лучше
Ну разве что https://youtu.be/WWz1VE94bAM
YouTube
Алексей Пирогов. СКРИПТУЕМ И АВТОМАТИЗИРУЕМ БЕЗОПАСНО С HASKELL
Всем нам приходится автоматизировать рутинные задачи - кому-то сборку, кому-то резервное копирование или обработку и сбор логов. Часто для подобных задач используются динамически типизированные скриптовые языки, ведь писать скрипты на них так быстро и просто! Но написание безопасных и предсказуемо работающих скриптов требует определенной дисциплины.
Данный доклад покажет, что те же задачи, которые мы обычно решаем с помощью Bash/Python/(ваш вариант), можно решать и на Haskell, получая при этом
- большую безопасность и предсказуемость;
- кроссплатформенность (написанный однажды скрипт будет работать и в unix-подобных системах, и на Windows);
- ту же скорость и простоту разработки (типы писать не придется, не нужно будет даже ничего компилировать - если не хочется!).
источник

AK

Anton Korotkikh in Programming Offtop
саша сок #KotlinGang
можно, но оно по факту никак не будет связано с корутинами

public Promise<Int> asyncInt() {
   return async(() -> longOperation())
}

psv main(...) {
   asyncInt().await()
}
это просто жонглирование future, тут есть фундаментальная разница - асинк авейт в каноничных реализацяих заменяет колбеки. и поэтому await это совсем не то же самое что и future.get и прочие обёртки типа .await() в жабах - они блокируют ожидающий тред. а в случае колбека он не был бы заблокирован - executor бы исполнил ровно тот колбек и освободился бы для новых задач, а не ждал бы целым тредом future.get()
поэтому в жабе никакого async await быть не может. только колбек хелл, что собственно и сделанно в vertx, например. там много пользуются Future, но если приглядеться они используются там как промисы с колбеками в жс с .then().catch()
источник

А

Алексей in Programming Offtop
Anton Korotkikh
падддажи, а как можно получить алгербраические эффекты, в языке где их нет? разве это не фича самого рантайма или компулятора, что бы их реализовывать? как try catch или async await - типа, если твой яп их не поддерживает, то их у тебя не будет и нормально это никак не эмулировать
Вообще есть язык Koka со встроенными алгебраическими эффектами. В общем случае нужны монады чтобы делать кастомный и контролируемый control flow, ведь асинхронность - это тоже эффект по сути. Или генераторы в JS. Корутины одним словом.
источник

AK

Anton Korotkikh in Programming Offtop
Алексей
Вообще есть язык Koka со встроенными алгебраическими эффектами. В общем случае нужны монады чтобы делать кастомный и контролируемый control flow, ведь асинхронность - это тоже эффект по сути. Или генераторы в JS. Корутины одним словом.
я пока не думал о практической пользе - просто фича прикольная и выглядит очень интересно - возможно, с ней можно делать очень остроумные и ловкие финты ушами. или совершенно по иному делить код на модули и прочую декмопозицию, например выделять некую коллекцию хендлеров определённых эфектов в отдельную либу итд.
пока что мне самым удобным кажутся обычные грин треды, т.к. с точки зрения пользователи они самые простые, там даже нет цветов функций - просто хуячь код и не парься
источник

А

Алексей in Programming Offtop
Anton Korotkikh
я пока не думал о практической пользе - просто фича прикольная и выглядит очень интересно - возможно, с ней можно делать очень остроумные и ловкие финты ушами. или совершенно по иному делить код на модули и прочую декмопозицию, например выделять некую коллекцию хендлеров определённых эфектов в отдельную либу итд.
пока что мне самым удобным кажутся обычные грин треды, т.к. с точки зрения пользователи они самые простые, там даже нет цветов функций - просто хуячь код и не парься
для пользователей да, это самое простое
источник

А

Алексей in Programming Offtop
Anton Korotkikh
я пока не думал о практической пользе - просто фича прикольная и выглядит очень интересно - возможно, с ней можно делать очень остроумные и ловкие финты ушами. или совершенно по иному делить код на модули и прочую декмопозицию, например выделять некую коллекцию хендлеров определённых эфектов в отдельную либу итд.
пока что мне самым удобным кажутся обычные грин треды, т.к. с точки зрения пользователи они самые простые, там даже нет цветов функций - просто хуячь код и не парься
Вообще все эти эффекты, насколько я знаю, из хаскеля пошли. Где есть обычные монады, которые хороши в хеллоу ворлдах, а в реальности же  монады разных типов друг с другом плохо композируются и тут появляются всякие трансформеры и прочие штуки для решения подобных проблем. И вот одно из решений - это как раз алгебраические эффекты. Когда код написан в специальной монаде, а в её тип встроен список типов задействованных эффектов, что позволяет их более-менее удобно комбинировать.
источник

А

Алексей in Programming Offtop
То есть это такие монады на стероидах.
источник

AK

Anton Korotkikh in Programming Offtop
Алексей
Вообще все эти эффекты, насколько я знаю, из хаскеля пошли. Где есть обычные монады, которые хороши в хеллоу ворлдах, а в реальности же  монады разных типов друг с другом плохо композируются и тут появляются всякие трансформеры и прочие штуки для решения подобных проблем. И вот одно из решений - это как раз алгебраические эффекты. Когда код написан в специальной монаде, а в её тип встроен список типов задействованных эффектов, что позволяет их более-менее удобно комбинировать.
с этой точки зрения получается, что хаскелисты решают проблемы, которые сами себе же и придумали, а у адептов других экосистем таких проблем и вовсе не было
источник

А

Алексей in Programming Offtop
Anton Korotkikh
с этой точки зрения получается, что хаскелисты решают проблемы, которые сами себе же и придумали, а у адептов других экосистем таких проблем и вовсе не было
С одной стороны да, с другой стороны проблемы не совсем на пустом месте возникли и у адептов других экосистем они точно также возникают, но решаются по другому.
источник