Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, мыщъх, Вы писали:
М>>например, перевод фаренгейта в цельсия. вот формула. вас не затруднит написать программу?
М>>
К>А теперь рядом — обратный перевод?
вы отклонились от исходной формулы далеко на север, что затрудняет сопровождение программы. далеко не каждую формулу можно разобрать по кирпичикам, а если можно, то ненужно. в исходной формуле были "магические константы". у вас они сохранились. вы их перенесли в имена переменных. причем, в С0 от нуля легко освободиться, т.к. шкалы смещены друг относительно друга на 32 градуса в _любой_ _точке_. температуры кипения воды не было в исходной формуле и вы фактически вы выводили ее на лету.
при всем уважении я не могу сказать, что ваш код обладает преимуществами перед решением с использованием "магических констант". если на то пошло, то у вас _все_ неправильно. абсолютно. имена -- на свалку. переписать в обобщенном виде, где есть шкала А и Б с ключевыми отметками в двух точках. тогда однажды написанный код будет переводить не только градусы, но мили, литры, аршины и все-все-все.
в _вашей_ реализации имена переменных не отражают _подлинной_ сути. в контексте обсуждения копипасты -- это актуально.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
S>Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается
S>Прекращай позориться. Хотя бы сам себе не противоречь.
Меня на ржач пробило, коллеги оглядываются. Спор о воинской принадлежности Капитана Очевидность, как результат выяснения вопроса о стилях и методах программирования.
Здравствуйте, stronk2, Вы писали:
S>Код должен быть простым и понятным безо всяких диффов. Ваш Кэп.
Копи-паста этому ничуть не мешает...
Ещё раз поясни, зачем вообще сравнивать два места в коде в принципе? предположим, что ты второе написал ен копипастой, а просто из головы...
Копи-паста, вообще не тем страшна, что трудно чот-то сравнивать, а тем, что
1) Провоцирует ошибки типа "правил, но недоправил"
2) Вообще провоцирует неосознаность действий при написании кода
3) При исправлении в одном месте, не правится само в остальных.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, MTD, Вы писали:
MTD>А потом кто-то увидит одну часть и подумает, ну не страшно, будет в двух местах, и вот у нас уже 3 места.
Ну и что?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, stronk2, Вы писали:
М>>а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно.
S>Вот примерно такие случаи говнокода я и имел в виду.
А какая альтернатива?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, TimurSPB, Вы писали:
S>>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях? TSP>Непонятные.
Это да, но это
1) Субъективно
2) Иногда всё равно надо
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, stronk2, Вы писали:
S>Ваши варианты?
Комментарии, не относящиеся к делу, например такие:
// Наташа из кубикла 7-q-13 ведётся на шашлычок под водочку ;)
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, stronk2, Вы писали:
S>1. магические константы
const int index64[64] = {
0, 1, 48, 2, 57, 49, 28, 3,
61, 58, 50, 42, 38, 29, 17, 4,
62, 55, 59, 36, 53, 51, 43, 22,
45, 39, 33, 30, 24, 18, 12, 5,
63, 47, 56, 27, 60, 41, 37, 16,
54, 35, 52, 21, 44, 32, 23, 11,
46, 26, 40, 15, 34, 20, 31, 10,
25, 14, 19, 9, 13, 8, 7, 6
};
/**
* bitScanForward
* @author Martin Läuter (1997)
* Charles E. Leiserson
* Harald Prokop
* Keith H. Randall
* "Using de Bruijn Sequences to Index a 1 in a Computer Word"
* @param bb bitboard to scan
* @precondition bb != 0
* @return index (0..63) of least significant one bit
*/int bitScanForward(U64 bb) {
const U64 debruijn64 = 0x03f79d71b4cb0a89;
assert (bb != 0);
return index64[((bb & -bb) * debruijn64) >> 58];
}
int bitScanForward(U64 bb) {
assert (bb != 0);
return index64[((bb & -bb) * 0x03f79d71b4cb0a89) >> 58];
}
В данном случае не вижу никакой разницы между двумя вариантами. Все равно константа 0x03f79d71b4cb0a89 не выйдет за пределы функции.
S>2. копи-паста
Все хорошо в меру. Если это не система, то вполне допустимо. Особенно если непонятно, куда занесет дальше. Копи-паста меньшее зло, чем попытка натянуть сову на глобус, пытаясь объединить необъеденимое.
Здравствуйте, мыщъх, Вы писали:
К>>А теперь рядом — обратный перевод?
М>вы отклонились от исходной формулы далеко на север, что затрудняет сопровождение программы. далеко не каждую формулу можно разобрать по кирпичикам, а если можно, то ненужно. в исходной формуле были "магические константы". у вас они сохранились. вы их перенесли в имена переменных. причем, в С0 от нуля легко освободиться, т.к. шкалы смещены друг относительно друга на 32 градуса в _любой_ _точке_. температуры кипения воды не было в исходной формуле и вы фактически вы выводили ее на лету.
Ах, зачем же мы на вы? Давайте ж выкопаем закопаем топор войны и выкопаем стакан брудершафта!
М>float const C_per_F = (100-0)/(C100_in_F-C0_in_F); // 5./9.
М>зачем все это, если вы уже знаете, что оно 5.9 ?
Какая разница, хардкодить коэффициент и выводить точку кипения, или хардкодить точку кипения и выводить коэффициент?
Но лучше всего хардкодить опорные точки — например, в кельвинах. А то у нас получится слишком много зависимых пар — всех со всеми.
М>при всем уважении я не могу сказать, что ваш код обладает преимуществами перед решением с использованием "магических констант". если на то пошло, то у вас _все_ неправильно. абсолютно. имена -- на свалку. переписать в обобщенном виде, где есть шкала А и Б с ключевыми отметками в двух точках. тогда однажды написанный код будет переводить не только градусы, но мили, литры, аршины и все-все-все.
Вот ведь глупость написал, чисто, чтоб поспорить?
Поскольку у нас две формулы — туда и обратно, — то параметры в них появятся дважды.
Да ещё и в неявном виде.
Либо придётся извращаться примерно таким способом:
где dir принимает значения 1 (C->F) и -1 (F->C)
Куда и как подставлять параметры для обобщённых пересчётов — сам поймёшь.
М>в _вашей_ реализации имена переменных не отражают _подлинной_ сути. в контексте обсуждения копипасты -- это актуально.
Ещё как отражают. В отличие от загадочного делителя 2.
Здравствуйте, vnp, Вы писали: vnp>А вот такого я не встречал. Пример можно?
См. тж "ряд Тейлора"
vnp>Выдыхай... что-нибудь соответствующее какой-нибудь физической реальности, желательно.
А что тут непонятного — это какое-то нелинейное вычисление, аппроксимированное при помощи случайных совпадений. Там поди ещё и реинтерпретация float k как целочисленного.
Просто про замену div 2 на shr 1 знают все, а про аппроксимации плаваюшего 1/sqrt(x) целочисленным делением — не все.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, stronk2, Вы писали:
S>Похоже, юный падаван здесь не я
Ну не дорос ещё, бывает...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском