Size: a a a

Kotlin Community

2020 November 09

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Я подчеркну. Я не противник ФП подхода. Я сам его использую. Я противник подхода ради подхода.
Может мои слова так прозвучали, но этот смысл (подход ради подхода) я в них точно не вкладывал
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
Давайте всё-таки вспомним, что это в контексте спрингов и хиберов, где аннотации без аннотейшен процессоров - редкое исключение, а не правило.
А так я не против аннотаций, инструмент как инструмент. То, что всякие спринги его абьюзят - это проблема спрингов, а не аннотаций
так все таки рефлексия или препроцессоры аннотаций?
источник

AN

Alexander Nozik in Kotlin Community
На андроид броадкасте закончился доклад Иготти про Compose Desktop: https://youtu.be/vMMFPoI_PDc. Довольно интересно безотносительно андроида.
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Во, тут со всем согласен. И мы приходим к мысли о том, что рефлексия сама по себе тоже не плоха.
Не плоха. Но, по ощущениям, у рефлексии весьма узкая ниша, и используют её сильно-сильно чаще, чем надо бы. Потому и выработался триггер: видишь обилие аннотаций - насторожись
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Не плоха. Но, по ощущениям, у рефлексии весьма узкая ниша, и используют её сильно-сильно чаще, чем надо бы. Потому и выработался триггер: видишь обилие аннотаций - насторожись
Это верно. Тем не менее тут надо не ударяться в крайности. У меня примерно та же реакция на DI. Но стараюсь держать себя в руках
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
Нативного пока нет, они скию туда не донесли, но будет
скиа же можно через cinterop притаранить
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
скиа же можно через cinterop притаранить
Вот послушай Иготти. Там проблема с тулингом. Но притаранят обязательно
источник

АО

Алексей Овсянников... in Kotlin Community
Kirill Gamazkov
Чтобы оно получилось, мне надо СРАЗУ дать ему имя класса главного окна.
А в моём кейсе окна могли создаваться не на старте, и их могло быть несколько.
Такой вот код не создаёт окна:

class Example : App() {
   companion object {
       @JvmStatic
       fun main(args: Array<String>) {
           tornadofx.launch<Example>(*args)
       }
   }
}
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
Вот послушай Иготти. Там проблема с тулингом. Но притаранят обязательно
как мне его послушать
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
как мне его послушать
выше скинул ссылку
источник

KG

Kirill Gamazkov in Kotlin Community
Alexandr Emelyanov
так все таки рефлексия или препроцессоры аннотаций?
Попробую переформулировать поточнее.
Всё, что ведёт к потере ссылочной прозрачности (и как следствию - трудностям дебага, необходимостью лишний раз ползать в документацию за описанием корнер-кейсов - чёрной магией короче) - зло.
По статистике, почти всё в спринге - это вот такая чёрная магия, начинающаяся аннотациями, а дальше уж как реализуют - рантайм-генерация, байткод-постпроцессинг и т. д.
Способ реализации непринципиален. Принципиальна потеря прозрачности. Например , если всякие @GetMapping и @PostMapping делают не совсем то, что вы от них ожидаете - очень муторно разбираться, какие ещё аннотационные заклинания нужны.
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
Попробую переформулировать поточнее.
Всё, что ведёт к потере ссылочной прозрачности (и как следствию - трудностям дебага, необходимостью лишний раз ползать в документацию за описанием корнер-кейсов - чёрной магией короче) - зло.
По статистике, почти всё в спринге - это вот такая чёрная магия, начинающаяся аннотациями, а дальше уж как реализуют - рантайм-генерация, байткод-постпроцессинг и т. д.
Способ реализации непринципиален. Принципиальна потеря прозрачности. Например , если всякие @GetMapping и @PostMapping делают не совсем то, что вы от них ожидаете - очень муторно разбираться, какие ещё аннотационные заклинания нужны.
не вижу ответа на вопрос, давайте сначала его)
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Попробую переформулировать поточнее.
Всё, что ведёт к потере ссылочной прозрачности (и как следствию - трудностям дебага, необходимостью лишний раз ползать в документацию за описанием корнер-кейсов - чёрной магией короче) - зло.
По статистике, почти всё в спринге - это вот такая чёрная магия, начинающаяся аннотациями, а дальше уж как реализуют - рантайм-генерация, байткод-постпроцессинг и т. д.
Способ реализации непринципиален. Принципиальна потеря прозрачности. Например , если всякие @GetMapping и @PostMapping делают не совсем то, что вы от них ожидаете - очень муторно разбираться, какие ещё аннотационные заклинания нужны.
Корутины на свалку?
источник

AE

Alexandr Emelyanov in Kotlin Community
я к тому что это немного о разном. в спринге нет компайлтайм генерации, как и рантайм генерации, никакого генеррируемого кода, все можно не сложно найти и посмотреть
источник

AE

Alexandr Emelyanov in Kotlin Community
Alexander Nozik
Корутины на свалку?
мапструкт тоже видимо, хотя и там можно реализацию посмотреть)
источник

KG

Kirill Gamazkov in Kotlin Community
Вообще я сюда совсем за другим пришёл. Видимо бомбанул старый нарыв, извините :)
Вопрос про корутинщину всякую. Достаточно размытый.
Подскажите, в каком направлении гуглить, чтобы понять ОГРАНИЧЕНИЯ корутин - т. е. когда их применять нежелательно или нельзя. У любого инструмента же есть область применимости.
Например, смущает в тех же Flow обещание разруливать backpressure "автомагически" через suspension. No free lunch in concurrency же, всегда нужно думать, кто на каком потоке исполнится. В какие проблемы тут можно упереться.
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Корутины на свалку?
Почему? Там с прозрачностью всё вроде в норме, нет?
источник

АО

Алексей Овсянников... in Kotlin Community
Kirill Gamazkov
Вообще я сюда совсем за другим пришёл. Видимо бомбанул старый нарыв, извините :)
Вопрос про корутинщину всякую. Достаточно размытый.
Подскажите, в каком направлении гуглить, чтобы понять ОГРАНИЧЕНИЯ корутин - т. е. когда их применять нежелательно или нельзя. У любого инструмента же есть область применимости.
Например, смущает в тех же Flow обещание разруливать backpressure "автомагически" через suspension. No free lunch in concurrency же, всегда нужно думать, кто на каком потоке исполнится. В какие проблемы тут можно упереться.
Всё просто - не применяйте их для слишком мелких операций
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
Вообще я сюда совсем за другим пришёл. Видимо бомбанул старый нарыв, извините :)
Вопрос про корутинщину всякую. Достаточно размытый.
Подскажите, в каком направлении гуглить, чтобы понять ОГРАНИЧЕНИЯ корутин - т. е. когда их применять нежелательно или нельзя. У любого инструмента же есть область применимости.
Например, смущает в тех же Flow обещание разруливать backpressure "автомагически" через suspension. No free lunch in concurrency же, всегда нужно думать, кто на каком потоке исполнится. В какие проблемы тут можно упереться.
корутины vs треды

если есть IO или другие блокирующие или асинхронные задачи - корутины
если вычисления без блокировок - треды
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Почему? Там с прозрачностью всё вроде в норме, нет?
Только за счет тулинга
источник