@kotlin_lang

Страница 725 из 982
Vladimir
27.06.2018
08:40:11
А это проблема?
Нет. Просто интересно. JVM, JS и LLVM покрывают практически всё.

Alex
27.06.2018
08:40:34
Никогда его не любил, но когда пришлось щас на стажировке на нем писать, его способ сборки внушает уважение

Андрей
27.06.2018
08:41:16
вопрос, можно ли создать инстанс переменной в её экстеншне?

Google
Андрей
27.06.2018
08:41:47
типа такого

fun <T>CacheMap<T>?.add(key:String,value:ArrayList<T>) { if (this.isReady) { this!!.value.put(key,value) } else { this = CacheMap() } }

Alexander
27.06.2018
08:42:21
А почему нет, это же статический метод под капотом.

Андрей
27.06.2018
08:42:23
ну в isReady помимо всего прочего проверка на null

да в том-то и дело

Roman
27.06.2018
08:42:35
swift-то уже сейчас есть нативно; на medium была серия статей о том, как написали приложение под android на swift
Swift только нативно и может. Swift не может в Java bytecode, поэтому на Android он будет работать только через JNI. Для игр и если делать полностью кастомный UI — норм. А вот если прикручивать к Swift приложения обычный Android UI, то это уже не сахар.

Андрей
27.06.2018
08:42:36
но в this чет не присваивается нихрена

Kirill
27.06.2018
08:42:40
Кроме Go
Go генерирует бинарный код. Kotlin/Native тоже.

Denis
27.06.2018
08:42:56
Для меня, как для разработчика под iOS сейчас главной проблемой является отсутствие автоподстановки при редактировании кода. Поэтому кросплатформенная разработка пока видится только так: Android UI и Common Businesslogic на Kotlin, а iOS UI на Swift

Alexander
27.06.2018
08:43:38
Это же вообще какое-то непотребство. Создать переменную можно но this по определению неизменен никогда

Denis
27.06.2018
08:43:43
Google
Alex
27.06.2018
08:44:07
Go генерирует бинарный код. Kotlin/Native тоже.
Через LLVM, а не сам. Разве не так?

Kirill
27.06.2018
08:44:21
Через LLVM, а не сам. Разве не так?
Так. А в чём проблема?

Alex
27.06.2018
08:44:22
Если нет, бросьте в меня тематической статьей, плиз

Так. А в чём проблема?
У гошки свой кодогенератор, он не завязан на ллвм

Denis
27.06.2018
08:44:52
Кстати, по Kotlin Nativ уже можно вопросы в этом чате задавать, или лучше пока в Slack?

Alex
27.06.2018
08:44:55
Просто отличие, никакой проблемы тут нету

Roman
27.06.2018
08:45:09
Через LLVM, а не сам. Разве не так?
Go делает это через GCC, а не через LLVM. Поэтому им никогда не летать хорошо на ARM. Увы.

Alex
27.06.2018
08:46:29
То есть, альтернатив кодогенерации в ближайшее время никакой?

Alexander
27.06.2018
08:46:43
Я бы сказал, что GCC - это недостаток. Единественнй недостаток LLVM на мой взгляд - так это отсутсвтие собственной стандартной библиотекки, чтобы совсем быть автономным.

Alex
27.06.2018
08:47:17
Что вы называете кодогенерацией?
Генерация машинного кода из IR

Alexander
27.06.2018
08:47:23
Поправочка, собственной стандартной библиотеки под windows/

Roman
27.06.2018
08:47:48
Я бы сказал, что GCC - это недостаток. Единественнй недостаток LLVM на мой взгляд - так это отсутсвтие собственной стандартной библиотекки, чтобы совсем быть автономным.
А не понимаю зачем LLVM стандартная библиотека. Стандартаные библиотеки есть в языках, которые поверх LLVM построены (C/C++, Kotlin/Native, Swift, и т.п.).

Alexander
27.06.2018
08:47:49
Генерация машинного кода из IR
А зачем тут альтернатива??

Sorry, я про CLANG

Alex
27.06.2018
08:48:52
А зачем тут альтернатива??
Хотя бы, чтобы был выбор и была конкуренция

Alexander
27.06.2018
08:48:59
Я бы рад вообще отказаться от С/С++ и не вспоминать как о кошмарном сне, но слишком часто требуется их стандартная библиотека.

Конкуренция простите чего?

Alex
27.06.2018
08:49:49
Захочу компайлер написать, и выбор бэкэнда особо не стоит - LLVM

Alexander
27.06.2018
08:49:54
Сделать что-то лучше, чем LLVM очень сложно, слишком много туда усилий вбухано. Причем система низкого уровня, какой хочешь язык поверх нее, такой и пиши

Google
Alexander
27.06.2018
08:50:14
К тому же конкуренция есть, есть Graal. Если доживем до релиза

Alex
27.06.2018
08:50:17
Если сложно, тогда ОК

Совершенно забыл, таки да

Roman
27.06.2018
08:51:18
Ну пока еще есть конкуренция и в лице GCC. Он еще тоже пока не собирается сдаваться LLVM-у без боя.

Alexander
27.06.2018
08:52:19
Есть все-таки две большие разницы, компилировать в С или компилировать в какой-то более менее нейтральный IR

Я видел уже несколько весьма симпатичных проектов, которые используют манипуляции с IR LLVM для всяких клевых метопрограммных штук.

Кстати, про котлин, я так понял, что котлин тоже переходит на схему с IR и с публичным API для работы с этим IR. Шлю, как говорится, лучи поддержки. Мне кажется, что на этом пути можно много всего полезного накопать.

Roman
27.06.2018
08:56:06
GCC != компилироваться в C. У GCC есть множество frontends (C, Fortran, Go, и т.п.) и какой-то внутренний IR, хоть и не так хорошо отделенный как в LLVM.

Konstantine
27.06.2018
08:56:15
А не понимаю зачем LLVM стандартная библиотека. Стандартаные библиотеки есть в языках, которые поверх LLVM построены (C/C++, Kotlin/Native, Swift, и т.п.).
А какая у kn стандартная либа? В jvm она почти вся состоит из тайпалиасов на жабовские типы, а тут как?

Roman
27.06.2018
08:57:11
А какая у kn стандартная либа? В jvm она почти вся состоит из тайпалиасов на жабовские типы, а тут как?
А тут всё самописное + какие-то вещи из libc используется. Мы не фашисты, как в Go, и цели совсем отказаться от libc пока не ставим, хотя в будущем можно её будет выпилить.

Quantum Harmonizer
27.06.2018
09:01:15
А какая у kn стандартная либа? В jvm она почти вся состоит из тайпалиасов на жабовские типы, а тут как?
Внезапно, большая часть kotlin-stdlib на JVM — это bulk-операции на массивах и коллекциях, умноженные на количество примитивных типов в JVM :)

Quantum Harmonizer
27.06.2018
09:06:59
Что есть bulk операции?
Операции над всей коллекцией, как forEach, map, fold, reduce, flatMap, filter.

Konstantine
27.06.2018
09:07:37
Операции над всей коллекцией, как forEach, map, fold, reduce, flatMap, filter.
А. Так я о том же. А самим писать для кн кажется довольно жирно.

Но как выяснилось именно так и делается )

Никита?❄️
27.06.2018
09:08:16
зато сколько пользы будет

Dmitry
27.06.2018
09:09:58
Go генерирует бинарный код. Kotlin/Native тоже.
Так котлин LLVM биткод выдает или бинарник!?

Google
Vishnyakov
27.06.2018
09:12:49
Биткод.
понеслась...

Kirill
27.06.2018
09:13:46
Так котлин LLVM биткод выдает или бинарник!?
Я не вполне понимаю почему это важно. На выходе бинарный код, который компилируется сразу. Под капотом компилятор котлина генерирует биткод LLVM, который дальше тут же компилируется в бинарный код.

С точки зрения реализации это интересно, как это устроено. Но с точки зрения пользователя я не уверен, что это важно.

понеслась...
Я не прав?

Dmitry
27.06.2018
09:17:09
Т.е. при сборке иос проекта этип сборки бинарника просто пропускается? Нам же не нужно бинарник в проект добавлять.

Наиль
27.06.2018
09:20:39
Эксперементирую с web клиентом на kotlin/js c react. API предоставляет KTOR. Изучаю сейчас https://github.com/Kotlin/kotlinx-io Не могу понять как базовые http запросы начать делать.

Evgeny
27.06.2018
09:25:51
как их делать с web или как оформить api на ktor?

Наиль
27.06.2018
09:28:21
как их делать на стороне клиента. конкретно сейчас это web.

но так как это multiplatform I/O library дальше это должно завестись и на других клиентах - мобильных

Evgeny
27.06.2018
09:32:57
Пока вроде нет общей библиотеки для работы с http вызовами, можно ее самому набросать, а на платформах прокидывать вызовы к axios, apache http и т.п.

Наиль
27.06.2018
09:37:05
Да, про эту возможность знаю. Пока не хочется этого делать - так как это получится самописный велосипед, ведь если я правильно понял, kotlinx.io как раз для того, чтобы унифицировать io слой между платформами. Или я неправильно понял планы JB?

Evgeny
27.06.2018
09:40:22
Да, kotlinx.io для этого но он пока в активной разработке. Поэтому пока и нет обшеплатформенной реализации.

Roman
27.06.2018
09:44:51
Так котлин LLVM биткод выдает или бинарник!?
Когда вы запускаете компилятор Kotlin/Native из командной строки, то на выходе получаете бинарник. Все эти разговоры про LLVM и биткод это просто детали внутренней архитектуры комплитора K/N. К слову, компиляторы Swift, Rust и многих других современных языков устроены внутри точто так же.

Dmitry
27.06.2018
09:47:17
Если я собираю ios приложение, котлин код будет прикладываться в виде бинарника со своим рантаймом, или в виде биткода и работать точно так же, как и соседний биткод от свифта, в одном с ним бинарнике? Этот момент совершенно не понятен

Наиль
27.06.2018
09:51:20
да я тоже не до конца понимаю. речь вот об этой штуке https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f в xcode настройка ENABLE_BITCODE

Sergey
27.06.2018
09:51:39
а ktor же будет работать нативно? у него вроде нет привязки к jvm

хотя там netty...

Наиль
27.06.2018
09:52:47
хотя там netty...
он там гвоздями не прибит. Можно подсунуть и другую реализацию

Google
Quantum Harmonizer
27.06.2018
09:52:53
хотя там netty...
там что угодно, хоть сервлеты

Sergey
27.06.2018
09:53:09
там что угодно, хоть сервлеты
ну это ждать нативный сервер, я об этом

Quantum Harmonizer
27.06.2018
09:53:16
о, надо подружить ktor и веб-сервер wizzardo

Evgeny
27.06.2018
10:15:47
кстати, https://github.com/JetBrains/kotlin не так давно стало больше 23к звезд )

Leonid
27.06.2018
10:33:06
Для http есть такое https://github.com/e5l/http-client-common/ (тоже сыроватое), а если не интересует мультиплатформа, то можно просто react’овский fetch из котлина звать

Наиль
27.06.2018
10:50:10
не знаю тот ли этот биткод, но есть такая issue https://github.com/JetBrains/kotlin-native/issues/1202
пока нет поддержки биткода по всей видимости olonho commented a day ago Seems this way valid bitcode cannot be generated, so let's close this one for now, and come back again, when focus on that feature again.

Для http есть такое https://github.com/e5l/http-client-common/ (тоже сыроватое), а если не интересует мультиплатформа, то можно просто react’овский fetch из котлина звать
Вообще, честно говоря, 6 лет занимаюсь нативной разработкой под ios и android и всегда скептически относился к кросплатформенной разработке. Постоянно поглядывал в ту сторну, но скепсис только подтверждался. А вот подход kotlin'a к мультиплатформе импонирует - скепсиса нет, у JB все получится - так держать!

Наиль
27.06.2018
11:03:01
+ для некоторых задач, где сильный упор в основном на мобилки и процент UI очень большой в проекте - тут неплохо себя начинает показывать Flutter. Для одного своего проекта как раз его начал использовать. Оба решения хороши в своих нишах. Kotlin не лезет в UI тему, а Flutter это в основном UI. Было бы здоро если взаимодейсвие между ними налаживалось со стороны обеих компаний. Это отсылка к теме о которой я уже говорил - flutter platform channels и K/N

Anton
27.06.2018
11:08:16
нет бриджа

Страница 725 из 982