Как стать автором
Обновить

Комментарии 20

Спасибо за статью, интересно читать что то новое про котлин, а то рассказы про null-safety уже надоели.
Короутины интересная тема, после прочтения захотелось попробовать.
Спасибо за статью! На правах рекламы, если интересно увидеть практическое применение корутин в веб разработке — я написал статью как можно подружить Spring WebFlux (reactive web framework) с корутинами Котлин — blog.alexnesterov.com/post/kotlin-coroutines-and-spring-5
НЛО прилетело и опубликовало эту надпись здесь
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» механизм корутин, а сама непосредственная реализация вынесена в библиотеки.
НЛО прилетело и опубликовало эту надпись здесь
Чаще всего coroutines называют корутинами. Например сами JetBrains тут. Также, если посмотреть выступления того же Андрея Бреслава, то он тоже так их называет.

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
В Kotlin корутины безстековые. На счет асимметричности не могу дать точного ответа, можно ли их так назвать.
Можете посмотреть подробнее в какой байткод они компилируются в этом посте

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

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

Для меня остается секретом, почему в каждой подобной статье автора скрывают, что в Java это все есть и это все довольно просто использовать. Умышленно или по не знанию?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий