В Kotlin корутины безстековые. На счет асимметричности не могу дать точного ответа, можно ли их так назвать.
Можете посмотреть подробнее в какой байткод они компилируются в этом посте
Чаще всего coroutines называют корутинами. Например сами JetBrains тут. Также, если посмотреть выступления того же Андрея Бреслава, то он тоже так их называет.
Как это сделать в Intellij Idea не знаю (хотя можно по идее плагином попробовать).
А вообще такую подсветку можно сделать в Sublime Text, и в нем открывать файл, полученный с помощью javap. Плагин для подсветки синтаксиса.
Ну на самом деле они у себя его вовсю используют. Код на Kotlin в продакшене начал использоваться еще с начала его создания (вроде 2011) и у них же проходил боевую обкатку. Сейчас полностью на Kotlin написан сервис авторизации. В Rider фронтенд также полностью написан на Kotlin. Как минимум еще тесты пишутся также на Kotlin. В своем новом проекте они также используют Kotlin.
Сам язык постепенно проникает в их проекты. Нет смысла все сразу переписывать на Kotlin, они для того и делали язык с осознанием того, чтобы он прекрасно дружил с большой кодовой базой на Java.
Если вы в таких местах используете Option, то у вас будет либо Some с объектом, либо None. В случае None вы так же теряете информацию о том что пошло не так. (в таких случае целесообразней использовать другой механизм, может тот же Either)
Там же где Option подходит, он заменяется успешно на nullable тип. (не везде, да бывают места где лучше оставить Option, но все же в большинстве случаев его можно заменить)
Но теряется возможность использовать монадический синтаксис и унифицированный код, работающий с разными типами коллекций
Просто один подход заменяется на другой. Да и для nullable типов в Kotlin есть специальные расширения для коллекций (типа filterNonNull и т.п.)
Да и я бы не сказал, что большое количество '?' делает код сильно проще.
Спорное утверждение, кому что ближе =)
Из своего опыта могу сказать что мне подход Kotlin ближе. К примеру код на Scala: fun1().flatMap( _.fun2).flatMap( _.fun3) заменяется на fun1()?.fun2()?.fun3()
Это как если бы поставщик обедов для самолётов объявил о запуске своей линии самолётов на том основании, что давно связан с отраслью и хорошо её понимает
Все же не очень корректное сравнение. Ближе будет что-то вроде этого: Создатели промышленных роботов для производства хорошо знакомы со многими отраслями, и решили открыть свою фабрику со своими роботами…
У JetBrains большая экспертиза, есть огромное количество студий под самые разные языки. Им известны проблемы, которые есть в языках, а также все проблемы создания IDE под них. Очень показателен тут пример Scala, где под популярные макросы пишутся плагины для IDE, чтобы она их нормально понимала. Для Kotlin же планируется в будущем добавить метапрограммирование, которое будет позволять делать практически тоже самое что и макросы Scala, но только чтобы оно одновременно легко встраивалось в поддержку IDE.
Поэтому они взяли лучшее что есть в других языках, добавили своих нововведений и получился Kotlin.
За C# стоит Microsoft, за джавой — оракл и понятно, что эти компании пилят компиляторы уже десятилетиями и никуда не денутся и через 20 лет. JetBrains, при всём уважении, пилит красивый текстовый редактор с рюшечками и откуда у них вдруг опыт разработки промышленного компилятора уровня «давайте выкинем Java нафиг» — не ясно
Kotlin запускается поверх JVM, Dalvik VM, и есть транслятор в Javascript (native также есть, но пока не в релизе). Java c JVM точно никуда не денется в обозримом будущем (уж очень много написано на ней и работает сейчас), а значит и Kotlin будет работать поверх JVM. Все новые версии почти сразу будут поддерживаться Kotlin, в том числе и скорая Java 9. Для Android Kotlin теперь поддерживается официально.
Ну а web слишком быстро меняется =). Андрей Бреслав на одном из выступлений сказал, что они рассматривают возможность компилироваться в WebAssembly, как технология дозреет. Это так же дает уверенность что в web можно будет с уверенностью писать на Kotlin.
Можете посмотреть подробнее в какой байткод они компилируются в этом посте
did-you-know-you-can-multithread-in-javascript
Да, это не то же самое.
Тут, конечно, не дословный перевод, но думаю смысл не сильно искажается в данном случае.
Если перевести все один к одному то текст получится тяжелый.
Для больших коллекций при большом количестве chain преобразований думаю ленивый подход лучше себя покажет
Сама Scala уже давно появилась, если поискать то наверняка будет полно уже написанных постов. Как например этот пост.
А вообще такую подсветку можно сделать в Sublime Text, и в нем открывать файл, полученный с помощью javap.
Плагин для подсветки синтаксиса.
А по поводу этой статьи, она мягко говоря не очень удачная, вместе с картинкой сверху. Больше смахивает на троллинг перехода на Kotlin.
В Kotlin есть одно неоспоримое преимущество, с ним будет больше ежедневного «фана» (original: fun) чем в других языках =)
Сам язык постепенно проникает в их проекты. Нет смысла все сразу переписывать на Kotlin, они для того и делали язык с осознанием того, чтобы он прекрасно дружил с большой кодовой базой на Java.
Там же где Option подходит, он заменяется успешно на nullable тип. (не везде, да бывают места где лучше оставить Option, но все же в большинстве случаев его можно заменить)
Просто один подход заменяется на другой. Да и для nullable типов в Kotlin есть специальные расширения для коллекций (типа filterNonNull и т.п.)
Спорное утверждение, кому что ближе =)
Из своего опыта могу сказать что мне подход Kotlin ближе. К примеру код на Scala:
fun1().flatMap( _.fun2).flatMap( _.fun3)
заменяется наfun1()?.fun2()?.fun3()
Все же не очень корректное сравнение. Ближе будет что-то вроде этого: Создатели промышленных роботов для производства хорошо знакомы со многими отраслями, и решили открыть свою фабрику со своими роботами…
У JetBrains большая экспертиза, есть огромное количество студий под самые разные языки. Им известны проблемы, которые есть в языках, а также все проблемы создания IDE под них. Очень показателен тут пример Scala, где под популярные макросы пишутся плагины для IDE, чтобы она их нормально понимала. Для Kotlin же планируется в будущем добавить метапрограммирование, которое будет позволять делать практически тоже самое что и макросы Scala, но только чтобы оно одновременно легко встраивалось в поддержку IDE.
Поэтому они взяли лучшее что есть в других языках, добавили своих нововведений и получился Kotlin.
Kotlin запускается поверх JVM, Dalvik VM, и есть транслятор в Javascript (native также есть, но пока не в релизе). Java c JVM точно никуда не денется в обозримом будущем (уж очень много написано на ней и работает сейчас), а значит и Kotlin будет работать поверх JVM. Все новые версии почти сразу будут поддерживаться Kotlin, в том числе и скорая Java 9. Для Android Kotlin теперь поддерживается официально.
Ну а web слишком быстро меняется =). Андрей Бреслав на одном из выступлений сказал, что они рассматривают возможность компилироваться в WebAssembly, как технология дозреет. Это так же дает уверенность что в web можно будет с уверенностью писать на Kotlin.