Во-первых, так вы ничего не намеряете. Просто миллисекунды считать — это крайне грубо. Надо обязательно брать JMH.
Во-вторых, эта функция sequence работает через корутины. Да, там накладные расходы могуть быть побольше.
Более точным аналогом будет:
generateSequence(1 to 0) { (a, b) -> b to a + b }
.take(10)
.map { it.second }
.groupBy { it % 2 == 0 }
.forEach(::println)
В таких уроках надо упомянуть важный момент: методы наподобие map и filter на коллекциях создают новую коллекцию, то есть могут вести к серьёзному выделению памяти, даже если в конце вычислений используется один или всего несколько элементов. Для предотвращения этого надо брать последовательности (sequence) от коллекций: list.asSequence().map { ... }.filter { ...}, тогда вычисления могут быть ленивыми и без выделения памяти. Это аналог Stream в чистой Java.
Более того, если вам не нужны распараллеливаемые streams из Java, можно рекомендовать использовать только последовательности Kotlin — оверхед при выполнении может быть гораздо меньше. А ещё свои операторы для sequences написать гораздо легче, чем для streams.
У "Thinking in Java" ("Философия Java") было аж целых три издания, так вот первое — как раз вполне для новичков. В следующих напихали больше конкретных технологий. Не знаю, правда, есть ли у 1-го официальный русский перевод.
Вот стало интересно — во все эти чудо-формулы хоть когда нибудь реальные числа подставляются? (расчёты, моделирование). Или они остаются "вещами в себе" исключительно для размышления?
Ещё одна вредная для Kotlin статья, так как вы не показали почти ничего специфичного кроме data class-ов. Вот если бы DSL какой-нибудь изобразили — это было бы полезно.
IDE может ничего не делать в текущую секунду (когда бездействует), но зато она сможет сделать очень многое в следущую секунду, как только вы нажмёте на клавишу, без загрузки всяких внешних инструментов.
Возьмите себе немного Kotlin.
Ну а вообще мысль, что многопоточность может быть "простой" — это опасная иллюзия.
"Крыжик"!
Как всегда, ответа нет, зато минусы.
Переписать все уязвимости, конечно же.
(И добавить новых.)
Моноиды, складывание чисел… А можно приводить примеры из реальных приложений где это оказывается полезно?
Неверный тезис. Более верен такой: "Главная цель любого бизнеса — получение прибыли".
А уж ради прибыли могут делать что угодно.
Какое-то "пи" у вас в тексте странное — ℼ (Unicode U+213C: Double-Struck Small Pi)
Когда нормальный символ — π (U+03C0: Greek Small Letter Pi)
Вполне возможно, что правая группа — это Венера по утрам (или вечерам), остальное не знаю.
Есть вопрос — почему некторые линии выделяются из общей траектории?
Compose for Desktop — было объявлено на днях, в стадии альфы.
Во-первых, так вы ничего не намеряете. Просто миллисекунды считать — это крайне грубо. Надо обязательно брать JMH.
Во-вторых, эта функция
sequence
работает через корутины. Да, там накладные расходы могуть быть побольше.Более точным аналогом будет:
Здесь всё на обычных лямбдах и итераторах.
В таких уроках надо упомянуть важный момент: методы наподобие
map
иfilter
на коллекциях создают новую коллекцию, то есть могут вести к серьёзному выделению памяти, даже если в конце вычислений используется один или всего несколько элементов. Для предотвращения этого надо брать последовательности (sequence) от коллекций:list.asSequence().map { ... }.filter { ...}
, тогда вычисления могут быть ленивыми и без выделения памяти. Это аналогStream
в чистой Java.Более того, если вам не нужны распараллеливаемые streams из Java, можно рекомендовать использовать только последовательности Kotlin — оверхед при выполнении может быть гораздо меньше. А ещё свои операторы для sequences написать гораздо легче, чем для streams.
Вот бы ещё шейдер в стиле гравюры...
Но думаю, это даже теоретически не реализуемо, ибо требуется ручная работа.
Давным-давно есть такая вещь как XML, а для преобразования его — XSLT.
Что вы там этими клавиатурами набираете? Как жить без стрелок, PgUp/PgDn и прочего? А для почти всех IDE нужны F-клавиши.
Переключаться между десятком режимов, забивая ими голову, и скроллить через HJKL?
Каждый раз, когда вижу такие изделия, впечатление что это для того, чтобы было "как в кино у хакеров".
Эргономика должна быть не только для пальцев, но и для мозга.
У "Thinking in Java" ("Философия Java") было аж целых три издания, так вот первое — как раз вполне для новичков. В следующих напихали больше конкретных технологий. Не знаю, правда, есть ли у 1-го официальный русский перевод.
P.S. А, нет — даже уже четыре.
Компьюторщики в очередной раз решили, что чего-то знают про сознание...
Вот стало интересно — во все эти чудо-формулы хоть когда нибудь реальные числа подставляются? (расчёты, моделирование). Или они остаются "вещами в себе" исключительно для размышления?
Ещё одна вредная для Kotlin статья, так как вы не показали почти ничего специфичного кроме data class-ов. Вот если бы DSL какой-нибудь изобразили — это было бы полезно.
IDE может ничего не делать в текущую секунду (когда бездействует), но зато она сможет сделать очень многое в следущую секунду, как только вы нажмёте на клавишу, без загрузки всяких внешних инструментов.