Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на чётность, MS VC ++ 6.0 
:(
    Опции темы
sergejzr
Дата 24.7.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(GremlinProg @  24.7.2006,  11:21 Найти цитируемый пост)
тогда с такими подходами,

Какими подходами????
Если программисту не очевидно, что х&1 дают последний бит, то с ним в любом случае сработаться будет тяжело.
 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
GremlinProg
Дата 24.7.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



Зри в корень! Отсюда все и начинается. Думаешь ты один такой? ) Наивный...

Оптимизация типа х&1 или (!(id+1)) и т.п. - это болезнь, от которой нужно поскорее избавляться, если ты хочешь прославиться программистом. Все через неё проходят, ты не первый. Возможно меня поддержат профессионалы, если увидят.

До сих пор вижу код, который нспещрен примочками типа встроенного ассемблера, сажусь разбирать - чушь полнейшая, которая либо заменяется парой строк на си, либо работает только при ограничениях на оптимизацию, (т.е. из за долбанного куска асма приходится отказываться от скорости исполнения остального кода). Раньше любой школьник, который хоть мало-мальски интересовался кодингом мог подглядеть, содрать, украсть очередную примочку и всем хвастаться: какой он молодец. Но этот бум давно прошел, сейчас рынок труда не терпит такого издевательства, такие грамотеи отсеиваются элементарной конкуренцией, а програмное обеспечение уже давно ушло за рамки асма, невозможно сейчас просто даже вручную посчитать элементарную програмку с использованием различных наворотов типа ASP, с импортом библиотек от различных производителей, даже если ты супер-пупер классно этот асм знаешь. Поэтому большое значение имеет компилятор, которым пользуется разработчик; насколько велики его возможности оптимизировать код; насколько перспективно его дальнейшее развитие в ногу со временем. Это все и даже больше имеет значение при разработке сегодняшнего софта. Я сделал свой выбор и не жалею.

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


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
bel_nikita
Дата 24.7.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(GremlinProg @ 24.7.2006,  11:13)
...
заблуждаешься: код высокого уровня для того и нужен, чтобы абстрагировать задачу от конкретной её реализации на конкретном компиляторе, поэтому, если необходимо вычислить остаток, то и нужно писать (%), а не (&), а компилятор сам знает, что он должен сделать быстрее, а что - медленнее. Может быть это и прописные истины, но почему-то многие о них забывают.

Вот, сам же говоришь оптимизация второстепенный вопорос, ну так возьми пару компиляторов и посмотри на код по-дефолту:
Код
unsigned value = 100;
if ( value % 2 )
{
...
}

увидишь там операцию div smile  Компилятор сам ничего не знает, если не укажешь. Конечно, если пишешь под Вин калькулятор или тетрис, то можешь положиться на компилер и не знать, что у тебя творится в коде. Да и не нужно это все знать. Но когда начнешь писать, к примеру, драйвер какого-нибудь девайса, то поймешь что компилятор не панацея и не такой он "всезнающий". Весь код будет устлан вставками optimize: off/optimize: on

Цитата
Объяснил, почему для разработчика так важно знать, что действительно происходит в коде, т.е. что он имел ввиду, когда писал код. Если над проектом работает один программист, то, конечно, можно положиться на его память и надеяться на то, что через пару недель, месяцев, лет он таки вспомнит свои действия. Но, если над проектом работает несколько программистов, то бишь группа, тогда с такими подходами, как у sergej.z, сработаться им будет крайне сложно.

Если над проектом будут работать люди, которые задумываются над операциями &,|,%,  и при проверке целого на четность используют деление, то ни о каком срабатывании и речи быть не может. 


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 24.7.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Так, налицо конфликт поколений  smile Может, хватит спорить?
Код типа x&1 - это не оптимизация, а привычка (со времен, когда компьютеры были большими и медленными, а компиляторы - не такими умными): думаешь "взять остаток от деления на 2", а руки сами пишут "&1". И чего ради перучиваться? Чтобы молодые "высокоуровневые" програмисты не напрягались? Так и им полезно знать кое-что о битах... В конце концов, дело вкуса.

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


--------------------
...
PM   Вверх
bel_nikita
Дата 24.7.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



GremlinProg
Цитата
 когда сидишь дома, пытаешься разобраться в серьезном коде такие вот примочки тормозят процесс бывает на час-два, а то и день выпадает

Ну-уу, если тебя вводят вступор такие операции, как  х&1 или (!(id+1)), то что же ты пишешь? smile  

Это сообщение отредактировал(а) bel_nikita - 24.7.2006, 14:43


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 24.7.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



GremlinProg, во первых на "ты" мы не переходили.

Во вторых если к этому делу уже серьёзно подходить, то правильно будет писать:

if is_even(x)
{
...
}

Поскольку оценивая операцию х%2 можно именно узнать, какому значению равен остаток от деления.
То что ответ 0 означает деление нацело - уже оптимизатия программиста (и по Вашей теории).
(как видим со всем можно перестарться)

Добавлено @ 14:46 
Вообще, всё зависит от определения.
Один определяет чётность отсутсвием остатка при делении на число 2, другой результатом булевой операции & переменной с числом 1.
Кто из этих двух больший проффессионал - на Вам судить.   


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
GremlinProg
Дата 24.7.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



Неохота спорить, да и не нужно  мне это.
По DDK - это вообще отдельная тема, зря ты её трогаешь, нет еще полноценного компилятора для разработки драйверов. Могу только посоветовать хорошую книжку Солдатова Программирование драйверов Windows. Изд. 2-е, перераб. и доп. — М.: ООО "Бином-Пресс", 2004 г. — 480 с: ил. Здесь он очень хорошо расписал, что можно, а что нельзя.
Цитата
которые задумываются над операциями &,|,%

Похоже ты не понял, о чем я говорил. 


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Nuzur
Дата 24.7.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Млин, а создал то простую тему с простым вопросом, возникшем в результате торможения после тяжелого вечера!
Ну вы молодцЫ конечно, начали за здравие, закончили за упокой!

ЗЫ: если вам интерестно мое мнение, хоть я в етом я уже оч сильно сомневаюсь, так вот, если вам интерестно мое мнение - то

Код

if ( value % 2 )


намного красивше и читаеться с ходу, а вот вариант с & заставил на секундочку тормознуть smile
Может голосование устроим? 


--------------------
Never again...
PM MAIL   Вверх
GremlinProg
Дата 24.7.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



Earnest, похоже вы правы, согласен. Именно об этом я и говорю: время - деньги, но голова-то одна на плечах и она изредка раскалывается от излишней рьяности перспективных программистов доказать свою значимость, превосходство, показать как можно больше из того, что он знает. Это конечно не плохо, только девелопер не должен особо переживать по поводу подтверждения своей квалификации. Быть может дело в гармонах?

Добавлено @ 15:04 
Nuzur, программирование - это искусство, в нем тоже должна быть красота. 
Цитата

намного красивше и читаеться с ходу, а вот вариант с & заставил на секундочку тормознуть 

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

Это сообщение отредактировал(а) GremlinProg - 24.7.2006, 15:08


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
bel_nikita
Дата 24.7.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(GremlinProg @ 24.7.2006,  13:48)
По DDK - это вообще отдельная тема, зря ты её трогаешь, нет еще полноценного компилятора для разработки драйверов. Могу только посоветовать хорошую книжку Солдатова Программирование драйверов Windows. Изд. 2-е, перераб. и доп. — М.: ООО "Бином-Пресс", 2004 г. — 480 с: ил. Здесь он очень хорошо расписал, что можно, а что нельзя.

 smile 

А я DDK и не трогаю. Причем тут DDK и книжка? smile  Профессионалы(про коих ты тут упомянул) пишут не только под Windows'ом и VC 7.1 smile  


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 24.7.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



Профессия в первую очередь подтверждается временем, это я и имел в виду под словом "профессионал".

Цитата(bel_nikita @  24.7.2006,  17:08 Найти цитируемый пост)
А я DDK и не трогаю. Причем тут DDK и книжка?

похоже, ты вообще ни чего не трогаешь, только шум поднимаешь.

Цитата(bel_nikita @  24.7.2006,  17:08 Найти цитируемый пост)
не только под Windows'ом и VC 7.1

про это речи не было , а книжку я посоветовал потому, что в нех понятным языком разъяснены особенности разработки драйверов конкретно в VS и конкретно для Windows. По моему я ни кого не дезинформировал. 


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
ptr
Дата 24.7.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Да господа, как сказал Nuzur, начали за здравие, а закончили за упокой. Вы здесь обсуждаете разные привычки написания кода. Кому-то проще и понятнее писать x&1, кому-то x%2. Не вижу смысла этого спора, всё равно все останутся при своём мнении.

Цитата(GremlinProg @  24.7.2006,  19:00 Найти цитируемый пост)
Nuzur, программирование - это искусство, в нем тоже должна быть красота. 

Красота дело относительное. Кому-то нравится больше x%2, кому-то x&1 smile . 


Код прежде всего должен быть понятным, а эффективность это дело тоже относительное smile . Иногда проще поставить рядом ещё один ящик и пусть себе считает. То, что сегодня  кажется медленным завтра уже может не иметь значения. Оптимизация (ручная) нужна там, где она действительно нужна  smile (системное программирование, математические расчёты или там где она важна для работы программы), а не где попало.      

Это сообщение отредактировал(а) ptr - 24.7.2006, 15:39


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
Earnest
Дата 24.7.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(ptr @  24.7.2006,  16:28 Найти цитируемый пост)
Иногда проще поставить рядом ещё один ящик и пусть себе считает.


Именно, ptr. Вот ведь нашли мировую проблему, о чем спорить, да еще и на личности переходить! 

GremlinProg, я понимаю, что ты хотел сказать: только ведь нет абсолютного критерия: что русскому красиво, то немцу смерть.
(Это я ни в коем случае не намекаю на место жительства sergej.z, просто пословица такая...  smile ) 
Т.е. один программист увидит трехэажный boost::bind и скажет "вау!", а другой скажет: "убить бы гада, который это написал". Да что там говорить: чужой код, в котором приходится разбираться, почти всегда раздражает: не алгоритмом, так именами, не именами так расстановкой скобочек... Не надо злится, надо просто сказать себе: "что же делать, не все же такие умные как я, пишут как могут, и на том спасибо..." smile  


--------------------
...
PM   Вверх
Nuzur
Дата 24.7.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Модераторы перенесите тему в релизиозные войны пожалуйста smile 


--------------------
Never again...
PM MAIL   Вверх
sergejzr
Дата 24.7.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(Earnest @  24.7.2006,  12:38 Найти цитируемый пост)
Так, налицо конфликт поколений  smile Может, хватит спорить?

Не вижу ничего плохого в спорах. На то он и форум. (Переубедите меня)
Вот пример, что можно вдоволь поспорить (к тому же "на религиозную тему"), каждому остаться при своём мнении абсолютно не переходя никакие рамки приличия и остаться друзьями.
http://forum.vingrad.ru/index.php?showtopic=35267

Цитата(Nuzur @  24.7.2006,  12:59 Найти цитируемый пост)
Ну вы молодцЫ конечно, начали за здравие, закончили за упокой!

Ну это уже жизнь и эволюция темы. Одному человеку она не подвластна smile .(Если за рамки приличия не выходит)
Узнал ответ на свой вопрос? Вот и отлично! А во что она превратится после этого - решают её участники.

 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1224 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.