Size: a a a

2018 March 28

AK

Alexander Kirillov in Kotlin Moscow
Ⓢⓔⓡⓖ
Почему? И то и другое- смешивание декларативщины и обычной императивной записи
Хмм, может дело в HTML-подобности. Смотрится привычнее
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Наверное
источник

AK

Alexander Kirillov in Kotlin Moscow
Ⓢⓔⓡⓖ
Но в Kotlin DSL можно задавать поведение декларативных элементов, и это гибче чем JSX который всегда превращается в React VDOM
Задавать поведение? А можно вкратце зачем это может пригодиться и как это сделать?
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Alexander Kirillov
Задавать поведение? А можно вкратце зачем это может пригодиться и как это сделать?
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
А вот оригинал
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
источник
2018 March 29

AK

Alexander Kirillov in Kotlin Moscow
Спасибо
источник
2018 March 31

Ⓢⓔⓡⓖ in Kotlin Moscow
источник
2018 April 04

Ⓢⓔⓡⓖ in Kotlin Moscow
Bssorsk
встреча где когда ?
Встреча 27 апреля в 19:00, в московском JetBrains
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Используем Kotlin для кровавого enterprise в проекте, где 95% кода на Java и 5% Kotlin.
Перечислю самые проблемные для нас вещи:
• Стек ошибок довольно часто ведёт «в никуда», то есть в отличии от родного java-стека, понять место ошибки из стека не представляется возможным
• Default methods https://youtrack.jetbrains.com/issue/KT-4779
• Нет встроенных параллельных вычислений a-la Stream. Переходы от Sequence к Stream и обратно хотя и стали лучше в последних версиях, но всё-таки не так просты
• Куцая рефлексия с постоянной конвертацией в java и обратно. Рефлексия в java прямо скажем не айс, так что непонятно почему бы её не скрыть за красивым фасадом

Кроме того, есть вещи, которых ожидаешь от свежего языка, но которых не обнаруживаешь:
• Generic function references https://youtrack.jetbrains.com/issue/KT-12140
• Нет поддержки на уровне языка отделения mutable классов от immutable, mutator/accessor методов, … что приводит к тем же проблемам в дизайне дженериков, что и у Java. Про выведение иммутабельности я уж молчу
• Вообще работа с дженериками осталась такая же убогая, как в Java. Почему бы хотя не давать сослаться на себя же? Попробуйте на Kotlin честно написать функцию clone, интерфейс SelfComparable, дженерик билдер или какой-то монадический интерфейс и вы получите всё тот же ”адъский java говнокод”, где у всякого дженерика не меньше десятка параметров, хотя все они выводятся из одного
• Нет immutable коллекций, plus для коллекций делаются через копирование
• Нет коллекций в стиле guava c ленивыми вычислениями (да, можно использовать guava + куча extensions)
• Нет полноценной поддержки copy-on-write, есть только какие-то огрызки у data class вроде copy. Да это приятно, но не чувствуется цельности
• Паттерн матчинг не знает про рефлексию. Если делать when для значения Class или KClass, например через isAssignableFrom, придётся всё равно приводить значение явно
• Reified только в inline, а inline не доступен для локальных функций. Это бывает довольно печально
• Также как JDK нет никакой поддержки иерархичных данных (TreeNode)
• Нет встроенной мемоизации для функциональных типов. Есть встроенный неплохой Lazy, и на том спасибо.
• Кроме extension методов не хватает возможности заимплементить чужому классу свой интерфейс. Конечно же только как сахар в compile time (вместо вызова extension адаптер-метода asOtherType()).

Возможно, часть проблем уже решена, а мы не знаем?
источник
2018 April 05

Ⓢⓔⓡⓖ in Kotlin Moscow
Maxim Zinchenko
Используем Kotlin для кровавого enterprise в проекте, где 95% кода на Java и 5% Kotlin.
Перечислю самые проблемные для нас вещи:
• Стек ошибок довольно часто ведёт «в никуда», то есть в отличии от родного java-стека, понять место ошибки из стека не представляется возможным
• Default methods https://youtrack.jetbrains.com/issue/KT-4779
• Нет встроенных параллельных вычислений a-la Stream. Переходы от Sequence к Stream и обратно хотя и стали лучше в последних версиях, но всё-таки не так просты
• Куцая рефлексия с постоянной конвертацией в java и обратно. Рефлексия в java прямо скажем не айс, так что непонятно почему бы её не скрыть за красивым фасадом

Кроме того, есть вещи, которых ожидаешь от свежего языка, но которых не обнаруживаешь:
• Generic function references https://youtrack.jetbrains.com/issue/KT-12140
• Нет поддержки на уровне языка отделения mutable классов от immutable, mutator/accessor методов, … что приводит к тем же проблемам в дизайне дженериков, что и у Java. Про выведение иммутабельности я уж молчу
• Вообще работа с дженериками осталась такая же убогая, как в Java. Почему бы хотя не давать сослаться на себя же? Попробуйте на Kotlin честно написать функцию clone, интерфейс SelfComparable, дженерик билдер или какой-то монадический интерфейс и вы получите всё тот же ”адъский java говнокод”, где у всякого дженерика не меньше десятка параметров, хотя все они выводятся из одного
• Нет immutable коллекций, plus для коллекций делаются через копирование
• Нет коллекций в стиле guava c ленивыми вычислениями (да, можно использовать guava + куча extensions)
• Нет полноценной поддержки copy-on-write, есть только какие-то огрызки у data class вроде copy. Да это приятно, но не чувствуется цельности
• Паттерн матчинг не знает про рефлексию. Если делать when для значения Class или KClass, например через isAssignableFrom, придётся всё равно приводить значение явно
• Reified только в inline, а inline не доступен для локальных функций. Это бывает довольно печально
• Также как JDK нет никакой поддержки иерархичных данных (TreeNode)
• Нет встроенной мемоизации для функциональных типов. Есть встроенный неплохой Lazy, и на том спасибо.
• Кроме extension методов не хватает возможности заимплементить чужому классу свой интерфейс. Конечно же только как сахар в compile time (вместо вызова extension адаптер-метода asOtherType()).

Возможно, часть проблем уже решена, а мы не знаем?
👍 вопросы явно не новичка
источник

ТБ

Тимур Бухараев in Kotlin Moscow
Ⓢⓔⓡⓖ
👍 вопросы явно не новичка
слова не мальчика, но мужа
источник

MZ

Maxim Zinchenko in Kotlin Moscow
ну так вроде заявленные предполагаемые темы тоже не для новичков :) просто в этом списке  я почти не увидел интересных мне тем, вот и решил поплакаться.
мне понравилась тема " JVM Kotlin === JVM Java? Так ли все просто или что работает быстрее?" - здесь есть много вопросов к тому, что companion object всегда превращается именно в instance. кое-какие вопросы решаются через const, но не все конечно. хотелось бы более умной компиляции.
ещё одну боль вспомнил - удивительно, но язык Koltin поддерживается в IDEA гораздо хуже, чем Java. рефакторингов мало и они работают из рук вон плохо. да что там, перенос из одного package в другой обычно становится головной болью и делается на полуручном приводе.
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Да и мы в обычной java не сильно увлекаемся авторефакторингом
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Только имена переименовать; всё остальное с большой осторожностью полуручным способом
источник

MZ

Maxim Zinchenko in Kotlin Moscow
ну, почему. многие рефакторинги для java весьма полезны. extract interface и superclass даже в случаях довольно запутанных дженериков работают довольно недурно и косяки постепенно исправляются. вручную такое делать бывает довольно муторно. extract method - довольно часто использую. change signature... попробуй-ка вручную изменить порядок аргументов.  да не, для java вот прям в какой не ткни рефакторинг, все работают хорошо и все реально нужны.
источник

MZ

Maxim Zinchenko in Kotlin Moscow
замена наследования делегированием - тоже пример простого рефакторинга, который если делать вручную может занять несколько минут. а тут раз - и никакого наследования.
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Подозреваю что множество вопросов можно делить на 2 части: Kotlin JVM и Kotlin JS
источник

MZ

Maxim Zinchenko in Kotlin Moscow
три - ещё андроид :)
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Я правильно понимаю, что если на kotlin писать под React Native, то специально андроид можно не выделять, это будет всё тот же JS?
источник