Pull to refresh

Comments 20

Спасибо за статью, интересно читать что то новое про котлин, а то рассказы про null-safety уже надоели.
Короутины интересная тема, после прочтения захотелось попробовать.
Спасибо за статью! На правах рекламы, если интересно увидеть практическое применение корутин в веб разработке — я написал статью как можно подружить Spring WebFlux (reactive web framework) с корутинами Котлин — blog.alexnesterov.com/post/kotlin-coroutines-and-spring-5
UFO just landed and posted this here
Concurrent Programming Style
Different styles of asynchronous/concurrent programming styles exist in various languages, which for example are: callback-based (JavaScript)

Не то же самое что


Стили многопоточного программирования
В различных языках можно встретить самые разные подходы к многопоточному программированию: основанные на callback (JavaScript)

Concurrent != Multithreaded != Asynchronous
По-моему, было бы корректнее написать


Конкурентное программирование
В различных языках можно встретить самые разные подходы к асинхронному/конкурентному программированию...

Это я к тому, что в JS нет многопоточности
PS. конкурентное тоже не очень звучит, но я не знаю как сделать лучше

Concurrent != Multithreaded != Asynchronous

Да, это не то же самое.

Не то же самое что

Тут, конечно, не дословный перевод, но думаю смысл не сильно искажается в данном случае.

Если перевести все один к одному то текст получится тяжелый.
Меня покоробило, когда я прочитал «многопоточный» и «JavaScript» в одном контексте. Мне все же кажется, что это вводит в заблуждение
Сам JS тут не причем. Это браузерная технология, которая просто позволяет запустить еще один скрипт в отличном от основного потоке, а потом поставить в очередь на выполнение в основном потоке действие (callback). По сути он все еще не многопоточный в обычном смысле этого слова. Это скорее костыль, чем системное решение. Хотя я, конечно же, могу ошибаться.
С таким подходом можно и PHP 4.x какой-нибудь считать многопоточным :) (не знаю, возможно в последних PHP есть многопоточность на уровне рантайма)

Спасибо за перевод, всегда интересно прочитать что-то новое.
Но я до сих пор не понимаю, чем корутины в Kotlin/Go концептуально отличаются от async/await/Tasks/TPL/etc, короче от асинхроно/параллельного программирования в C#? Это преподносится как нечто совершенно новое, но, каюсь, я все не могу уловить суть. Может ли кто пояснить как корутины должны реализовываться в C#?
Это не то чтобы прям совсем новое, скорее возвращение к истокам)
Новое лишь заключается в том, что в Kotlin в самом языке реализован лишь «core» механизм корутин, а сама непосредственная реализация вынесена в библиотеки.
UFO just landed and posted this here
Чаще всего coroutines называют корутинами. Например сами JetBrains тут. Также, если посмотреть выступления того же Андрея Бреслава, то он тоже так их называет.

почему class, а не класс? почему internet, а не ОГАС?

UFO just landed and posted this here
UFO just landed and posted this here
В Kotlin корутины безстековые. На счет асимметричности не могу дать точного ответа, можно ли их так назвать.
Можете посмотреть подробнее в какой байткод они компилируются в этом посте

Роман Елизаров в одном из последних выступлений говорил что Kotlin coroutines некорректно называть безстековыми. Стек есть, но только при вызовах suspend функций из suspend функций, которые могут быть произвольной вложенности.

А можете скинуть ссылку на его выступление?
В противоположность к Java, Kotlin преподносит совершенно другой стиль конкурентного программирования, не блокирующий по своей природе, который не заставляет нас запускать огромное количество нативных потоков.
Справедливости ради, в Java есть множество средств, чтобы обеспечить неблокирующую многопоточность: Atomic, Nio2, Concurrent collections. Даже BlockedQueue предоставляет неблокирующий потокобезопасный API, который позволяет без особого труда сделать коммуникацию на сообщениях между потоками (Channels?).

Для меня остается секретом, почему в каждой подобной статье автора скрывают, что в Java это все есть и это все довольно просто использовать. Умышленно или по не знанию?
Sign up to leave a comment.