[13:43:13] <ada_ru> (Максим) Интересно, то что AdaCore выложило свои проекты на github с GNAT Runtime Exception в копирайте означает что их можно юзать в проприетарщине? Или они снова затянут песню "не важно, как вы получили исходники, лицензия всё равно GPL!"
[13:45:42] <ada_ru> (I_vlxy_I) если в исходниках написана лицензия, то она такая и есть. какую бы песню они не пели.
[14:59:17] <ada_ru> (Максим) Вот люди проблемаются проверкой размерностей формул в момент вычисления. Хвалят С++ кстати. http://www.christ-usch-grein.homepage.t-online.de/Ada/Dimension/SI.html
[15:00:25] <ada_ru> (Максим) типа на шаблонах С++ это работало уже давно, а теперь это можно сделать на implementation-defined апектах GNAT
[15:10:54] <ada_ru> (I_vlxy_I) да, на плюсах про это я лет 10 назад читал
[15:11:06] <ada_ru> (I_vlxy_I) еще в F# прямо в языке это есть.
[15:13:57] <ada_ru> (I_vlxy_I) правда я читал и критику со стороны тех, кто численными методами профессионально занимается (в частности - астрономией). мол это бесполезно, ибо реальная формула всегда будет обезразмерена.
[15:14:12] <ada_ru> (I_vlxy_I) иначе у тебя вычисления будут либо медленными либо не точными.
[15:14:14] <ada_ru> (I_vlxy_I) как-то так.
[15:15:43] <OCTAGRAM> сделал окно в чатик http://ada.pascal.net.ru/latest.html теперь на сайт можно будет повесить
[15:22:39] <OCTAGRAM> могу код для AWS дать
[15:39:53] <ada_ru> (python36) <прислал документ>
[15:40:10] <ada_ru> (Максим)  отвечает (I_vlxy_I) на <иначе у тебя вычисле…>
не понятно! Это же в момент компиляции проверяется
[16:26:57] <ada_ru> (I_vlxy_I)  отвечает (Максим) на <не понятно! Это же в…>
сама структура формулы будет другая. пофиг на ЯП. в численных методах типа принято обезразмеривать формулу/уравнение перед вычислением.
[16:27:04] <ada_ru> (I_vlxy_I) хоть ты на асме пиши, хоть руками на бумажке считай.
[16:28:10] <ada_ru> (I_vlxy_I) я не помню точно формулировку проблемы которую обезразмеривание решает. поэтому врать не буду. скажу лишь, что вот человеки которые числодробилками такими занимаются, на нововведение в F# (поддержка размерностей) сказали что это прикольная игрушка которая в реальной жизни в вычислениях не нужна.
[16:30:08] <ada_ru> (I_vlxy_I) кстати, тэгированные типы (не в смысле Ады, а в смысле метки типа int тэгом этапа компиляции, чтобы не спутать его с другим int'ом, то есть как это делается в Аде когда новый тип на базе инта заводишь) в плюсах также широко применяется. Чтобы апельсины с подушками не складывать.
[16:30:58] <ada_ru> (I_vlxy_I) то что в Аде пришлось вшить в язык, то в плюсах делается просто шаблоном: Tagged<MyTag, uint32_t> — вот вам новый тип.
[17:15:30] <ada_ru> (no111u3) Хех
[17:15:46] <ada_ru> (no111u3) Тегирование через шаблон старо
[17:16:09] <ada_ru> (no111u3) Сейчас с авто можно и через значение тегировать
[17:17:53] <ada_ru> (I_vlxy_I) это как? в рантайме не будет накладных расходов?
[17:18:04] <ada_ru> (no111u3) А с чего это
[17:18:12] <ada_ru> (no111u3) Это не рантайм
[17:18:36] <ada_ru> (I_vlxy_I) можно набросок использования такого?
[17:18:37] <ada_ru> (no111u3) У тебя просто раньше нужно было заводить враппер для значений
[17:18:55] <ada_ru> (no111u3) А теперь у тебя шаблон может принимать значения
[17:19:17] <ada_ru> (I_vlxy_I) прям какая-то тень зависимых типов легла на этот чат...
[17:19:32] <ada_ru> (I_vlxy_I) можно таки пример?
[17:19:33] <ada_ru> (no111u3) Это и удобно и легко
[17:19:43] <ada_ru> (I_vlxy_I) вот чтобы удобно и легко 😊
[17:19:53] <ada_ru> (I_vlxy_I) лучше в godbolt.org
[17:20:00] <ada_ru> (no111u3) Пример вот прям щас скинуть не могу
[17:20:21] <ada_ru> (no111u3) Ибо вот вообще не дома и доступа к инету не особо
[17:20:30] <ada_ru> (no111u3) Могу поискать в загашнике
[17:21:03] <ada_ru> (I_vlxy_I) было бы хорошо
[17:26:01] <ada_ru> (I_vlxy_I) А знаете ли вы, что если в iPhone в настройках iCloud поставить галочку напротив "optimise iPhone Storage", которая, по идее, должна привести к тому, что телефон все локальные фотки закачает в облако, сотрет локальные копии и оставит у себя только их мниатюры в низком разрешении, то это приводит зачастую к тому, что процесс upload'а фоточек в облако сам по себе отжирает ВСЁ место на телефоне?
[17:26:18] <ada_ru> (I_vlxy_I) Более того, uplod в облако невозможен если у тебя на диске менее 300Мб свободного места!
[17:27:10] <ada_ru> (I_vlxy_I) Но я таки смог - я освободил место и оно смогло закачать всё. Однако после этого оно начало СКАЧИВАТЬ всё что было в облаке (видимо миниатюры вообще всех фоток что там были). Но ничего, скачалось. Со скрипом, но места хватило.
[17:27:39] <ada_ru> (I_vlxy_I) Однако сейчас оно начало обратно закачивать в облако уже всё скачанное (и то что было когда-то на телефоне и то, чего на телефоне никогда не было). И место снова закончилось o_O
[17:28:38] <ada_ru> (I_vlxy_I) Насколько криворуким программером надо быть, чтобы система оптимизации места на диске после окончании работы выжирало всё доступное место на этом самом диске?!
[17:31:05] <ada_ru> (no111u3) Мде
[17:31:41] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <лучше в godbolt.org>
template <auto ... vs> struct HeterogenousValueList {}; using MyList = HeterogenousValueList<'a', 100, 'b'>;

Это вообще о механизме по значению
[17:31:52] <ada_ru> (no111u3) А тэгирование сейчас продолжу искать
[17:32:06] <OCTAGRAM> если у них деление на ноль кладёт установщик в ноль, чего ещё ожидать
[17:32:32] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <А знаете ли вы, что …>
Слушай, а лост контактов это вообще в ифонах частое явление как я посмотрю?
[17:32:56] <ada_ru> (I_vlxy_I) у меня контакты вроде не терялись ни разу.
[17:34:05] <ada_ru> (no111u3) У меня тоже(не ифон), но вот у жены это частое явление
[17:38:49] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <вот чтобы удобно и л…>
A non-type template parameter may now be declared with placeholder type auto. Examples:
 •  template <auto X> struct constant { static constexpr auto value = X; };
 •  Delegate<&MyClass::some_function>
[17:38:58] <ada_ru> (no111u3) Это сама фича языка
[17:39:25] <ada_ru> (no111u3) Плюс добавляем сюда вывод типа и получается очень короткая запись
[17:40:37] <ada_ru> (I_vlxy_I) это начиная с какого стандарта появилось? не с++11 же?
[17:41:44] <ada_ru> (no111u3) Неа
[17:41:49] <ada_ru> (no111u3) С 17го
[17:42:08] <ada_ru> (no111u3) В 11ом ещё дофига угли было
[17:42:32] <ada_ru> (no111u3) Там даже шаблонных переменных не было
[17:43:43] <ada_ru> (I_vlxy_I) шаблонные переменные это кто такие?
[17:44:12] <ada_ru> (no111u3) Ты начиная с с++14 можешь заводить шаблонные переменные
[17:44:41] <ada_ru> (no111u3) https://en.cppreference.com/w/cpp/language/variable_template
[17:44:47] <ada_ru> (I_vlxy_I) да, я нашел уже
[17:44:53] <ada_ru> (no111u3) Вот
[17:45:25] <ada_ru> (no111u3) А в 17 ты вообще их можешь инлайнить и автовычислять тип
[17:45:43] <ada_ru> (I_vlxy_I) вахъ! сколько развлечений!
[17:45:49] <ada_ru> (no111u3) Ага
[17:46:08] <ada_ru> (no111u3) Я потому свой недофремворк и переписываю на С++17
[17:46:17] <ada_ru> (no111u3) Точнее не так
[17:46:30] <ada_ru> (no111u3) Удаляю старый ненужный теперече код
[17:47:04] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <вахъ! сколько развле…>
А ещё есть замена ифдефам
[17:47:10] <ada_ru> (no111u3) Реальная
[17:47:24] <ada_ru> (I_vlxy_I) constexpr if?
[17:47:27] <ada_ru> (no111u3) Угу
[17:48:07] <ada_ru> (no111u3) Deduction guides и до кучи всяких плюшек
[17:48:31] <ada_ru> (no111u3) Включая RVO by default
[17:49:05] <ada_ru> (no111u3) И что обидно теперь i++ + i++ перестал быть UB
[17:49:32] <ada_ru> (I_vlxy_I) этот вопрос на собеседовании заиграет новыми красками!
[17:49:39] <ada_ru> (no111u3) Ага
[17:49:59] <ada_ru> (I_vlxy_I) но на самом деле мы например только только (менее полугода назад) полноценно на С++11 перешли.
[17:50:09] <ada_ru> (I_vlxy_I) я думаю дофига где еще так.
[17:50:19] <OCTAGRAM> нет UB — вот ведь УГ
[17:50:30] <ada_ru> (no111u3) Да много кто даже с С++03 не слез
[17:50:58] <ada_ru> (no111u3)  отвечает на <(OCTAGRAM) нет UB — …>
Есть unspecified для большинства вариантов
[17:51:35] <ada_ru> (no111u3) Но порядок одноранговых операций теперь специфирован
[17:52:56] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <этот вопрос на собес…>
А вообще лулза в том что гцц старше 6 сам делает по стандарту чем приводит пбольшинство программ старых в негоднлсть
[18:06:39] <ada_ru> (nitrocerber) Прям дохнуло надёжностью..)
[18:09:12] <ada_ru> (I_vlxy_I)  отвечает (no111u3) на <А вообще лулза в том…>
дык если было UB, то он всё правильно делает! 😊
[18:09:15] <ada_ru> (I_vlxy_I) они и были негодны
[19:29:33] <ada_ru> (I_vlxy_I) https://queue.acm.org/detail.cfm?id=3212479
[21:28:35] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <дык если было UB, то…>
Вопрос что он это делает не предупреждая, без переключения на стандарт где определено это поведение
[21:29:51] <ada_ru> (no111u3) Ещё один кирпич в сторону гцц
[21:30:00] <ada_ru> (I_vlxy_I) это ж UB. если бы компиляторы сей и плюсов предупреждали о всех местах в твоей проге где у тебя UB, то мир был бы другим
[21:30:13] <ada_ru> (I_vlxy_I) если там UB, то компиль по определению имеет право сделать что хочет
[21:31:15] <ada_ru> (Maxim  Reznik) Да тяжело сишникам, что тут скажешь
[21:32:47] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <если там UB, то комп…>
Это сложно назвать UB, я бы назвал это unspecified. Так как к примеру теперь порядок вызова аргументов в функции строго один, а раньше был любой
[21:32:55] <ada_ru> (no111u3) И не только это
[21:33:24] <ada_ru> (I_vlxy_I) нет. раньше то это был UB?
[21:33:31] <ada_ru> (no111u3) То есть в текущем варианте x().x().x() валидно
[21:34:00] <ada_ru> (no111u3) Раньше порядок вызова аргументов был unspecified
[21:34:10] <ada_ru> (I_vlxy_I) и теперь компиль следует новому стандарту и делает не UB а вполне конкретное что-то? Дык это ничему не противоречит - это обратно совместимое действо
[21:35:07] <ada_ru> (no111u3) Мб
[21:35:28] <ada_ru> (no111u3) Но еще один повод поймать на быдлокоде
[21:36:28] <ada_ru> (no111u3) Раньше у тебя только оператор запятая давал определённый порядок а теперь всё
[21:36:56] <ada_ru> (I_vlxy_I) но понятна боль людей которые заложились на поведение конкретной реализации, а потом, в новой версии поведение ИЗМЕНИЛОСЬ.

хотя по стандарту закладываться было нельзя. и этот код изначально не должен был работать
[21:37:25] <ada_ru> (I_vlxy_I) у нас регулярно такую боль испытывают виндовозники когда их комит разваливается на линукс-тестах 🙂
[21:37:29] <ada_ru> (I_vlxy_I) у нас регулярно такую боль испытывают виндовозники когда их комит разваливается на линукс-тестах 🙂
[21:38:13] <ada_ru> (I_vlxy_I)  отвечает (no111u3) на <Раньше у тебя только…>
дык, круто! gcc -- молодцы! кроме того, новое правило суть подмножество старого правила. один из его вариантов. поэтому обратная совместимость тут 100 процентная!
[21:42:26] <ada_ru> (no111u3) Головная боль это тем кто код саппортит
[21:44:26] <ada_ru> (I_vlxy_I) дык разработчики рукожопы потому что.
[21:44:54] <ada_ru> (I_vlxy_I) компилятор и без всяких новых стандартов мог начать в ином порядке это дело вызывать. или не дай БоГэ на другой компиль перейти
[21:44:58] <ada_ru> (I_vlxy_I) или другую платформу
[21:45:55] <ada_ru> (I_vlxy_I) а вот то, что например Ада (точнее GNAT) как его не крути всегда по своему разумению переупорядочивает порядок операций с float'ами в выражении - вот это у меня пукан подорвало немного.
[21:46:09] <ada_ru> (no111u3) Вот
[21:46:12] <ada_ru> (I_vlxy_I) никто не переупорядочивают (если специальным флагом не попросишь), а Ада - да
[21:46:26] <ada_ru> (no111u3) Поэтому я ненавижу гцц
[21:46:47] <ada_ru> (no111u3) Его поведение немного недетерменировано
[21:46:48] <ada_ru> (I_vlxy_I) не, это не гцц, это конкретно GNAT, а возможно и все компиляторы Ады
[21:47:10] <ada_ru> (no111u3) Что говорит на это стандарт?
[21:47:52] <ada_ru> (I_vlxy_I) у g++ например тут всё чотко. я специально проверял - во всех реализациях всех языков, что на godbolt доступны - все четко. тебе оптимизируют выражение с флоатами только если ты явно разрешишь это компилятору (что, в случае с++, сломает стандарт)
[21:48:45] <ada_ru> (I_vlxy_I) Все же понимают чем черевато изменение числа и порядка операций в выражении с float/real типами?
[21:48:57] <ada_ru> (no111u3) Ну я да
[21:49:46] <ada_ru> (no111u3) Одно время я даже убегал от использования плавающей точки
[21:49:58] <ada_ru> (I_vlxy_I) Вот Максим писал:
"Максим Резник admin, [Jul 16, 2018, 1:40:21 PM]:
Там есть некоторая модель чисел, операции выражаются в этой модели.

Model of Floating Point Arithmetic
http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-G-2-1.html"
[21:50:25] <ada_ru> (I_vlxy_I) для бегства от плавающей точки в Аде есть фиксированная точка прямо в языке. однако с плавающей точкой что-то непонятное творится
[21:51:26] <ada_ru> (no111u3) Вообще назвать компилятор гнусом это было шедеврально
[21:52:43] <ada_ru> (no111u3) А за самовольство с плавающей точкой могут не понять серьёзные дядьки
[21:53:16] <ada_ru> (I_vlxy_I) t.me/adalang/12943
[21:53:21] <ada_ru> (I_vlxy_I) вот
[21:53:27] <ada_ru> (I_vlxy_I) и там дальше по тексту
[21:53:33] <ada_ru> (I_vlxy_I) можешь глянуть в историю чатика
[21:54:54] <ada_ru> (no111u3) Раст тоже так делает?
[21:55:27] <ada_ru> (no111u3) Но от ады я если честно такого не ожидал
[21:56:47] <ada_ru> (no111u3) Точнее от её компилятора
[21:56:57] <ada_ru> (no111u3) Который подают как основной
[22:00:35] <ada_ru> (I_vlxy_I) раст делает как плюсы
[22:00:40] <ada_ru> (I_vlxy_I) то есть не оптимизирует ничего
[22:00:50] <ada_ru> (I_vlxy_I) сохраняет тот порядок, который программист написал
[22:01:11] <ada_ru> (I_vlxy_I) думаю компилятор раста можно ЗАСТАВИТЬ оптимизировать, но по умолчанию он не будет этого делать
[22:01:25] <ada_ru> (I_vlxy_I) а вот Ада генерит не тот код который ты написал
[22:02:37] <ada_ru> (no111u3) Уже страно
[22:02:47] <ada_ru> (I_vlxy_I) то есть при портировании на Аду любой числодробилки можно огрести неприятных неожиданностей.
[22:02:59] <ada_ru> (no111u3) Мде
[22:03:00] <ada_ru> (I_vlxy_I) я очень надеюсь что это баг компилятора.
[22:03:09] <ada_ru> (no111u3) Погоди
[22:03:41] <ada_ru> (I_vlxy_I) (а еще больше надеюсь, что это баг моего мозга - попробуйте кто-нибудь плз. воспроизвести то, что я описал)
[22:03:52] <ada_ru> (no111u3) В аде должен быть порядок не отличимый от элементарных правил матетики
[22:04:10] <ada_ru> (no111u3) Иначе это вообще фигня получается
[22:05:37] <ada_ru> (I_vlxy_I) может тут тема в том, чтобы не зависеть от математически эквивалентных преобразований которые делает человек ради читабельности?
[22:06:03] <ada_ru> (no111u3) Это не должно быть произвольным
[22:06:31] <ada_ru> (no111u3) Иначе ошибку вычислений трудно потом предсказать
[22:07:59] <ada_ru> (Максим) @I_vlxy_I если действительно интересно, задайте вопрос адакоре? report@adacore.com (в subject должно быть слово GNAT)
[22:08:33] <ada_ru> (I_vlxy_I)  отвечает (Максим) на <@I_vlxy_I если дейст…>
а публичного багтракера нету?
[22:08:39] <ada_ru> (I_vlxy_I) хотя и так можно 🙂
[22:08:53] <ada_ru> (I_vlxy_I) заводил же я баги на плюсовую часть gcc 🙂
[22:09:59] <ada_ru> (no111u3)  отвечает (Максим) на <@I_vlxy_I если дейст…>
А теперь смотри прикол, вот появляется новый компилятор, он как кланг должен баги гната подпирать или следовать стандарту?
[22:10:53] <ada_ru> (I_vlxy_I) да и вообще, компиляторов Ады то больше одного. О! А можно ж бету старого нового компиля пощупать? Или нет?
[22:10:58] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <заводил же я баги на…>
Помню один смешной баг который гцц смог побороть только к 8ке
[22:11:11] <ada_ru> (I_vlxy_I) была же новость. ща, пойду в дайджесте пошукаю 🙂
[22:11:32] <ada_ru> (I_vlxy_I) "Если кратко: это ( http://www.rrsoftware.com/html/blog/ja-321-rel.html ) еще один (независимый от gnat) компилятор который начал поддерживать стандарт Ada-2012. Целевая платформа — Windows (от 2000 и новее)."
[22:11:33] <ada_ru> (I_vlxy_I) во
[22:11:56] <ada_ru> (no111u3) Хм
[22:12:22] <ada_ru> (no111u3) Ну на новом буке у меня винда для игор есть, думаю можно будет посмотреть
[22:13:03] <ada_ru> (I_vlxy_I) а, хотя нифига. оно платное 😕
[22:13:15] <ada_ru> (no111u3) Пичаль
[22:13:28] <ada_ru> (I_vlxy_I) там, кажется, только что-то древнее скачать можно. типа реализующее Аду 83
[22:14:22] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <а, хотя нифига. оно …>
Вопрос такой, для чего хватит 1050 с 4ГБ озу если на ней что нибудь из мат моделей погонять?
[22:15:18] <ada_ru> (I_vlxy_I) эмм.. ну на симулирование систем частиц вполне хватит. на нейросетки как-то хватит. у меня на подобном caffe гоняется вполне
[22:15:37] <ada_ru> (no111u3) Уже не плохо
[22:16:09] <ada_ru> (no111u3) Хотя чувствую что 4ГБ будет мало
[22:16:15] <ada_ru> (I_vlxy_I) но это в принципе начальный уровень на поиграться. большие тяжелые сети (особенно для обучения их), массивные вычисления там не побегут.
[22:16:28] <ada_ru> (no111u3) Я вот поиграться да
[22:17:17] <ada_ru> (no111u3) Понял что за посмотреть мне хуже не будет
[22:17:59] <ada_ru> (no111u3) А для чего-то реального я слишком мало знаю
[22:19:04] <ada_ru> (I_vlxy_I) ну собственно у нас 1050 штатная видяха для разработчиков которым не нужно учить сетки. то есть вот например у меня. запустить какую-нибудь сетку сегментационную (уже обученную) - оно может. обучать что-то в принипе может простое. как-то так
[22:19:30] <ada_ru> (no111u3) Да я хочу попробовать разное
[22:19:34] <ada_ru> (no111u3) Дрон есть
[22:19:53] <ada_ru> (no111u3) О двух колёсах с пылесборником
[22:20:18] <ada_ru> (no111u3) Так чисто посмотреть, да в бложик пописать
[22:20:49] <ada_ru> (I_vlxy_I) думаю норм для такого
[22:21:00] <ada_ru> (no111u3) Отлично
[22:21:17] <ada_ru> (no111u3) А то не простаивать же железу без дела
[22:23:05] <ada_ru> (no111u3) Заодно кланг погоняю
[22:25:09] <ada_ru> (no111u3) Отстал я с теликами и телефонами от жизни
[22:29:18] <ada_ru> (I_vlxy_I) хозяйке на заметку: godbolt.org умеет язык CUDA
[22:31:53] <ada_ru> (no111u3) Ага
[22:32:15] <ada_ru> (no111u3) Он много чего в последнее время умеет
[22:32:54] <ada_ru> (I_vlxy_I) фортран, кстати, еще не умеет
[22:33:03] <ada_ru> (I_vlxy_I) там PR, кажется, все еще висит
[22:33:58] <ada_ru> (no111u3) Фортран это такой язык конечно
[22:34:32] <ada_ru> (no111u3) В общем у меня это больная точка, поэтому не буду коментировать
[22:37:13] <ada_ru> (I_vlxy_I) ну, факт что глянуть что там фортран нагенерил в асм бывает полезно
[22:39:03] <ada_ru> (no111u3) Да
[22:44:34] <ada_ru> (no111u3) А ещё бывает это полезно когда фортран гнутый
[22:45:49] <ada_ru> (I_vlxy_I) gcc + fortran = ??? 🙂
[22:47:55] <ada_ru> (no111u3) = а что еще и так бывает?!
[22:49:30] <ada_ru> (no111u3) Особенно это забавляло когда тебе приносят рабочий код собранный непонятно какой версией компилятора и говорят: оно же работает интегрируйте
[22:49:49] <ada_ru> (no111u3) А еще желательно многопоточно
[22:53:27] <ada_ru> (no111u3) В итоге меня это так достало что я понятным языком объяснил профессору что если он не переведёт своё чудо хотябы на С у нас с его институтом нифига не выйдет
[22:58:01] <ada_ru> (I_vlxy_I) математики имеют свойство довольно кучеряво код писать 🙂
[22:58:05] <ada_ru> (I_vlxy_I) на любом языке
[22:58:41] <ada_ru> (no111u3) Особенно прикладные
[22:59:19] <ada_ru> (no111u3) Но на С вероятность правильной сборки возрастает в разы
[22:59:44] <ada_ru> (no111u3) Ну и плюс 20 - 30% к идентичной работе
[22:59:53] <ada_ru> (I_vlxy_I) почему, кстати? вроде как минимум не меньше мест где можно ногу отстрелить
[23:00:15] <ada_ru> (I_vlxy_I) у нас машинлернеры периодически стреляют в ногу на плюсах. я потом разбираюсь
[23:00:40] <ada_ru> (no111u3) У фортрана гнутый компилер отличается по генерации кода от тех что под винду
[23:00:56] <ada_ru> (no111u3) И по стандартной либе тоже
[23:01:15] <ada_ru> (I_vlxy_I) у фортрана с соблюдением стандартов еще хуже чем у плюсов?
[23:01:21] <ada_ru> (no111u3) Да
[23:01:26] <ada_ru> (no111u3) Гораздо
[23:01:59] <ada_ru> (no111u3) И да, на фортране часто прибегают к хакам
[23:02:16] <ada_ru> (no111u3) Которые гнутая версия выворачивает на изнанку
[23:03:37] <ada_ru> (I_vlxy_I) гм. подумал вот может реально clang попробовать и для арма тоже.. а то у нас есть некоторые проблема с санитайзерами под arm.
[23:03:42] <ada_ru> (I_vlxy_I) приходится их отключать
[23:04:34] <ada_ru> (no111u3) Кланг под арм да
[23:04:50] <ada_ru> (no111u3) Если до сих пор не юзали: зря
[23:05:01] <ada_ru> (I_vlxy_I) впрочем, под x86_64 тоже у одной машинлернинговой либы проблемы с санитайзерами
[23:05:17] <ada_ru> (I_vlxy_I) если собрать с санитайзерами, то при калибровке openmp там случается дедлок
[23:05:33] <ada_ru> (I_vlxy_I) то есть прямо на этапе инициализации либы. до входа в main даже
[23:05:43] <ada_ru> (no111u3) А под х86_64 у кланга как говорит один мой хороший знакомы перевес
[23:05:57] <ada_ru> (no111u3) В пользу скорости
[23:06:25] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <если собрать с санит…>
Никогда не любил эту либу
[23:07:11] <ada_ru> (I_vlxy_I) ну, можно её любить можно нет, но от нее зависит mxnet например. и именно mxnet просто умирает из за санитайзеров на этапе инициализации
[23:07:33] <ada_ru> (no111u3) Хм
[23:07:49] <ada_ru> (no111u3) Это какой версией гцц собирали?
[23:08:12] <ada_ru> (I_vlxy_I) 5.4
[23:08:24] <ada_ru> (I_vlxy_I) штатный убунтовый gcc
[23:08:27] <ada_ru> (I_vlxy_I) 16.04
[23:08:48] <ada_ru> (no111u3) Возьмите поновее
[23:09:03] <ada_ru> (no111u3) У 5.4 есть ряд багов
[23:09:15] <ada_ru> (I_vlxy_I) дык если без санитайзера собрать то всё норм 🙂
[23:09:30] <ada_ru> (no111u3) Там и с санитайзерами
[23:09:38] <ada_ru> (no111u3) И со стандартной либой
[23:09:51] <ada_ru> (no111u3) И ещё много с чем
[23:10:19] <ada_ru> (I_vlxy_I) а. там еще нюанс - эта версия компилятора является официальной для ряда либ и железа. так что так просто от нее не избавиться
[23:10:28] <ada_ru> (no111u3) Эх
[23:10:35] <ada_ru> (no111u3) Пичаль
[23:10:47] <ada_ru> (I_vlxy_I) ну, слушай, мы хотя бы с 4.8 перешли 🙂
[23:10:57] <ada_ru> (no111u3) Фу фу фу
[23:11:00] <ada_ru> (I_vlxy_I) и наконец с msvs 2012 ушли 🙂
[23:11:15] <ada_ru> (no111u3) 4.8 это вообще вне закона
[23:11:18] <ada_ru> (no111u3) 4.9
[23:11:27] <ada_ru> (no111u3) Норм
[23:11:39] <ada_ru> (I_vlxy_I) год назад яндекс в некоторых своих частях именно 4.8 юзал активно
[23:11:51] <ada_ru> (I_vlxy_I) и убунту 14.04
[23:11:56] <ada_ru> (no111u3) Он быстрей 5.4 и поддержка стд там выправлена
[23:12:04] <ada_ru> (no111u3) Яндекс не показатель
[23:12:21] <ada_ru> (I_vlxy_I) но я согласен, что 4.9 лучше, да
[23:12:29] <ada_ru> (I_vlxy_I) он мне кажется даже адекватней чем 5.4
[23:12:45] <ada_ru> (no111u3) Гугл вон до сих пор магию макросов юзает при том что с++11 в хромом бай факт
[23:12:52] <ada_ru> (I_vlxy_I) (у себя на рабочей машине я в основном собираю вообще с помощью zapcc, коий суть clang 5.0)
[23:12:59] <ada_ru> (no111u3) У 5.4 есть ряд проблем
[23:13:11] <ada_ru> (no111u3) Одна из них пессимизация кода
[23:13:46] <ada_ru> (no111u3) Где он сливает емнип на 35% 4.9
[23:14:26] <ada_ru> (no111u3) В 7.3 поправили
[23:14:46] <ada_ru> (I_vlxy_I) надо сразу брать 8.2!
[23:14:55] <ada_ru> (no111u3) А вообще домашний набор у меня clang 6.0.1 и 8.2.3
[23:15:43] <ada_ru> (no111u3) В том же самсунге сворачивали работу с линаро и компанией по разным причинам
[23:16:04] <ada_ru> (I_vlxy_I) кстати, а в самсунге не делали на базе clang свои чекеры кода?
[23:16:30] <ada_ru> (no111u3) Одна из них: постоянные мерцающие баги гцц. Другая: сам арм отказался от кейла и иара в пользу кланга
[23:16:46] <ada_ru> (no111u3) Делали
[23:17:05] <ada_ru> (no111u3) Там много чего своего было в нашем проекте
[23:17:21] <ada_ru> (no111u3) Правда с клангом там только начинали
[23:17:40] <ada_ru> (I_vlxy_I) а то у нас есть ряд ошибок, повторяющихся. народ склонен ошибаться одинаково. вот думаю может чекер нарисовать
[23:17:54] <ada_ru> (no111u3) Да
[23:18:17] <ada_ru> (no111u3) Вообще у вас ещё нет статической проверки кода?
[23:20:34] <ada_ru> (I_vlxy_I) неа. своей кастомной нет. только стандартные статические проверяльщики прогоняем
[23:20:59] <ada_ru> (I_vlxy_I) набор clang'овых там, даже pvs studio натравливали
[23:21:39] <ada_ru> (I_vlxy_I) санитайзеры полезны все таки. недавно вот ODR violation выловил
[23:21:45] <ada_ru> (no111u3) Уже радует
[23:22:21] <ada_ru> (no111u3) А то на том проеке где я щас вообще все грустно в этом плане
[23:26:12] <ada_ru> (I_vlxy_I) у нас пока тоже не очень весело, но мы стараемся сдерживать хаос 🙂
[23:26:45] <ada_ru> (no111u3) Ну у нас некому сдерживать
[23:26:54] <ada_ru> (I_vlxy_I) у нас самое невеселое в колличестве варнингов 😕 надо будет их почистить таки. а то на некоторых компиляторах их столько, что на них уже никто не обращет внимания
[23:26:55] <ada_ru> (no111u3) И есть куча тех кто разводит
[23:27:07] <ada_ru> (no111u3) Это да
[23:28:02] <ada_ru> (no111u3) Я когда кланг-статик-анализер подрубил к части проекта он повесил мне мою рабочую тачку, а это и7 с 16ГБ озу и ссд
[23:28:31] <ada_ru> (I_vlxy_I) 🙂
[23:28:48] <ada_ru> (I_vlxy_I) Ада приди, порядок наведи!
[23:28:59] <ada_ru> (no111u3) ХД
[23:30:00] <ada_ru> (no111u3) А все потому что есть люди которые уверенны что для проекта на 9млн строк кода надо выбрать именно С, мекфайлы и рабавить ещё это башем
[23:30:45] <ada_ru> (no111u3) Ну и запихать сорцами кучу либ
[23:31:02] <ada_ru> (no111u3) Переопределить системные типы из stdint.h
[23:31:16] <ada_ru> (no111u3) И много чего весёлого
[23:32:01] <ada_ru> (no111u3)  отвечает (I_vlxy_I) на <санитайзеры полезны …>
Мы неделю ловили багу из-за переопределённого в 3х местах C bool
[23:33:18] <ada_ru> (I_vlxy_I) а у нас еще такое было:
struct Foo {
  bool bar;
  Foo() : bar(bar){}
};
[23:33:19] <ada_ru> (I_vlxy_I) 😄
[23:34:00] <ada_ru> (I_vlxy_I) судя по всему - артефакт каваллерийской атаки на варнинги (был варнинг, видимо, что bar не инициализирован)
[23:34:16] <ada_ru> (I_vlxy_I) в итоге bar, как понимаешь, оказывался ни true и не false 🙂
[23:34:18] <ada_ru> (no111u3) Мда
[23:34:53] <ada_ru> (no111u3) Это как рекурсия с оператором преобразования
[23:36:17] <ada_ru> (I_vlxy_I) ага. только без вызова функции
[23:36:48] <ada_ru> (no111u3) Да
[23:38:06] <ada_ru> (no111u3) Вообще новый стандарт плюсов добавил кучу дефолтных случаев на стандартные типы
[23:44:00] <ada_ru> (I_vlxy_I) самое мерзопакостное, что санитайзер ругается на потроха opencv 😕
[23:44:25] <ada_ru> (I_vlxy_I) что с этим делать - хз
[23:44:58] <ada_ru> (no111u3) Ну там да, местами жесть
[23:45:05] <ada_ru> (no111u3) Закрывать от него
[23:46:58] <ada_ru> (I_vlxy_I) недавно еще был баг связанный с порядком инициализации глобальных переменных. товарищ один во-первых почему-то наплодил таковыъ переменных, а во-вторых заложился на вполне конкретный порядок из создания (это сложные переменные). в итоге у него, кажется, все работало, а вот у других - шлепалось еще до входа в main
[23:47:10] <ada_ru> (I_vlxy_I) (вот тут то Ада, кстати, точно спасла бы)
[23:48:43] <ada_ru> (no111u3) Хех
[23:48:52] <ada_ru> (no111u3) Она отправила бы опоаещение на коммит такого кода в ОК?
[23:49:22] <ada_ru> (I_vlxy_I) не, в Аде есть механизм и правила определяющие однозначный порядок элаборации этой всей штуки
[23:50:13] <ada_ru> (no111u3) Правил я как-то код одной ОС где не только закладывались на порядок инцициализации статиков так и ещё в лд скрипте их сортировали до кучи
[23:51:13] <ada_ru> (no111u3) А потом я сижу и не могу понять почему у меня на одной железке работает, а на другой или в эмуляторе нет
[23:51:19] <ada_ru> (I_vlxy_I) ну, это норм 🙂 если уж они сами их сортируют то
[23:51:26] <ada_ru> (I_vlxy_I) хы
[23:51:34] <ada_ru> (I_vlxy_I) но до кучи нужно уж было и свой компиль тогда
[23:51:39] <ada_ru> (no111u3) Да руки рубить надо до самой жопы
[23:52:02] <ada_ru> (no111u3) Есть паттерн цепочка обязанностей
[23:52:07] <ada_ru> (no111u3) Или сценарий
[23:52:16] <ada_ru> (no111u3) Остальное от лукавого
[23:52:45] <ada_ru> (I_vlxy_I) ну, в плюсах и сях - да. в Аде - есть конкретный явный механизм, как обычно
[23:53:00] <ada_ru> (no111u3) Ну это да, плюс языка
[23:54:07] <ada_ru> (no111u3) Но при всём детерминизме у раста к примеру до сих пор нет инстриктов и ассемблерных вставок
[23:54:21] <ada_ru> (I_vlxy_I) в Аде вроде как есть
[23:54:26] <ada_ru> (no111u3) Что делает его бесполезным для эмбеддед
[23:54:31] <ada_ru> (I_vlxy_I) но раст молодой же. относительно
[23:54:38] <ada_ru> (no111u3) Точнее есть но не в офф билде
[23:54:43] <ada_ru> (no111u3) 10 лет
[23:54:52] <ada_ru> (I_vlxy_I) ну а в расте небось как обычно, есть левые хаки для этого.
[23:54:56] <ada_ru> (no111u3) Да
[23:55:03] <ada_ru> (no111u3) Это как Ди
[23:55:04] <ada_ru> (I_vlxy_I) если уж на то пошло, то у раста то и стандарта то нету 🙂 вообще никакого
[23:55:18] <ada_ru> (no111u3) Ну есть бумага
[23:55:34] <ada_ru> (no111u3) Но там каждый раз все по новому
[23:56:18] <ada_ru> (I_vlxy_I) вспомнился боянчик на эту тему: https://bash.im/quote/397386
[23:58:26] <ada_ru> (no111u3) Да
[23:58:57] <ada_ru> (no111u3) Примерно в таком духе я и сказал знакомому растоману на тему прогрессивного языка
[23:59:50] <ada_ru> (I_vlxy_I) ну, пошукать Rust смысл имеет таки. но что-то прям сурьезное на нем делать... точнее как - что-то, у чего время жизни ожидается хотя бы лет 5.
[23:59:56] <ada_ru> (I_vlxy_I) я бы не стал, короче.