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

Поиск:

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


Эксперт
****


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

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



Earnest, согласен )
...тогда я из того числа, кто скажет
Цитата(Earnest @  24.7.2006,  17:43 Найти цитируемый пост)
"убить бы гада, который это написал"

разумеется, у stl смои минусы, но есть и плюсы, тем не менее.
Видишь, по большому счету не в красоте дело, поддержу ptr:
Цитата(ptr @  24.7.2006,  17:28 Найти цитируемый пост)
Оптимизация (ручная) нужна там, где она действительно нужна


разобрать код можно всегда, вопрос сходится только ко времени, которое приходится убивать на это неблагодарное дело. А вообще, в этом плане я не замечал у нас ни каких институтов: учат в основном как писать код, но совершенно не учат как правильно писать код. Вот буржуи - молодцы, они-то уже давно применяют стереотипы командной разработки. Вот, например Фредерик П.Брукс, со своим "Мифический человеко-месяц" какого года книжка, а сколько было споров по поводу статьи "Серебряной пули нет", и когда!!! 1987год. А сколько еще таких книг: "Экстремальное программиррование", "Рефакторинг"... И все это нацелено главным образом на то, чтобы можно было в конкретно детерминировать работу девелопера, и можно было его заменить или добавить в группу, дабы увеличить профессиональную мощь. Мало того, книгами и статьями дело не обошлось, написали не мало софта "для правильного программирования", те же Small Talk, но там жава. На других языках тоже какие-то есть. Бери, пользуйся. Сейчас и в россии тоже в плане софта есть разработки. Только в обучении специалистов дело похоже так и не движется. Печально. Ввели курсы по защите - круто, а что защищать, писать-то еще не научились. 


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


Эксперт
****


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

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



Цитата(sergej.z @  24.7.2006,  17:21 Найти цитируемый пост)
Не вижу ничего плохого в спорах. На то он и форум (Переубедите меня)

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


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


Un salsero
Group Icon


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

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



Полезность каждый определяет для себя smile Кто полезным не считает - не спорит. 


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


Эксперт
****


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

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



Кони люди смешались smile . DDK, STL, SmallTalk, Java, стили, асм, профессионализм и т.д.

Мне кажется,  что ответ дан исчерпывающий. Вопрос прозвучал: "Проверка на чётность, MS VC ++ 6.0". Приведены примеры и пояснения. Что касается быстродействия, так вот при использовании unsigned value % 2, этот самый шестой вставляет инструкцию div будь то релиз или дебаг.

З.Ы.: Что касается человеко-часов, то боже упаси работать с человеком стучащем без рабору по клаве и набирающем 5000 строк кода за 8 часов. Как правило, такой код восприимчив к окружающей среде и погоде smile  


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


Эксперт
****


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

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



Цитата(GremlinProg @  24.7.2006,  17:24 Найти цитируемый пост)
 Вот буржуи - молодцы, они-то уже давно применяют стереотипы командной разработки.

Ага, только код от этого у них лучше не становится. Да возьми хотя бы примеры с codeproject (ну не все подряд, конечно). Или какой-нибудь, не дай господи, код университетской разработки: просто поражаешься иногда контрасту между красотой и мощностью идеи, и убогостью реализации. Но за идею спасибо. А код мы и сами напишем, чего там. Наверное, это просто разными местами мозга делается.  smile 
Кстати, насчет стереотипов командной разработки: это только сверху, бантик в виде стандартизации описания и т.д. А внутри - дикие по величине кейсы и прочее. За "красоту" кода не платят, плятят за рабочую программу. 


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


Эксперт
****


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

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



Цитата(Earnest @ 24.7.2006,  15:53)
За "красоту" кода не платят, плятят за рабочую программу.

Золотые слова! smile  + 


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


Эксперт
****


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

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



Цитата(sergej.z @  24.7.2006,  17:43 Найти цитируемый пост)
Кто полезным не считает - не спорит.

Точно, затягивает. Особенно когда перешли к битве за красоту - ну как тут удержаться smile 
Цитата(bel_nikita @  24.7.2006,  17:51 Найти цитируемый пост)
набирающем 5000 строк кода за 8 часов

Это можно сделать только применяя прогрессивный метод "копи-паст". Говорят, индусы так пишут. И ничего, весь мир у них отоваривается.  


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


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Прежде чем пойдёт много буковок, напишу что в исходниках явы встречал компромисный вариант.
вот такой вот примерно
Код

int a = b & 1; // b % 2

 smile 





Цитата(sergej.z @  24.7.2006,  15:50 Найти цитируемый пост)
Точно так же х/2 компилеры оптимизуют в х>>1. 

Кстати Эти инструкции не эквивалентны. И они возвращают разный результат для отрицательных чисел.
Код

int main(){
 printf("%d\n", (-21)>>1); //-11
 printf("%d\n", (-21)/2); //-10
}






Цитата(sergej.z @  24.7.2006,  15:50 Найти цитируемый пост)
 (А многие так и делают), то провёл бы деление и взял остаток. 

Многие? Это большая часть из прошлого века вероятно.
Вот например есть файл
Код

int main(int argc){return argc % 2;}

И вот результат
bcc 5.5. Он не сделал div. 
icl 8.0. Он не сделал div. 
dmc 8.42. Он не сделал div. 
cl из VS2003. не сделал div. 
cl из VC7. не сделал div. 

флаги оптимизации не были выстановлены вообще. компиляторы - не из самых свежих и лучших, а итог... 0 компиляторов сделали деление для получения mod 2. 
(больше компиляторов под виндой у меня нет. 



Цитата(GremlinProg @  24.7.2006,  20:24 Найти цитируемый пост)
А вообще, в этом плане я не замечал у нас ни каких институтов: учат в основном как писать код, но совершенно не учат как правильно писать код. Вот буржуи - молодцы, они-то уже давно применяют стереотипы командной разработки. 

Брэк. Это уже совсем оффтопик.


  

Это сообщение отредактировал(а) Mayk - 24.7.2006, 17:12


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 24.7.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Earnest @  24.7.2006,  18:53 Найти цитируемый пост)
Ага, только код от этого у них лучше не становится

Это уже зависит от мастерства.
Вот, например сайт цита http://citforum.iubip.ru/SE/project/, где одно время были предложены простые правила, на которые опирается сама идея экстремального программирования. Т.е. суть заключается именно в объектно-ориентированном подходе, а материал изложен очень просто: маленькими правилами, которые если даже просто интуитивно применять, приведут к упорядочиванию проекта, в целом, причем не конкретного, а любого проекта. Это наподобие того, что художником не обязательно рождаться, любого можно научить им быть. Сейчас уже не знаю, не заходил, но раньше там большой раздел был, были разделы паттерного программирования, отдельно расписан каждый паттерн и места, где его можно использовать, что-то типа stl, только не ограниченный фантазией самого девелопера.

Добавлено @ 17:27 
Mayk, отнюдь - это первые источники, которые я заметил, в которых явно демонстрируется то, что ты здесь правильно изложил, а по сути подтвердил:
Цитата
Оптимизация (ручная) нужна там, где она действительно нужна
 


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


Эксперт
****


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

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



Цитата(Mayk @ 24.7.2006,  16:11)
Вот например есть файл
Код

int main(int argc){return argc % 2;}

И вот результат
bcc 5.5. Он не сделал div. 
icl 8.0. Он не сделал div. 
dmc 8.42. Он не сделал div. 
cl из VS2003. не сделал div. 
cl из VC7. не сделал div. 

флаги оптимизации не были выстановлены вообще. компиляторы - не из самых свежих и лучших, а итог... 0 компиляторов сделали деление для получения mod 2. 
(больше компиляторов под виндой у меня нет.

Mayk, Ну, раз имеешь столько компиляторов под рукой smile , то, пожалуйста, попробуй вот, так :  int main(uinsigned int argc){return argc % 2;}. Думаю, что увидишь div smile 

Если не влом, еще, вот так, попробуй:
Код
bool odd(int value)
{
  return ( value % 2 );
}
bool odd_2(int value)
{
  return ( value & 1 );
}
int main(int argc,char* argv[])
{
  odd(argc);
  odd_2(argc);
  return 0;
}

 


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


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(bel_nikita @  24.7.2006,  21:41 Найти цитируемый пост)
Mayk, Ну, раз имеешь столько компиляторов под рукой  , то, пожалуйста, попробуй вот, так :  int main(uinsigned int argc){return argc % 2;}. Думаю, что увидишь div


Не везде и не всегда, но здесь чуть хуже.

bcc и icl и dmc соптимизировали до and eax, 1  сразу же.

visual clы оконфузились. Правда /O2 и /O1 даже вправило им мозги на место, и в асме появился and eax, 1.


Цитата(bel_nikita @  24.7.2006,  21:41 Найти цитируемый пост)
Если не влом, еще, вот так, попробуй:

Здесь div появился только в visual c и ТОЛЬКО при /O1 (/О2 и без /O divов не было)

В аттаче сырцы(dmc пришлось пускать через дизасм. для того чтобы легко найти во всём листинге main(), в теле функции были введены константы типа 0x1234 )

Вывод. Оптимизаторы рулят.

ЗЫ. А вообще в современных условиях иногда можно не то что %2 писать, но даже по многу раз читать одни и те же файлы с винта - всё равно они кэшируются ОСей =) 

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  tests.rar.txt 67,61 Kb


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
ZeusAtVingrad
Дата 25.7.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

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



[QUOTE=sergej.z,21.7.2006,  17:42]
Цитата(ptr @  21.7.2006,  10:22 Найти цитируемый пост)


Цитата(ptr @  21.7.2006,  10:22 Найти цитируемый пост)
С двузначной логикой: true (1) и false (0). undefined и buss error не относятся к логике процессора.

Относятся конечно. На undefined он кладёт, но ошибки он должен логически обрабатывать(что будет, если на бусе одновременно 1 и 0 ?). Это же обыкновенный микрочип. Просто доступа к тий логике у программиста нет. Она на аппаратном уровне.

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

Одновременно 0 и 1 - это вообще нонсенс какой-то. Как может быть одновременно 0.5В и 3В?
Кто-то всегда победит. У процессорных шин архитектуры IBM PC победит 0. Т.е. если одновременно два устройства выдадут на шину - одно 0, а другое 1, то получится 0 (электрически так получается).

Так что как-раз как "микрочип" процессор всегда считает с шины или 0 или 1.
Никакого 3-го состояния он не увидит.
И тем более "одновременно 0 и 1".

Добавлено @ 21:01 
Я тут немного в сторону скажу, ничего? smile
Цитата

Цитата

С двузначной логикой: true (1) и false (0). undefined и buss error не относятся к логике процессора. 

Относятся конечно. На undefined он кладёт, но ошибки он должен логически обрабатывать(что будет, если на бусе одновременно 1 и 0 ?). Это же обыкновенный микрочип. Просто доступа к тий логике у программиста нет. Она на аппаратном уровне.  


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

Одновременные 0 и 1 - это вообще нонсенс какой-то. Как может быть одновременно 0.5В и 3В?
Кто-то всегда победит. У процессорных шин архитектуры IBM PC победит 0. Т.е. если одновременно два устройства выдадут на шину - одно 0, а другое 1, то получится 0 (электрически так получается).

Так что как-раз как "микрочип" процессор всегда считает с шины или 0 или 1.
Никакого 3-го состояния он не увидит.
И тем более "одновременно 0 и 1".
 
PM MAIL   Вверх
sergejzr
Дата 26.7.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(ZeusAtVingrad @  25.7.2006,  18:50 Найти цитируемый пост)
Какой электрический сигнал в это время будет а шине - одному аллаху известно

Если бы микрочипы работали по принципу "одному аллаху известно" , вряд ли чтото путное получилось бы. Ошибки они очень часты и логикой значение (как Вы правильно сказали) должна быть определено. Поэтому просто  true/false  В некоторых случаях недостаточно. Поэтому появляются троичнай, четв, итд. логики. 
Цитата(ZeusAtVingrad @  25.7.2006,  18:50 Найти цитируемый пост)
Т.е. если одновременно два устройства выдадут на шину - одно 0, а другое 1, то получится 0 (электрически так получается).

Получается Bus Error. Включается высокоомное сопротивление. Во всяком случе процессор работать "не замечая" ошибки не будет.

Конечно процессор - более менее отполировання система. Но если Вам доводилось программить на VHDL  Вы понимаете, что послать на бус 1 и 0 одновременно особого труда не составляет и что система работать при этом не будет. И кстати как раз undefined при программировании FPGA учитывается.

 


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


Опытный
**


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

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



Цитата(sergej.z @  26.7.2006,  16:36 Найти цитируемый пост)
Поэтому появляются троичнай, четв, итд. логики. 

Вообще же я имел ввиду процессоры, которые основаны не на классической двоичной булевой логике, а на троичной smile .

    

Это сообщение отредактировал(а) ptr - 26.7.2006, 13:17


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


Un salsero
Group Icon


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

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



Ну вот например NULL Convention Logic использует троичную логику (NULL всегда побеждает).
Мы конечно немного о разных логиках говорим smile 


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

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

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

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

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


 




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


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

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