Перейти к содержанию
    

а еще можно попробовать:

с=(!a + !b) % 2;

Можно, но зачем? Дабы восхититься красотой абсурда?

Понятно, что можно нагородить множество конструкций, дадущих верный ответ, но... Абстракционисты - тоже художники...

Я вот читаю ветку и хоть не специалист, но аргументы уважаемого ARV кажутся мне весьма убедительными.

Хорошо владеть языком в совершенстве, и стоит к этому стремиться. Но богатые возможности языка совсем не обязывают использовать их непременно в полной мере.

Важнее, имхо, чтобы программу можно было читать, а не требовалось расшифровывать. Разумеется, при прочих равных. Или иногда даже в ущерб размеру.

Ведь абстракциониста оценит лишь абстракционист. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно, но зачем? Дабы восхититься красотой абсурда?
О каком абсурде вы говорите?

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

Си - это очень выразительный язык. Он позволяет решать любые задачи множеством путей. Соль программирования заключается в том, чтобы найти самый оптимальный.

Критериев может быть несколько. Ваши критерии находятся ортогонально моим... Ну и что с того? Я же не говорю что вы абсурдны, как и результаты вашего труда?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

какая из этих конструкций более соответствует здравому смыслу?

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

 

Надеюсь, дискуссия не возникнет из утверждения: Язык математики (математической логики) не эквивалентен языку программирования (имеются в виду возможности языка).

 

Посмотрев дискуссию, я сделал для себя следующее наблюдение (может и не верное :laughing: ):

Уважаемый ARV предлагает использовать язык программирования (например, для логических выражений) строго как предписывает математика. Конструкции языка программирования эквивалентны языку математики.

Уважаемые оппоненты ARV предлагают использовать некоторые документированные возможности языка для получения того же результата не следуя строго канонам математики.

 

На мой взгляд, на использование тех или иных языковых конструкций в программе может влять масса факторов и общего правила не выработать (масса стилей кодирования).

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а еще можно попробовать:

с=(!a + !b) % 2;

Попробовать - можно. Делать - не стоит. Операция "остаток от деления" очень тяжелая.

Для расширения кругозора можно сделать вот так:

с=(!a + !b) & 0x1;

Вам, как "ученику" - домашнее задание. Объясните как работает эта конструкция

 

Вариант !!a ^ !!b мне нравится больше, так как в нем прямо написано - выполнить КСОР

Я НЕ пишу !a ^ !b, так как результат и логически, и в двоичном коде будет одинаковый, но !! означает "превратить в булеву форму", а один восклицательный знак означает инверсию, что заставляет задуматься - а не поменялась ли здесь логика.

 

2 Herz - мистер ARV ратует не за простоту. Он ратует за исключение из языка всех форм, выходящих за рамки лексикона людоедки Элочки. Объясняя это тем, что "вы тут слишком вумные, простым работягам это ни к чему". Выжечь, говорит, эту гидру каленым железом (тупыми ножницами)

 

Насчет понимания. Короткие посты понять легче, чем многостраничный поток сознания.

Специалист говрит - XOR a и b , и его понял другой специалист.

А имярек говорит "тут, эта, такая величина, что если а истино, а b - ложно, то эта величина будет истина. Или если a ложно а b - истино, то величина тоже будет истина"

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

Изменено пользователем igorle

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О каком абсурде вы говорите?

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

...

Мне по-настоящему смешно читать посты ARV и ваши реплики о программировании...

Я не пытаюсь учить Вас программированию, поймите правильно, это было бы действительно смешно.

Однако, не смешить Вас и не флейм сюда разжигать подтянулся. Поэтому спорить не буду.

Но... можно, я не буду смотреть, во что оно компилится? Не читая, так сказать, скажу, что осуждаю?

Ведь вижу запись, выглядящую абсурдно. Вот Вы тоже: прочтите её вслух, а затем тоже сделайте выводы. Не смешно? Только честно.

И сколько, говорите, такая запись сможет сэкономить по сравнению с понятной "предрассудковой"? Пусть две строчки. И то сильно сомневаюсь.

Но мы ведь о другом совсем...

 

 

 

Попробовать - можно. Делать - не стоит. Операция "остаток от деления" очень тяжелая.

Именно. Возможно, компилятор попытается оптимизировать её сдвигом. Всё-таки, деление на 2. Но всё равно вряд ли тут есть смысл.

 

2 Herz - мистер ARV ратует не за простоту. Он ратует за исключение из языка всех форм, выходящих за рамки лексикона людоедки Элочки. Объясняя это тем, что "вы тут слишком вумные, простым работягам это ни к чему". Выжечь, говорит, эту гидру каленым железом (тупыми ножницами)

Да нет, по-моему, Вы сгущаете краски. Зачем же скатываться в крайности? Я вот понял его совсем иначе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

!!a вам нравится больше, чем !a... особенно для самого нормального случая в си, когда а=25. НЕ НЕ 25 это разумеется 1 !!! это логика двоичного робота, но не человека.

 

 

некоторые вещи вам непонятны не потому, что ваши понятия узки, но потому, что вещи сии не входят в круг ваших понятий. это К.Прутков сказал прямо про вас :)

 

еще одно последнее сказанье, и летопись окончена моя. в соседней ветке про поиски исполнителей для всякой работы все без исключения "профессионалы" ведут себя абсолютно точно так же, как и в этой теме: первым делом доказать всеми средствами автору вопроса, что он дурак, ничего не понимающий в деле, которым решил заняться. даже если кто-то просит собрать ему мигалку на светодиоде, в ответ он получает советы разобраться, надо ли эту мигалку сертифицировать, рассказы о том, что мигалки не имеют рынка сбыта, что в китае дешевле купить и т.д. и т.п. все это продолжается до тех пор, пока не найдется какой-нибудь кустарь-одиночка вроде не раз замеченного тут (и обруганного "профессионалами") Слесаря, который пальцы веером не расставляет, а просто берет и делает то, что заказчик хочет. еще в одной теме для начинающих я увидел для мигалки использовать параллельно исполняющиеся потоки... тенденция, однако...

 

не хочу никого обидеть, но по-моему, это уже диагноз... уважаемые "ученики"! прошу вас, сохраняйте здравый смысл! он поможет вам даже тогда, когда Си окажется бесполезным.

P.S. Спасибо уважемому модератору Herz-у, что все-таки рассмотрел зерно здравого смысла в моих словах. значит, либо я не так уж плох, либо не все еще потеряно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для расширения кругозора можно сделать вот так:

с=(!a + !b) & 0x1;

Вам, как "ученику" - домашнее задание. Объясните как работает эта конструкция

 

Я понимаю, как это работает.

---

Сори, но скобки тут лишние :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я НЕ пишу !a ^ !b, так как результат и логически, и в двоичном коде будет одинаковый, но !! означает "превратить в булеву форму", а один восклицательный знак означает инверсию, что заставляет задуматься - а не поменялась ли здесь логика.

Инверсию означает ~, а ! означает логическое отрицание (НЕ), и он тоже превращает в булеву форму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Инверсию означает ~, а ! означает логическое отрицание (НЕ), и он тоже превращает в булеву форму.
вы посягнули на мнение профессионала! сказано - инверсия, значит инверсия!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы посягнули на мнение профессионала! сказано - инверсия, значит инверсия!

В данном конкретном вопросе (!! vs !) я не нахожу причин, почему igorle отказывается использовать одиночные !, кроме, как привычки. Так же и другие (не будем показывать пальцами) не желают шагнуть за пределы своих укоренившихся принципов. А зря. Никто не заставляет силой использовать то, что не нравится. Но иметь в виду, понимать - это никому не вредит. Лично я узнал кое-что новое, за что благодарю всех участников дискуссии. И в книжки несколько раз заглянул, что тоже пойдет на пользу. :)

P.S. А 5[a] все равно использовать не буду! Это противоречит моему здравому смыслу. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. А 5[a] все равно использовать не буду! Это противоречит моему здравому смыслу. :)
вы только скажите, что вы и раньше так думали, а то если окажется, что это я вас заразил этой крамолой, я себе не прощу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данном конкретном вопросе (!! vs !) я не нахожу причин, почему igorle отказывается использовать одиночные !, кроме, как привычки. Так же и другие (не будем показывать пальцами) не желают шагнуть за пределы своих укоренившихся принципов. А зря. Никто не заставляет силой использовать то, что не нравится. Но иметь в виду, понимать - это никому не вредит. Лично я узнал кое-что новое, за что благодарю всех участников дискуссии. И в книжки несколько раз заглянул, что тоже пойдет на пользу. :)

P.S. А 5[a] все равно использовать не буду! Это противоречит моему здравому смыслу. :)

+1

тоже много подчерпнул :)

И 5[] для меня тоже какой-то бред, однако в лаконичности

return "0123456789abcdef"[i]

что-то есть ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы только скажите, что вы и раньше так думали, а то если окажется, что это я вас заразил этой крамолой, я себе не прощу...

Раньше я даже в ... нетрезвом виде не допускал, что такое возможно. Не знал. И сейчас считаю это нелогичным.

В отличие от всех остальных "приемов".

Читал две книжки, не считая каких-то еще при социализме изданных - K&R и Шилдта. Ни там, ни там такого 5[a] не написано. Наверное, не без причин.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...