Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Как уменьшить такую конструкцию?   Найти похожие ветки 

 
Германн ©   (2010-02-01 03:15) [80]


> А ты можешь представить реально нужный пример кода в Windows,
>  когда нужно применять XOR?
>

Вот and, or или not - это понятно.


 
Юрий Зотов ©   (2010-02-01 05:10) [81]

> Германн ©   (01.02.10 03:15) [80]
> А ты можешь представить реально нужный пример кода в Windows,
> когда нужно применять XOR?

Хм... а при чем тут Windows?


 
Думкин ©   (2010-02-01 07:49) [82]

Странный спор, притом что правильного решения альтернативного заданной конструкции так и не приведено.


 
KilkennyCat ©   (2010-02-01 08:34) [83]

Ну вот, пришел Думкин и 80 постов испортил :)


 
Ega23 ©   (2010-02-01 11:46) [84]


> А ты можешь представить реально нужный пример кода в Windows,
>  когда нужно применять XOR?
>


Значение регистра обнулить? Заксорить самого на себя...


 
Alx2 ©   (2010-02-01 12:01) [85]

В случае с xor у меня по удобочитаемости идет такой порядок:
1. if a<>b then ...
2. if a xor b then ...
....
1000. if (a and not b) or ((not a) and b) then...
2000. if ((not a) or (not b)) and (a or b) then...


 
TUser ©   (2010-02-01 12:15) [86]

XOR отличиается от других логических операций уже тем, что для него нет слова в русском (английском) языке. И, ИЛИ и НЕ мы в разговорной речи употребляем. ИСКЛЮЧАЮЩЕЕ_ИЛИ - ни разу не слышал.

Это показывает, что XOR гораздо реже употребляется человеками. То есть он человекам менее понятен, чем три другие операции. А стало быть из двух операций

A <> B

и

A xor B

первая понимается проще.

Конечно, программист обязан понимать и вторую операцию. Но он также обязан понимать и слово "не равно", разве нет? И он обязан писать так, чтобы не запутывать читающего, а способствовать его пониманию. Поэтому из двух этих конструкций первая - хорошая, а вторая - плохая. Имхо, конечно.


 
KilkennyCat ©   (2010-02-01 12:25) [87]


> Это показывает, что XOR гораздо реже употребляется человеками.

Ну, если электронщиков не считать человеками, то тогда да.


 
TUser ©   (2010-02-01 12:39) [88]

Если их считать человеками, то все равно - на истинность утверждения "XOR гораздо реже употребляется человеками" применительно ко всему человечеству они не повлияют. Мало их.


 
Ega23 ©   (2010-02-01 12:55) [89]

ИМХО.
Вообще не дело логические операторы и битовые одинаково именовать. Это не для конкретного языка, это "вообще".
В этом плане мне разделение в TSQL нравится. С его побитовыми &, ~, | и ^


 
Anatoly Podgoretsky ©   (2010-02-01 13:01) [90]

> KilkennyCat  (01.02.2010 12:25:27)  [87]

электронщиков не считать человеками, без всяких если.


 
Anatoly Podgoretsky ©   (2010-02-01 13:04) [91]

> Ega23  (01.02.2010 12:55:29)  [89]

Это тлетворное влияние СИ


 
Вариант   (2010-02-01 14:55) [92]


> Ega23 ©   (01.02.10 12:55) [89]


> ИМХО.
> Вообще не дело логические операторы и битовые одинаково
> именовать.

Согласен


 
Кто б сомневался ©   (2010-02-01 15:08) [93]


> TUser ©   (01.02.10 12:15) [86]


Я уже писал что человек если произносит союз "или" - подразумевает свойство XOR. Иначе надо было говорить "или\и" - а мы так не говорим.
Получается xor ("или") обычно используется повсеместно в чел. жизни.
Or (или\и) никогда - по крайнем мере в русском и англ. языке.


 
Кто б сомневался ©   (2010-02-01 15:12) [94]


> A <> B
>
> и
>
> A xor B
>
> первая понимается проще.


Опять же проще для тебя. Для меня они одинаково просто доходят, т.к. в свое время я часто с битовой логикой работал.
В твое случае ты чаще работаешь с <> чем с xor поэтому и доходит быстрее первое. На деле до программиста знающего как работает XOR но не работающего с ним - не трудно припомнить свойство - всего 3 секунды.


 
Ega23 ©   (2010-02-01 15:22) [95]

A <> B
и
A xor B

var
 A, B : real;


 
Кто б сомневался ©   (2010-02-01 15:24) [96]


> Ega23 ©   (01.02.10 15:22) [95]


Мы про boolean говорим - здесь ничего не надо вычислять.


 
xayam ©   (2010-02-01 15:33) [97]

Удалено модератором


 
Кто б сомневался ©   (2010-02-01 15:41) [98]


> xayam ©   (01.02.10 15:33) [97]


Нет, не поняли. Я имел ввиду в целом людей которые не часто работают с xor, но знают как он работает. Отправлял вчера эту конструкцию знакомому, сказал как поймешь сразу скажи как она работает (по скайпу). Он тоже программист (C#) - с xor работает не часто.

if a xor b then

Он ответил через 3 секунды. Просто знал присказку "или там или там, но не оба". :)


 
xayam ©   (2010-02-01 15:47) [99]

Удалено модератором


 
Ega23 ©   (2010-02-01 15:49) [100]


> Мы про boolean говорим - здесь ничего не надо вычислять.


Вот в том-то и дело. В случае Boolean - логическая. В случае числа - побитовая.
А если вспомнить, что false = 0, а true <> 0, то вообще всё весело.


 
KilkennyCat ©   (2010-02-01 15:56) [101]

var
 A, B : boolean;

A <> B  выглядит идиотски, так же, как if A <> true


 
Кто б сомневался ©   (2010-02-01 16:14) [102]


> А если вспомнить, что false = 0, а true <> 0, то вообще
> всё весело.


в boolean true = 1 всегда вы ж знаете. Это не bytebool и не bool.
Вообще A+B*C - здесь больше усилий нужно, чем A xor B.
если бы детей в школе учили xor на равне с операциями + - то не было бы и таких удивлений и спора. Просто бы шло на автомате. А человеку который пишет код, имхо вообще спорить по этому поводу глупо.


 
Alx2 ©   (2010-02-01 16:27) [103]

>KilkennyCat ©   (01.02.10 15:56) [101]


> A <> B  выглядит идиотски, так же, как if A <> true


Передерну в другую сторону: для завершенности картинки, нужно юзать только Штрих Шеффера. Чтобы одна функция на все-про все, и до оторопи понятно без въездов в контекст. :)
Но ведь есть локальные документы-соглашения о стиле кодирования в конкретных конторах и проектах. Лепят по ним.  Чего зря спорить?


 
xayam ©   (2010-02-01 16:32) [104]

Удалено модератором


 
Думкин ©   (2010-02-01 16:53) [105]

По заданорй задаче 3 исхода. В один зинелфс там не получится.

Это бы в свич - для высокого языка. Это красивее. А каждый внутренний заход в кэйсе - в языкопонятную функцию.


 
Ega23 ©   (2010-02-01 16:53) [106]


> в boolean true = 1 всегда вы ж знаете. Это не bytebool и
> не bool.


нету в Boolean ни 0, ни 1, ничего другого. Есть true и есть false.
0, 1 и другие значения - это уже не Boolean.

Вот Ord(True) - да, всегда единица.


 
Думкин ©   (2010-02-01 16:57) [107]


> По заданорй задаче 3 исхода.

Извините.

> По заданой задаче 3 исхода.

так.


 
Кто б сомневался ©   (2010-02-01 17:13) [108]


> Ega23 ©   (01.02.10 15:49) [100]
> А если вспомнить, что false = 0, а true <> 0, то вообще
> всё весело.



> Ega23 ©   (01.02.10 16:53) [106]
> нету в Boolean ни 0, ни 1, ничего другого. Есть true и есть
> false.
> 0, 1 и другие значения - это уже не Boolean.


Сам же написал. И сам же отрицаешь.. :)

Есть в boolean и ноль и один. Просто интерпретация его как 0 - false 1 - true.
неважно как называется, можно назвать как черное и белое или как да и нет или как 0 и 1 - суть одна.
Ну а если строго на язык смотреть, тогда да, true и false. Но тогда это касается всех - и bool и bytebool и longbool итд.


 
Кто б сомневался ©   (2010-02-01 17:15) [109]


> Ну а если строго на язык смотреть, тогда да, true и false.


А вообще нет, если строго смотреть ,тогда как раз есть ноль и один. Просто для удобства назвали его false и true. Двоичная система.


 
tesseract ©   (2010-02-01 17:22) [110]


> А вообще нет, если строго смотреть ,тогда как раз есть ноль
> и один.


C COM работал? Там всё глубоко наоборот.


 
Думкин ©   (2010-02-01 17:45) [111]


> tesseract ©   (01.02.10 17:22) [110]
>
> > А вообще нет, если строго смотреть ,тогда как раз есть
> ноль
> > и один.
>
>
> C COM работал? Там всё глубоко наоборот.

Вот поэтому и не надо.

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

Писать надо понятно. А скорость придумывания терминов оставим философам.


 
Jeer ©   (2010-02-01 18:19) [112]


> То не стоит выносить мозг Гильбертом.


Это - да.


 
Юрий Зотов ©   (2010-02-01 22:55) [113]

> TUser ©   (01.02.10 12:15) [86]

Обоснование глыбоконаучное, спору нет.

Но как насчет "либо-либо"?

:o)


 
Ega23 ©   (2010-02-02 00:31) [114]


> Сам же написал. И сам же отрицаешь.. :)


Ты опу с пальцем путаешь.
Что будет:
if Boolean(2) then
 ShowMessage("True")
else
 ShowMessage("False")  

?


 
Не занят   (2010-02-02 02:25) [115]


> if Boolean(2)


Правда всегда одна, путей к ней много


 
Lamer@fools.ua ©   (2010-02-02 10:21) [116]

Поддержу xor. Не вижу в данном примере ничего криминального.
За один несчастный xor так наброситься на человека...

Лучше здесь перлы почитайте: http://govnokod.ru/
В частности, http://govnokod.ru/delphi


 
GrayFace ©   (2010-02-02 12:09) [117]

У меня результаты xor и <> полностью совпадают. В отличие от [34], замеры делал раздельно, на разных кнопках, иначе не достоверно.

Германн ©   (01.02.10 2:57) [79]
А ты можешь представить реально нужный пример кода в Windows, когда нужно применять XOR?

Реальный пример в голову не лезет, но
A xor B xor C
Если переводить на <>, то появятся скобки.
Гепотетический пример:
map[x, y, z]:= (x mod 2 = 0) xor (y mod 2 = 0) xor (z mod 2 = 0);
- заполнение каждой второй ячейки true.


 
GrayFace ©   (2010-02-02 12:10) [118]

по типу шахматной доски.


 
12 ©   (2010-02-02 12:16) [119]

$ifdef оффтоп

вот так еще прикольно получится
const
false = true;
true = false;
begin
if (1>0) = false then showmessage("(1>0) = false");
if (1>0) = true then showmessage("(1>0) = true");

а потом
const
true = false;
false = true;
begin
if (1>0) = false then showmessage("(1>0) = false");
if (1>0) = true then showmessage("(1>0) = true");


 
Ega23 ©   (2010-02-02 12:22) [120]


> map[x, y, z]:= (x mod 2 = 0) xor (y mod 2 = 0) xor (z mod  2 = 0);
> - заполнение каждой второй ячейки true.


А в один проход разве не судьба?



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.68 MB
Время: 0.06 c
15-1271655951
Дрогба
2010-04-19 09:45
2010.08.27
Хороший программист


2-1269007934
Delphist2
2010-03-19 17:12
2010.08.27
обновить dblistbox


2-1273576150
noob_one
2010-05-11 15:09
2010.08.27
Variant как массив.


2-1266278397
romingood
2010-02-16 02:59
2010.08.27
Вопрос по строковым типам


2-1268466438
NBAH1990
2010-03-13 10:47
2010.08.27
Как сжать Jpg картинку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский