@kotlin_lang

Страница 719 из 982
Kirill
23.06.2018
21:24:55
Написать простой плагин к компилятору и плагин к грэдлу, который будет дополнительно вызывать прогард?

Можно даже обойтись анализом готового байткода, если информация об internal хранится в метадате метода (не помню хранится ли)

Quantum Harmonizer
23.06.2018
21:26:47
Как понимать «дополнительно вызывать»?

Kirill
23.06.2018
21:27:34
Как понимать «дополнительно вызывать»?
Я не помню, прогард может работать в несколько итераций? Или ему нужен полный список правил и он обрабатывает их все за раз?

Google
Kirill
23.06.2018
21:28:50
Он оптимизирует в несколько итераций: -optimizationpasses 5.
И мы можем его из грэдл таски, например, вызвать ещё раз передав новый набор правил?

Quantum Harmonizer
23.06.2018
21:29:35
Kirill
23.06.2018
21:30:49
Можно создать n тасок прогарда с разными правилами, да.
Ну круто тогда. Осталось простую программу используя библиотеку asm написать тогда :) Там строк 50 должно получиться, если данные хранятся в метадате

Quantum Harmonizer
23.06.2018
21:31:27
Не понимаю, зачем запускать прогард несколько раз. Достаточно один раз развесить аннотацию и один раз запустить прогард.

Kirill
23.06.2018
21:31:27
А вот если не хранятся -- надт думать как по байткоду понять, что метод internal, а не public

Quantum Harmonizer
23.06.2018
21:31:46
Так kotlinc как-то понимает же. Небось в метадате.

Quantum Harmonizer
23.06.2018
21:32:16
ещё можно метадату будет убрать с internal-классов)

Спасибо, буду разбираться с ASM.

Kirill
23.06.2018
21:34:45
Спасибо, буду разбираться с ASM.
Там посмотри примеры у них, они хорошо написаны. И еще тебе для простоты можно не писать visitors, а загружать сразу весь класс в память, там апи проще будет значительно

Quantum Harmonizer
23.06.2018
21:49:34
Не выглядит как задача на один вечер. Спасибо, я, пожалуй, забью...

OlegKrikun
23.06.2018
23:57:21
Ох уж этот интернал

Google
Bogdan
24.06.2018
00:01:06
ох уж эта джвм

OlegKrikun
24.06.2018
00:08:12
Арк же, какой такой джвм?

Bogdan
24.06.2018
08:54:32
apk - это андрюша только

1337
24.06.2018
09:35:42
в чем профит unsigned арифметики?

Boris
24.06.2018
09:41:26
в чем профит unsigned арифметики?
В чем профит использования экскаватора по сравнению с подъёмником?

1337
24.06.2018
09:45:42
без выебывания никак? по существу есть что сказать?

Alexei
24.06.2018
09:46:29
опа конфликт

Boris
24.06.2018
09:46:43
Alexei
24.06.2018
09:46:55
аналогия вообще не относится к вопросу

1337
24.06.2018
09:48:01
я нормальный вопрос задал исходя из закрепленного сообщения, где говорится о беззнаковой арифметике, но выебщику надо выебнуться

Boris
24.06.2018
09:48:10
Профит в том, что если тебе нужно оперировать беззнаковыми значениями, то ты можешь это делать

Alexei
24.06.2018
09:48:45
нет профит в том что у тебя в знаковой арифметике 1 разряд уходит на знак

1337
24.06.2018
09:48:59
да, что-то такое помню

инвертирование и тд

Alexei
24.06.2018
09:49:13
а так у тебя больше диапазон значени с которыми можно работать без переплнения

тадам буст к перфу

1337
24.06.2018
09:49:28
а в быстродействии?

профит только в дельте значений?

Google
1337
24.06.2018
09:50:16
10+10 от этого быстрее не станет же

Alexei
24.06.2018
09:50:29
нет

теперь у меня тупой вопрос как этот вопрос относится к кт?

1337
24.06.2018
09:51:30
см. прикрепленное сообщение

Boris
24.06.2018
09:51:35
Если мы про фичу говорим, то профит только в том, что беззнаковая арифметика с новой фичей будет прозрачной и без лишних накладных расходов

1337
24.06.2018
09:51:37
там хотят вводить эту арифметику

Bogdan
24.06.2018
09:51:49
в чем профит unsigned арифметики?
Ну например явно указываешь что тут не будет отрицательных чисел

1337
24.06.2018
09:52:12
вопрос исчерпан, спасибо

Boris
24.06.2018
09:52:21
А зачем нужна сама арифметика, это вопрос про подъемник

Bogdan
24.06.2018
09:52:48
вопрос исчерпан, спасибо
Посмотри примеры в других языках, кейсы редкие но иногда ныжны

Dmitry
24.06.2018
10:11:38
в чем профит unsigned арифметики?
В интежер будет помещаться 4 миллиарда, а не 2.

Если я правильно понял о какой фиче в котлине мы говорим

1337
24.06.2018
10:13:27
да, по факту довольно нишевая фича

не каждый день ворочаешь миллиардами

Alexander
24.06.2018
10:21:19
Беззнаковая арифметика очень полезна для ввода-вывдоа и общения с внешним кодом, который ее поддерживает. Также есть всякие внутренние применения. Классический пример - отсчет времени в наносекундах. Иногда оно ни с того, ни с сего сего становится отрицательным. Еще один пример - размер файла в байтах. Там инт как раз кончается в довольно важном месте.

Friedrich
24.06.2018
10:22:09
В нативе она очень пригодится, вот что.

Quantum Harmonizer
24.06.2018
10:22:29
Ну и байты в Java знаковые по каким-то неведомым причинам. byte[] someBinary = { тут выглядит очень странно };

Alexander
24.06.2018
10:22:32
Это точно. С сями без нее иногда очень грустно общаться.

С байтами там есть некоторый косяк, особенно когда как раз из-за знаковости, всякие IO возвращают инты вместо байтов

Google
Alexander
24.06.2018
10:24:23
Я не говорю, что виновата. В NIO и котлине это все вроде пофиксили, но просто хороший пример, где знаковая арифметика неудобна.

При этом я абсолютно против сишных кустов примитивов

Alexander
24.06.2018
10:27:10
Я не об этом. Классическая проблема - читаешь откуда-нибудь из сырых данных время, а оно внутри программы само сабой становится отрицательным.

Мой аспирант недавно так на питоне напоролся. Не указал явно, что величина положительная и для всех времен больше 20 секунд получил отрицательные времена.

Dmitry
24.06.2018
10:30:00
Мне кажется тут беззнаковость не поможет, если значения большие, надо в любом случае следить за переполнением переменной. Отрицательность - это хорошо, потому что позволяет легко увидеть ошибку.

Friedrich
24.06.2018
10:30:17
Ну, беззнаковость ему бы до 40 секунд помогла :)

Dmitry
24.06.2018
10:30:57
Ага, но на 41 секунде уже получил бы маленькое значение и все остальные результаты будут совершенно левые. И пойди разберись почему.

Alexander
24.06.2018
10:31:15
Да, но там больше 30 прибор не выдает в принципе.

Тут разговор об удобстве

Dmitry
24.06.2018
10:31:51
Тогда это отличный пример -)

Alexander
24.06.2018
10:33:36
В Java, если не ошибаюсь с 8 начиная, есть некоторые методы для беззнаковой арифметики в стандартной библиотеке. Но иметь типо-обертки, который в дизайн тайме притворяются типами, а в рантайме оптимизируются - это довольно удобно, как мне кажется. Я пока до конца эту штуку не осмыслил правда.

OlegKrikun
24.06.2018
10:57:39
Так и когда 1.3 ждать говорят? ?

Алексей
24.06.2018
10:59:39
Обновления котлина, кстати, последнее время редко происходят

Dibro
24.06.2018
10:59:39
Так и когда 1.3 ждать говорят? ?
скорее всего после 1.2.60

Алексей
24.06.2018
10:59:49
Ощущение такое, по-крайней мере

Dibro
24.06.2018
11:00:19
Обновления котлина, кстати, последнее время редко происходят
минорные вроде с такой же частотой выходят

но от 1.2 до 1.3 уже больше времени прошло, чем от 1.1 до 1.2, да

Алексей
24.06.2018
11:03:05
Да и до 1.2.50 долго шли, я на 1.2.41 до 50 долго сидел (или какая там последняя до него была?)

Google
Alexander
24.06.2018
11:39:02
Так и когда 1.3 ждать говорят? ?
В том же докладе, где собственно все ожидаемые фичи рассказывали, был разговор про конец года/начало следующего. https://youtu.be/gwk4rdgr36E?t=50m31s Естественно, срок не официальный, и даже не точный. Да и март уже далеко, на самом деле, могло всё поменяться.

Konstantine
24.06.2018
11:42:55
Выжимку бы

Anton
24.06.2018
11:44:10
на хабре была

Boris
24.06.2018
12:16:25
Quantum Harmonizer
24.06.2018
12:16:46
Не байты, а чары. И как раз по вполне понятным причинам
Чары беззнаковые. Байты знаковые -128..127

Boris
24.06.2018
12:18:57
Quantum Harmonizer
24.06.2018
12:19:38
Ну да, я так и сказал
Точно, исправил :)

Boris
24.06.2018
12:20:03
Alexander
24.06.2018
12:22:57
С чарами все плохо, они двухбайтные в яве. В котлине вроде исправлено.

Boris
24.06.2018
12:29:59
Alexander
24.06.2018
12:31:01
Сейчас посмотрел, внутреннее представление то же самое, просто обертка более разумная

Konstantine
24.06.2018
12:47:07
А как будут устроены внутри беззнаковые типы известно?

Alexander
24.06.2018
12:48:20
Как знаковые на стероидах. Согласно там видюхам, на которые все ссылаются, они будут сделаны при помощи инлайн классов, то есть оберток, которые существуют только во время компиляции.

Konstantine
24.06.2018
12:53:38
Банальное - какой у них диапазон будет? Например, [0, 2*maxint] и если да, то как этого добьются интересно.

Boris
24.06.2018
12:55:17
Konstantine
24.06.2018
12:57:10
Да uint это обычный инт, только операторы переопределены
Но как добиться с обычным интом беззнаковости нормальной? Я далек от этого, вот и интересно. Понятно, что память они одинаковую занимают, но тут то это на уровне jvm сделано, получается котлину придется как-то хитрить, чтобы сделать из обычный инты юинт.

Boris
24.06.2018
12:58:15
Ну как, можно интерпретировать знаковое значение как беззнаковое

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