[12:51:01] <ada_ru> (Sergei)  отвечает (t91x0) на <Ну вот вам объективн…>
А у меня Bosch GBH 3-28, я очень доволен, кстати.
[12:51:02] <ada_ru> (Sergei) Но если бы туда встроили микрофон у него бы просто лопнула мембрана
[12:51:06] <ada_ru> (I_vlxy_I) но вот метрики снимать вполне можно - гироскоп присобачить, статистику нажатий вести, режимы работы, все дела.
[12:51:08] <ada_ru> (I_vlxy_I) не знаю как это там сейчас.
[12:51:12] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <ну будет он немного …>
Обычно об этом спрашивают в процессе установки. По крайней мере, Microsoft.
[12:51:16] <ada_ru> (Oleg) Коллеги,  нет знакомых, которые занимаются разработкой тех процесса и сметной документацией в электронике?
[12:51:19] <ada_ru> (Максим) IRC сервер сдох и завалил моего бота 😕 Эх, не умею я ботов писать!
[12:51:25] <ada_ru> (I_vlxy_I) у микрофона нет же мембраны вроде 😊
[12:51:27] <ada_ru> (I_vlxy_I) но, насколько я понимаю, у адакоры еще и свой, расширенный тестсет есть.
[12:51:33] <ada_ru> (I_vlxy_I) а вот и весь фикс gcc, кажется:
https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/tree-ssa-reassoc.c?r1=262684&r2=262683&pathrev=262684
[12:51:47] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <ну, фактически крым …>
Да, только между 1898 и 2014 годами мир должен был поменяться, по крайней мере, так казалось.
[12:51:48] <ada_ru> (nitrocerber) фак е. главное пережить initial strike
[12:52:08] <ada_ru> (t91x0) Тут в соседнем чатике @ctodailychat обсуждали недавнюю историю с приложением от Burger King, которое экран записывает прямо во время ввода данных карты.

И, что характерно, многие участники чата не понимают "ачотаковато". Мы-де на все сайты аналитику вешаем, всегда так делали. Мысль о минимально возможных правах, когда приложению не дают возможностей больше, чем нужно для выполнения основной функции. Уебмастеры, что с них взять.

Тут им сложно что-то словами объяснить, им якобы деньги зарабатывать надо, конверсию повышать. В общем, говорить с ними бесполезно, тут бить надо.

А во время военное или около за такие фокусы можно будет получить пресловутую двушечку, а то и пятнашечку, за шпионаж в пользу Гондураса. Что будет несомненно полезно для этих людей.
[12:59:07] <ada_ru> (Максим) Хотя, может у вас по другому, конечно
[12:59:30] <ada_ru> (Sergei)  отвечает (Максим) на <Доверие, наверное, в…>
То есть, урок 1. Бывает "правильная" и "неправильная" ада.
[12:59:35] <ada_ru> (I_vlxy_I)  отвечает (Sergei) на <То есть, это миф - н…>
язык то однозначно надежней плюсов тех же. А вот надежность компилятора (да и любого продукта), точнее его протестированность, сильно зависит от двух факторов - тестсета производителя и размера пользовательской базы (считай числа тестеров со своими тесткейсами).
[12:59:54] <ada_ru> (Максим) Если не использовать Аду самому, то остается слушать других умных и опытных людей 😊
[13:02:07] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <язык то однозначно н…>
" размера пользовательской базы (считай числа тестеров со своими тесткейсами)"

Уж не пытаешься ли ты, пользователь Телеграм, голословно сказать, что C++ (язык в комплексе с компилятором) надёжнее Ады? :)
[13:02:57] <ada_ru> (Максим) Баг исправили за два (2!) дня. Вроде можно было бы порадоваться, но нет, лучше назвать Ада компилятор ненадежным, и похвалить С++ хз за что, просто так.
[13:03:59] <ada_ru> (Sergei)  отвечает (Максим) на <Баг исправили за два…>
Баг компилятора Ады исправили кодом на С.
[13:04:04] <ada_ru> (Максим)  отвечает (Sergei) на <То есть, урок 1. Быв…>
Поясни, я не понимаю откуда такая логика.
[13:04:17] <ada_ru> (I_vlxy_I) пример "предельного" случая — решил я реализовать нечто, на Обероне (точнее на его дальнейшем развитии - Компонентном Паскале (не путать с паскалем!)). Реализовал и проверил на двух компиляторах. В обоих компиляторах нашел по багу в итоге, из за чего код не работал. Баги разные. Компиляторы - не имеют общей кодовой базы. Один из этих компиляторов - тамошний мейнстрим (им все пользуются).

Просто на КП мало кто пишет, размер пользовательской базы - микроскопический. А тесткейсов, кажется, нет вообще.

Поэтому баги в компляторах есть, и их достаточно много, при том, что язык очень простой и компилятор элементарный.
[13:05:59] <ada_ru> (Максим)  отвечает (Sergei) на <Баг компилятора Ады …>
Баг в оптимизаторе дерева GCC исправили в оптимизаторе дерева GCC, это логично, да. И он на С/С++, как большая часть GCC
[13:06:03] <ada_ru> (Sergei)  отвечает (Максим) на <Поясни, я не понимаю…>
@I_vlxy_I написал: "чтобы компилятор Ады был столь же надежен, как компилятор плюсов, он должен быть от адакоры!"

А почему не от "Компании Y"?
[13:06:10] <ada_ru> (I_vlxy_I)  отвечает (Sergei) на <" размера пользовате…>
я не могу тут ничего сказать, ибо тут нужна эмпирика. а замеров никто не проводил давным давно.

думаю что сильно от юзкейса зависит. IMHO, можно состряпать юзкейс, где плюсы будут надежней.
[13:06:53] <ada_ru> (I_vlxy_I)  отвечает (Sergei) на <@I_vlxy_I написал: "…>
других доступных компиляторов не знаю 😊 ну и у адакоры огромный опыт наработан в этой области же.
[13:07:05] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <я не могу тут ничего…>
" IMHO, можно состряпать юзкейс, где плюсы будут надежней" - Максим , ты слышишь?
[13:08:04] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <других доступных ком…>
Значит, всё-таки, нельзя рассматривать язык отдельно от реализации.
[13:08:29] <ada_ru> (I_vlxy_I) не, ну реально же - берем плюсовика матёрого, даем ему реализовать на Аде нечто, он естественно сразу отрубает все проверки, ибо скорость же! И ошибается в чем-нибудь простом. Либо не ошибается, но пишет ту же программу в 4 раза дольше, что на плюсах. с тем же результатом.
[13:08:39] <ada_ru> (Максим) Да, я слышу, но меня это не сильно трогает, я на С++ не пишу
[13:10:11] <ada_ru> (Sergei) Я хочу понять, на чём держится неоднократно повторяемое здесь (не знаю голо или неголо)словное высказывание, что Ада надёжный язык. Если его надёжность зависит от трёх строчек на C.
[13:10:51] <ada_ru> (I_vlxy_I) рассматривать язык в отрыве от доступных реализаций (вкупе с поддержкой и производителем), пользовательской базы, наличия библиотек и наличия на рынке специалистов, от простоты переучивания имеющихся специалистов на этот язык — не корректно.

но корректно, но интересно 😊
[13:11:15] <ada_ru> (Максим) Может на том, что это одна из целей создания языка.
[13:11:25] <ada_ru> (I_vlxy_I)  отвечает (Sergei) на <Я хочу понять, на чё…>
ну, этта.. в адакорных то компайлерах бага этого нет например.
[13:12:17] <ada_ru> (Максим) Почитай мой перевод книжки про надёженое программирование, там всё про это
[13:12:40] <ada_ru> (Sergei)  отвечает (Максим) на <Может на том, что эт…>
Первоначальной задачей химии являлось получение золота из ртути.
[13:12:50] <ada_ru> (Sergei)  отвечает (Максим) на <Почитай мой перевод …>
Почитаю. На сайте?
[13:14:05] <ada_ru> (Максим) да
[13:14:54] <ada_ru> (Максим)  отвечает (I_vlxy_I) на <ну, этта.. в адакорн…>
Адакорный компилятор на GCC 7.3, а баг в gcc 8 появился
[13:15:18] <ada_ru> (Sergei)  отвечает (Максим) на <да>
Почитаю. А то меня уже колбасит от всего, надо что-то надёжное почитать.
[13:16:04] <ada_ru> (Максим) Будут замечания по переводу, присылай!
[13:16:16] <ada_ru> (Sergei)  отвечает (Максим) на <Будут замечания по п…>
ок
[13:16:56] <ada_ru> (Oleg) Я читаю 😊
[13:18:54] <ada_ru> (I_vlxy_I)  отвечает (Максим) на <Адакорный компилятор…>
ну, я подозреваю, что не даром адакора отстает в релизах немного. при прочих равных, думаю, там багов всё же меньше.
[13:20:23] <ada_ru> (I_vlxy_I) а я вот читаю тоже про надежность: "If you miss a corner case bug due to low code coverage that affects 0.1% of your users you might survive. If your time to market increases due to high code coverage demands you might not survive."
[13:27:43] <ada_ru> (I_vlxy_I) "Use a typed language. Focus on integration and end-to-end tests. Use unit tests only where they make sense (e.g. pure algorithmic code with complex corner cases). Be economic. Be lean."
[13:28:51] <ada_ru> (I_vlxy_I) это отсюда: https://blog.usejournal.com/lean-testing-or-why-unit-tests-are-worse-than-you-think-b6500139a009
[13:35:26] <ada_ru> (Максим) это точно про надежность? может это про бабло?
[13:35:54] <ada_ru> (I_vlxy_I) надежность для бабла!
[13:37:30] <ada_ru> (I_vlxy_I) ну, на самом деле мало кто пишет mission critical штуки, поэтому проблемы у 0.1% юзеров это норма. особенно в вебе.

но к чести автора, он дальше пишет про то, что для скажем АЭС требования будут отличаться. Ну и пассаж про строго типизированные языки тоже смещает его от стороны "хуяк и в продакшн" в более правильную сторону.
[13:41:43] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <ну, на самом деле ма…>
Вот, например, в химии, когда я покупаю какое-то вещество, там даётся степень чистоты и паспорт на содержание примесей, например, металлов.
В учебниках много внимания уделяется получению чистых веществ, правильных условий рекций, тестированию того что получилось, ну там, точка плавления для органики обязательный тест.

В программировании далеко не везде сохранены такие полезные практики. Даже на уровне академического обучения, иногда, полное пренебрежение первостепенной заботой о качестве.
[13:42:20] <ada_ru> (Максим) новый релиз конкуретна матрешки :) https://blog.vacs.fr/vacs/blogs/post.html?post=2018/07/15/New-releases-of-Ada-Web-Application-et-al.
[13:42:41] <ada_ru> (Максим) там точка в конце URL 😕
[13:43:32] <ada_ru> (I_vlxy_I) "To celebrate the France's victory at World Cup, and also because I've not made new releases for a long time, several new releases are available for several Ada projects."
[13:43:35] <ada_ru> (I_vlxy_I) хы 😊
[13:46:26] <ada_ru> (Sergei) С другой стороны, если хотят разработать и выпустить на рынок какое-то лекарство, ни у кого не возникает вопросы, почему долго или дорого.
Тут что-то с системой образования наверное не так. Где-то эта болезнь имеет начало.
[13:46:41] <ada_ru> (Sergei) Я имею в виду программирование.
[13:47:47] <ada_ru> (I_vlxy_I)  отвечает (Sergei) на <С другой стороны, ес…>
вопросы возникают, кстати. регулярно. по поводу лекарств - чо так долго и чо так дорого?!
[13:48:17] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <вопросы возникают, к…>
гы :) потому что всё по технологии
[13:48:50] <ada_ru> (I_vlxy_I) в разных странах по разному. в некоторых странах то же лекарство появляется на годы раньше например.
[13:49:35] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <в разных странах по …>
Ну да, в той же Индии, например, с её богатыми традициями в программировании в том числе
[13:50:03] <ada_ru> (I_vlxy_I) угу. американскии компании свои лекарства, разработанные в штатах, на годы раньше начинают продавать в Индии.
[13:50:24] <ada_ru> (I_vlxy_I) и в южной америке, если не путаю.
[13:51:02] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <угу. американскии ко…>
Индусы и сами делают всякую дрянь и глотают. А если свою глотают неочищенную, то почему бы и другую не проглотить. Традиции.
[13:51:32] <ada_ru> (Sergei) Культура качества она не повсеместна
[13:52:25] <ada_ru> (I_vlxy_I) ну, когда у тебя стоит железный выбор - или ты через полгода гарантированно загнешься, или ты начнешь принимать неоттестированный препарат, который можешь продлить твою жизнь, что выберешь?
[13:52:57] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <ну, когда у тебя сто…>
Гипотетический вопрос, не хотел бы, чтобы он реально встал
[13:53:41] <ada_ru> (Sergei) Без ПО ещё пока никто не загнулся
[13:53:55] <ada_ru> (Sergei) Даже некоторое перепроизводство наблюдается
[13:54:02] <ada_ru> (I_vlxy_I) ну, без ПО загибаются бизнесы, а без работы - люди
[13:54:10] <ada_ru> (I_vlxy_I) (ибо нет работы - нет еды, нет лечения)
[13:55:44] <ada_ru> (Sergei) Ну да, всем всё надо скорее, больше и дешевле. А потом ещё скорее, ещё больше и ещё дешевле.
[13:55:58] <ada_ru> (I_vlxy_I) или там, не знаю, что лучше - иметь неотремонтированную халупу сейчас, или дворец, но никогда?
[13:56:14] <ada_ru> (I_vlxy_I) правильный выбор всегда где-то по середине.
[13:56:36] <ada_ru> (I_vlxy_I) и сильно зависит от предметной области.
[14:01:11] <ada_ru> (t91x0)  отвечает (Sergei) на <Я хочу понять, на чё…>
С нормальными компиляторами Ада надёжна. Опенсорц же никогда надёжностью не отличался.
[14:22:06] <ada_ru> (I_vlxy_I) прошу батон на опенсорс не крошить 😊
[14:22:53] <ada_ru> (I_vlxy_I) надежность не зависит от степени открытости софта. зависит от вложенных средств и от пользовательской базы. плюс у опенсорса бывает комьюнити.
[14:24:59] <ada_ru> (nitrocerber) На счёт языка и его отрыва от компилятора.... Язык - это как идеология. А компилятор - его реализация. Есть несколько тащемта неплохих идеологий - их попытки реализации закончились известно как. И были чудовищные идеологии, которые получили вполне себе функционирующие реализации. Надо отделять мух от котлет.
[14:25:30] <ada_ru> (nitrocerber) Если я навалю посреди комнаты кучу гомна, спичками на нём напишк пару симовлов и скажу ,что это ada-компилятор, язык от этого хуже не станет.
[14:25:43] <ada_ru> (Sergei)  отвечает (Максим) на <Почитай мой перевод …>
Я бегло просмотрел. Вроде ничего нового, такого, что не знает человек, программировавший на Аде, там не заметил.
Что мне не нравиться - это постоянное приведение С++ как негативного примера. И, хотя, к переводчику у меня претензий нет, к автору есть - хватит этой риторики 80-х годов. Всем, кто думает сравнивать - выучить современный C++ наконец.
[14:25:56] <ada_ru> (I_vlxy_I) на тему надежности: надежность становится все более важна. например вот прям сегодняшнее:  "Rav1e: An experimental AV1 video encoder, designed to be fast and safe": https://github.com/xiph/rav1e
[14:28:56] <ada_ru> (Sergei) Я не читал ни одной книги по С++, где бы
1) восхвалялся бы C++
2) какой-то язык приводился для негативного сравнения
[14:29:43] <ada_ru> (Sergei) Во всяком случае, Страуструп так не пишет
[14:30:47] <ada_ru> (Sergei) Ну да, с С сравнивает, но это как Ada 83 и 95
[14:33:14] <ada_ru> (I_vlxy_I) ну, сравнивать то полезно бывает, показывать какие проблемы плюсов в Аде отсутствуют. Но при этом неплохо бы знать современные плюсы, да. Потому, как то что там написано - это не решение актуальных плюсопроблем по большей части.

Доки и статьи по тому же расту например, тоже с плюсами сравнивают, но сравнивают с современными плюсами (ну и растовцы это все больше плюсисты таки, которые знают боль плюсистов), поэтому читать полезно.

Например там пишут, что вот например ты мувнул в плюсах объект куда-то в функцию, а потом, после этого вызова функции, с ним продолжаешь работать, ожидая что объект в валидном состоянии и что в нем еще что-то есть. Это ошибка. В плюсах компайлер это проглотит, а в расте - будеть ошибка компиляции.
[14:33:56] <ada_ru> (I_vlxy_I) ну и с висящими указателями всякими аналогично. то есть читая аналогичные вот статьи про раст, я сразу понимаю какие насущные проблемы он мне решит.
[14:37:09] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <ну, сравнивать то по…>
Ну, это всё поверхностно. Мувнул объект. Функция, которая объект приняла должна его обнулить, сделать отличимым от валидного объекта, чтобы всё срубилось на первом ассерте. Ну да, можно забыть, наверное. Но для тех, кто пришёл на C++ с Asm и C такая забывчивость не характерна.
[14:37:31] <ada_ru> (nitrocerber) На май скромный взгляд основная проблема плюсов и андерлаинг сей по-прежнему лежит в том старом боянистом анекдоте.
[14:37:42] <ada_ru> (I_vlxy_I) ну, ассерт еще поставить надо. плюс ассерт хуже ошибки компиляции же.
[14:37:44] <ada_ru> (nitrocerber) И никакие "актуальные" версии от этого не помогут
[14:39:26] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <ну, ассерт еще поста…>
Всё равно, это не повод делать новый язык. Чтобы делать новый язык нужен веский повод. Всё что клепают, мне кажется, делают просто из-за финансовой поддержки. Ну, как криптовалюты. Кто-то хочет просто сделать "новый язык".
[14:40:25] <ada_ru> (nitrocerber)  отвечает (Sergei) на <Всё равно, это не по…>
Ну грех не создать целый департамент и придумать новый Walk или Fast ,если гугл/оракл/ктотамещё готов в это вбахать эн лямов бачей
[14:40:28] <ada_ru> (Sergei) Другое дело да, люди без asm и низкоуровневого бакграунда не привыкли ходить по крыше без заборов.
[14:40:37] <ada_ru> (nitrocerber) От наших грантоедов отличается только тем, что у этих результат работает хотя бы
[14:41:21] <ada_ru> (I_vlxy_I) ну, там же и память безопасна и много еще чего вкусного.

но вообще, я не про язык говорил, а про статьи. пёс с ними, с языками. но когда в статье про язык Х говорят про твой язык Y, на уровне "а у вас всё еще негров линчуют!", это как-то заставляет усомниться в актуальности всего остального написанного.
[14:41:54] <ada_ru> (nitrocerber) неудачная аналогия, BLM с тобой не согласится)
[14:42:59] <ada_ru> (I_vlxy_I) ну да. в своё время это M можно было даже численно оценить. Для каждой BL.
[14:43:40] <ada_ru> (nitrocerber) Ну сейчас официальных расценок нет, это да
[14:44:04] <ada_ru> (I_vlxy_I) вот! значит движение BLM требует их вернуть!
[14:44:07] <ada_ru> (nitrocerber) но жизнь отдельны ho и mofo врядли стоит дороже двадцатки. но это уже оффтоп
[14:44:21] <ada_ru> (nitrocerber) ахахах
[14:44:33] <ada_ru> (nitrocerber) это жирный тролленг, надо запомнить и применить, харроооош)))
[14:44:40] <ada_ru> (Sergei) Вообще, стоит, наверное, сделать "ответ Барнсу". Как всё, или почти всё,  что он приводит, на самом деле делается в С++. Это было бы новым этапом сравнения.
[14:44:41] <ada_ru> (I_vlxy_I) 😊
[14:46:51] <ada_ru> (Sergei) Кому не лень сделать какой-то онлайн документ в шаред режиме? Туда можно накопировать все негативные утверждения барнса, а потом покомментировать "а как на самом деле" сообща
[14:47:21] <ada_ru> (I_vlxy_I) https://www.gitbook.com/
[14:47:23] <ada_ru> (I_vlxy_I) тут?
[14:48:33] <ada_ru> (Sergei) Да где угодно. Я просто не планирую тратить больше, чем в перерыве на кофе. Чтобы так - открыл, прокомментил, проверил, закрыл. И так сообща, в ленивом режиме. Возможно?
[14:57:38] <ada_ru> (Sergei) Максим " Как бы то ни было, компилятор будет доволен,
а мы — отнюдь".
[14:58:11] <ada_ru> (Sergei) http://search1.ruscorpora.ru/search.xml?env=alpha&mycorp=&mysent=&mysize=&mysentsize=&mydocsize=&dpp=&spp=&spd=&text=lexform&mode=main&sort=gr_tagging&lang=ru&nodia=1&req=%EE%F2%ED%FE%E4%FC
[14:59:57] <ada_ru> (Sergei) Я о том, что не встречал, чтобы "отнюдь" употреблялось без дополнительного отрицания. Хотя стильно.
[15:03:26] <ada_ru> (I_vlxy_I) я — встречал
[15:03:47] <ada_ru> (nitrocerber) авторский знак, жёвана!
[15:04:36] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <я — встречал>
Ты не отнюдь встречал, а я отнюдь не встречал
[15:42:32] <ada_ru> (I_vlxy_I) О! А вот и стандарты надежности NASA:
"В 2011 году была установлена допустимая вероятность гибели экипажа в 1/150."

То есть вероятность гибели экипажа в 0.67% приемлема. А выше по тексту там была вероятность проявления бага в 0.1% в коммерческой вебне.

Кажется стандарты качества у веба жестче чем у NASA 😊
[15:43:48] <ada_ru> (Sergei) Аду в веб, JS в NASA
[15:44:06] <ada_ru> (I_vlxy_I) Да! Уже три веб фреймворка для Ады!
[15:44:16] <ada_ru> (I_vlxy_I) а на js роботов делают.
[16:10:35] <ada_ru> (t91x0)  отвечает (Sergei) на <Я бегло просмотрел. …>
Я давно хочу увидеть человека, который "знает современный с++". Про c# я могу сказать, что я его знаю. Он обозрим. В отличие от плюсов.
[16:11:21] <ada_ru> (I_vlxy_I) да ладно? стандарт шарпа жирнее плюсового же. да и сам язык не меньше.
[16:11:30] <ada_ru> (I_vlxy_I) в него же запихали вообще всё, до чего дотянулись.
[16:12:37] <ada_ru> (t91x0)  отвечает (I_vlxy_I) на <в него же запихали в…>
Нету в шарпе никакой move-семантики.
[16:12:56] <ada_ru> (I_vlxy_I) ну, это ему минус, а не плюс 😊
[16:13:09] <ada_ru> (t91x0) И [&] там тоже нет, как и прочих иероглифов
[16:13:11] <ada_ru> (I_vlxy_I) хотя, шарп никогда не был сколь либо эффективным языком.
[16:13:47] <ada_ru> (t91x0) Шарп для работы очень эффективен. Пишешь, оно работает.
[16:14:09] <ada_ru> (I_vlxy_I) не знаю, мне кажется, что символ, что какое-нибудь ключевое слово - тут одинаково непонятны тем, кто не знает их семантики и одинаково понятны тем, кто знает.
[16:14:48] <ada_ru> (I_vlxy_I) дык, пишешь - оно работает — это на любом ЯП, который ты знаешь, любишь, умеешь.
[16:14:54] <ada_ru> (t91x0) Я считаю, что излишняя лаконичность создаёт то, что убило перл.
[16:16:35] <ada_ru> (I_vlxy_I) а что перл убило?
[16:17:10] <ada_ru> (I_vlxy_I) я не видел каких-либо свидетельств в пользу влияния степени лаконичности на вероятность смерти языка.
[16:19:33] <ada_ru> (t91x0) Нечитабельность убила, кмк.
[16:21:01] <ada_ru> (I_vlxy_I) сомнительно. то есть если бы перлу заменить лексемы на любые другие - его это не спасло бы.
[16:21:52] <ada_ru> (t91x0) Можно сколько угодно делать вид, что красота и ясность текста значения не имеют, профессионалом-де надо быть, язык знать - но это все фуфло. Есть вещи интуитивно понятные и красивые, легко воспринимаемые человеческой психикой, а есть уродливые уродцы, порождённые сумрачным инженерным разумом.
[16:22:28] <ada_ru> (I_vlxy_I) ну, перл как раз не инженерным разумом был порожден 😊
[16:22:52] <ada_ru> (t91x0) Вот сделали go - и как он попёр!
[16:23:05] <ada_ru> (I_vlxy_I) perl был сделан лингвистом 😃
[16:23:35] <ada_ru> (t91x0) Насколько я знаю, им обрабатывали логи.
[16:23:43] <ada_ru> (t91x0) В начале
[16:23:45] <ada_ru> (I_vlxy_I) еще раз - если перлу литералы поменять, он от этого лучше не станет.
[16:24:26] <ada_ru> (I_vlxy_I) будет столь же сложная контексто зависимая грамматика.
[16:25:08] <ada_ru> (I_vlxy_I) при том, что язык предназначен для простых вещей. вот и вся проблема.
[16:27:51] <ada_ru> (I_vlxy_I) s/литералы/лексемы/
[16:35:05] <ada_ru> (Sergei)  отвечает (t91x0) на <Я давно хочу увидеть…>
Хм. Что имеется в виду. Знает, если под рукой есть стандарт языка и куда в нём смотреть, или может выполнять функцию компилятора на изусть?
Те люди, книги про Аду которых мне попадались отнюдь знают С++ даже на уровне профессионального использования последнего стандарта.
[16:41:16] <ada_ru> (Sergei) И С++ может быть 300 раз негодный для порграммирования язык, но если те, кто сравнивают языки, ими не пользуются, как они могут быть в курсе того, какие проблемы и какими способами в них решаются?
[16:41:47] <ada_ru> (Sergei) Они даже не представляют, порой, зачем им может быть нужна move semantic.
[16:43:42] <ada_ru> (Sergei) Часто это просто попытки написать (криво) на C то что они знают, как писать на Аде.
[16:44:00] <ada_ru> (Sergei) Это если бы С++ пытался писать на Аде так, как в С++ и ругал бы всё
[16:45:03] <ada_ru> (t91x0)  отвечает (Sergei) на <Хм. Что имеется в ви…>
Итак, пишет Лев Валкин, владелец (бывшей) конторы Echo, автор компилятора asn.1 для Си и резидент Калифорнии:

https://lionet.livejournal.com/139828.html
Попробуйте ответить
Ответ есть в следующем посте (ссылка на него там тоже есть)

Какое это имеет отношение к моему вопросу выше "где знающие люди" - такое, что даже весьма выдающиеся специалисты в этом языке "плавают".
[17:02:32] <ada_ru> (I_vlxy_I) ну, "это зависит от того какая у вас мышь" 😊
[17:02:48] <ada_ru> (I_vlxy_I) реализовать ту функцию можно СИЛЬНО по разному.
[17:04:37] <ada_ru> (Sergei)  отвечает (t91x0) на <Итак, пишет Лев Валк…>
Да, интересный случай. Но не думаю, что можно сказать: "кто этого не знает, тот не знает C++". В Аде тоже можно точно такой же вопрос задать - что быстрее, конструкция пользовательского типа через аггрегат массива или функция, инициализирующая массив на основе другого массива?
Знать язык = умение пользоваться и искать ответы на вопросы.
Не знать язык - не иметь представление о его возможностях.
[17:05:46] <ada_ru> (I_vlxy_I) на моем компиляторе, при -O3 первый вариант СИЛЬНО быстрее.
[17:05:50] <ada_ru> (I_vlxy_I) он тупо возвращает 1 и всё.
[17:06:06] <ada_ru> (Sergei) Вот что такое знать химию? Ведь можно на коленке сделать реакцию, о которой нигде вообще не прочитаешь. Знать химию - это уметь проанализировать результат и запостить его в публикации на профессиональном уровне.
[17:06:37] <ada_ru> (Sergei) А если говорить "в C++ доступ к массиву через указатель, потому ненадёжно" то это не знать С++.
[17:07:30] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <на моем компиляторе,…>
Вот @I_vlxy_I знает C++ - сразу поставил правильную опцию.
[17:07:38] <ada_ru> (Sergei) Хотя он и не знал ответ, но сделал правильно.
[17:08:18] <ada_ru> (I_vlxy_I) но, кстати, new он всё равно дергает.
[17:08:24] <ada_ru> (Sergei) Я тоже не помню особенности изъявительного наклонения, но неплохо выражаюсь по-русски, тем не менее
[17:08:42] <ada_ru> (I_vlxy_I) один раз дергает.
[17:12:14] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <но, кстати, new он в…>
Первая версия или вторая? new или inplace new?
[17:12:28] <ada_ru> (I_vlxy_I) первая
[17:13:16] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <первая>
Ну дык конструктор же вызывает
[17:13:33] <ada_ru> (I_vlxy_I) угу. кажется, языком запрещено этот сайдэффект выкидывать.
[17:15:04] <ada_ru> (I_vlxy_I) https://godbolt.org/g/W5ZKvo
[17:15:09] <ada_ru> (Sergei) она внутри имплементации вектора уже должна создавать элемент, и если для типа Foo определён move constructor, он ведь должен вызваться
[17:15:37] <ada_ru> (Sergei) А если не определён, то copy constructor
[17:17:57] <ada_ru> (I_vlxy_I) ну, в общем, то что Лев Валкин написал, несколько устарело.
[17:18:24] <ada_ru> (I_vlxy_I) поэтому любое подобное утверждение всегда нужно проверять экспериментально.
[17:18:32] <ada_ru> (Sergei) Убери из своего класса конструктор, new должно рассосаться
[17:18:39] <ada_ru> (I_vlxy_I) надо таки в godbolt аду добавить.
[17:19:13] <ada_ru> (I_vlxy_I) неа. даже если вообще все потроха убрать, не рассасывается:
https://godbolt.org/g/j9JM83
[17:20:34] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <неа. даже если вообщ…>
Здаётся мне это new для памяти вектора. Она ведь в куче
[17:20:51] <ada_ru> (I_vlxy_I) угу. больше нечему.
[17:21:04] <ada_ru> (I_vlxy_I) и такой сайд эффект, видимо компайлер не может выкинуть.
[17:21:05] <ada_ru> (Sergei) Ну, зделай 2 элемента, edi станет 2
[17:21:16] <ada_ru> (Sergei) (параметр new)
[17:21:45] <ada_ru> (Sergei) да, так и есть
[17:22:40] <ada_ru> (I_vlxy_I) и eax тоже 😊
[17:23:23] <ada_ru> (I_vlxy_I) да, банальный
char* arr = new char[100500];
компилятор не выкидывает, даже если arr потом нигде не используется. не может значит!
[17:24:11] <ada_ru> (I_vlxy_I) (что контрастирует с каким-нибудь Go, где компайлер вполне себе выкидывает — там очень трепетно к куче относятся).
[17:24:34] <ada_ru> (Sergei) Получается copy constructor не вызывается на {std::move(foo)}? Давно не программировал на С++, подзабыл.
[17:25:18] <ada_ru> (Sergei) али это после C++11 появилось?
[17:25:55] <ada_ru> (I_vlxy_I) в с++11 вызывается
[17:26:11] <ada_ru> (I_vlxy_I) https://godbolt.org/g/kGHctx
[17:27:20] <ada_ru> (I_vlxy_I) да и в 17 тоже, судя по всему.
[17:27:38] <ada_ru> (I_vlxy_I) в данном случае.
[17:29:59] <ada_ru> (Sergei) А, это я глючу. Вызывается дефалтовый move constructor же, а определён у тебя с параметром int, который, в данном случае, не вызывается.
[17:30:37] <ada_ru> (Sergei) Вот если copy constructor задать, там свистопляска начнётся
[17:30:47] <ada_ru> (I_vlxy_I) можно удалить конструктор копирования, оставить мув конструктор и попробовать еще раз 😊
[17:30:57] <ada_ru> (Sergei) ну, так будет работать
[17:30:59] <ada_ru> (I_vlxy_I) я попробовал - не собирается такая конструкция.
[17:31:31] <ada_ru> (Sergei) А ты явно определи Foo(Foo&&) = default
[17:31:41] <ada_ru> (Sergei) а то оно на радостях оба косит
[17:32:02] <ada_ru> (I_vlxy_I) дык, уже
[17:32:03] <ada_ru> (I_vlxy_I) https://godbolt.org/g/1ducR6
[17:32:35] <ada_ru> (Sergei) Это значит за каким-то хреном std::vector хочет иногда использовать copy
[17:32:49] <ada_ru> (Sergei) интересно увидеть ошибку
[17:33:15] <ada_ru> (Sergei) а, вижу
[17:34:31] <ada_ru> (I_vlxy_I) при этом если вначале создать вектор, а потом emplace_back - то всё норм
[17:35:02] <ada_ru> (Sergei)  отвечает (I_vlxy_I) на <при этом если вначал…>
Это как раз то, о чём нам пишет уважаемый @t91x0 . Оно копировать пытается из std::inistializer_list
[17:35:09] <ada_ru> (I_vlxy_I) вот такая раскладка по окошкам удобней - справа окно с ошибками компайлера. https://godbolt.org/g/J4PDe9
[17:35:59] <ada_ru> (Sergei) Ну да, я помню, есть определённые квирксы у initializer_list, я на подобные копирования уже натыкался, когда хотел типы "move only" сделать
[17:36:01] <ada_ru> (I_vlxy_I) пытается, да. но оверхед у функции construct_vector в итоге один фиг будет больше 😊
[17:36:30] <ada_ru> (Sergei) Ну, оно как-то на этапе синтаксиса требует, а потом оптимизирует нахрен
[17:36:39] <ada_ru> (I_vlxy_I) угу.
[17:37:12] <ada_ru> (Sergei) Ну, для safety да, если у тебя move only тип нехрен в initializer_list запихивать, ибо сказано - копировать. Так что корректно
[17:48:41] <ada_ru> (Sergei) Есть ведь вещи, которые принципиально нельзя копировать. В Аде они называются limited. Но там их нельзя переложить из контейнера в контейнер. Приходится создавать контейнеры указателей. Интересно поразмышлять по поводу надёжности
[17:49:12] <ada_ru> (I_vlxy_I) и скорости.
[17:49:17] <ada_ru> (I_vlxy_I) ибо префетчинг иногда таки рулит
[17:49:30] <ada_ru> (Sergei) Ну, когда говорят о надёжности, на скорость кладут
[17:49:46] <ada_ru> (Sergei) часто
[17:50:25] <ada_ru> (I_vlxy_I) но иногда есть требования например в плане реалтайма или еще чего. ресурсы часто ограничены.
[17:50:30] <ada_ru> (I_vlxy_I) железные
[17:50:44] <ada_ru> (Sergei) В аде можно обойти, делая врапперы для лимитов, которые эмулируют move semantic
[17:50:56] <ada_ru> (Sergei) но это громоздко конечно
[17:51:32] <ada_ru> (I_vlxy_I) а это будет сколь либо надежней любого другого языка, где нет конструкторов?
[17:53:11] <ada_ru> (Sergei) Ну, дефалтовый конструктор должен инициализировать указатель вреппера null, так что проблема объекта, который "переместили" остаётся - всегда надо проверять на null
[17:53:54] <ada_ru> (Sergei) другиз дробаков по надёжности я не вижу, если не рассматривать, конечно, совместное использование двумя задачами
[17:54:06] <ada_ru> (Sergei) в C++ это можно
[17:54:30] <ada_ru> (Sergei) что-то морочился с этим когда-то
[17:55:13] <ada_ru> (Максим) https://www.reddit.com/r/ada/comments/8z3hez/safe_nonblocking_synchronization_in_ada_202x/
[17:56:50] <ada_ru> (I_vlxy_I) Ухты!
[17:56:52] <ada_ru> (Sergei)  отвечает (Максим) на <https://www.reddit.c…>
Заманчиво
[17:58:45] <ada_ru> (I_vlxy_I) "The C++11 standard has already specified a strict memory model for concurrent and parallel computing. We think that C++11 was not entirely successful both in terms of safety and in terms of being user-friendly. In contrast, we are co nvinced that these challenges can be met in the upcoming Ada 202x standard."

Если сделают лучше чем в крестах и чем в каком-нибудь хипстарасте, будет круто!
[17:59:41] <ada_ru> (Sergei) Да, это здорово, когда развитие продолжается
[19:01:44] <ada_ru> (I_vlxy_I) гм. хм. допустим есть вот такой кот:
procedure Hello is
 a,y,b,c,d : Float := 0.0;

 function F1 return Float is
 begin
   return a*y*y + b*y + d;
 end F1;

 function F2 return Float is
 begin
   return (a * y + b) * y + d;
 end F2;
begin
 a := F1 + F2;
end Hello;
[19:02:02] <ada_ru> (I_vlxy_I) вопрос - будет ли сгенерирован идентичный асм для f1 и f2?
[19:02:59] <ada_ru> (Максим) врядли, разве он эквивалентен?
[19:03:23] <ada_ru> (I_vlxy_I) неа
[19:03:28] <ada_ru> (I_vlxy_I) это ж плавающая точка.
[19:05:16] <ada_ru> (I_vlxy_I) результат у плавающей точки зависит от порядка вычислений и от колличества операций.
[19:07:11] <ada_ru> (I_vlxy_I) поэтому в плюсах, как я понял, стандарт запрещает компилятору тут выражение оптимизировать. но в реализации компиляторов бывают ключики которые позволяют ему все же соптимизировать выражение — ключимк -ffast-math
[19:08:11] <ada_ru> (Максим) наверное и в Аде так
[19:08:37] <ada_ru> (I_vlxy_I) я прогнал компилятор - у меня получился одинаковый асм для обоих функций.
[19:08:42] <ada_ru> (I_vlxy_I) может я что-то делаю не так?
[19:09:18] <ada_ru> (I_vlxy_I) собирал так: gnatmake -S -fverbose-asm -c hello.adb
[19:11:45] <ada_ru> (I_vlxy_I) получилось такое: https://gist.github.com/valexey/1be73f6f75d1552f89e373a3a12917d0
[19:25:31] <ada_ru> (I_vlxy_I) пощупал раст - тоже разный код генерит.
[19:26:15] <ada_ru> (I_vlxy_I) судя по асму, gnat раскрыл скобочки в f2
[19:31:05] <ada_ru> (I_vlxy_I) хм. go тоже не делает это, если специально не приказали
[20:02:13] <ada_ru> (I_vlxy_I) что-то как-то это всё очень странно
[20:14:32] <ada_ru> (I_vlxy_I) да, судя по всему разворачивают выражение где-то еще на адской части gcc.
[20:52:17] <ada_ru> (I_vlxy_I) может где-то в стандарте Ады написано, что все выражения обязательно компилятором приводятся к какому-то каноничному виду, чтобы всегда все выполнялось одинаково вне зависимости от того, что там человек набыдлокодил и как он там скобочки расставил себе ради читаемости выражения?
[22:01:48] <ada_ru> (Максим) там написано, что компилятор может делать всё что угодно, если это не повлияет на результат вычислений
[22:46:25] <ada_ru> (I_vlxy_I) А что при этом эталон?
[23:27:05] <ada_ru> (Максим) эталон исполнения - как написано в стандарте. В данном случае надо посчитать, что в скобках, и потом умножить на y
[23:37:03] <ada_ru> (I_vlxy_I) а, то есть с наивной реализацией сравнить?
[23:37:23] <ada_ru> (I_vlxy_I) и, видимо, руками асм написать. ибо результат ведь от железа завистит.
[23:41:52] <ada_ru> (Максим) Там есть некоторая модель чисел, операции выражаются в этой модели.
[23:41:59] <ada_ru> (Максим) Model of Floating Point Arithmetic
http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-G-2-1.html
[23:42:56] <ada_ru> (I_vlxy_I) будем посмотреть.
[23:44:46] <ada_ru> (I_vlxy_I) о, какой-то strict mode и relaxed mode
[23:45:01] <ada_ru> (I_vlxy_I) может дело в этом? может нужно strict как-то включить?