Size: a a a

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

2020 March 14

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in Чат подкаста «Разбор Полётов»
Лучшее, что я видел в последнее время.
Нафиг Экспанисию смотреть, если есть вот это :)

https://www.facebook.com/watch/?v=164592128174334
источник

MS

Maxim Stepachev in Чат подкаста «Разбор Полётов»
Если тут есть разработчики или по или hr леруа мерлен или кто-то их знает передайте им это - я писал и звонил в поддержку но меня игнорят: https://www.youtube.com/watch?v=OE6j780QrL8
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in Чат подкаста «Разбор Полётов»
Sergei Egorov
Писал на Groovy, писал на Kotlin. Был рад вернуться в Java экосистему(!)
А на священном JavaScript/TypeScript писал?
источник

MS

Maxim Stepachev in Чат подкаста «Разбор Полётов»
@olegchir ты точно должен знать этих ребят)
источник

MS

Maxim Stepachev in Чат подкаста «Разбор Полётов»
Я видел, что ты брал интервью)
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in Чат подкаста «Разбор Полётов»
Maxim Stepachev
Я видел, что ты брал интервью)
я хз как с ними связаться не на конфе
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in Чат подкаста «Разбор Полётов»
тут надо было бы сказать "приходи на конфу X и поговори с ними сам", но я понятия не имею, где они спонсоры. Это надо узнавать в отделе, который в JRG занимается работой с партнерами
источник

MS

Maxim Stepachev in Чат подкаста «Разбор Полётов»
:) Ну я упоминал конфы:)
источник

MS

Maxim Stepachev in Чат подкаста «Разбор Полётов»
Joker отличная конфа, но если вы вернёте сырные палки на вечеринке, то будет еще круче:)
источник

MS

Maxim Stepachev in Чат подкаста «Разбор Полётов»
Или на JPoint, вообщем где-то они были, а потом их не стало:)
источник

VI

Vladimir Ivanov in Чат подкаста «Разбор Полётов»
Anton Arhipov
Экосистему! Очень важное уточнение!
А ты не хочешь к нам в подкаст придти про удаленку поговорить?
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀
А на священном JavaScript/TypeScript писал?
Да. Много.
источник

AK

Anatoliy Korovin in Чат подкаста «Разбор Полётов»
Vladimir Sitnikov
Так про любое говорят. И странно делать выводы только на основании таких фраз.

Если надо набросить на Kotlin, то и приводить нужно реально фатальные недостатки.
Например: в Kotlin есть многострочные литералы. Это круто. Но, если нужен символ $, то приходится ставить ${'$'}. Если $ часто используется, то выглядит это всё крайне плохо.
Тикет уже 8 лет обсуждается: https://youtrack.jetbrains.com/issue/KT-2425
ооо, слушай, а мне тут есть что интересного рассказать..

такая казалось бы мелкая фича как экранирование $, неожиданно может иметь под капотом много проблем:

1) вот например хваленый интероп с джавой тут может легко поломаться, если сделать экранирование такое же как в обычных литералах котлина, через backaslash, то как такую строчку в джаве написать-то вообще?

\$ воспринимается как невалидный escape char

2) мне пришлось в интерполяции для джавы пользоваться тем же самым workarond-ом: ${‘$’}{….}
потому что java даже не строит AST дерево для файла в котором такие неожиданности как невалидный backslash
источник

AA

Anton Arhipov in Чат подкаста «Разбор Полётов»
Vladimir Ivanov
А ты не хочешь к нам в подкаст придти про удаленку поговорить?
Да могу. Только я не репрезентативен, наверное.
источник

VS

Vladimir Sitnikov in Чат подкаста «Разбор Полётов»
Anatoliy Korovin
ооо, слушай, а мне тут есть что интересного рассказать..

такая казалось бы мелкая фича как экранирование $, неожиданно может иметь под капотом много проблем:

1) вот например хваленый интероп с джавой тут может легко поломаться, если сделать экранирование такое же как в обычных литералах котлина, через backaslash, то как такую строчку в джаве написать-то вообще?

\$ воспринимается как невалидный escape char

2) мне пришлось в интерполяции для джавы пользоваться тем же самым workarond-ом: ${‘$’}{….}
потому что java даже не строит AST дерево для файла в котором такие неожиданности как невалидный backslash
1.1) Интероп не ломается. Либо ты что-то особенное понимаешь под этим словом.
Строки это самые обычные java.lang.String, которым без разницы как ты их записал (в виде $ в виде \u024 или ещё как)

Интероп это не когда ты код в блокноте из одного языка в другой вставляешь. А это когда можно методы вызывать, классы наследовать и передавать Java объекты без постоянной конвертации типов.

Если ты делаешь «поддержку string interpolation в Java», то к interop это не имеет отношения.

1.2) Проблемы с $ начинаются тогда, когда какая-нибудь библиотека решит по-своему использовать смысл этого символа. Например, есть JavaPoet для генерации Java кода.
И они, такие, в API сделали методы вида .beginControlFlow("for (int i = $L; i < $L; i++)", from, to)  или даже именованные параметры:

Map<String, Object> map = new LinkedHashMap<>();
map.put("food", "tacos");
map.put("count", 3);
CodeBlock.builder().addNamed("I ate $count:L $food:L", map)


Разумеется, попытка вызвать это из Kotlin карается тем, что $ нужно экранировать. Ладно ещё в однострочных литералах достаточно \ поставить и визуально ещё читается. Но вот в многострочных получается вообще атас, и вся читабельность из-за ${‘$’} пропадает.

Они как бы сделали «лучшее API, которое было возможно в Java», а добавить альтернативный символ вместо $ не хотят.


2) В JavaScript ( https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/template_strings ) есть tagged string literals: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates

С точки зрения пользователя, конечно, забавно. С точки зрения разработчика IDE — тот ещё ад. Как сделают в Kotlin остаётся лишь гадать.
источник

VS

Vladimir Sitnikov in Чат подкаста «Разбор Полётов»
Anton Arhipov
Да могу. Только я не репрезентативен, наверное.
А вот и узнаем
источник

AK

Anatoliy Korovin in Чат подкаста «Разбор Полётов»
Vladimir Sitnikov
1.1) Интероп не ломается. Либо ты что-то особенное понимаешь под этим словом.
Строки это самые обычные java.lang.String, которым без разницы как ты их записал (в виде $ в виде \u024 или ещё как)

Интероп это не когда ты код в блокноте из одного языка в другой вставляешь. А это когда можно методы вызывать, классы наследовать и передавать Java объекты без постоянной конвертации типов.

Если ты делаешь «поддержку string interpolation в Java», то к interop это не имеет отношения.

1.2) Проблемы с $ начинаются тогда, когда какая-нибудь библиотека решит по-своему использовать смысл этого символа. Например, есть JavaPoet для генерации Java кода.
И они, такие, в API сделали методы вида .beginControlFlow("for (int i = $L; i < $L; i++)", from, to)  или даже именованные параметры:

Map<String, Object> map = new LinkedHashMap<>();
map.put("food", "tacos");
map.put("count", 3);
CodeBlock.builder().addNamed("I ate $count:L $food:L", map)


Разумеется, попытка вызвать это из Kotlin карается тем, что $ нужно экранировать. Ладно ещё в однострочных литералах достаточно \ поставить и визуально ещё читается. Но вот в многострочных получается вообще атас, и вся читабельность из-за ${‘$’} пропадает.

Они как бы сделали «лучшее API, которое было возможно в Java», а добавить альтернативный символ вместо $ не хотят.


2) В JavaScript ( https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/template_strings ) есть tagged string literals: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates

С точки зрения пользователя, конечно, забавно. С точки зрения разработчика IDE — тот ещё ад. Как сделают в Kotlin остаётся лишь гадать.
да, ты прав, насчет интеропа я погорячился, вызвать действительно можно будет код

но написать в java классе валидную строчку с таким экранированием невозможно будет
ну либо опять через этих крокодилов  ${‘$’}
или через replace, который тоже стремно выглядит…
источник

AD

Alexey Dushen in Чат подкаста «Разбор Полётов»
ну, почему бы и да
источник

AK

Anatoliy Korovin in Чат подкаста «Разбор Полётов»
Vladimir Sitnikov
1.1) Интероп не ломается. Либо ты что-то особенное понимаешь под этим словом.
Строки это самые обычные java.lang.String, которым без разницы как ты их записал (в виде $ в виде \u024 или ещё как)

Интероп это не когда ты код в блокноте из одного языка в другой вставляешь. А это когда можно методы вызывать, классы наследовать и передавать Java объекты без постоянной конвертации типов.

Если ты делаешь «поддержку string interpolation в Java», то к interop это не имеет отношения.

1.2) Проблемы с $ начинаются тогда, когда какая-нибудь библиотека решит по-своему использовать смысл этого символа. Например, есть JavaPoet для генерации Java кода.
И они, такие, в API сделали методы вида .beginControlFlow("for (int i = $L; i < $L; i++)", from, to)  или даже именованные параметры:

Map<String, Object> map = new LinkedHashMap<>();
map.put("food", "tacos");
map.put("count", 3);
CodeBlock.builder().addNamed("I ate $count:L $food:L", map)


Разумеется, попытка вызвать это из Kotlin карается тем, что $ нужно экранировать. Ладно ещё в однострочных литералах достаточно \ поставить и визуально ещё читается. Но вот в многострочных получается вообще атас, и вся читабельность из-за ${‘$’} пропадает.

Они как бы сделали «лучшее API, которое было возможно в Java», а добавить альтернативный символ вместо $ не хотят.


2) В JavaScript ( https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/template_strings ) есть tagged string literals: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates

С точки зрения пользователя, конечно, забавно. С точки зрения разработчика IDE — тот ещё ад. Как сделают в Kotlin остаётся лишь гадать.
просто интересно когда году в 2029 кто-нибудь из java архитекторов захочет нам таки принести интерполяцию из коробки, будет ли это там выглядеть так же, или нет..

есть ощущение что если котлин сейчас решит эту проблему у себя каким-нибудь способом из тикета, типа: $_
то в джаве возьмут и сделают подругому =)
источник

VG

Vik Gamov in Чат подкаста «Разбор Полётов»
Alexey Dushen
ну, почему бы и да
давно пора было
источник