Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.131.72] |
|
Страницы: (5) 1 2 [3] 4 5 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
Разве? О мультиметодах слышал?
|
Сообщ.
#32
,
|
|
|
Если уж по-честноку, то аббревиатура "div" давно и надежно занята дифференциальным оператором "Дивергенция". Считаю, что альтернативный оператор деления нужно обозначать так: ÷ (ссылка) |
Сообщ.
#33
,
|
|
|
Цитата D_KEY @ +1, но писать много букв (div вместо косой) не хочется сильно-сильно. И разве это не логичный вариант? / - деление чисел с плавающей точкой, а какой-нибудь div делит целочисленно. Цитата D_KEY @ Эх, а вот я бы оставил '%' за темой целочисленного деления, а вот хочется плавающее - fmod дёргайте. Да и в принципе мне кажутся более логичным отдельные div и mod для деления по модулю. |
Сообщ.
#34
,
|
|
|
Цитата Qraizer @ Операция / реализована по-разному для разных типов, но смысл её одинаков безотносительно к типам. Т.е. целочисленное деление с твоей точки зрения имеет тот же смысл, что и обычное? Интересный взгляд на вещи. Цитата Qraizer @ Сходный с ТС вопрос: надо ли возвращать complex из sqrt() при отрицательном аргументе? Тогда непонятно, какой из двух корней возвращать. Да и комплексные числа на практике требуются значительно реже вещественных. Цитата Славян @ +1, но писать много букв (div вместо косой) не хочется сильно-сильно. В питоне деление нацело - a // b. |
Сообщ.
#35
,
|
|
|
Цитата OpenGL @ Да, когда не было таких комментариев, то счёл бы за вполне 'зер гут' такой вариант! В питоне деление нацело - a // b. Добавлено Цитата OpenGL @ Верхний, = так же, как и сейчас при положительных возвращается правый. Тогда непонятно, какой из двух корней возвращать. |
Сообщ.
#36
,
|
|
|
Цитата Славян @ Да, когда не было таких комментариев, то счёл бы за вполне 'зер гут' такой вариант! Я к тому, что можно придумать массу способов записи целочисленного деления, отличных от div. |
Сообщ.
#37
,
|
|
|
Цитата OpenGL @ Увы, но сильно сомневаюсь:Я к тому, что можно придумать массу способов записи целочисленного деления, отличных от div. 1.Знаковая ASCII схема должна была быть лаконичной, а потому одного иного значка трудно найти. 2.Знак должен быть как можно понятнее, а школьно-естественный уже задействован. 3.Набор же букв(знаков) будет или дольше писать, либо разбираться сознанием будет труднее. Добавлено П.С. впрочем, есть шикарный вариант - ':', но вот и его несколько наспех использовали в тернарной операции ?: |
Сообщ.
#38
,
|
|
|
Пара знаков вполне приемлема. // в Питоне - ок.
|
Сообщ.
#39
,
|
|
|
Цитата D_KEY @ Пара знаков вполне приемлема. // в Питоне - ок. Да и три знака- нормуль, на мой взгляд. Лишь бы понятно было. div и mod- вполне понятно. |
Сообщ.
#40
,
|
|
|
Цитата OpenGL @ Конечно. Тот факт, что результаты отличаются, является следствием свойств типов. Напомню, деление нацело есть и вещественное, только выполняется оно std::функцией. Это – другая операция. И остаток от деления в виде функции тоже есть. А почему сделали функции? Потому что ведут себя иначе, чем / и %. Т.е. целочисленное деление с твоей точки зрения имеет тот же смысл, что и обычное? |
Сообщ.
#41
,
|
|
|
Цитата Qraizer @ Цитата OpenGL @ Конечно. Тот факт, что результаты отличаются, является следствием свойств типов.Т.е. целочисленное деление с твоей точки зрения имеет тот же смысл, что и обычное? Эм. Но ведь на множестве целых не определена операция деления. Только операция деления с остатком. |
Сообщ.
#42
,
|
|
|
Цитата Qraizer @ Конечно. Тот факт, что результаты отличаются, является следствием свойств типов. Результаты отличаются прежде всего потому, что это разные операции с разной семантикой, хоть и немного похожие. Вообще, складывается впечатление, что для тебя система типов нечто незымблемое, что никак не может быть нелогичным, из-за чего ты при любом удобном случае апеллируешь к ней. Религия какая-то. Цитата Qraizer @ А почему сделали функции? Подозреваю, что из-за исторических причин - остаток от деления для вещественных был нужен, % для них не работал, а менять его семантику означало нарушить обратную совместимость. Добавлено Кстати, а в Rust как деление устроено? |
Сообщ.
#43
,
|
|
|
Цитата OpenGL @ Ну вообще-то так и есть. Только религия тут ни причём. Свойства системы типов являются краеугольным камнем для C. И он далеко не единственный язык с этим свойством, я бы даже сказал, что не знаю языков, где система типов не играла бы такую же по важности роль. Поэтому делать исключений из неё нелогично. Но как я говорил, можно порассуждать о логичности самой системы типов C.Вообще, складывается впечатление, что для тебя система типов нечто незымблемое, что никак не может быть нелогичным, из-за чего ты при любом удобном случае апеллируешь к ней. Религия какая-то. Цитата OpenGL @ Да, из-за исторических. Но не поэтому. Исторически так сложилось, что ранние компьютеры работали так, как было удобнее их спроектировать. Эти свойства перетекли в правила арифметики языка Фортран, одного из первых и долгое время наиболее популярного ЯВУ. Первые процессоры и микропроцессоры также делались с оглядкой на этот принцип, поэтому язык C перенял Фортрановую арифметику, ибо она отражала реалии правил аппаратно реализованной арифметики в процессорах.одозреваю, что из-за исторических причин - остаток от деления для вещественных был нужен, % для них не работал, а менять его семантику означало нарушить обратную совместимость. Но вот пришёл IEEE на плавающую точку, и с удобностью пришлось завязать в пользу математической корректности. Вот так и получилось, что / и % работают не по математическим правилам, тогда как от вещественной арифметики интуитивно ожидается математически правильное поведение. Отсюда и деление на операторы и функции, выполняющие на первый взгляд одно и то же, но на самом деле по-разному. |
Сообщ.
#44
,
|
|
|
Цитата Qraizer @ Почему "ранние", они и сейчас так работают. И долго ещё будут так работать.что ранние компьютеры работали так, как было удобнее их спроектировать. Это реалии не компьютеров и языков программирования, а выполняемых операций. И здесь проявляется различие между чистой математикой и практикой программирования. Для целых чисел в принципе не определена операция точного деления (только в частных случаях). Зато имеется "алгоритм деления" или деление с остатком Для вещественных, как правило, деление осуществляется по возможно как можно более точно, а в тех случаях, когда надо что-то другое, вполне можно обойтись округлением (к ближнему, верхнему, нижнему) и усечением до целого. Поэтому, вполне естественным выбором разработчиков сперва автокодов, а потом ЯВУ назвать обе эти операции просто делением (оговаривая в описании, что для целых это "деление с остатком"). С другой стороны в математике деление целых обычно производят в поле рациональных чисел, и ничто не мешает определить операцию деления для целых так, чтобы результат был рациональным или вещественным числом и выполнить "истинное" деление. Кроме того можно доопределить деление с остатком так, чтобы результат такого деления для вещественных и рациональных чисел совпадал с результатом деления целых. Именно это сделали в Питоне. |
Сообщ.
#45
,
|
|
|
Цитата Qraizer @ Ну вообще-то так и есть. Только религия тут ни причём. Свойства системы типов являются краеугольным камнем для C. Но разговор ведь не о Си. Цитата И он далеко не единственный язык с этим свойством Но у других языков другая система типов. |