Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, Геннадий Майко, Вы писали: ГМ>>Знать ассемблер того процессора, для которого пишутся программы, весьма полезно. Писать на этом ассемблере не стоит. ГМ>>Знание ассемблера — это еще одна степень свободы для программиста при решении инженерных задач.
СМ>это еще одна степень зашоренности, ты намертво привязываешь реализацию к к процессору.
не соглашусь — коренным образом зависит от задачи. безусловно, в большинстве случаев, от процессора можно и нужно абстрагироваться
Здравствуйте, Сергей Мухин,
ГМ>>Знание ассемблера — это еще одна степень свободы для программиста при решении инженерных задач.
СМ>это еще одна степень зашоренности, ты намертво привязываешь реализацию к к процессору.
--
Я бы сказал — к семейству процессоров. Потому что производители как general-purpose, так и специализированных процессоров, все таки поддерживают преемственность. Это резко снижает уровень моей зашоренности
К таким ситуациям я отношусь прагматично. Если решение конкретной инженерной задачи оказывается намертво привязанной к конкретному процессору, я не вижу здесь ничего страшного (в подтверждение своих слов рискну предложить прочитать заметку "A Computer for the Clouds" в последнем номере IEEE Spectrum о разработке очень специализированных суперкомпьютеров для решения очень специализированных задач, причем и стоимость и потребление энергии, по сравнению с general-purpose, уменьшается как минимум на порядок).
IMHO, лучше таки-да решить задачу, чем отказаться ее рашать вообще из-за опасений возможной непереносимости решения.
Здравствуйте, valheru, Вы писали:
V>Разумеется, почти все пишется на С++. Но отдельные места оптимизируются с помошью векторых команд (MMX/SSE/Altivec).
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>К таким ситуациям я отношусь прагматично. Если решение конкретной инженерной задачи оказывается намертво привязанной к конкретному процессору, я не вижу здесь ничего страшного (в подтверждение своих слов рискну предложить прочитать заметку "A Computer for the Clouds" в последнем номере IEEE Spectrum о разработке очень специализированных суперкомпьютеров для решения очень специализированных задач, причем и стоимость и потребление энергии, по сравнению с general-purpose, уменьшается как минимум на порядок).
бред какой-то. мы говорим о простом С++ и ассемблере а не о специальных машин! Более того в статье НИЧЕГО не сказано пишут ли они на ассемблере!
ГМ>IMHO, лучше таки-да решить задачу, чем отказаться ее рашать вообще из-за опасений возможной непереносимости решения.
ИМHO тут ТЗ рулит, и если требуется ассемблер, то никто и не спорит, но в 99.999% он не нужен вообще.
Здравствуйте, Сергей Мухин, Вы писали:
СМ>бред какой-то. мы говорим о простом С++ и ассемблере
Что такое "простой С++" я еще могу представить. Думаю что подразумевается С++ 100% соответствующий стандарту.
Но что такое простой ассемблер — это как то непонятно. Ассемблер сам по себе всегда привязан к процессору.
Здравствуйте, Сергей Мухин,
ГМ>>К таким ситуациям я отношусь прагматично. Если решение конкретной инженерной задачи оказывается намертво привязанной к конкретному процессору, я не вижу здесь ничего страшного (в подтверждение своих слов рискну предложить прочитать заметку "A Computer for the Clouds" в последнем номере IEEE Spectrum о разработке очень специализированных суперкомпьютеров для решения очень специализированных задач, причем и стоимость и потребление энергии, по сравнению с general-purpose, уменьшается как минимум на порядок).
СМ>бред какой-то.
--
К чему относятся эти Ваши слова?
СМ>мы говорим о простом С++ и ассемблере а не о специальных машин! Более того в статье НИЧЕГО не сказано пишут ли они на ассемблере!
--
Похоже, Вы не поняли аналогии. Ничего страшного в этом нет.
ГМ>>IMHO, лучше таки-да решить задачу, чем отказаться ее рашать вообще из-за опасений возможной непереносимости решения.
СМ>ИМHO тут ТЗ рулит, и если требуется ассемблер, то никто и не спорит, но в 99.999% он не нужен вообще.
--
Обратите внимание, что с самом первом моем сообщении я как раз и призывал не писать на ассемблере, а использовать его тогда, когда он может быть полезным.
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>К чему относятся эти Ваши слова?
они написаны сразу за текстом, к которым относятся.
СМ>>мы говорим о простом С++ и ассемблере а не о специальных машин! Более того в статье НИЧЕГО не сказано пишут ли они на ассемблере! ГМ>-- ГМ>Похоже, Вы не поняли аналогии. Ничего страшного в этом нет.
ничего себе! привел статью, ссылку не дал, статья абсолютно не про то. я бы понял аналогию фортран и ассемблер, но это совсем из другой жизни.
ГМ>>>IMHO, лучше таки-да решить задачу, чем отказаться ее рашать вообще из-за опасений возможной непереносимости решения.
СМ>>ИМHO тут ТЗ рулит, и если требуется ассемблер, то никто и не спорит, но в 99.999% он не нужен вообще. ГМ>-- ГМ>Обратите внимание, что с самом первом моем сообщении я как раз и призывал не писать на ассемблере, а использовать его тогда, когда он может быть полезным.
ну я не держу в голове все сообщения. сорри.
в общем сошлись, что без веских причин не надо пользоваться ассемблером.
Здравствуйте, Сергей Мухин,
СМ>>>мы говорим о простом С++ и ассемблере а не о специальных машин! Более того в статье НИЧЕГО не сказано пишут ли они на ассемблере! ГМ>>-- ГМ>>Похоже, Вы не поняли аналогии. Ничего страшного в этом нет.
СМ>ничего себе! привел статью, ссылку не дал, статья абсолютно не про то. я бы понял аналогию фортран и ассемблер, но это совсем из другой жизни.
--
Да, виноват. Вот ссылка, которая будет самой первой в списке, выдаваемой google на поиск полного названия статьи.
СМ>в общем сошлись, что без веских причин не надо пользоваться ассемблером.
--
Да, это хороший итог нашей дискуссии.
Более того, это даже косвенно потдверждает и мое предложение таки да изучать язык ассемблера. Ведь если я не знаю языка ассемблера, как же я могу его иногда, как Вы согласились, использовать?
ГМ>Более того, это даже косвенно потдверждает и мое предложение таки да изучать язык ассемблера. Ведь если я не знаю языка ассемблера, как же я могу его иногда, как Вы согласились, использовать?
насколько хоророшо C++ программист должен знать Assembler?
Могу ошибаться, но на мой взгляд зависит от области деятельности. Реверсер — великолепно, GUI'шник вообще может не знать .
Как часто вы используете asm в своей работе?
Много лет назад, когда трава была зеленее а заклятья сильнее, я очень хорошо знал ассемблер. Писал на нем 3д движки и 4к демо.
А за последние 10 лет программирования на С++ подо все что движется — забыл напрочь . Тоесть конечно если я что-то уроню в WinDbg, то приблизительно пойму что там в коде происходит. Но с первого взгляда стека не увижу и аргументов функции не определю . Да и инструкций незнакомых много будет. Не используется ассемблер .
Здравствуйте, Сергей Мухин, Вы писали:
СМ>это порочная логика. всегда можно привести пример, когда что-нибудь так пригодиться, что хоть в петлю лезь. Например. Вчера заглохла моя машина, так быстро схему посмотрел и паяльником починил. Но я предпочитаю не тратить время на изучение схемы машины, вообще что такое электричество, я предпочитаю тратить время на обучению программированию, которое даст мне достаточно денег, что бы вызвать механика.
И кого ты будешь вызывать, если не можешь разобраться, почему падает вызов некой функции, исходников которой у тебя нет ? А между тем, иногда помогвет элементарная трассировка входа в функцию, после чего становится ясно, что ты ей банально передал что-то не то.
Здравствуйте, vayerx, Вы писали:
V>Был у меня один коллега "старой закалки", гуру. За пару недель он написал на ассемблере функцию, вручную развернул все циклы, использование всех юнитов рассчитал, кэш учел. Эта же функция на с++ (с использованием интринсиков, разумеется) работала с такой же скоростью, а после добавления платформенно-специфичных прагм, даже быстре процентов на 20.
Я тоже "старой закалки", хоть и не гуру. И лет 10 назад мы с коллегой писали нечто подобное. На ассемблере с использованием MMX регистров. В результате это работало раза в 1.5 быстрее, чем C++ код.
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>К таким ситуациям я отношусь прагматично. Если решение конкретной инженерной задачи оказывается намертво привязанной к конкретному процессору, я не вижу здесь ничего страшного
Если решение некоей задачи привязано к ОС Windows (а это сплошь и рядом), то фактически это та же привязка к процессору (не учитывая Itanium, который мало кто видел), Windows == x86/x64
Здравствуйте, Pavel Dvorkin, Вы писали:
СМ>>это порочная логика. всегда можно привести пример, когда что-нибудь так пригодиться, что хоть в петлю лезь. Например. Вчера заглохла моя машина, так быстро схему посмотрел и паяльником починил. Но я предпочитаю не тратить время на изучение схемы машины, вообще что такое электричество, я предпочитаю тратить время на обучению программированию, которое даст мне достаточно денег, что бы вызвать механика.
PD>И кого ты будешь вызывать, если не можешь разобраться, почему падает вызов некой функции, исходников которой у тебя нет ? А между тем, иногда помогвет элементарная трассировка входа в функцию, после чего становится ясно, что ты ей банально передал что-то не то.
даже не смешно. я (уверен и ты тоже) всё время вызываю ф-ии, исходников которых у меня нет: strcpy, CreateFile и тп
Здравствуйте, Pavel Dvorkin, Вы писали:
V>>Был у меня один коллега "старой закалки", гуру. За пару недель он написал на ассемблере функцию, вручную развернул все циклы, использование всех юнитов рассчитал, кэш учел. Эта же функция на с++ (с использованием интринсиков, разумеется) работала с такой же скоростью, а после добавления платформенно-специфичных прагм, даже быстре процентов на 20.
PD>Я тоже "старой закалки", хоть и не гуру. И лет 10 назад мы с коллегой писали нечто подобное. На ассемблере с использованием MMX регистров. В результате это работало раза в 1.5 быстрее, чем C++ код.
Здравствуйте, Pavel Dvorkin, Вы писали:
СМ>>лучше C# или Java быстрей пригодиться
PD>Кому ? Абстрактному начинающему программисту или все же программисту на C++ ? Если второму (а о нем здесь вроде идет речь) — вряд ли
программисту С++ надо учить С++, вряд ли кто знает его на 100%
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Геннадий Майко, Вы писали:
ГМ>>К таким ситуациям я отношусь прагматично. Если решение конкретной инженерной задачи оказывается намертво привязанной к конкретному процессору, я не вижу здесь ничего страшного
PD>Если решение некоей задачи привязано к ОС Windows (а это сплошь и рядом), то фактически это та же привязка к процессору (не учитывая Itanium, который мало кто видел), Windows == x86/x64
ну ну, а Windows CE (или как ее там сейчас называют) и тп — ни у кого уже нет в кармане?