@ProCxx

Страница 2337 из 2477
Igor
10.09.2018
09:38:37
ну а как ты будешь классифицировать язык, в котором можно tmp, синглтоны, функциональщину с передачей лямбд с замыканиями, volatile переменные, прямой доступ к памяти по адресу, и битовые сдвиги? какой у него уровень абстракции?

Ilia
10.09.2018
09:40:17
Бессмысленно обсуждать красификации. Есть такие, какие есть.

Крис
10.09.2018
09:48:30
Здарова народ. CPP какого уровня языком считается?
По Хомскому 4го. :) От класификации зависит

Antony
10.09.2018
12:19:40
Немного чёрной магии для любителей трешачка, или каверзных вопросов на собеседованиях: https://github.com/gcc-mirror/gcc/blob/18d371d3b1d11d64f229a453e390c18493a5d661/gcc/testsuite/g%2B%2B.dg/cpp2a/is-constant-evaluated1.C#L7-L8

Google
Antony
10.09.2018
12:29:10
магия

Dmitry
10.09.2018
12:31:36
Всем привет. Кто может подсказать, в сырцах поменяли один чар например с а на б и заново собрали проект. Потом хекс сравниваем новый и предыдущий бинарь. Наблюдаем что очень многие байты кроме таймстэмпа изменились. Вопрос, может ли это быть дело рук компайлера (в этом случае был Windriver) или дело в чем то другом? Кодогенерации нет, опции компайлера и линкера не меняли.

Spoonson
10.09.2018
12:31:48
тут видимо как загадки про лжеца решать надо - могло быть в первом ответ y? нет, потому что было бы противоречие

Ilia
10.09.2018
12:46:17
Matwey
10.09.2018
12:48:21
Ты поменял программу, пересобрал, и видишь, что в исходном коде поменялся 1 байт, а в исполняемом - гораздо больше?
А предыдущий раз кто пересобирал программу? Может там другой компилятор был

Dmitry
10.09.2018
12:48:30
Я исхожу из принципа, что билд должен брать determenistic. То есть, в бинарном коде должны быть отражены изменения в исходном коде, пусть и не на что процентов. А так получается что из за одного чара в мегабайтном бинаре треть байт изменена (не смещена)

А предыдущий раз кто пересобирал программу? Может там другой компилятор был
Этого я проверить не могу, но клянуться что ничего не менялось

Google
Kirill
10.09.2018
12:56:39
Ну как минимум должен был бы поменяться один байт но несколько раз. Или не так?
Нет, например где то по коду есть функция принимающая параметр, чар - количество подходов по циклу и записывает в файл какую то фигню, но N раз. Мы меняем чар с 1 на 255 который умный компилятор инлайнит на этапе компиляции. В первом случае компилятор видит for от 0 до 1 и делает loop unrolling. Во втором нет. В первом случае в бинаре не будет цикл, во втором будет

Это один из миллиона примеров которые могут произойти в проекте от изменения одной переменной

Или в одном случае деление на это число будет использовать деление, во втором компилятор использует битовый сдвиг. И при постановке числа компилятор вообще может подсчитать результат какой нибудь формулы данные которой известны на этапе компиляции. или мы поменяли с 0 на 1, а компилятор теперь знает что теперь такое то условие может выполняться и в какой то if зайдут, значит его нельзя выкидывать

Dmitry
10.09.2018
13:04:30
Или в одном случае деление на это число будет использовать деление, во втором компилятор использует битовый сдвиг. И при постановке числа компилятор вообще может подсчитать результат какой нибудь формулы данные которой известны на этапе компиляции. или мы поменяли с 0 на 1, а компилятор теперь знает что теперь такое то условие может выполняться и в какой то if зайдут, значит его нельзя выкидывать
Но процентуально, на мегабайт бинарного кода, можно ли сказать что в моем случае скажем 30% измененных байт это нормально? Я понимаю что есть конечно девиации, но я знаю и проекты где я четко могу видеть измененные байты. А вот именно в этом проекте не могу. Собственно возникает вопрос, а что такого особенного в этом конкретном проекте, что делает его сборку не deterministic?

Kirill
10.09.2018
13:05:40
Если lto включен то, может происходить все что угодно.

Если нет, то естественно , 30% для одного чара звучит странно. НО это опять же, это вероятно. Любой исход здесь вероятен

Dmitry
10.09.2018
13:08:51
Если lto включен то, может происходить все что угодно.
Я посмотрю. Пока не знаю. Я пока статистически сравниваю картину в разных проектах и мне это в глаза бросилось. Спасибо за совет!

Если lto включен то, может происходить все что угодно.
Хмм, но снова же, алгоритм этой оптимизации должен быть детерминированный, не могу себе представить чтобы бинарь настолько изменился в сравнении с теми изменениями в коде которые я видел.

Kirill
10.09.2018
13:25:09
Мы сейчас говорим об абстракциях. Define true false тоже просто меняет один байт на другой байт. И насколько сильно изменится собранный бинарь? Я просто говорю что такое возможно, не обязательно говорю что это ваш случай, скорее всего именно нет, но такое возможно

Ilia
10.09.2018
13:39:28
Если нет, то естественно , 30% для одного чара звучит странно. НО это опять же, это вероятно. Любой исход здесь вероятен
Да блин, один сдвиг в порядке размещения символов в памяти - и ВЕСЬ исполняемый модуль будет другой

Ilia
10.09.2018
13:42:26
Почему?
Потому что делать его deterministic никому не нужно

Dmitry
10.09.2018
13:43:06
Потому что делать его deterministic никому не нужно
А от чего от тогда зависит? Ну не от погоды же )))

Ilia
10.09.2018
13:43:47
Речь не про сдвиг. А про изменение байт.
Я плохо написал. Не сдвиг, а изменение этого порядка на одну единицу, например вставка или удаление одного символа

Google
Dmitry
10.09.2018
13:45:23
Я плохо написал. Не сдвиг, а изменение этого порядка на одну единицу, например вставка или удаление одного символа
Я бы тогда это по другому видел, мне тулинг может отличить когда блоки сдвинуты,смещены,перемещены, и когда изменены

Но мыть я понял, спасибо за это!

Nevermind
10.09.2018
13:48:32
Может кто-нибудь подсказать литературу для изучения с++?

#Бекмуратов???
10.09.2018
14:12:12
java лучше или c++ для новичков

?

Assasin
10.09.2018
14:21:36
Да будет срач

Assasin
10.09.2018
14:22:01
Если серьезно, что интереснее для тебя выглядит, то и лучше

Aidar
10.09.2018
14:22:50
Golang
Googling

YaOurTea
10.09.2018
14:24:17
Борис
10.09.2018
14:37:55
java лучше или c++ для новичков
Для новичка лучше Ruby.

Daniel
10.09.2018
14:38:04
Да что уж

Го уже скретч

Kirill
10.09.2018
14:38:15
Питооон

Alexander
10.09.2018
14:38:37
так, оффтопик пожалуйста прочь

Kirill
10.09.2018
14:38:39
Но скретч это для шальников начальных классов

Alexander
10.09.2018
14:38:50
в данном чате могут посоветовать только С++

о, а тем, кто не его советовал, сейчас RO выдадим на пару дней

Egor
10.09.2018
14:39:18
+

Google
Daniel
10.09.2018
14:39:43
Начиная писать на с++ вы автоматически снимаете со страуструпа ответственность за повреждения рук и ног

Anton
10.09.2018
14:41:43
Народ, а почему указателю нельзя присвоить никакие численные литералы кроме нуля, но вот такая конструкция вполне себе катит и даже кое-где используется int *pInt = (int*)0xabcd; Т.е. в чём была проблема сделать возможным неявный каст инта в тип указателя?

Anton
10.09.2018
14:44:58
проблемы вашего компилятора
на каком компиляторе int *pInt = 0xabcd; - валидная конструкция

?

Сиие
10.09.2018
14:45:28
#define SRAM_ADDR_CS0 0xE0000000 addr = (uint16_t *)(SRAM_ADDR_CS0 | 0x800 );

Anton
10.09.2018
14:45:37
это вроде указание адреса в шестнадцатеричном виде, нет?
Это шестнадцатеричный литерал и я его написал для наглядности просто На его месте может быть int без 0x префикса

#define SRAM_ADDR_CS0 0xE0000000 addr = (uint16_t *)(SRAM_ADDR_CS0 | 0x800 );
Опять же, каст к (uint16_t *) Прочитайте вопрос ещё раз

Сиие
10.09.2018
14:49:09
Опять же, каст к (uint16_t *) Прочитайте вопрос ещё раз
сделал без каста, ворнинг но собралось

Anton
10.09.2018
14:49:26
Какой компилятор?

Сиие
10.09.2018
14:52:25
Какой компилятор?
gcc для pic32, но я думаю это не есть что-то уникальное

Anton
10.09.2018
14:52:53
Да, это вопрос флага

[Anonymous]
10.09.2018
15:15:50
жаль

Arseny
10.09.2018
15:24:42
Потому что делать его deterministic никому не нужно
Ну нет. Кому-то нужно. Взять к примеру debian.

Alexander
10.09.2018
15:25:38
Видать про @MasterZiv не слышал про воспроизводимость билдов ? и про то, какие усилия тратятся на это

Ilia
10.09.2018
15:31:21
java лучше или c++ для новичков
Конечно, для совсем новичков Java лучше. Потому что проще

Google
Aidar
10.09.2018
15:33:00
Соре сарказмом в другом чатике заразился

Ilia
10.09.2018
15:59:12
Соре сарказмом в другом чатике заразился
Ты гляди, банить придется, а то перезаражаешь и тут всех...

Dmitry
10.09.2018
16:00:36
Народ разъясните кто-нить один момент. Допустим есть у нас темплейтный класс, и есть у него нетемплейтный метод с какой-то дефолтной реализацией. Все объявлено в ашнике. В другом ашнике у меня алиас на конкретную реализацию этого темплейта. И мне хочется переопределить тот метод для этой конкретной реализации (через специализацию класса). Если этот метод переопределять в ашнике - все работает, только надо добавить инлайн. Правда в этом случае метод компилится мириад раз. Я пробовал переопределять этот метод в цппшнике, но вот только эту реализацию не видит другой код - работает дефолтной реализация из темплейта. Почему вариант с цппшнике не работает?

Страница 2337 из 2477