Size: a a a

Programming Offtop

2020 July 23

(

( in Programming Offtop
Ilmir
Более чем. Просто я в отличие от некоторых, не фанатик забивания гвоздей микроскопом.
Тогда я сейчас закончу катку и расскажу, где ты не прав
источник

I

Ilmir in Programming Offtop
(
Тогда я сейчас закончу катку и расскажу, где ты не прав
Можешь не спешить. Обдумай. Ибо если результатом будет ырыкс - это будет означать, что "не сойти с ума" не выполняется. Попробуй отмену дерева исполнения сделать.
источник

I

Ilmir in Programming Offtop
О, даже ФП языки видят свет: https://clojure.org/news/2013/06/28/clojure-clore-async-channels
источник

I

Ilmir in Programming Offtop
"go is a macro that takes its body and examines it for any channel operations. It will turn the body into a state machine. Upon reaching any blocking operation, the state machine will be 'parked' and the actual thread of control will be released. This approach is similar to that used in C# async. When the blocking operation completes, the code will be resumed (on a thread-pool thread, or the sole thread in a JS VM). In this way the inversion of control that normally leaks into the program itself with event/callback systems is encapsulated by the mechanism, and you are left with straightforward sequential code. It will also provide the illusion of threads, and more important, separable sequential subsystems, to ClojureScript."
источник

I

Ilmir in Programming Offtop
В общем, я спать. Отвечу на твой ответ, когда проснусь.
источник

(

( in Programming Offtop
Ilmir
Эм, сейчас я тебе объясню, в чём фишка корутин. Возможно, ты не поймешь сразу, но ты можешь переспрашивать. Корутины - это из императивного программирования. Это способ взять кусок императивного кода и сделать его асинхронным и не сойти ума. Точно также, как ФП удобно для паралельного программирования, императивное удобно для асинхронного.
Если ты считаешь, что ФП - это писать комбинаторы через точку, то твой посыл уже неверен. Для ркса тоже можно написать какой-нибудь do-notation (собственно, в эрроу написали), и он будет выглядеть максимально императивно, я могу показать
Более того, иерархизация конкурентных вычислений есть в хаскеле с 2012 года: https://hackage.haskell.org/package/async
Я же говорю о том, что если бы котлин вместо того, чтобы сеять хаос в сигнатурах, которые в противном случае выглядели бы просто как fun hehmda(c: Continuation<A>, ...) мог поддержать ХКТ с тайпклассами, объединить через дырку разные экосистемы и стать великим
источник

(

( in Programming Offtop
Но перл "императивное для конкурентного, а ФП для параллельного" достоин ебанатики, уж извини Ильмир
источник

TP

Tim Plotnikov in Programming Offtop
Ilmir
Эм, сейчас я тебе объясню, в чём фишка корутин. Возможно, ты не поймешь сразу, но ты можешь переспрашивать. Корутины - это из императивного программирования. Это способ взять кусок императивного кода и сделать его асинхронным и не сойти ума. Точно также, как ФП удобно для паралельного программирования, императивное удобно для асинхронного.
Я не хочу быть тем занудой, но чуть-чуть придётся.
Со всем уважением, но мало того, что у тебя абсолютно неверное представление о проблеме, так ты ещё и распространяешь его среди молодых умов, которые могут воспринять это всерьёз.

Во-первых, «корутины - из императивного программирования» это совсем ошибочное заявление.
Корутины это легковесные потоки, НИКАКОГО отношения к парадигме программирования они не имеют.
Они дают возможность приостановить выполнение кода в определенной точке, сохранить состояние стека вызовов, выполнить другой код и вернуться к сохраненному состоянию. Тем самым реализуя многопоточность (даже на одном ядре). Более подробно смотри в вики, у кнута и ещё погугли scheme continuations.

Так же ни в коем случае не нужно использовать слова «императивный» и «асинхронный» как антонимы, это две абсолютно разных характеристики, как мокрый и красный например.

ФП действительно удобно для параллельного программирования, но лишь когда ты используешь чистые функции и не делаешь shared mutable state. Таким же удобным станет джава, если не шарить данные между потоками.

«Императивное удобно для асинхронного» - писал выше. Сравнение пальца с дверной ручкой.

Как только вы разберетесь в понятиях императивный, декларативный, параллельный, асинхронный, фп, корутина, continuation, тогда всё станет намного понятней)
источник

AE

Alexandr Emelyanov in Programming Offtop
Tim Plotnikov
Я не хочу быть тем занудой, но чуть-чуть придётся.
Со всем уважением, но мало того, что у тебя абсолютно неверное представление о проблеме, так ты ещё и распространяешь его среди молодых умов, которые могут воспринять это всерьёз.

Во-первых, «корутины - из императивного программирования» это совсем ошибочное заявление.
Корутины это легковесные потоки, НИКАКОГО отношения к парадигме программирования они не имеют.
Они дают возможность приостановить выполнение кода в определенной точке, сохранить состояние стека вызовов, выполнить другой код и вернуться к сохраненному состоянию. Тем самым реализуя многопоточность (даже на одном ядре). Более подробно смотри в вики, у кнута и ещё погугли scheme continuations.

Так же ни в коем случае не нужно использовать слова «императивный» и «асинхронный» как антонимы, это две абсолютно разных характеристики, как мокрый и красный например.

ФП действительно удобно для параллельного программирования, но лишь когда ты используешь чистые функции и не делаешь shared mutable state. Таким же удобным станет джава, если не шарить данные между потоками.

«Императивное удобно для асинхронного» - писал выше. Сравнение пальца с дверной ручкой.

Как только вы разберетесь в понятиях императивный, декларативный, параллельный, асинхронный, фп, корутина, continuation, тогда всё станет намного понятней)
Лол, человек спорит с разработчиком котлина из jb
источник

TP

Tim Plotnikov in Programming Offtop
Alexandr Emelyanov
Лол, человек спорит с разработчиком котлина из jb
Да хоть Илон Маск, если он говорит бред)
источник

AA

Andrey Akimov in Programming Offtop
Alexandr Emelyanov
Лол, человек спорит с разработчиком котлина из jb
Он же вроде как раз что-то с корутинами делает вроде, нет?)
источник

AE

Alexandr Emelyanov in Programming Offtop
Tim Plotnikov
Я не хочу быть тем занудой, но чуть-чуть придётся.
Со всем уважением, но мало того, что у тебя абсолютно неверное представление о проблеме, так ты ещё и распространяешь его среди молодых умов, которые могут воспринять это всерьёз.

Во-первых, «корутины - из императивного программирования» это совсем ошибочное заявление.
Корутины это легковесные потоки, НИКАКОГО отношения к парадигме программирования они не имеют.
Они дают возможность приостановить выполнение кода в определенной точке, сохранить состояние стека вызовов, выполнить другой код и вернуться к сохраненному состоянию. Тем самым реализуя многопоточность (даже на одном ядре). Более подробно смотри в вики, у кнута и ещё погугли scheme continuations.

Так же ни в коем случае не нужно использовать слова «императивный» и «асинхронный» как антонимы, это две абсолютно разных характеристики, как мокрый и красный например.

ФП действительно удобно для параллельного программирования, но лишь когда ты используешь чистые функции и не делаешь shared mutable state. Таким же удобным станет джава, если не шарить данные между потоками.

«Императивное удобно для асинхронного» - писал выше. Сравнение пальца с дверной ручкой.

Как только вы разберетесь в понятиях императивный, декларативный, параллельный, асинхронный, фп, корутина, continuation, тогда всё станет намного понятней)
Если что корутины это сопрограммы и многопоточность они не реализуют, это та же асинхронщина и да, она не явная и код выглядит именно императивным
источник

AE

Alexandr Emelyanov in Programming Offtop
Andrey Akimov
Он же вроде как раз что-то с корутинами делает вроде, нет?)
Не, вроде js, но врать не буду
источник

AN

Alexander Nozik in Programming Offtop
Tim Plotnikov
Я не хочу быть тем занудой, но чуть-чуть придётся.
Со всем уважением, но мало того, что у тебя абсолютно неверное представление о проблеме, так ты ещё и распространяешь его среди молодых умов, которые могут воспринять это всерьёз.

Во-первых, «корутины - из императивного программирования» это совсем ошибочное заявление.
Корутины это легковесные потоки, НИКАКОГО отношения к парадигме программирования они не имеют.
Они дают возможность приостановить выполнение кода в определенной точке, сохранить состояние стека вызовов, выполнить другой код и вернуться к сохраненному состоянию. Тем самым реализуя многопоточность (даже на одном ядре). Более подробно смотри в вики, у кнута и ещё погугли scheme continuations.

Так же ни в коем случае не нужно использовать слова «императивный» и «асинхронный» как антонимы, это две абсолютно разных характеристики, как мокрый и красный например.

ФП действительно удобно для параллельного программирования, но лишь когда ты используешь чистые функции и не делаешь shared mutable state. Таким же удобным станет джава, если не шарить данные между потоками.

«Императивное удобно для асинхронного» - писал выше. Сравнение пальца с дверной ручкой.

Как только вы разберетесь в понятиях императивный, декларативный, параллельный, асинхронный, фп, корутина, continuation, тогда всё станет намного понятней)
Корутины это НЕ легковесные потоки. Их так называют для простоты объяснения.
источник

TP

Tim Plotnikov in Programming Offtop
источник

AN

Alexander Nozik in Programming Offtop
Andrey Akimov
Он же вроде как раз что-то с корутинами делает вроде, нет?)
Кто? Ильмир? Ну так он их и пишет.
источник

TP

Tim Plotnikov in Programming Offtop
Alexander Nozik
Корутины это НЕ легковесные потоки. Их так называют для простоты объяснения.
источник

AA

Andrey Akimov in Programming Offtop
Alexander Nozik
Кто? Ильмир? Ну так он их и пишет.
Ну тогда крайне смешная ситуация, разработчику рассказывают, что он не прав)))
источник

AN

Alexander Nozik in Programming Offtop
Вы можете сколько угодно цитаты приводить, но это не станет правдой. У потоков и корутин разная семантика. Их называют легковесными потоками для упрощения понимания отдельных аспектов.
источник

AE

Alexandr Emelyanov in Programming Offtop
Alexander Nozik
Кто? Ильмир? Ну так он их и пишет.
А, ну вот
источник