Здравствуйте, Pzz, Вы писали:
Pzz>Вы меня преследуете что ли? Ну-ну.
Байку вспомнил. Один мужик поздней ночью пробирался домой тёмными дворами. Какой-то неожиданный звук испугал его. Мужик резко дёрнулся и в этот эе момент получил удар по голове, от которого упал и потерял сознание. Придя в себя, он быстро вскочил на ноги, но тут же опять получил удар по голове и опять упал. Так он вскакивал, получал удары и снова падал всю ночь. Наконец, рассвело. И мужик, открыв глаза, увидел над своей головой детский турник...
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Pzz, Вы писали:
Pzz>Альфа бы, конечно, сказал, что он умный и никогда не будет складывать яблоки с апельсинами, и ему лишний контроль не нужен.
Альфа бы сказал, что сложение и вычитание требует одинаковости типов, а умножение и деление — нет.
Но эта мысль слишком сложная и для современных компьютеров и для современных программистов.
Кроме того нужно как-то описывать что получается при умножении и при делении.
Когда умножаешь метры на метры, то получаются не метры а квадратные метры.
Вот и попробуй всё это описать.
Поэтому да — или вы обеспечиваете нормальный контроль, или ну его на фиг.
Здравствуйте, alpha21264, Вы писали:
A>Кроме того нужно как-то описывать что получается при умножении и при делении. A>Когда умножаешь метры на метры, то получаются не метры а квадратные метры. A>Вот и попробуй всё это описать.
Здравствуйте, rg45, Вы писали:
R>А ещё нет булевского XOR. Наверное потому, что для операндов булевского типа его результат всегда совпадает с результатом оператора !=, а для операндов других типов опять возникают всякие неудобные вопросики.
А ещё в Бейсике есть эквиваленция EQV и импликация IMP, в сях нет, но, возможно, и не нужно.
Здравствуйте, alpha21264, Вы писали:
Pzz>>Альфа бы, конечно, сказал, что он умный и никогда не будет складывать яблоки с апельсинами, и ему лишний контроль не нужен.
A>Альфа бы сказал, что сложение и вычитание требует одинаковости типов, а умножение и деление — нет.
Согласен.
A>Когда умножаешь метры на метры, то получаются не метры а квадратные метры. A>Вот и попробуй всё это описать.
Вот я думаю да. Не "слишком сложная мысль", а поди попробуй всё это описать.
A>Поэтому да — или вы обеспечиваете нормальный контроль, или ну его на фиг.
А вот тут не согласен. То, что уже сейчас есть, определённо лучше, чем ничего.
Заметим, кстати, что умножение и деление встречается в программах порядка на два, наверное, реже, чем сложение и вычитание. В частности поэтому для процессора без встроенных команд умножения и деления было вполне сносно программировать.
Здравствуйте, Maniacal, Вы писали:
M>А ещё в Бейсике есть эквиваленция EQV и импликация IMP, в сях нет, но, возможно, и не нужно.
Ну да, в сях в дополнение к логическим операциям есть битовые операции и операции с адресами. На этой базе программист может построить всё, что душе угодно.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, so5team, Вы писали:
A>>Кроме того нужно как-то описывать что получается при умножении и при делении. A>>Когда умножаешь метры на метры, то получаются не метры а квадратные метры. A>>Вот и попробуй всё это описать.
S>Ну как-то же пробуют: https://github.com/mpusz/mp-units
И как успехи? Породили ещё один монстрообразный и ненужный проект?
Ты-ж понимаешь, что метры — это только для примера.
Мне в моей программе понадобятся свои типы и свои величины.
И какого размера монстрика я должен для этого породить?
Здравствуйте, alpha21264, Вы писали:
S>>Ну как-то же пробуют: https://github.com/mpusz/mp-units
A>И как успехи? Породили ещё один монстрообразный и ненужный проект? A>Ты-ж понимаешь, что метры — это только для примера. A>Мне в моей программе понадобятся свои типы и свои величины. A>И какого размера монстрика я должен для этого породить?
Вроде бы планируют добавить эти наработки в С++29.
A>Породили ещё один монстрообразный и ненужный проект?
Если судить по количеству звезд на GitHub-е, далеко не "ненужный".
A>Ты-ж понимаешь, что метры — это только для примера.
Нет, не понимаю. Предпочитаю говорить предметно. В указанной mp-units поддержали большое количество существующих единиц измерения.
A>Мне в моей программе понадобятся свои типы и свои величины. A>И какого размера монстрика я должен для этого породить?
ХЗ, тут бы сперва узнать, а умеете ли вы программировать вообще. Вашего кода я не видел.
Здравствуйте, rg45, Вы писали:
A>>И как успехи? Породили ещё один монстрообразный и ненужный проект? A>>Ты-ж понимаешь, что метры — это только для примера. A>>Мне в моей программе понадобятся свои типы и свои величины. A>>И какого размера монстрика я должен для этого породить?
R>Ну вот ещё пример: Шаблончик для размерных величин
.
R>Обрати внимание на простоту и год — 2009-й. Тогда это поместилось на пол экрана, а в наше время хватило бы и четверти.
Ну, это несколько не то. Тут у тебя одна и та же величина, просто в разный единицах.
В прошлом веке для этого просто венгерская нотация использовалась.
То есть, задача "не перепутать единицы" была решена вообще без кода.
Да, компилятор ошибки не генерировал. Просто было видно какая переменная в каких единицах.
Здравствуйте, alpha21264, Вы писали:
A>Ну, это несколько не то. Тут у тебя одна и та же величина, просто в разный единицах. A>В прошлом веке для этого просто венгерская нотация использовалась. A>То есть, задача "не перепутать единицы" была решена вообще без кода. A>Да, компилятор ошибки не генерировал. Просто было видно какая переменная в каких единицах.
Ну да, есть такое дело. Но можно допилить, чтоб можно было определять и производные единицы измерения. При современных средствах языка можно добиться того, что эти объявления будут выглядеть декларативно и компактно.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, sergii.p, Вы писали:
SP>в javascript тоже так подумали, но так как там всё контринтуитивно, решили в язык добавить SP>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND_assignment
Интересно. Интересно ещё, что
ИИ меня упорно убеждает, что запись вида a && (a = expr()); — это неопределённое поведение. Раз выражении одно, то плевать на определённость порядка...
Я в раздумьях...
Здравствуйте, B0FEE664, Вы писали:
BFE>ИИ меня упорно убеждает, что запись вида a && (a = expr()); — это неопределённое поведение. Раз выражении одно, то плевать на определённость порядка...
Здравствуйте, T4r4sB, Вы писали:
TB>Здравствуйте, vdimas, Вы писали: V>>Порядок вычисления аргументов && не определён. TB>
TB>if (p && p->x == 5) ...
TB>
Здесь явная точка последовательности — дважды читается одна и так же переменная p, т.е. с т.з. правого операнда все побочные эффекты вычисления левого операнда уже завершены.
В исходном примере, если компилятор в процессе оптимизации предположит, что "a" равно true, то начнёт писать в это "a" во втором выражении и результат может быть неопределённый из-за OoO.
Здравствуйте, vdimas, Вы писали:
BFE>>ИИ меня упорно убеждает, что запись вида a && (a = expr()); — это неопределённое поведение. Раз выражении одно, то плевать на определённость порядка... V>Порядок вычисления аргументов && не определён.
ЕМНИП порядок вычисления аргументов && не определён, только для пользовательской перегрузки.
Здравствуйте, vdimas, Вы писали:
V>Здесь явная точка последовательности — дважды читается одна и так же переменная p, т.е. с т.з. правого операнда все побочные эффекты вычисления левого операнда уже завершены.
Точки последовательности давно выкинули из стандарта .
V>В исходном примере, если компилятор в процессе оптимизации предположит, что "a" равно true, то начнёт писать в это "a" во втором выражении и результат может быть неопределённый из-за OoO.