Re[16]: Почему нельзя преподавать C#
От: ansi  
Дата: 03.04.05 12:47
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Может быть (но что-то не помню такого в Intel Optimization Guide). По сути, строка вся считывается в кэш, не важно откуда ты идешь. Вот если только он сам prefetch делает...

VD>Хреново читал. В Интеловских статьях по оптимизации очень часто говорится о том, что нужно понимать как работает кэш и т.п.
Нормально я читал. Говорится, оно и ежу понятно, но причем тут это? Причем, ты мне скажи? Ты бы опроверг мою фразу, аргумент бы привел. А то чего-то сболтнул невнятное и все, уже герой ёлки-палки.
Строка считывается в кэш полностью и при последующем доступе, если не вышли за предел строки, данные берутся из кэша. Аппаратный предзагрузчик срабатывает после нескольких промахов (вроде бы двух) кэша и распознает он линейные последовательности чтения/записи (т.е. похеру в каком направлении идти из A в B, или из B в A). Единственное, что он не делает предзагрузку из другой страницы.

A>>О чем я и говорю, знания никогда не бывают лишними.

VD>В вопросах оптимизации знания должны бить ли исчерпывающими, или никакими. Неполные знания тут страшнее полного незнания. Банальный метод тыка при этом даст больший выигрыш.
БСК.
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "тссссссссс";
Re[14]: Почему нельзя преподавать C#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 03.04.05 13:02
Оценка:
Здравствуйте, VladD2, Вы писали:

ХД>> Как разработчика программных продуктов, имхо всё же нет. А вот как взломщика чужих защищённых программ — да. Но мы говорим именно о разработчиках.


VD>Поверь даже если ты "программируешь в презервативе", то никто не гаратнирует, что ты не ошибешся при вызове некой функции АПИ или, что не накосячили создатили библиотеки, компилятора и т.п. Так что если ты пишешь на С++ и еще не рарывался на проблему релиза, то это все еще будет.


Если в команде разработчиков есть пара тройка ребят с явно низкой квалификацией, то обязательно нарвешся. А вот если повезло и команда состоит из нескольких высококвалифицированных C++ разработчиков, то это вовсе не обязательно.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Почему нельзя преподавать C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.04.05 17:45
Оценка:
Здравствуйте, ansi, Вы писали:

A>А то чего-то сболтнул невнятное и все, уже герой ёлки-палки.


Хамить обязательно?
... << RSDN@Home 1.1.4 beta 4 rev. 385>>
AVK Blog
Re[18]: Почему нельзя преподавать C#
От: Дарней Россия  
Дата: 04.04.05 05:58
Оценка:
Здравствуйте, ansi, Вы писали:

A>Нужны! Еще как нужны! Я разве против? И говорит это о том, что инструменты не так важны. Вы, кстати, на гитаре не учились играть? Есть такая рекомендация, что упражнения желательно выполнять на дубовой гитаре (не по звучанию, а, скажем по силе нажатия на струны, чтобы играть было тяжелее). Таким образом добиваются более эффективного обучения, чем если бы он выполнял их на хорошей гитаре. Ну реально, зачем гаммы гонять на фирменном Стратокастере, когда Урал даст больше


Нет, не учился.

Но это еще не значит, что надо начинать с упражнений на балалайке, не правда ли?

A>Интересно было бы услышать другие варианты


Все зависит от дополнительных условий и ограничений, которые накладываются на задачу.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[18]: Почему нельзя преподавать C#
От: GlebZ Россия  
Дата: 04.04.05 09:10
Оценка:
Здравствуйте, ansi, Вы писали:

A>Ну реально, зачем гаммы гонять на фирменном Стратокастере, когда Урал даст больше

Тот, кто хоть раз одевал гитару Урал, с тобой не согласятся. Прекрасное оружие самообороны.

С уважением, Gleb.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[15]: Почему нельзя преподавать C#
От: GlebZ Россия  
Дата: 04.04.05 09:10
Оценка:
Здравствуйте, eao197, Вы писали:

E>Если в команде разработчиков есть пара тройка ребят с явно низкой квалификацией, то обязательно нарвешся. А вот если повезло и команда состоит из нескольких высококвалифицированных C++ разработчиков, то это вовсе не обязательно.

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

С уважением, Gleb.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[19]: Почему нельзя преподавать C#
От: ansi  
Дата: 04.04.05 09:42
Оценка:
Здравствуйте, Дарней, Вы писали:

A>>Нужны! Еще как нужны! Я разве против? И говорит это о том, что инструменты не так важны. Вы, кстати, на гитаре не учились играть? Есть такая рекомендация, что упражнения желательно выполнять на дубовой гитаре (не по звучанию, а, скажем по силе нажатия на струны, чтобы играть было тяжелее). Таким образом добиваются более эффективного обучения, чем если бы он выполнял их на хорошей гитаре. Ну реально, зачем гаммы гонять на фирменном Стратокастере, когда Урал даст больше

Д>Нет, не учился.
Д>Но это еще не значит, что надо начинать с упражнений на балалайке, не правда ли?

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

A>>Интересно было бы услышать другие варианты

Д>Все зависит от дополнительных условий и ограничений, которые накладываются на задачу.
Ну а пример можно? Для той же нумерологии я вижу только одну технику, позволяющую избежать деления — это BCD арифметика (типа AAA, AAS, ...).
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Celtic Awakening — The Wind Dances";
Re[16]: Почему нельзя преподавать C#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.04.05 09:45
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, eao197, Вы писали:


E>>Если в команде разработчиков есть пара тройка ребят с явно низкой квалификацией, то обязательно нарвешся. А вот если повезло и команда состоит из нескольких высококвалифицированных C++ разработчиков, то это вовсе не обязательно.

GZ>Если в команде разработчиков есть пара тройка ребят, то рано или поздно нарвешься . Вот тогда и узнаешь, что Debug и Release компиленные программы — совсем не одно и тоже.

А я и так это знаю. Поэтому Debug режимом не пользуюсь (практически)
Компилюсь сразу в Release. Отлаживаюсь либо по unit-тестам, либо анализирую логи.
Debug обычно использую, только если не удается быстро локализовать место возникновения Access violation по отладочным печатям. Да и то, нужно сказать, что часто обнаруживается только последствия. А вот причину приходится логическим путем обнаруживать совсем в другом месте.
А уж когда я в последний раз в отладчике пошаговую отладку использовал сейчас уже и не вспомню.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[20]: Почему нельзя преподавать C#
От: Дарней Россия  
Дата: 04.04.05 09:54
Оценка:
Здравствуйте, ansi, Вы писали:

A>Ну а пример можно? Для той же нумерологии я вижу только одну технику, позволяющую избежать деления — это BCD арифметика (типа AAA, AAS, ...).


тот самый itoa, конечно. Если наплевать на дополнительные затраты памяти, то лучше использовать именно его — потому что он уже есть и гарантированно работает.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[19]: Почему нельзя преподавать C#
От: ansi  
Дата: 04.04.05 10:16
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Тот, кто хоть раз одевал гитару Урал, с тобой не согласятся. Прекрасное оружие самообороны.

Для игры — полностью согласен. Ну а гаммы там погонять...тут музыкальности особой и не надо. Хотя это, конечно, кому как
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Celtic Awakening — Breton Children's Song";
Re[20]: Почему нельзя преподавать C#
От: GlebZ Россия  
Дата: 04.04.05 10:48
Оценка:
Здравствуйте, ansi, Вы писали:

A>Здравствуйте, GlebZ, Вы писали:


GZ>>Тот, кто хоть раз одевал гитару Урал, с тобой не согласятся. Прекрасное оружие самообороны.

A>Для игры — полностью согласен. Ну а гаммы там погонять...тут музыкальности особой и не надо. Хотя это, конечно, кому как
Там здоровье нужно. Ты просто под этой гитарой не стоял. Весит она нехило. Для игры на этом инструменте, важно спину упражнять. А то, через часик, и спинка болит, и позвонки в трусы начинают выпадать.

С уважением, Gleb.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[17]: Почему нельзя преподавать C#
От: GlebZ Россия  
Дата: 04.04.05 10:48
Оценка:
Здравствуйте, eao197, Вы писали:

E>А я и так это знаю. Поэтому Debug режимом не пользуюсь (практически)

E>Компилюсь сразу в Release. Отлаживаюсь либо по unit-тестам, либо анализирую логи.
E>Debug обычно использую, только если не удается быстро локализовать место возникновения Access violation по отладочным печатям. Да и то, нужно сказать, что часто обнаруживается только последствия. А вот причину приходится логическим путем обнаруживать совсем в другом месте.
E>А уж когда я в последний раз в отладчике пошаговую отладку использовал сейчас уже и не вспомню.
Ну уж нет, я от нее не откажусь.
Unit тесты — показывают что не работает некоторая функциональность. Логи — позволяют локализовать место и последствие. А вот что случилось, можно узнать только просмотром кода, и отладкой. И отладка — много времени экономит.

С уважением, Gleb.
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[21]: Почему нельзя преподавать C#
От: ansi  
Дата: 04.04.05 11:21
Оценка:
Здравствуйте, Дарней, Вы писали:

A>>Ну а пример можно? Для той же нумерологии я вижу только одну технику, позволяющую избежать деления — это BCD арифметика (типа AAA, AAS, ...).


Д>тот самый itoa, конечно. Если наплевать на дополнительные затраты памяти, то лучше использовать именно его — потому что он уже есть и гарантированно работает.


Ну дык я его и использовал (правда в паскале он называется str). Только в нем те же самые действия производятся — div/mod 10 и добавляется 0x30. А потом я этот 0x30 вычитаю Может ты задачу не понял... Вот:

Div/Mod:
unsigned int numerolgy(unsigned int a) {
   unsigned int r = 0;

   while (a > 9) {
      r += a % 10;
      a /= 10;
   }

  r += a;

   if (r > 9)
      return numerology(r);
   else
      return r;
}


itoa:
unsigned int numerolgy(unsigned int a) {
   unsigned int r = 0;
   char astr[20];
     
   _itoa(a, astr, 10);
   int n = strlen(astr);
     
   for (int i = 0; i < n; ++i)
      r += astr[i] - '0';

   if (r > 9)
      return numerology(r);
   else
      return r;
}


Не вижу преимущества в itoa. Причем это на си пишется так, а на паскале использовать Ord(astr[i]) — Ord('0') я не догадался. Мутил что-то уж очень хитроумное, не помню.
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Iscaaro — Fold Your Hands And Pray";
Re[21]: Почему нельзя преподавать C#
От: ansi  
Дата: 04.04.05 12:18
Оценка:
Здравствуйте, GlebZ, Вы писали:

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

Да я знаю, мне посчастливилось ее в руках подержать и даже чуть поиграть, правда на неподключенной. У нас в школе сохранили

GZ>С уважением, Gleb.
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Mohicans — A New Day";
Re[17]: Почему нельзя преподавать C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.04.05 17:20
Оценка:
Здравствуйте, ansi, Вы писали:

A>Здравствуйте, VladD2, Вы писали:


A>>>Может быть (но что-то не помню такого в Intel Optimization Guide). По сути, строка вся считывается в кэш, не важно откуда ты идешь. Вот если только он сам prefetch делает...

VD>>Хреново читал. В Интеловских статьях по оптимизации очень часто говорится о том, что нужно понимать как работает кэш и т.п.
A>Нормально я читал.

Раз такое говоришь значит плохо. Вот буквально недавно публиковали интеловскую статью
Автор(ы): Intel
Дата: 06.08.2004
Современные операционные системы (OC) нацелены на наиболее эффективное использование ресурсов компьютера. По большей части эффективность достигается за счет разделения ресурсов компьютера между несколькими процессами (многозадачность). Такое крупномасштабное разделение ресурсов обеспечивается операционными системами без каких-либо действий со стороны приложений или процессов. Процессы могут выполняться одновременно за счет переключения центрального процессора (или нескольких процессоров) между ними. Последние версии OC предоставляют механизмы, позволяющие приложениям управлять ресурсами компьютера и распределять их с большей степенью детализации, т.е. на уровне потоков. По аналогии с многозадачными операционными системами, которые могут одновременно выполнять несколько задач путем запуска нескольких процессов, процесс может в свою очередь выполнять несколько задач за счет использования нескольких потоков. В данном документе обсуждаются способы применения потоков для повышения производительности приложений. Также здесь представлена методика распараллеливания последовательных приложений.
. Можешь сам считать сколько там о кэше и т.п. говорится.


Хамство поскипано.

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


Все намного сложнее.

A> Аппаратный предзагрузчик срабатывает после нескольких промахов (вроде бы двух) кэша и распознает он линейные последовательности чтения/записи (т.е. похеру в каком направлении идти из A в B, или из B в A). Единственное, что он не делает предзагрузку из другой страницы.


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

A>БСК.

УРПР.
... << RSDN@Home 1.1.4 beta 4 rev. 351>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Почему нельзя преподавать C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.04.05 17:20
Оценка:
Здравствуйте, eao197, Вы писали:

E>Если в команде разработчиков есть пара тройка ребят с явно низкой квалификацией, то обязательно нарвешся. А вот если повезло и команда состоит из нескольких высококвалифицированных C++ разработчиков, то это вовсе не обязательно.


Практика показыает, что нарвешся в любом случае. Может реже, но все же.
... << RSDN@Home 1.1.4 beta 4 rev. 351>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Почему нельзя преподавать C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.04.05 17:20
Оценка:
Здравствуйте, eao197, Вы писали:

E>А я и так это знаю. Поэтому Debug режимом не пользуюсь (практически)

E>Компилюсь сразу в Release. Отлаживаюсь либо по unit-тестам, либо анализирую логи.

Ужас какой.

E>Debug обычно использую, только если не удается быстро локализовать место возникновения Access violation по отладочным печатям. Да и то, нужно сказать, что часто обнаруживается только последствия. А вот причину приходится логическим путем обнаруживать совсем в другом месте.


А я вот использую языки которые не дают таких проблем в релизе.

E>А уж когда я в последний раз в отладчике пошаговую отладку использовал сейчас уже и не вспомню.


Хорошо тебе.
... << RSDN@Home 1.1.4 beta 4 rev. 351>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Почему нельзя преподавать C#
От: Дарней Россия  
Дата: 05.04.05 03:46
Оценка:
Здравствуйте, ansi, Вы писали:

A>Не вижу преимущества в itoa.


преимущество — в том, что этот код уже написан и отлажен. Просуммировать цифры в строке — это намного проще, и экономит время — а его на олимпиадах как раз и не хватает.
Я уж не говорю о том, что во многих серьезных фирмах за написание самопального алгоритма перевода тебе бы надавали по рукам
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[14]: Почему нельзя преподавать C#
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 05.04.05 04:07
Оценка: 21 (4) +1
Здравствуйте, VladD2, Вы писали:

ХД>>В общем, соглашусь с Алексеем. Никогда ещё не лазил по крэш-дампам программ Может, я ещё молодой,


VD>Ну, тут есть только два ответа:

VD>1. Ты не релизил продукты написанные на С/С++ созданные руками 3-х и более человек разной квалификации. Т.е. ты действительно молод.
VD>2. Бог миловал тебя связываться с С++ и твой язык является типобезопастным.

дело не в этом, есть и С++ и разработчики разной квалификации. Просто к одной цели (локализация места и причины ошибки) есть несколько разных путей и спор о том какой лучше сродни спору о том кто сильнее — боксер, каратист или там айкидока , чем ближе к вершинам мастерства, тем меньше разницы, посредине — зависит в основном от опыта.
Возвращаясь к наши баранам — тот кто знает asm сразу полезет в креш-дамп и начнет разматывать ниточку снизу, в конце концов выйдет на место ошибки, есть другой путь — проанализировать логи, исходные данные, текст программы на "родном" языке програмиирования. В http://gzip.rsdn.ru/res/book/prog/codeanalysis.xml
Автор(ы): Спинеллис Диомидис

Книга посвящена важному аспекту программирования, недостаточно освещенному
в литературе — чтению и анализу программного кода на языках высокого уровня
с целью доработки, извлечения готовых технических решений или изучения
новых методов.


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


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

есть такая цитата:

Роберт Гласе (Robert Glass), один из рецензентов этой книги, сказал: ''Путем грамотного просмотра исходного кода в программном продукте можно устранить более 90% ошибок еще до первого тестирования''. В той же статье он ссылается на результаты одного исследования, которые гласят: ''Если читать программу, сконцентрировавшись на качестве ее исходного кода, можно найти на 90% ошибок больше, чем если сосредоточиться на выполняемых ею операциях''.


и по моему опыту — так оно и есть. Какой путь эффективнее? Зависит от опыта и мастерства в использовании каждого конкретного подхода. Хорошо бы конечно в совершенстве владеть обоими подходами, но imho, это все равно, что идти сразу по двум дорогам.
Re[23]: Почему нельзя преподавать C#
От: Трурль  
Дата: 05.04.05 05:15
Оценка: +2
Здравствуйте, Дарней, Вы писали:

A>>Не вижу преимущества в itoa.


Д>преимущество — в том, что этот код уже написан и отлажен. Просуммировать цифры в строке — это намного проще, и экономит время — а его на олимпиадах как раз и не хватает.


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