Size: a a a

Чат подкаста «Разбор Полётов»

2020 May 19

AL

Alexander Levin in Чат подкаста «Разбор Полётов»
Anton Arhipov
Совместимость с жавой очень важна

И да, есть сценарии, где интуитивно хочется использовать юнионы, но наверняка можно будет закрыть эти сценарии просто немного подкрутив существующие фичи и это будет работать не хуже. Например, сделать возможность добавлять экстеншены на несколько типов - сразу важный сценарий закрыт
Ну, спорно. suspend так себе совместим с джавой, как и инлайн классы наверное. А не имея union types, страдает та же совместимость с js
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
Alexander Levin
Ну, спорно. suspend так себе совместим с джавой, как и инлайн классы наверное. А не имея union types, страдает та же совместимость с js
Я про юнион типы же
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
А не про суспенд
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
А совместимость с жавой важнее чем с жс, кмк, пока что
источник

AL

Alexander Levin in Чат подкаста «Разбор Полётов»
Anton Arhipov
Я про юнион типы же
Так и я про них. Просто, что уже есть набор фич, который не дружит с Джавой, непонятно чем повредит ещё одна фича, которая хотя бы поможет совместимости с другой платформой.
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
Alexander Levin
Так и я про них. Просто, что уже есть набор фич, который не дружит с Джавой, непонятно чем повредит ещё одна фича, которая хотя бы поможет совместимости с другой платформой.
У любой фичи есть цена
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
> сделать возможность добавлять экстеншены на несколько типов

Звучит круто.

Если сейчас такого нет, то можно ж по идее вешать estension methods на тип интерфейса? А если тип не имплементит интерфейс, но имеет те же методы с теми жа параметрами, то кастить вызовы через dynamic proxy.
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
Andrey Listochkin
> сделать возможность добавлять экстеншены на несколько типов

Звучит круто.

Если сейчас такого нет, то можно ж по идее вешать estension methods на тип интерфейса? А если тип не имплементит интерфейс, но имеет те же методы с теми жа параметрами, то кастить вызовы через dynamic proxy.
Вешать на интерфейс - можно. Но это не всегда то что ты хочешь. Например я хочу на 2 реализации навесить расширение, а на третью нет. Получается, надо заводить ещё один интерфейс для тех двух и вешать расширение на него. Это костыли
источник

AE

Alexandr Emelyanov in Чат подкаста «Разбор Полётов»
Andrey Listochkin
/cc @JBaruch

Язык хороший. Когда появился в 2016м, в него положили кучи приятных вещей, которые облегчали людям жизнь. По эргрномике язык (не окружения - ide, тулзов, библиотек) был близок к его тогдашним современникам - TS и Swift. Но имхо развиваться дальше он не стал так же быстро, как TS, и после TSа писать на Котлине очень кринжово. Вроде бы все так, но шаг вправо-влево и не хватает мелочей.

Например, array и object destructuring в Котлине работает не по именам, а по позициям полей. Штааа???

У меня есть класс, в нем id, username, email типов int, string, string. Я в коде пишу

val (id, username, email) = user;

все круто.

Теперь прилетяет реквест юзерам роли добавить. Я добавил поле role: string после юзернейма, и теперь в строке выше в переменную email попадет роль. Компилятор и Идея мне ничего не скажет. Получается, позиционные аргументы я не могу юзать без опасений. И я в 2020м году должен писать кода вида

val email = user.email;

как какой-то крестьянин.

Еще напрягает то, как в языке сделаны Корутины. Ты делаешь контекст, в нем уже можешь awaitить. Но из-за того, что асинхронный код в языке явно не виден, в Идее для мест разрывов управления слева добавлен еще один столбик гаттеров и рисуются такие извилистые стрелки. Язык создавался для JVM - среды, где полно синхронного io, и есть большой риск помешать в одном куске кода бликирующие вызовы и корутины. Явно нужно было для корутин сделать синтаксис. Его не сделали, и получается, что в свою среду разработки пришлось добавлять костылики, чтоб визуально асинхронщина была видна. Ну а если ты Котлин пишешь не в их ide, то ссзб, страдай.

Также мне как человеку, который 10 лет под JVM не писал, был непонятен зоопарк с Фьючерами. Чтобы юзать корутины, нужно все джавашные фьючи конвертить в котлиновские. Чем джавашные не угодили я хз. Но даже если и так, что, нельзя автогенерить при компиляции код для конверсии? И нельзя было его сделать для Scala/Akka фьюч и их аналогов в Clojure и мб Groovy (хз есть ли они там). А так пришлось писать дополнительные методы для конвертации ручками.

Опять же. В один мавен артифакт нельзя положить код на Java, Scala, и Kotlin сразу. Почему? Я чего-то думал, что все компилится в .class-файлы и они совместимы между собой. Почему все эти "языки будущего" на JVM за 6-17 лет не смогли друг с другом уживаться, я в упор не понимаю. Но я должен ради них дробить проект на отдельные артифакты, писать билд-скрипты для каждого и для них всех общий.

Есть вопросы по тулингу. Я не хочу в 21м веке гонять форматры-линтеры в ide ручками. Я хочу, чтоб а прекоммит хуке у меня все форматилось и линтилось само собой. Почему JetBrains не предоставляет форматилку-линтилку в виде cli-тулзы? Они что, предлагают мне в CI поднимать в доккере IDEA и по ней чем-то Силиниум-подобным кликать кнопки, чтоб провалидировать, что код в пул-реквесте правильно отформатирован? Нашлись конечно отчаянные ребята в Австралии, которые написали свой линтер. Но не понятно, как гарантируется его совместимость с форматтером, который в Idea зашит.

Я пописал на Kotlin неделю в Виксе в 2019. После TS выглядело как привет мой 2015й. Я понимаю, что им восхищаются андроидщики, тк все ж не Java 6. Но имхо надо стараться лучше.
> Опять же. В один мавен артифакт нельзя положить код на Java, Scala, и Kotlin сразу. Почему?
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
Справедливо
источник

AE

Alexandr Emelyanov in Чат подкаста «Разбор Полётов»
опоздал на раздачу?
источник

AE

Alexandr Emelyanov in Чат подкаста «Разбор Полётов»
оно всегда работало как бы
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
Alexandr Emelyanov
опоздал на раздачу?
Ну и кто из нас эстонец
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
Alexandr Emelyanov
оно всегда работало как бы
Да, мы с коллегой криворукие, уже выяснили
источник

AE

Alexandr Emelyanov in Чат подкаста «Разбор Полётов»
Anton Arhipov
Ну и кто из нас эстонец
:)
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
Вообще посыл моей тирады был не “Котлин говно”, а “Котлин - язык A tier, хотелось бы видеть его в SSS”
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
Andrey Listochkin
Вообще посыл моей тирады был не “Котлин говно”, а “Котлин - язык A tier, хотелось бы видеть его в SSS”
Sss?
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
Ну, знаешь эти видео Tier-list. Типа “раскладываем любимых супергероев по уровням крутости” У них как-ая-то странная градация. Я напишу от плохого к хорошему: F, E, D, C, B, A, S, SS, SSS, SSSS - и тд.

A - F - как оценки в школе. S - супер, SS - супер-пупер, SSS - супер-пупер-дупер или как-то так
источник

NK

ID:0 in Чат подкаста «Разбор Полётов»
Свежий выпуск вашего любимого подкаста "Разбор Полетов" !!!
"Episode 210 — Classic - Снова вместе, снова рядом" https://razborpoletov.com/2020/05/episode-210.html
источник

AE

Alexandr Emelyanov in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
А вот про базель я ничо сказать не могу. Он наверное очень хороший, ток не умеет ничего )
источник