Russian Qt Forum
Ноябрь 22, 2024, 12:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4 5   Вниз
  Печать  
Автор Тема: Старая шутка  (Прочитано 40206 раз)
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #30 : Февраль 20, 2017, 15:52 »

При чём тут "до" или "после"? Код надо писать так, чтобы другие его нормально читали, а не шарады разгадывали. Если это единственное место в коде, то можно комментарием сопроводить. Если несколько раз встречается, то в функцию выносить. Есть математические функции стандартной библиотеки. Одна isnormal чего стоит. Если их недостаточно, то добавлять свои. Например, isNegativeOrNan, для условия из первого сообщения. В ней, в целях оптимизации, можно хоть !(w >= 0) писать, хоть на ассемблере, на читаемость основного кода это уже влиять не будет.
Записан

Пока сам не сделаешь...
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #31 : Февраль 20, 2017, 15:58 »

При чём тут "до" или "после"? Код надо писать так, чтобы другие его нормально читали, а не шарады разгадывали. Если это единственное место в коде, то можно комментарием сопроводить. Если несколько раз встречается, то в функцию выносить. Есть математические функции стандартной библиотеки. Одна isnormal чего стоит. Если их недостаточно, то добавлять свои. Например, isNegativeOrNan, для условия из первого сообщения. В ней, в целях оптимизации, можно хоть !(w >= 0) писать, хоть на ассемблере, на читаемость основного кода это уже влиять не будет.

Плюсую Смеющийся
Записан

Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #32 : Февраль 20, 2017, 15:59 »

При чём тут "до" или "после"? Код надо писать так, чтобы другие его нормально читали, а не шарады разгадывали. Если это единственное место в коде, то можно комментарием сопроводить. Если несколько раз встречается, то в функцию выносить. Есть математические функции стандартной библиотеки. Одна isnormal чего стоит. Если их недостаточно, то добавлять свои. Например, isNegativeOrNan, для условия из первого сообщения. В ней, в целях оптимизации, можно хоть !(w >= 0) писать, хоть на ассемблере, на читаемость основного кода это уже влиять не будет.
ППКС
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #33 : Февраль 21, 2017, 10:08 »

Код надо писать так, чтобы другие его нормально читали, а не шарады разгадывали. Если это единственное место в коде, то можно комментарием сопроводить. Если несколько раз встречается, то в функцию выносить. Есть математические функции стандартной библиотеки. Одна isnormal чего стоит. Если их недостаточно, то добавлять свои. Например, isNegativeOrNan, для условия из первого сообщения. В ней, в целях оптимизации, можно хоть !(w >= 0) писать, хоть на ассемблере, на читаемость основного кода это уже влиять не будет.
Ну и к чему эта тирада для начинающих? Разве кто-то другого мнения или призывал так писать? Совсем наоборот
Хотя я не одобряю такой стиль, ни к чему этот вынос мозга, правильно так
Однако встретив такую загогулину в чужом коде (см первую фразу первого поста) хорошо бы понять зачем она. А кричать сразу "говнокод" и считать автора глупым - самому можно оказаться в неудобном положении.

Такая же ситуевина и здесь
Код
C++ (Qt)
float a;
...
float b = sqrt(a);
...
if (a < 0) b= 0;
Ну ведь знал же он что sqrt может и не понадобится, но зачем-то поперся его сразу вычислять. Неужели опять лох писал?  Улыбающийся
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #34 : Февраль 21, 2017, 11:45 »

Ну ведь знал же он что sqrt может и не понадобится, но зачем-то поперся его сразу вычислять. Неужели опять лох писал?  Улыбающийся

Цитировать
- Меня будете называть Евгений... Александр Саныч! Ясно? Я спрашиваю, ясно?
- Ясно.
- Сесть. Как стемнеет, кассу будем брать.
- И он пойдет?
- Все!
- Так он же на этом скачке расколется, редиска, при первом же шухере!

- А ну-ка, поди сюда, Федя, сядь. Возьми бумагу, пиши: редиска - поставь тире - нехороший человек. Раскалываться - это значит предавать, сознаваться. Мягкий знак поставь. Шухер - опасность, скачок - тире - ограбление. Записал?
- Да.
- А теперь, Федя, скажи Васе все, что ты ему сказал раньше, на нормальном, на гражданском языке.
- Этот нехороший человек предаст нас при первой опасности.

У меня такая вот ассоциация возникает Улыбающийся.

Вы лучше опишите контекст, в котором такой код писался. Назначение этой программы. Как давно это было, под какое железо/компилятор. Может условия какие специфичные были. Чтобы можно было понять и посочувствовать этому гражданину Улыбающийся.
Записан

Пока сам не сделаешь...
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #35 : Февраль 21, 2017, 18:17 »

Цитировать
Неужели опять лох писал?

Ну не знает человек языка толком, почему сразу лох то. Мож студент...

float b = a < 0 ? 0 : sqrt(a);
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #36 : Февраль 22, 2017, 12:37 »

Вы лучше опишите контекст, в котором такой код писался. Назначение этой программы. Как давно это было, под какое железо/компилятор. Может условия какие специфичные были. Чтобы можно было понять и посочувствовать этому гражданину Улыбающийся.
Компилятор icc.

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

Да, собсно я и сам здесь не знаю ответа. Есть кое-какие соображения, но "не факт"

Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #37 : Февраль 22, 2017, 13:41 »

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

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

Конкретно про sqrt: кто его знает, на какую реализацию и поведение он рассчитывал. sqrt может и исключение выкинуть, в коде есть что-нибудь про исключения? Это риторический вопрос Улыбающийся. Да и закладываться на какое-то частное поведение в особом случае - не лучшая идея.
Записан

Пока сам не сделаешь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #38 : Февраль 22, 2017, 14:45 »

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

Хотя и не знаю "правельный ответ", но код выше (с немедленным вычислением sqrt) становится совершенно естественным "гражданским языком" если.... сказать или хотите подумать?  Улыбающийся 
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #39 : Февраль 22, 2017, 16:30 »

Хотя и не знаю "правельный ответ", но код выше (с немедленным вычислением sqrt) становится совершенно естественным "гражданским языком" если.... сказать или хотите подумать?  Улыбающийся 

Давайте уже, срывайте покровы Улыбающийся.
Записан

Пока сам не сделаешь...
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #40 : Февраль 22, 2017, 18:45 »

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #41 : Февраль 22, 2017, 19:24 »

Давайте уже, срывайте покровы Улыбающийся.
Очередная попытка выдать говнокод за сакральные знания. Улыбающийся
Подождем.... Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #42 : Февраль 23, 2017, 15:13 »

Давайте уже, срывайте покровы Улыбающийся.
Он явно рассчитывает на то что sqrt будет вычисляться асинхронно
Код
C++ (Qt)
float b = sqrt(a);  // сразу запускает вычисление
// если тут какой-то код,
// то он будет выполняться параллельно
Тогда все сразу становится очень натуральным. Ну это всего лишь "я так думаю"  Улыбающийся

неважно, какая за этим стояла идея (хотя скорее всего, никакой).
Ну а вдруг стояла?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #43 : Февраль 23, 2017, 15:55 »

Он явно рассчитывает на то что sqrt будет вычисляться асинхронно

Вот это поворот сюжета Улыбающийся. А куда, и главное когда, возвращается результат вычисления sqrt при таком "асинхронном" вызове? И какие предпосылки в коде говорят о том, что что-то на этом участке может выполняться параллельно?
Записан

Пока сам не сделаешь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #44 : Февраль 23, 2017, 16:35 »

Вот это поворот сюжета Улыбающийся. А куда, и главное когда, возвращается результат вычисления sqrt при таком "асинхронном" вызове?
Когда вычисленное "а" потребуется. Это небезопасно, напр если sqrt вернет nan, то будет выставлен флаг FPU. И если параллельный код вздумает его читать (ну а вдруг?), то... Упоминание об этом мелькает в доке icc, но ничего о том каким же образом организуется параллельность (может и мифическое Улыбающийся)

И какие предпосылки в коде говорят о том, что что-то на этом участке может выполняться параллельно?
Тогда "все сходится", иначе и не написать
Записан
Страниц: 1 2 [3] 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.174 секунд. Запросов: 23.