ASM: Есть ли смысл изучать Ассемблер ?
От: Mr-Twister http://cosmozo.narod.ru/
Дата: 12.06.02 16:07
Оценка:
Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.
Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

Мои мысли. Техника движется. Вроде как не стоит на месте. Значит и процессоры, тоже меняются, и возможно в скором необозримом будущем, схема работы процессора может поменять свою структуру . Тобишь будет не ассемблер , а что то другое , работающее по другим принципам и механизмам, отличающихся от процессоров Интел.
А языки Си и С++ просто переедут на другую систему и не поменяют свой синтаксис.

Верно ?
дас ист нихьт фантастиш, дас ист руссиш Ванюшка
Re: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 12.06.02 17:21
Оценка: 11 (1)
Здравствуйте Mr-Twister, Вы писали:

MT>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

Встречный вопрос: а можно ли научиться программировать на компьютере, не зная как он работает?
Ответ: Смотря как программировать

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

Вернусь к своим вопросу и ответу. Если человек сегодня рисует в Access формочки и конструирует в нём же запросы, то это требует от него определённых знаний и умений. И эти знания будут относиться в основном к умению работать с самой программой и к способности человека ориентироваться в моделируемой предметной области.
Получается, что в таком случае человек взаимодействует с машиной уже не напрямую (ударение на слове "уже"). Только посредством довольно значительной прослойки.

С другой стороны, если посмотреть на программиста, который хочет разобраться в языке С с нуля ( ), то можно сказать следующее:
1) Та самая прослойка сведена к минимуму. Чем: самим выбранным языком. На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды. И не зря разработчики языка оставили такие вещи, как работа с памятью (всякие там указатели)
2) что-то хотел написать -- забыл
В этом случае уже можно сказать о том, что классный специалист по С обязан разбираться в том, как работает его машина. А для этого он изучает специальный язык -- язык ассемблера -- который и помогает в достижении этой цели, потому что не содержит ничего лишнего. Компьютер ведь не знает о таких вещах как процедура, цикл (не пинайте, если не прав. моё знание ограничивается ассемблером процессора Z80 )... А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...

О сколько нам открытий чудных
Готовит просвященья дух...



Кстати, мысль вслух, "учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера. Т.е. это выражение не нужно понимать буквально

MT>Мои мысли. Техника движется. Вроде как не стоит на месте. Значит и процессоры, тоже меняются, и возможно в скором необозримом будущем, схема работы процессора может поменять свою структуру . Тобишь будет не ассемблер , а что то другое , работающее по другим принципам и механизмам, отличающихся от процессоров Интел.

MT>А языки Си и С++ просто переедут на другую систему и не поменяют свой синтаксис.
MT>Верно ?

А почему нас в школе заставляют (ну, кого как ) учить историю? Да просто чтобы знать куда идти в будущем, нужно знать, что уже было в прошлом! Плох тот народ, который забывает свою историю.
Так и в мире программирования: всё новое -- это хорошо забытое старое.

А насчёт того, что переедут на другую систему... Знаешь, наверное они всё-таки хороши именно для той системы, на которой сейчас используются. а для совершенно новой системы будет совершенно новый язык, который, тем не менее будет учитывать и сегодняшний программистский опыт.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[2]: Есть ли смысл изучать Ассемблер ?
От: SergH Россия  
Дата: 12.06.02 19:24
Оценка: 12 (1)
Здравствуйте Хитрик Денис, Вы писали:

ХД>Встречный вопрос: а можно ли научиться программировать на компьютере, не зная как он работает?

ХД>Ответ: Смотря как программировать

ХД>Моё мнение таково: знание ассемблера позволит тебе больше узнать о машине, позволит понять, какие процессы ею управляют, что такое на самом деле твоя программа и что на самом деле она делает. Мне кажется, что именно это знание, понимание происходящего внутри компьютера и есть умение программировать.


Спорить с тем, что знать ассемблер полезно я не могу. Я его сам плохо знаю (интерестное у нас обсуждение.. я — плохо, ты — только Z80, Mr-Twister — никак), но постоянно собираюсь подучить. Однако, постоянно нет времени. Но для того, что бы понимать, как работает компьютер, знание ассемблера несколько избыточно. Поэтому я особо не напрягаюсь на эту тему.

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


Знает. Немного не так, как в С, конечно, но знает.

ХД>А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...


Это не сильно связано с ассемблером.

ХД>Кстати, мысль вслух, "учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера. Т.е. это выражение не нужно понимать буквально


Воот. Полностью согласен.

MT>>Мои мысли. Техника движется. Вроде как не стоит на месте. Значит и процессоры, тоже меняются, и возможно в скором необозримом будущем, схема работы процессора может поменять свою структуру . Тобишь будет не ассемблер , а что то другое , работающее по другим принципам и механизмам, отличающихся от процессоров Интел.

MT>>А языки Си и С++ просто переедут на другую систему и не поменяют свой синтаксис.
MT>>Верно ?

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

ХД>Так и в мире программирования: всё новое -- это хорошо забытое старое.

Кроме того, почти всегда имеется обратная совместимость..

ХД>А насчёт того, что переедут на другую систему... Знаешь, наверное они всё-таки хороши именно для той системы, на которой сейчас используются. а для совершенно новой системы будет совершенно новый язык, который, тем не менее будет учитывать и сегодняшний программистский опыт.


В абсолютно новой системе изменится понятие ПО. Наверное...
Делай что должно, и будь что будет
Re: Есть ли смысл изучать Ассемблер ?
От: Bell Россия  
Дата: 12.06.02 19:30
Оценка: 12 (1)
Здравствуйте Mr-Twister, Вы писали:

Согласен с Хитриком Денисом по большинству пунктов. :up: Главное — знать принципы, а уже на основе этих знаний принимать те или иные решения в процессе написания программы (то бишь собственно в процессе программирования). А то встречались мне товарищи, которые считали, что такие вот записи эквивалентны:
int nVar;
//Использование...

и
int* pVar = new int;
//Использование...
delete pVar;

А ведь если бы знали о том, как выделяется память в том и в другом случае, не думали бы так...
Это конкчно случай клинический, но для примера пойдет ;)
Или вот есть у сеня знакомый — в железках шарит по полной программе (контроллер там какой-нибудь запрограммировать или еще что подобное), а что такое виртуальные функции — не знает, и узнавать не хочет. Потому что для того класса задач, с которыми он работает, С++ ему просто не нужен.

Короче главное — это некий баланс знаний вокруг предметной области, на которую ты ориентируешься. А то ведь и на асме можно супер оптимизированную функцию пузырьковой сортировки написать, и пользоваться ею всю жизнь...
Любите книгу — источник знаний (с) М.Горький
Re[2]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 12.06.02 20:11
Оценка: 14 (2) -1
Трудно согласиться с этой одой ассемблеру. Я в свое время много писал на ассемблерах — были и такие времена. Конечно, иногда этот опыт незаменим. Но я бы не стал советовать всем, пишущим на С++ "изучать ассемблер" (разумеется, кроме тех, кто имеет дело с железом, драйверами и т.д.). Более того, я знаю людей, кому этот опыт просто мешал начать мыслить другими категориями. Может я слишком буквально понимаю слово "изучать"? Одно дело — бегло ознакомиться с архитектурой процессора и системой команд, другое дело "изучать".

А теперь конкретные возражения.

ХД>Моё мнение таково: знание ассемблера позволит тебе больше узнать о машине, позволит понять, какие процессы ею управляют, что такое на самом деле твоя программа и что на самом деле она делает. Мне кажется, что именно это знание, понимание происходящего внутри компьютера и есть умение программировать.

Очень спорное определение умения программировать.

ХД>На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды.

Думаю, Керниган и Риччи обиделись бы, не говоря уже о Страуструпе — пыхтели, пыхтели и ...

ХД>В этом случае уже можно сказать о том, что классный специалист по С обязан разбираться в том, как работает его машина. А для этого он изучает специальный язык -- язык ассемблера -- который и помогает в достижении этой цели, потому что не содержит ничего лишнего.

Хорошее знание ассемблера — это как раз очень много лишнего, к примеру, с точки зрения ООП. Ассемблер, к примеру, сильно привязан к конкретной платформе и ее нюансам, а это очень специфические знания.

ХД>А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...

Ассемблер тут не очень-то поможет.

ХД>..."учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера.

Очень произвольное обращение с терминологией

ХД>А насчёт того, что переедут на другую систему... Знаешь, наверное они всё-таки хороши именно для той системы, на которой сейчас используются. а для совершенно новой системы будет совершенно новый язык, который, тем не менее будет учитывать и сегодняшний программистский опыт.

Так они уже сейчас используются на куче платформ, так что теперь все ассемблеры человеку учить?


Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное. Иногда это полезно при тонкой отладке, но позволю себе тоже "сильное" утверждение: если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны. Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN повнимательнее почитать. Хотя... всякое бывает, конечно
Don't trouble trouble until trouble troubles you
Re[3]: Есть ли смысл изучать Ассемблер ?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.06.02 20:23
Оценка: 25 (2)
Здравствуйте SergH, Вы писали:

SH>интерестное у нас обсуждение.. я — плохо, ты — только Z80, Mr-Twister — никак


Дык, если у вас не стоит задача стать крякером, то знание асм-а не обязательно должно быть на 5. Достаточно, чтобы ты мог понять, что создает компилятор. Но хоть на начальном уровне его должен знать каждый программист. И не только для общего развития. От его знатия зависит оптимальность создаваемого кода. Да и многие вопросы снимаются автоматом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Есть ли смысл изучать Ассемблер ?
От: George_Seryakov Россия  
Дата: 12.06.02 20:25
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>2) что-то хотел написать -- забыл


Что знать язык (С/С++, например) — это понимать, как он компилируется в ассемблер/машинный код? Видеть машинный код под исходным текстом.

Мне, например, сравнительно часто приходится залезать в disassembly, чтобы посмотреть — соответствует исходник бинарику или нет.
GS
Re[3]: Есть ли смысл изучать Ассемблер ?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.06.02 20:35
Оценка: 12 (1)
Здравствуйте Eugene, Вы писали:

E>Более того, я знаю людей, кому этот опыт просто мешал начать мыслить другими категориями.


Скорее всего эти люди или начинали с асм-а, или слишком много на нем проработали.

E>Может я слишком буквально понимаю слово "изучать"? Одно дело — бегло ознакомиться с архитектурой процессора и системой команд, другое дело "изучать".


Здесь скорее речь идет об ознакомлении.

ХД>>На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды.

E>Думаю, Керниган и Риччи обиделись бы, не говоря уже о Страуструпе — пыхтели, пыхтели и ...

Не... В его словах очень большая доля правды. Ричи создавал С именно как замену ассемблеру для написания системного кода (тодгда ОС). И он воспринимал с как оптимальный кодогенератор (уж он то точно какой код знал превратится в какие инструкции). Так что такая метафора имеет право на жизнь.

E>...если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны.


А кто тебе сказал, что все ошибки делает сам программист? Иногда встречаются наложения абстоятельств, иногда чужие проходы по памяти, а иногда глюки коппилятора или ОС. Вот тогда знание асм-а (пусть даже и поверхностное) очень пригодится. Но перегибать и лезть в дизасемблер при первом подозрении конечно не стоит.

E>Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN повнимательнее почитать.


Главное научится понимать когда нужно лезть в MSDN/RSDN, а когда в дизасемблер.

E>Хотя... всякое бывает, конечно


Во-во!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 12.06.02 20:53
Оценка: 12 (1)
Хочу сразу сказать, что высказывал своё личное мнение и в предыдущем сообщении и собираюсь его пояснить в этом :)

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

E>... Более того, я знаю людей, кому этот опыт просто мешал начать мыслить другими категориями.


Это уже не наша забота. Новое всегда даётся с трудом. Другое дело, что изначально мы знаем (изучаем) по крайней мере процедурное программирование (см. постинги Mr.Twister'a), и хотим разобраться, что же лежит у него в основе. Чуть ли не в каждом вопросе, ему предлагали "учить ассемблер", поскольку были видны трудности с приятием информации о ходе работы программы вообще, о том, как представляется информация в машине, что такое переменная, указатели и проч.
То есть исходная посылка была такой: что-то непонятно из высокоуровнего программирования на С (какие-то неочевидные места, становящиеся простыми при наборе критического количества информации об устройстве машины), человек задаёт вопрос, ему отвечают, но при этом советуют "выучить ассемблер". Вот теперь он интересуется, а так ли это надо, ведь есть такие замечательные языки как С, С++...

E>Может я слишком буквально понимаю слово "изучать"? Одно дело — бегло ознакомиться с архитектурой процессора и системой команд, другое дело "изучать".


Да, здесь его стоит понимать всё-же так, как я написал ниже:

ХД>>..."учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера.

E>Очень произвольное обращение с терминологией:)

... поэтому здесь следует искать не игру слов, а толкование устоявшегося выражения. :)

ХД>>...понимание происходящего внутри компьютера и есть умение программировать.

E>Очень спорное определение умения программировать.

Ваша правда. Определение спорное, но основа заложена верная. Чтобы управлять системой, необходимо некоторое знание о том, как она устроена. На этом основывается наша наука. Если мы знаем, какие процессы происходят в чайнике на печке, значит мы сможем вскипятить воду. Если мы знаем чего ожидать от компьютера, мы сможем так организовать своё управление (программу), что он будет делать именно то, что нам нужно (программа будет работать).

ХД>>На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды.

E>Думаю, Керниган и Риччи обиделись бы, не говоря уже о Страуструпе:) — пыхтели, пыхтели и ...:)

Думаю, что я не очень далёк от истины. (VladD2 уже высказался :user: )

ХД>>А для этого он изучает специальный язык -- язык ассемблера -- который и помогает в достижении этой цели, потому что не содержит ничего лишнего

E>Хорошее знание ассемблера — это как раз очень много лишнего, к примеру, с точки зрения ООП. Ассемблер, к примеру, сильно привязан к конкретной платформе и ее нюансам, а это очень специфические знания.

Нет, вы неверно трактуете мои слова.
"Ничего лишнего": здесь -- отсутствие для компьютера таких понятий как процедур, объектов, циклов. А наличие лишь ячейки с адресом, линейного выполнения, ветвления и интструкции перехода. (Может я слишком узко представляю себе современный ассемблер, но в отношении Z80 всё именно так и обстоит).

ХД>>А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...

E>Ассемблер тут не очень-то поможет.

Имеется в виду, что эти вещи могут подразумеваться под словами "учить ассемблер".

ХД>>А насчёт того, что переедут на другую систему... Знаешь, наверное они всё-таки хороши именно для той системы, на которой сейчас используются. а для совершенно новой системы будет совершенно новый язык, который, тем не менее будет учитывать и сегодняшний программистский опыт.

E>Так они уже сейчас используются на куче платформ, так что теперь все ассемблеры человеку учить?

Во-первых, уточню на всякий случай, что речь шла о языках С и С++.
Во-вторых, я говорил как раз об ознакомлениями с принципами работы компьютеров. Если есть компьютеры, которые разительно отличаются от того, что мы имеем сегодня в виде PC и для них ещё и реализован компилятор С, то пожалуйста расскажите немного об этом. Или ссылкой поделитесь :)
Я не знаю таких, честно говоря :shuffle:

E>Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное.


Полностью с вами согласен. :)
И речь идёт как раз о том, стоит ли заниматься тем, что выделено жирным. Нам с вами ответ очевиден и мы как раз хотим донести основания этого ответа до спрашивающего.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[3]: Есть ли смысл изучать Ассемблер ?
От: Владимир Гренадеров Россия  
Дата: 12.06.02 21:23
Оценка: 12 (1)
Здравствуйте Eugene, Вы писали:

<skip>

E>Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное.


Обязан ли водитель автомобиля знать устройство двигателя, представлять процессы, проходящие в нем?
Нет, не обязан — вот руль, педали, коробка передач (может даже автомат) — вперёд...
Только назвать такого водителя словом "профессионал" язык ни у кого не повернется !


E>Иногда это полезно при тонкой отладке, но позволю себе тоже "сильное" утверждение: если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны. Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN повнимательнее почитать. Хотя... всякое бывает, конечно


Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть
А если это чужая DLL, или Билл постарался, что тогда?
OK
Re: Есть ли смысл изучать Ассемблер ?
От: WolfHound  
Дата: 12.06.02 21:47
Оценка: 12 (1)
to all:
Ну вот опять флейм пошол.
asm предложил учить я тк Mr-Twister задает вопросы которые снимутся поле прочтения первых 5-10 страниц книжки по asm'у(не считая предисловия).
Человеку который пишит офисные приложения asm не нужен но не знание его в принципе ведет к клиническим случаям(см ответ Bell'а)
А еще для тренировки можно порешать олимпиадные задачи, учат бытро находить хорошие решения.
http://acm.timus.ru/
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Есть ли смысл изучать Ассемблер ?
От: Dr_Sh0ck Беларусь  
Дата: 13.06.02 03:54
Оценка: 41 (4)
Здравствуйте Mr-Twister, Вы писали:

[skipped]

MT>Верно ?


Раз пошел такой флейм то скажу и я свое ИМХО . Ассемблер был моим третьим языком (после Васика и Паскаля). Так вот, не программируй я на ассемблере больше года до момента изучения С, он бы (С) мне дался гораздо сложнее (мне так кажется).

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

При изучении ассемблера также придется освоить базовые принципы работы компьютера. Думай сам надо это тебе или нет. Кстати, Владимир Гренадеров очень хорошую аналогию привел про водителя.
Do not fake yourself ;)
ICQ#: 198114726
Re[4]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 13.06.02 04:28
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>И речь идёт как раз о том, стоит ли заниматься тем, что выделено жирным. Нам с вами ответ очевиден и мы как раз хотим донести основания этого ответа до спрашивающего.


Денис, sorry, но со стороны этот совет выглядел примерно так: «я, вообще-то, ассемблера не знаю..., но ты учи обязательно (а то чайник не вскипит! ). Здесь очевидное противоречие — если это только тонкая обертка, и это столь необходимо — кто мешает? И тогда совет будет более весомым (и менее развернутым).
Don't trouble trouble until trouble troubles you
Re[4]: Есть ли смысл изучать Ассемблер ?
От: Andir Россия
Дата: 13.06.02 05:54
Оценка: 40 (3)
Здравствуйте Владимир Гренадеров, Вы писали:

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


А можно я скажусь ? :-)

E>>Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное.

На самом деле даже здесь Ассемблер не причём, просто ничего удобнее и ближе к железу нет ... А знать что и как исполняется можно и без знания ассемблера ... Каждый может представлять это по-своеиу и проводить свои аналогии ...
У нас был препод, который это всё (функционирование, работа с железом) без ассемблера складно объяснял, а потом, когда я узнавал как это реализовывается на ассемблере, всё казалось таким очевидным ..

ВГ>Обязан ли водитель автомобиля знать устройство двигателя, представлять процессы, проходящие в нем?

ВГ>Нет, не обязан — вот руль, педали, коробка передач (может даже автомат) — вперёд...
ВГ>Только назвать такого водителя словом "профессионал" язык ни у кого не повернется !
Спорно, очень спорно ... Это что же получается, что гонщики профессионалы обязаны знать термодинамические законы и как они работают :))) вплоть до квантовой теории ... А всё таки я позволю себе назвать их профессионалами :shuffle:
Узкая специализация и есть как раз термин для выражения такого типа предпочтений, человек знает профессионально свою область, а в смежную и не пытается влезть. IMHO в скором будущем так и будет построена научная система, зачем человеку который изучает биологию знать квантовые процессы в атомах клеток :-)). Специализированные знания других областей ему не нужны.

E>>Иногда это полезно при тонкой отладке, но позволю себе тоже "сильное" утверждение: если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны. Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN:)) повнимательнее почитать. Хотя... всякое бывает, конечно:)

Да, да и ещё раз да ! Именно, из-за своей ошибки не стоит проклинать изобретателя отвёртки и шурупа ... Сейчас системы не совершенны во многом, поэтому знание ассемблера зачастую просто необходимо (иногда даже до уровня кракерства :)) ) ... , но это надо искоренять, иначе знание будет только для избранных ...
Хочется привести пример из физики ... (сам из оных) У меня на факультете только человек пять из всех(около 200) смогли освоить базовый курс (физфак), а остальные либо не хотели, либо просто не успевали ... (с гордостью сообщу что я из тех что освоили не напрягаясь) ... Так теперь на 4 курсе — народу просто не хватает знаний для изучения специализированных областей, и они заново пытаются достучаться до истины (IMHO процентов 50 достучится) ... А я целыми днями балду пинаю и не знаю куда себя деть, потому что ничего нового не изучаем, у мя даже разочарование от универа появилось ... И самое обидное для преподов что я не собираюсь быть физиком, ИБО программирование более, более и более для меня привлекательней ... :super:

Итоги(IMHO опять же):
1.Сейчас изучать ассемблер нужно! Но лучше это делать абстрактно от железа, от самого языка ассемблера, а потом уже и к ассемблеру переходить. А ещё лучше если тебе кто-нить из профи ;) сможет это всё рассказать и объяснить (есть люди которым просто от бога дано быть преподавателями!), потом проблем с изучением железа и его программирования будет меньше, если вдруг вздумаешь.
2. Но лучше всё таки вначале заниматься абстрактным программированием, даже без С/C++, алгоритмы, структуры и конечно математику и так далее ибо они основа всего программирования, а не синтаксис различных языков !!!
Даже ещё раз повторюсь, Программирование это прежде всего способ перевода математических абстракций на язык структур данных и алгоритмов! А только потом на какой-то язык программирования (будь хоть он трижды ассемблером).


ВГ>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть :)

ВГ>А если это чужая DLL, или Билл постарался, что тогда?
За искоренение своих и чужих ошибок !!! :crash:

С Уважением Andir!
Re[5]: Да, все таки машину внутри знать надо.
От: Mr-Twister http://cosmozo.narod.ru/
Дата: 13.06.02 05:59
Оценка:
В общем все сводится к тому , что знания ассемблера даст в будущем понимание происходящего внутри компьютера процесса.
А главное упростит мое понимание, что где распределяется и ,что там за Си делается.
Действительно, когда я задавал вопросы, к примеру о volatile и register переменных, то когда речь заходит о процессорах, и распределении памяти, то мне не все ясно. Видать при вопросе о стеке Dr_Sh0ck и SergH заметили как меня в штопор занесло. Но в конце вынесло.
В принципе, то на , что я нацелен, как сказал Евгений , так же заставляет меня учить ассемблер.
Ну в принципе и крякнуть пару ваших программ тоже не откажусь.( Шутка)

Но, опять возникает вопрос с книгой, которая была бы легка для восприятия, с примерами, картинками. В общем для начинающего, какую посоветуете книгу по ассемблеру ?
дас ист нихьт фантастиш, дас ист руссиш Ванюшка
Re[6]: Да, все таки машину внутри знать надо.
От: SergH Россия  
Дата: 13.06.02 06:37
Оценка: 10 (1)
Здравствуйте Mr-Twister, Вы писали:


MT>В общем все сводится к тому , что знания ассемблера даст в будущем понимание происходящего внутри компьютера процесса.

MT>А главное упростит мое понимание, что где распределяется и ,что там за Си делается.
MT>Действительно, когда я задавал вопросы, к примеру о volatile и register переменных, то когда речь заходит о процессорах, и распределении памяти, то мне не все ясно. Видать при вопросе о стеке Dr_Sh0ck и SergH заметили как меня в штопор занесло. Но в конце вынесло.
MT>В принципе, то на , что я нацелен, как сказал Евгений , так же заставляет меня учить ассемблер.
MT>Ну в принципе и крякнуть пару ваших программ тоже не откажусь.( Шутка)

С vcolatile и register ассемблер тебе поможет после первых пяти страниц. А вот с остальным сложнее. В нормальных книжках описывается ассемблер для DOS'а, который имеет мало общего с Windows, поэтому мало объяснит. Кроме того, некоторые конструкции, поддерживаемые языками высокого уровня в асме отсутствуют, поэтому тоже не сильно проясняться. malloc\free, например. А Windows слишком толстая оболочка над железом, её нужно изучать отдельно. Почитай Рихтера "Windows для профессионалов". Только это будет сложно. И по-моему, лучше третье издание (я его читал в библиотеке, так как поздно спохватился), оно менее навороченное и легче для понимания.

MT>Но, опять возникает вопрос с книгой, которая была бы легка для восприятия, с примерами, картинками. В общем для начинающего, какую посоветуете книгу по ассемблеру?


Хорошие люди рекомендовали мне Зубкова. У меня до него руки так и не дошли, ничего сказать не могу.

А есть ещё одна классная книга, но не совсем по ассемблеру. Чарльз Петзольд "Код". Про компьютер на уровне транзисторов, причём написано для американцев, не знающих что такое электричество, так что никаких начальных знаний не требует. Прочитал с большим удовольствием, хотя и проходил большую часть того что там написано.
Делай что должно, и будь что будет
Re: Есть ли смысл изучать Ассемблер ?
От: Vi2 Удмуртия http://www.adem.ru
Дата: 13.06.02 06:38
Оценка: 12 (1) -1
Здравствуйте Mr-Twister, Вы писали:

MT>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.


Ещё бы Тех.Документацию на Интел процессор посоветовали почитать!

PS
ИМХО, хорошая тема для "Философии программирования", не правда ли?
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[6]: Да, все таки машину внутри знать надо.
От: Mishka<T> Норвегия  
Дата: 13.06.02 07:36
Оценка: 10 (2)
Здравствуйте Mr-Twister,

Я б советовал ерундой не заниматься, а тихо мирно переходить на IL из .NET. Мы всё равно все там будем, а это и есть тот самый ассемблер, но новый. Ассемблер — простой язык, а вот то, как работает компьютер, к ассемблеру мало относится, поэтому тот же ассемблер на разных платформах сильно отличается. Если Microsoft всё таки правы со своей идеей .NET-a, то IL — это хороший выбор, поскольку он будет переносим на разные платформы и плюс к тому же он стандартизован.
Всё, что я написал выше, не имеет смысла, если ты собираешься работать с железом напрямую, но вряд ли тебе этого хочется.
Re: Есть ли смысл изучать Ассемблер ?
От: Aquila http://www.wasm.ru
Дата: 13.06.02 07:45
Оценка: 10 (1)
Здравствуйте Mr-Twister, Вы писали:

MT>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

Отвечу одной ссылкой Windows Assembly Site.
Re[5]: Есть ли смысл изучать Ассемблер ?
От: Владимир Гренадеров Россия  
Дата: 13.06.02 07:56
Оценка: 12 (1)
Здравствуйте Andir, Вы писали:

[skip]

ВГ>>Обязан ли водитель автомобиля знать устройство двигателя, представлять процессы, проходящие в нем?

ВГ>>Нет, не обязан — вот руль, педали, коробка передач (может даже автомат) — вперёд...
ВГ>>Только назвать такого водителя словом "профессионал" язык ни у кого не повернется !
A>Спорно, очень спорно ... Это что же получается, что гонщики профессионалы обязаны знать термодинамические законы и как они работают :))) вплоть до квантовой теории ... А всё таки я позволю себе назвать их профессионалами :shuffle:
Квантовая теория — это для разработчиков камней :) А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?

A>Узкая специализация и есть как раз термин для выражения такого типа предпочтений, человек знает профессионально свою область, а в смежную и не пытается влезть. IMHO в скором будущем так и будет построена научная система, зачем человеку который изучает биологию знать квантовые процессы в атомах клеток :-)). Специализированные знания других областей ему не нужны.

А разве ассемблер для программиста — это другая область? И зачем, спрашивается инженеру изучать в универе историю или философию ???


A>Итоги(IMHO опять же):

A>1.Сейчас изучать ассемблер нужно! Но лучше это делать абстрактно от железа, от самого языка ассемблера, а потом уже и к ассемблеру переходить. А ещё лучше если тебе кто-нить из профи ;) сможет это всё рассказать и объяснить (есть люди которым просто от бога дано быть преподавателями!), потом проблем с изучением железа и его программирования будет меньше, если вдруг вздумаешь.
Изучать асм абстракто от железа — это то же самое, что учить С++, абстрагируясь от компютера :)
Ещё лучше бы совсем ничего не учить, пусть профи все объяснит и покажет...

A>2. Но лучше всё таки вначале заниматься абстрактным программированием, даже без С/C++, алгоритмы, структуры и конечно математику и так далее ибо они основа всего программирования, а не синтаксис различных языков !!!

A>Даже ещё раз повторюсь, Программирование это прежде всего способ перевода математических абстракций на язык структур данных и алгоритмов! А только потом на какой-то язык программирования (будь хоть он трижды ассемблером).
С этим ни кто не спорит. Но! После изучения абстрактных моделей и алгоритмов (вспомним Кнута), необходимо будет
сесть за КОНКРЕТНЫЙ компьютер, и писат программы под него. А если человек плохо представляет, что такое стек и как это в него параметры попадают, чем stdcall отличестся от cdecl — сможет ли он грамотно спроектировать ту же DLL ? А многпоточность? Как понять опасность одновременного досупа к глобальной переменной? Есть еще большая куча примеров на подобную тему.

ВГ>>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть :)

ВГ>>А если это чужая DLL, или Билл постарался, что тогда?
A>За искоренение своих и чужих ошибок !!! :crash:
Правилно — посмотрим в отладчике, как мелкомягкие напортачили, и сделаем лучше :super:
OK
Re[2]: Есть ли смысл изучать Ассемблер ?
От: Владимир Гренадеров Россия  
Дата: 13.06.02 08:05
Оценка:
Здравствуйте Aquila, Вы писали:

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


MT>>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

A>Отвечу одной ссылкой Windows Assembly Site.


Надо было подкинуть ссылку на ООП в асме — вот смеху было-бы
Кстати, сам Страуструп ассемблер знает — написал бы он без него С++ !
OK
Re[6]: Есть ли смысл изучать Ассемблер ?
От: Mishka<T> Норвегия  
Дата: 13.06.02 08:28
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

ВГ>Квантовая теория — это для разработчиков камней А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?


Не думаю, что Шумахеру позволяют руками лезть в мотор, там без него есть профи по настройке болидов.

ВГ>А разве ассемблер для программиста — это другая область? И зачем, спрашивается инженеру изучать в универе историю или философию ???


Мы ещё и медицыну изучали
Так вот на этот вопрос есть один ответ — университет — это универсальное образование, так что и история и философия нужны только, так сказать, для общего образования.

ВГ>сесть за КОНКРЕТНЫЙ компьютер, и писат программы под него. А если человек плохо представляет, что такое стек и как это в него параметры попадают, чем stdcall отличестся от cdecl — сможет ли он грамотно спроектировать ту же DLL ? А многпоточность? Как понять опасность одновременного досупа к глобальной переменной? Есть еще большая куча примеров на подобную тему.


Ну не знаю я чем они там отличаются (точнее знаю, но если б не знал, было б то же самое ) И мне это не мешает. Просто у меня задачи другие. Кому надо — тот изучит, но прогресс движется вперёд, и скоро такие знания обычному программеру будут не нужны, как не нужны они сейчас тем, кто пишет на Java или С#.

ВГ>>>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть


Не правда. Поиск ошибок имеет смысл, если они мешают пользователю выполнять его функции.
Re[7]: Да, все таки машину внутри знать надо.
От: Silver_s Ниоткуда  
Дата: 13.06.02 08:50
Оценка:
Здравствуйте Mishka<T>, Вы писали:

MT>Здравствуйте Mr-Twister,


MT>Я б советовал ерундой не заниматься, а тихо мирно переходить на IL из .NET. Мы всё равно все там будем.

Это точно.

Хотя если человек всерез собирается заниматься С,С++ то assembler ему очень пригодится
(Цитата из вопроса : "...или достаточно ограничиться Си и в будущем Си++ ?")

ИХМО, в ближайшие годы C++, и assembler очень сблизятся. С и C++ закнчат тем с чего начали — написание эффективных полу-ассемблерных программ. Даже глючевое слово "register" ведь в C++ когда-то было. В последние годы C++ потянуло на компоненто ориентированное программирование для чего он мягко говоря не подходит, но от туда его уже выпихнули. ( При всем уважении к ATL, это полный изврат писать какой-нибудь транзакционный COM+ бизнес объект на С++,ATL)
Так что Assembler для С++, ИХМО, станет более актуальным.
Re[8]: Понятнее этого, пока не нашел.
От: Mr-Twister http://cosmozo.narod.ru/
Дата: 13.06.02 10:56
Оценка:
Вот, что я нарыл в интернете. Первую главу просмотрел, понятно пока для моего восприятия.
http://asm.kalashnikoff.ru/dos/001.htm

Может , кто еще чего что знает ?
-------------------------------------
Не покажусь ли я эгоистом , но может на RSDN сделать ветку по ассемблеру ?
дас ист нихьт фантастиш, дас ист руссиш Ванюшка
Re[6]: Есть ли смысл изучать Ассемблер ?
От: Andir Россия
Дата: 14.06.02 01:11
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

[skip]
ВГ>Квантовая теория — это для разработчиков камней :) А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?
Не должен он его настраивать, не должен. Это не его профессиональная область.

A>>Узкая специализация и есть как раз термин для выражения такого типа предпочтений, человек знает профессионально свою область, а в смежную и не пытается влезть. IMHO в скором будущем так и будет построена научная система, зачем человеку который изучает биологию знать квантовые процессы в атомах клеток :-)). Специализированные знания других областей ему не нужны.

ВГ>А разве ассемблер для программиста — это другая область? И зачем, спрашивается инженеру изучать в универе историю или философию ???
Да. Ссылка на моё IMHO пункт 2. Ты представь ещё что для того чтобы понять как работает программа, ты бы распаивал процессор и следил за потоками данных с помощью осциллографа :))) (было дело, когда процессор собирали ручками на радиоэлектронике :) ).
А зачем знать историю и философию — а затем чтобы уметь мыслить не только техническими терминами, но и в другой области и другими категориями. Это просто полезно знать, а иначе какой-ты нафиг человек, если думаешь только о том как запроектировать что-нить ...


A>>Итоги(IMHO опять же):

A>>1.Сейчас изучать ассемблер нужно! Но лучше это делать абстрактно от железа, от самого языка ассемблера, а потом уже и к ассемблеру переходить. А ещё лучше если тебе кто-нить из профи ;) сможет это всё рассказать и объяснить (есть люди которым просто от бога дано быть преподавателями!), потом проблем с изучением железа и его программирования будет меньше, если вдруг вздумаешь.
ВГ>Изучать асм абстракто от железа — это то же самое, что учить С++, абстрагируясь от компютера :)
ВГ>Ещё лучше бы совсем ничего не учить, пусть профи все объяснит и покажет...
Нифига подобного не только можно, но и нужно. Умение мыслить в нужной области (в смысле не главной по профилю) важнее практических навыков, хотя без практики это конечно не то немного, именно поэтому даже в самых практических науках есть учёные-теоретики.
Особенно если ты не собираешься реально заниматься самим асмом, то и железо изучать не надо, а вот как работают отдельные структуры реализованные в железячках (типа стека, регистров) знать сейчас необходимо, а вот если глянуть в сторону IL то там уже нужно немного другое знание, и подчас и асм не нужен. ;)

A>>2. Но лучше всё таки вначале заниматься абстрактным программированием, даже без С/C++, алгоритмы, структуры и конечно математику и так далее ибо они основа всего программирования, а не синтаксис различных языков !!!

A>>Даже ещё раз повторюсь, Программирование это прежде всего способ перевода математических абстракций на язык структур данных и алгоритмов! А только потом на какой-то язык программирования (будь хоть он трижды ассемблером).
ВГ>С этим ни кто не спорит. Но! После изучения абстрактных моделей и алгоритмов (вспомним Кнута), необходимо будет
ВГ>сесть за КОНКРЕТНЫЙ компьютер, и писат программы под него. А если человек плохо представляет, что такое стек и как это в него параметры попадают, чем stdcall отличестся от cdecl — сможет ли он грамотно спроектировать ту же DLL ? А многпоточность? Как понять опасность одновременного досупа к глобальной переменной? Есть еще большая куча примеров на подобную тему.
Типичный пример сугубого практика, для которого программирование имеет только практический смысл (извини, не хочу никого обидеть). Если человек программист с большой буквы, то прежде чем программировать за Конкретным компьютером, под Конкретную платформу, с Конкретным компилятором, то он IMHO изучит особенности этих Конкретностей, а не начнёт сразу тупо набивать код и думать почему он не работает. :crash:

ВГ>>>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть :)

ВГ>>>А если это чужая DLL, или Билл постарался, что тогда?
A>>За искоренение своих и чужих ошибок !!! :crash:
ВГ>Правилно — посмотрим в отладчике, как мелкомягкие напортачили, и сделаем лучше :super:
:maniac: Догоним и расскажем об их багах ...

C Уважением Andir!
Re[7]: Есть ли смысл изучать Ассемблер ?
От: Sergey Россия  
Дата: 14.06.02 06:41
Оценка: 12 (1)
Здравствуйте Andir, Вы писали:

ВГ>>Квантовая теория — это для разработчиков камней :) А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?

A>Не должен он его настраивать, не должен. Это не его профессиональная область.

Ну так настраивает же. Вместе с механиками, естественно. И парашютисты сами свои парашюты укладывают :) И программисту (С++нутому, по крайней мере) не мешает иметь представление о том, что за его спиной компилятор вытворяет.

A>>>Узкая специализация и есть как раз термин для выражения такого типа предпочтений, человек знает профессионально свою область, а в смежную и не пытается влезть. IMHO в скором будущем так и будет построена научная система, зачем человеку который изучает биологию знать квантовые процессы в атомах клеток :-)). Специализированные знания других областей ему не нужны.

ВГ>>А разве ассемблер для программиста — это другая область? И зачем, спрашивается инженеру изучать в универе историю или философию ???
A>Да. Ссылка на моё IMHO пункт 2. Ты представь ещё что для того чтобы понять как работает программа, ты бы распаивал процессор и следил за потоками данных с помощью осциллографа :))) (было дело, когда процессор собирали ручками на радиоэлектронике :) ).

Очень поучительно, между прочим. Раз и навсегда снимает некоторые вопросы. Помнится, у нас в институте лаба такая была — за i8080 в пошаговом режиме осциллографом подглядывали — я не думаю, что время было потрачено зря.

A>>>Итоги(IMHO опять же):

A>>>1.Сейчас изучать ассемблер нужно! Но лучше это делать абстрактно от железа, от самого языка ассемблера, а потом уже и к ассемблеру переходить. А ещё лучше если тебе кто-нить из профи ;) сможет это всё рассказать и объяснить (есть люди которым просто от бога дано быть преподавателями!), потом проблем с изучением железа и его программирования будет меньше, если вдруг вздумаешь.
ВГ>>Изучать асм абстракто от железа — это то же самое, что учить С++, абстрагируясь от компютера :)
ВГ>>Ещё лучше бы совсем ничего не учить, пусть профи все объяснит и покажет...
A>Нифига подобного не только можно, но и нужно. Умение мыслить в нужной области (в смысле не главной по профилю) важнее практических навыков, хотя без практики это конечно не то немного, именно поэтому даже в самых практических науках есть учёные-теоретики.
A>Особенно если ты не собираешься реально заниматься самим асмом, то и железо изучать не надо, а вот как работают отдельные структуры реализованные в железячках (типа стека, регистров) знать сейчас необходимо, а вот если глянуть в сторону IL то там уже нужно немного другое знание, и подчас и асм не нужен. ;)

Кстати, некто Дональд Кнут в своих книгах любит примеры приводить на некоем вымышленном ассеблере — MIX. И вроде в настоящее время разработал (разрабатывает?) улучшенную версию этого ассемблера — MMIX :) Точно так же и васиковский p-code, и MSIL можно считать в какой-то мере ассемблером — пусть и для виртуальной машины. И, между прочим, отладка написанной на C++ программы зачастую осуществляется на порядок быстрее, если не боишься в дизасм заглянуть и хоть сколько-нибудь понимаешь, для чего какой код компилятор генерирует. С этой точки зрения нужна именно конкретика — как выглядит фрейм стека, как — фрейм для обработки исключений, как передаются параметры при различных соглашениях о вызовах, где компилятор держит this. А иногда при отладке (достаточно редко, впрочем) без знания ассемблера просто никак не обойтись.

A>>>2. Но лучше всё таки вначале заниматься абстрактным программированием, даже без С/C++, алгоритмы, структуры и конечно математику и так далее ибо они основа всего программирования, а не синтаксис различных языков !!!

A>>>Даже ещё раз повторюсь, Программирование это прежде всего способ перевода математических абстракций на язык структур данных и алгоритмов! А только потом на какой-то язык программирования (будь хоть он трижды ассемблером).
ВГ>>С этим ни кто не спорит. Но! После изучения абстрактных моделей и алгоритмов (вспомним Кнута), необходимо будет
ВГ>>сесть за КОНКРЕТНЫЙ компьютер, и писат программы под него. А если человек плохо представляет, что такое стек и как это в него параметры попадают, чем stdcall отличестся от cdecl — сможет ли он грамотно спроектировать ту же DLL ? А многпоточность? Как понять опасность одновременного досупа к глобальной переменной? Есть еще большая куча примеров на подобную тему.
A>Типичный пример сугубого практика, для которого программирование имеет только практический смысл (извини, не хочу никого обидеть). Если человек программист с большой буквы, то прежде чем программировать за Конкретным компьютером, под Конкретную платформу, с Конкретным компилятором, то он IMHO изучит особенности этих Конкретностей, а не начнёт сразу тупо набивать код и думать почему он не работает. :crash:

Очень спорное мнение :) Как минимум, при таком подходе подразумевается, что для каждой новой платформы весь код, от начала до конца, переписывается.

ВГ>>>>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть :)

ВГ>>>>А если это чужая DLL, или Билл постарался, что тогда?
A>>>За искоренение своих и чужих ошибок !!! :crash:
ВГ>>Правилно — посмотрим в отладчике, как мелкомягкие напортачили, и сделаем лучше :super:
A>:maniac: Догоним и расскажем об их багах ...

Они про свои баги и сами знают, только исправлять не спешат :down:
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: Есть ли смысл изучать Ассемблер ?
От: Владимир Гренадеров Россия  
Дата: 14.06.02 10:03
Оценка:
Здравствуйте Mishka<T>, Вы писали:

ВГ>>Квантовая теория — это для разработчиков камней А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?


MT>Не думаю, что Шумахеру позволяют руками лезть в мотор, там без него есть профи по настройке болидов.


Аналогия такая:
1. мотор — камень
2. принцип работы мотора, его харки — это асм
3. руль + педали — С++, Дельфи, Барсик, etc.

И в (1) ни Шумахер, ни асм-программер руками не лезет

ВГ>>А разве ассемблер для программиста — это другая область? И зачем, спрашивается инженеру изучать в универе историю или философию ???


MT>Мы ещё и медицыну изучали

MT>Так вот на этот вопрос есть один ответ — университет — это универсальное образование, так что и история и философия нужны только, так сказать, для общего образования.

А для чего нужно это самое общее образование — что бы шире смотреть на проблему, и видеть разные пути её решения !

ВГ>>сесть за КОНКРЕТНЫЙ компьютер, и писат программы под него. А если человек плохо представляет, что такое стек и как это в него параметры попадают, чем stdcall отличестся от cdecl — сможет ли он грамотно спроектировать ту же DLL ? А многпоточность? Как понять опасность одновременного досупа к глобальной переменной? Есть еще большая куча примеров на подобную тему.


MT>Ну не знаю я чем они там отличаются (точнее знаю, но если б не знал, было б то же самое ) И мне это не мешает. Просто у меня задачи другие. Кому надо — тот изучит, но прогресс движется вперёд, и скоро такие знания обычному программеру будут не нужны, как не нужны они сейчас тем, кто пишет на Java или С#.

Ты знаешь, что к .NET идет дизассемблер ?
И нэтовский асм подозрительно похож на x86...

ВГ>>>>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть

MT>Не правда. Поиск ошибок имеет смысл, если они мешают пользователю выполнять его функции.
Точно — "Это не баг, это фича"
OK
Re[9]: Понятнее этого, пока не нашел.
От: Владимир Гренадеров Россия  
Дата: 14.06.02 10:07
Оценка:
Здравствуйте Mr-Twister, Вы писали:

MT>Не покажусь ли я эгоистом , но может на RSDN сделать ветку по ассемблеру ?

Скорее надо сделать этакий FAQ — ведь профессионально писать на асме сейчас будут немногие
А так начинающий С++ программист сможет наконец понять, что же такое этот таинственный стэк, и как его переполнить
OK
Re[8]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 14.06.02 20:02
Оценка: 11 (2)
Здравствуйте Владимир Гренадеров, Вы писали:

ВГ>Ты знаешь, что к .NET идет дизассемблер ?

ВГ>И нэтовский асм подозрительно похож на x86...

Какой же еще может быть asm на одной и той же аппаратной платформе, если система команд одна и та же?
Ассемблер — прежде всего система команд используемого процессора. Возможные вариации в пределах семейства процессоров задаются опциями генерации кода комилятора: все что можно получить на том же ПК — чуть более оптимизированный код за счет использования расширенного набора команд более поздней модели процессора (например i386/486/Pentium/...). И Net тут не причем. Ну а все, чем различаются собственно программы-ассемблеры разных производителей для одного семейства, типа макроассемблера MASM — так это синтаксис директив, макросов и т.п.

Наиболее пафосные сторонники ХД в дискуссии термин "изучать ассемблер" трактуют (как кто-то здесь точно подметил) как "читать дизассемблированный код со славарем". А это уже совсем другой поворот — см. начало топика. Это не изучение, а ознакомление, легкий ликбез — ликвидация безграмотности. Как и общее представление о том, как там "закипает чайник на печке" (XД ©), или ДВС и педали работают (ГВ ©). А вот если на ассемблере реально надо писать проекты, например, для управляющих встраиваемых контроллеров и т.п. — тут уже надо изучать! И потратить на это немало времени — совсем не факт, что это будет что-нибудь, похожее на x86. И мыслить надо другими категориями, не совместимыми ни с ООП, ни (порой) даже просто со структурным программированием. И тут уж невозможно без GOTO, вот вам и новые герои комиксов, которых недавно так безжалостно "перестреляли" И если потом надо писать на чем-нибудь "высоком" — надо будет как можно быстрее забыть 99% приобретенного опыта! Так что "советую советовать" не так категорично

Ну а гнуть пальцы на БГ по поводу ошибок MS — это, как правило, проходит, если самому делать что-нибудь крупное и серьезное. Очень хочется, конечно, найти крайнего и виноватого на стороне, но это бывает так редко

PS для ХД:
Уверен, что вопрос уже прояснился , и все же: вот далеко не полный перечень платформ, для которых только MS(!) разрабатывает версии своих ОС (взят из MSDN, см. например статью "From One Code Base to Many Platforms Using Visual C++”):
DEC Alpha,MIPS R4400, PowerPC,NEC VR4111 MIPS,Hitachi SH3,PR 3912,ARM SA1100.
Don't trouble trouble until trouble troubles you
Re[2]: Есть ли смысл изучать Ассемблер ?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.06.02 21:49
Оценка:
Здравствуйте WolfHound, Вы писали:

WH>А еще для тренировки можно порешать олимпиадные задачи, учат бытро находить хорошие решения.

WH>http://acm.timus.ru/

Лучше http://acm.uva.es/problemset. У него статус по солиднее, да и задачки по солиднее...
Re[9]: Есть ли смысл изучать Ассемблер ?
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.06.02 21:57
Оценка: 18 (1)
Здравствуйте Eugene, Вы писали:

E>PS для ХД:

E>Уверен, что вопрос уже прояснился , и все же: вот далеко не полный перечень платформ, для которых только MS(!) разрабатывает версии своих ОС (взят из MSDN, см. например статью "From One Code Base to Many Platforms Using Visual C++”):
E>DEC Alpha,MIPS R4400, PowerPC,NEC VR4111 MIPS,Hitachi SH3,PR 3912,ARM SA1100.

Но архитектура-то все равно фон Неймановская, и ничем не отличается, ни от x86, ни от того же z80.
Re[10]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 15.06.02 00:49
Оценка:
Здравствуйте DarkGray, Вы писали:


DG>Но архитектура-то все равно фон Неймановская, и ничем не отличается, ни от x86, ни от того же z80.


Ну, если оценивать по такому принципу — тут априори все уже полиглоты. И изучать уже нечего...
Don't trouble trouble until trouble troubles you
Re[9]: Есть ли смысл изучать Ассемблер ?
От: Andir Россия
Дата: 15.06.02 01:47
Оценка:
Здравствуйте Eugene, Вы писали:

E>Здравствуйте Владимир Гренадеров, Вы писали:


ВГ>>Ты знаешь, что к .NET идет дизассемблер ?

ВГ>>И нэтовский асм подозрительно похож на x86...

E>Какой же еще может быть asm на одной и той же аппаратной платформе, если система команд одна и та же?

E>Ассемблер — прежде всего система команд используемого процессора. Возможные вариации в пределах семейства процессоров задаются опциями генерации кода комилятора: все что можно получить на том же ПК — чуть более оптимизированный код за счет использования расширенного набора команд более поздней модели процессора (например i386/486/Pentium/...). И Net тут не причем. Ну а все, чем различаются собственно программы-ассемблеры разных производителей для одного семейства, типа макроассемблера MASM — так это синтаксис директив, макросов и т.п.
Есть !!! Правильно ! 100% ! Абсолютно !
Вот оно, вот правда, ни причём здесь на самом деле железо, ни причём и всё. Факт что мы должны знать как функционирует Комп, но не факт, что именно через Ассемблер, просто нам выбора не оставляют ... ну нет ничего иного, но я всё равно придерживаюсь мнения, чо надо этот Ассемблер изучать, но изучать абстрактно, как язык, зная что он может измениться в любой момент. Можно это всё изучать на полной через команды процессора хоть в 16h системе, просто это менее эффективно, чем смотреть на асмовские команды, проще это для человеческого восприятия... НО есть люди — железнячники, радиоэлектроники, которые это всё понимают, даже без ассемблера — это их отрасль. Блин, я даже им завидую иногда, они видят то что я не в состоянии увидеть и это обидно ... как будто у них мозг функционирует по-другому ... не ДАНО это мне ... а жаль ...

E>Наиболее пафосные сторонники ХД в дискуссии термин "изучать ассемблер" трактуют (как кто-то здесь точно подметил) как "читать дизассемблированный код со славарем". А это уже совсем другой поворот — см. начало топика. Это не изучение, а ознакомление, легкий ликбез — ликвидация безграмотности. Как и общее представление о том, как там "закипает чайник на печке" (XД ©), или ДВС и педали работают (ГВ ©). А вот если на ассемблере реально надо писать проекты, например, для управляющих встраиваемых контроллеров и т.п. — тут уже надо изучать! И потратить на это немало времени — совсем не факт, что это будет что-нибудь, похожее на x86. И мыслить надо другими категориями, не совместимыми ни с ООП, ни (порой) даже просто со структурным программированием. И тут уж невозможно без GOTO, вот вам и новые герои комиксов, которых недавно так безжалостно "перестреляли":) И если потом надо писать на чем-нибудь "высоком" — надо будет как можно быстрее забыть 99% приобретенного опыта! Так что "советую советовать" не так категорично :)

Да. Просто невозможно понимать и думать в нескольких направлениях сразу (а жаль)

E>Ну а гнуть пальцы на БГ по поводу ошибок MS — это, как правило, проходит, если самому делать что-нибудь крупное и серьезное. Очень хочется, конечно, найти крайнего и виноватого на стороне, но это бывает так редко :(

Шутимс ... просто шутимс ... :-)))

С Уважением Andir!
Re[3]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 15.06.02 07:14
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

A>>Отвечу одной ссылкой Windows Assembly Site.

ВГ>Надо было подкинуть ссылку на ООП в асме — вот смеху было-бы
ВГ>Кстати, сам Страуструп ассемблер знает — написал бы он без него С++ !

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

Постинг Vi2 как раз достаточно показателен, потому что понимание вопроса в нём свелось к буквальной трактовке выражения "учить ассемблер".

Ссылка на сообщение: http://www.rsdn.ru/forum/message.asp?mid=63212&amp;only
Автор: Vi2
Дата: 13.06.02
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[11]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 15.06.02 07:18
Оценка:
Здравствуйте Eugene, Вы писали:

DG>>Но архитектура-то все равно фон Неймановская, и ничем не отличается, ни от x86, ни от того же z80.

E>Ну, если оценивать по такому принципу — тут априори все уже полиглоты. И изучать уже нечего...

Да в том-то всё и дело, что человек задавший вопрос не полиглот! А только намеревается им стать И он ищет способ получить нужные знания. А область этих знаний выясняет у нас с вами (у всех посетителей форума, если хотите), потому как считает нас несколько более опытными в этом вопросе.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[5]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 15.06.02 07:29
Оценка:
Здравствуйте Eugene, Вы писали:


E>Денис, sorry,


Всё ОК. На ассемблере я и правда не пишу, но считаю, тем не менее, что к поставленному вопросу это не относится.

E>...но со стороны этот совет выглядел примерно так: «я, вообще-то, ассемблера не знаю..., но ты учи обязательно (а то чайник не вскипит! ). Здесь очевидное противоречие — если это только тонкая обертка, и это столь необходимо — кто мешает? И тогда совет будет более весомым (и менее развернутым).


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

Надеюсь, что наполненный таким смыслом совет достаточно весом, чтобы быть опубликованным здесь и в полном объёме
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[9]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 15.06.02 07:44
Оценка:
Здравствуйте Eugene, Вы писали:

В сторону: В плане сравнения с Шумахером, мне кажется больше подойдёт знание не термодинамики, а механики в плане обтекаемости машины, её устойчивости в поворотах etc., при этом с привлечением знаний, выработанных профессионалами в своих областях: в области конструирования ДВС, дизайна кузова (в плане той же обтекаемости и устойчивости). То есть они дают определённую исходную информацию и сам болид, обладающий этими известными характеристиками, а Шумахер как професионал, должен извлечь из этого аппарата и его данных наименьшее время на круге.

E>Наиболее пафосные сторонники ХД в дискуссии термин "изучать ассемблер" трактуют (как кто-то здесь точно подметил) как "читать дизассемблированный код со славарем". А это уже совсем другой поворот — см. начало топика. Это не изучение, а ознакомление, легкий ликбез — ликвидация безграмотности. Как и общее представление о том, как там "закипает чайник на печке" (XД ©), или ДВС и педали работают (ГВ ©).


Насчёт ознакомления и ликбеза согласен. Это именно то, что нужно нашему товарищу, который задал вопрос.

E>А вот если на ассемблере реально надо писать проекты, например, для управляющих встраиваемых контроллеров и т.п. — тут уже надо изучать! И потратить на это немало времени — совсем не факт, что это будет что-нибудь, похожее на x86. И мыслить надо другими категориями, не совместимыми ни с ООП, ни (порой) даже просто со структурным программированием. И тут уж невозможно без GOTO, вот вам и новые герои комиксов, которых недавно так безжалостно "перестреляли" И если потом надо писать на чем-нибудь "высоком" — надо будет как можно быстрее забыть 99% приобретенного опыта! Так что "советую советовать" не так категорично


Да, вы опять же правы. Но, по моему мнению, вы отклоняетесь от темы исходного топика. Человек просто изучает Си, и, так как он (язык С) недалёк от языка ассемблера (в том смысле, о котором писали VladD2 и я), то ему не совсем понятны некоторые вещи, которые окажутся очевидными людям, знакомым с тем, how it works.

E>PS для ХД:

E>Уверен, что вопрос уже прояснился , и все же: вот далеко не полный перечень платформ, для которых только MS(!) разрабатывает версии своих ОС (взят из MSDN, см. например статью "From One Code Base to Many Platforms Using Visual C++”):
E>DEC Alpha,MIPS R4400, PowerPC,NEC VR4111 MIPS,Hitachi SH3,PR 3912,ARM SA1100.

Собственно, мы с вами описываем свои разные точки зрения, каждый со своей колокольни. Это нормально, пожалуй. И мне интересно поговорить с человеком, который знает об ассемблере не по наслышке как я, а сам пишет настоящие (в смысле не учебные) проекты для разных МП. Спасибо за дискуссию. Надеюсь, вам тоже было небезынтересно читать всё это
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[2]: Есть ли смысл изучать Ассемблер ?
От: Mr-Twister http://cosmozo.narod.ru/
Дата: 15.06.02 07:53
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Здравствуйте Mr-Twister, Вы писали:


MT>>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.


Vi2>Ещё бы Тех.Документацию на Интел процессор посоветовали почитать!


Vi2>PS

Vi2>ИМХО, хорошая тема для "Философии программирования", не правда ли?
Хитрик Денис модератор, все-таки эта тема подходит для философии программирования.

А ведь действительно. Знать, что первично, что вторично , относится и к "философии программирования" и к ассемблеру. Что раньше курица или яйцо, как раз подходит . Так, что объеденять эти темы судя по всему можно, и они все же однородны.
Ну можно еще в философию программирования включить рассмотрение понятий, и английский язык с уклоном программирования.
Да сюда можно и технологические тенденции, и развитие языков( К примеру Nvidia сделала новый язык Cg).

Ну мужики, ну давайте сделаем "Философию программирования", ведь эта тема актуальна.



http://www.rsdn.ru/forum/message.asp?mid=63662
Автор: SergeMS
Дата: 14.06.02
— Здесь речь идет за философию программирования.
дас ист нихьт фантастиш, дас ист руссиш Ванюшка
Re[3]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 15.06.02 08:13
Оценка:
Здравствуйте Mr-Twister, Вы писали:

Vi2>>PS

Vi2>>ИМХО, хорошая тема для "Философии программирования", не правда ли?
MT>Хитрик Денис модератор, все-таки эта тема подходит для философии программирования.

Все вопросы к администраторам Я не создаю новые форумы. Я только перекидываю сообщения между существующими.

Да, я либо Хитрик Денис как человек-посетитель, либо модератор, как "служащий" на этом сайте. Необязательно перечислять все титулы, можно даже просто по имени: Денис.

MT>Ну можно еще в философию программирования включить рассмотрение понятий, и английский язык с уклоном программирования.


Это в прочее. Не надо путать божий дар с яичницей. Здесь сайт по программированию, а не по лингво курсам

MT>Да сюда можно и технологические тенденции, и развитие языков( К примеру Nvidia сделала новый язык Cg).


Это тоже в Прочее. Или Разное, если хочется

MT>Ну мужики, ну давайте сделаем "Философию программирования", ведь эта тема актуальна.


Вот засада какая! А не лучше это пока оставить в Прочем, а периодически выпускать бЮллетень (или дайджест) по форумам: "Самые интересные топики"? В такой концепции можно при небольшом количестве слабо наполненных форумов хорошо выделять и структурировать топики по интересности и тематике. Автоматом появятся и Q&A и темы для статей (не только по философии).
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[4]: Есть ли смысл изучать Ассемблер ?
От: Владимир Гренадеров Россия  
Дата: 15.06.02 08:27
Оценка: 12 (1)
Здравствуйте Хитрик Денис, Вы писали:

ХД>Владимир, а вот интересно, за что же вы поставили ноль Vi2? хотя сами, по моему мнению, высказываетесь в той же маненре?


ХД>Постинг Vi2 как раз достаточно показателен, потому что понимание вопроса в нём свелось к буквальной трактовке выражения "учить ассемблер".


"Ещё бы Тех.Документацию на Интел процессор посоветовали почитать! " (c) Vi2
Вообще-то, 0 — "я так не думаю". Я был не согласен с высказыванием Vi2 — что значит "ещё бы"?
То есть и предложение поучить асм это уже слишком? А тех. документацию без приличной подготовки не осилить...

Оценка <НОЛЬ> — ипользовать её или нет? Если ответ нравится, то ясно. А если нет?
Воздержаться? Или долго и нудно доказывать кому-то, что он не прав? (и засорять ветку)

Хотелось бы узнать ваше личное отношение к этому, Денис.
OK
Re[10]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 15.06.02 09:24
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>Надеюсь, вам тоже было небезынтересно читать всё это :user:


Честно? Нет. Просто ввязался — приходится иногда отвечать :(. С/С++/Ассемблер/высокой "штиль"/Пушкин/"Мысли" вслух и в сторону/Вся эти "аналогии" про Чайник на печке, педали и Шумахера, и еще куча всего на форуме по программированию — поверь, уже не вдохновляют. А тем более после проигрыша нашей сборной! :)
Мне больше нравится так: конкретный вопрос — конкретный, короткий и ясный ответ по существу. А здесь вся конкретика — вывод про необходимость ликбеза по основам компьютерной грамотности (ну уж с этим-то я никогда не спорил!!!), 2-3 ссылки, одну из которых "нарыл" сам автор вопроса, и закономерно зачахнувший вопрос о необходимости форума по asm.
Ладно, проехали. Истина в споре все равно не рождается:). Sorry, если был несдержан.
Don't trouble trouble until trouble troubles you
Re[4]: Есть ли смысл изучать Ассемблер ?
От: Mr-Twister http://cosmozo.narod.ru/
Дата: 15.06.02 11:03
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>Вот засада какая! А не лучше это пока оставить в Прочем, а периодически выпускать бЮллетень (или дайджест) по форумам: "Самые интересные топики"? В такой концепции можно при небольшом количестве слабо наполненных форумов хорошо выделять и структурировать топики по интересности и тематике. Автоматом появятся и Q&A и темы для статей (не только по философии).


Денис, ты хочешь сказать, если наберется к примеру 30 вопрос-ответов, то это автоматом появится ?
дас ист нихьт фантастиш, дас ист руссиш Ванюшка
Re[5]: Есть ли смысл изучать Ассемблер ?
От: Хитрик Денис Россия RSDN
Дата: 15.06.02 11:07
Оценка:
Здравствуйте Mr-Twister, Вы писали:

ХД>>Вот засада какая! А не лучше это пока оставить в Прочем, а периодически выпускать бЮллетень (или дайджест) по форумам: "Самые интересные топики"? В такой концепции можно при небольшом количестве слабо наполненных форумов хорошо выделять и структурировать топики по интересности и тематике. Автоматом появятся и Q&A и темы для статей (не только по философии).


MT>Денис, ты хочешь сказать, если наберется к примеру 30 вопрос-ответов, то это автоматом появится ?


Нет, я хочу сказать, что тогда проще будет выделять темы. Плюс люди, которые придут к нам потом, получат и "краткое содержание предыдущих серий", что может в какой-то степени избавить их от перелопачивания форумов целиком.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[12]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 15.06.02 11:39
Оценка:
Вот ход мысли:

ХД>Во-вторых, я говорил как раз об ознакомлениями с принципами работы компьютеров. Если есть компьютеры, которые разительно отличаются от того, что мы имеем сегодня в виде PC и для них ещё и реализован компилятор С, то пожалуйста расскажите немного об этом. Или ссылкой поделитесь :)

Я не знаю таких, честно говоря :shuffle:

E>Уверен, что вопрос уже прояснился , и все же: вот далеко не полный перечень платформ, для которых только MS(!) разрабатывает версии своих ОС (взят из MSDN, см. например статью "From One Code Base to Many Platforms Using Visual C++”):

E>DEC Alpha,MIPS R4400, PowerPC,NEC VR4111 MIPS,Hitachi SH3,PR 3912,ARM SA1100.

DG>>>Но архитектура-то все равно фон Неймановская, и ничем не отличается, ни от x86, ни от того же z80.


E>>Ну, если оценивать по такому принципу — тут априори все уже полиглоты. И изучать уже нечего... :)


ХД>Да в том-то всё и дело, что человек задавший вопрос не полиглот! А только намеревается им стать :) И он ищет способ получить нужные знания. А область этих знаний выясняет у нас с вами (у всех посетителей форума, если хотите), потому как считает нас несколько более опытными в этом вопросе.



Sorry за длинную цитату.
Денис, я про что писал!? Ну ты хоть чуть-чуть поинтересуйся, прежде чем писать, чем отличаются к примеру x86, Motorolla, RISC или какой-нибудь PIC-микропроцессор, на которых есть компиляторы С (раз сам спрашивал)! Книжки почитай — на полках полно! Там очень разные архитектуры, организация, система команд и, соответственно, ассемблеры!.

Или хоть в интернете потыкай. Вот первое, что попалось:

http://fs01.yars.free.net/library/misc/cpu.html#88000
http://vmoc.museophile.com/cards/

Я уже тремя руками за ликбез :(
Don't trouble trouble until trouble troubles you
Re[4]: Занятный диалог :)
От: Eugene  
Дата: 15.06.02 12:52
Оценка:
Vi2>>>Хорошая тема для "Философии программирования", не правда ли?
MT>> Хитрик Денис модератор...

ХД>Да, я либо Хитрик Денис как человек-посетитель, либо модератор, как "служащий" на этом сайте. Необязательно перечислять все титулы, можно даже просто по имени: Денис.
Don't trouble trouble until trouble troubles you
Re[7]: Есть ли смысл изучать Ассемблер ?
От: Dr_Sh0ck Беларусь  
Дата: 17.06.02 12:57
Оценка: 30 (2)
Здравствуйте Mishka<T>, Вы писали:

MT>Не думаю, что Шумахеру позволяют руками лезть в мотор, там без него есть профи по настройке болидов.


Так сейчас болид целиком напихан всякими компьютерами. Куда не ткни — везде процесоры. а Шумахер-то ассемблера не знает . Так вот ему инженеры и не дают туда лазить
Do not fake yourself ;)
ICQ#: 198114726
Re[2]: Есть ли смысл изучать Ассемблер ?
От: kig Россия  
Дата: 18.07.02 11:06
Оценка:
Здравствуйте Bell, Вы писали:

B>Здравствуйте Mr-Twister, Вы писали:


B>...А то встречались мне товарищи, которые считали, что такие вот записи эквивалентны:

B>
B>int nVar;
B>//Использование...
B>

B>и
B>
B>int* pVar = new int;
B>//Использование...
B>delete pVar;
B>

B>А ведь если бы знали о том, как выделяется память в том и в другом случае, не думали бы так...
B>Это конкчно случай клинический, но для примера пойдет

Ну это пример к ассемблеру имеет мало отношения. Скорее ни какого. Имеет к данной реализации данного компилятора С.

И... вообще... Интересно посмотреть, а как это будет выглядить на бесстековой машине
Re[4]: Есть ли смысл изучать Ассемблер ?
От: epflorov Россия www.epflorov.hotbox.ru
Дата: 18.07.02 12:14
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

ВГ>Обязан ли водитель автомобиля знать устройство двигателя, представлять процессы, проходящие в нем?

ВГ>Нет, не обязан — вот руль, педали, коробка передач (может даже автомат) — вперёд...
ВГ>Только назвать такого водителя словом "профессионал" язык ни у кого не повернется !

Интересная аналогия.
Ударим аналогией по аналогии. А что гонщик Формула-1 обязан знать в подробностях об том как правильно сбалансировать подвеску или это могут сделать техники? (не пинайте, в гонках не учавствовал).

ВГ>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть

ВГ>А если это чужая DLL, или Билл постарался, что тогда?
А собственно, что тогда — письмо Биллу?
Евгений Флоров
Re[5]: Есть ли смысл изучать Ассемблер ?
От: Аноним  
Дата: 18.07.02 20:11
Оценка:
Изучать или не изучать ассемблер это личное дело каждого.

Для того, чтобы программировать на С это необязательно. Вполне можно понять даже назначение служебного слова register, даже не зная ассемблер (переменная, к которой доступ осуществляется быстрее, чем ко прочим, таких переменных может быть в сумме не больше чем XXX байт, к ним неприминима операция взятия адреса). Каждый должен сам установить себе рамки, в которых он будет работать, ибо может осуществиться принцип матрешки --- углубляясь вглубь можно добраться до электроники, атомов, ...). Еще пример --- для понимания ассемблера вовсе не обязательно наблюдать за осцилограммами.

С другой стороны С и ассемблер --- смежные области, поэтому возникает вопрос: "А почему бы и нет?" Зачем себя ограничивать? Это может понадобиться раз и это интересно (для некоторых) --- четыре.

Так что решай сам, как тратить свое время: изучать ассемблер, читать Есенина, разводить фиалки. На свете много интересных вещей, и невозможно объять необъятное. Лишь бы (для меня это важно) не остановился в своем развитии на месте.

Лично я остановился в копании вглубь на знаниях ассемблера x86, но уже в электронике я почти нуль. И об этом не жалею (в смысле, что изучил ассемблер).
Re[6]: Есть ли смысл изучать Ассемблер ?
От: Mr-Twister http://cosmozo.narod.ru/
Дата: 19.07.02 05:28
Оценка:
Здравствуйте Аноним, Вы писали:

А>Так что решай сам, как тратить свое время: изучать ассемблер, читать Есенина, разводить фиалки. На свете много интересных вещей, и невозможно объять необъятное. Лишь бы (для меня это важно) не остановился в своем развитии на месте.


Не, пока на стихи не тянет.

А>Лично я остановился в копании вглубь на знаниях ассемблера x86, но уже в электронике я почти нуль. И об этом не жалею (в смысле, что изучил ассемблер).


Я уже давно решил, изучать ассемблер. Сегодня купил еще одну книгу для изучения.
Так, что , ассемблер я уже изучаю.
дас ист нихьт фантастиш, дас ист руссиш Ванюшка
Re[7]: Есть ли смысл изучать Ассемблер ?
От: Edmond  
Дата: 19.07.02 06:44
Оценка:
Прошу прощения, но решил так же кинуть несколько слов со своей колокольни.
А где это моя колокольня? А моя колокольня это абстракции и аналитика.

Вот экая тема навила на меня воспоминаний.

Помню дело было странно. Программирование я не навидел. За кодами Билдеров и C++ Я не мог видеть его суть, и это меня раздражалало, а в том в чём я не могу разобраться я просто игнорирую.
Но вот гады из защиты информации решили зло иподшутить и покинули книжечку: Ассемблер VAX!!!
Вот гады!!!
Я этот бесцеллер как сказку 1000 и 1 ночь прочитал Взахлёб, всего лишь потому, что фантазия так разыгралась, что ни привели ...
Ну это я потом понял что такое VAX

И пошло...

Эдач, прочитал я много мнений. Попробую проанализировать и подитожить.

1. Асм -- это копьютер, но не значит программирование.

Это значит, знать его надо в зависимости от того какого родом программировагнием ты занимаешься.

2. АСМ и СЕГОДНЯ -- будущее за высшими абстракциями, казалось ASM уже в отлёте?

Не будем делать поспешныз выводов не прочитав следующий пункт.

3. АСМ -- это набор операций из которых строиться программа.
Значит на нём можно программировать.

4. Число комбинаций решений на АСМ на несколько порядков превышает ко-во решений на ЯВУ.

Это значит, что алгоритмы которые можно построить на АСМ во много раз богаче, чем на ЯВУ
Это значит алгоритмы на АСМ не привязаны ни к каким рамкам процедурного программирования, куда входят и ООП -> Идея компонентов-> .NET

5. ЯВУ облегчает труд программиста включая абстрагирование.

Тем самым по закону сохранения теряеться часть информации в алгоритме.

Вывод:

Ассемблер -- это путь к богатому алгоритмическому мышлению!!!

А что есть программист как не транслятор задачи в набор алгоритмов.

(Ну это я замолол )
С уважением, Edmond
Re[8]: Есть ли смысл изучать Ассемблер ?
От: Skvortsov Evgeniy  
Дата: 25.07.02 13:32
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

ВГ>Ты знаешь, что к .NET идет дизассемблер ?

ВГ>И нэтовский асм подозрительно похож на x86...

Вот после этих строк у меня появилось подозрение что Вы не очень хорошо представляете что такое асм. Он не может быть нэтовским, сишным, дельфийским или ещё там каким нибудь. Это мнемоническое представление машинного кода. Макросы и иже с ними под это определение понятное дело не попадают. И он (асм) относится исключительно к процессору, а совсем не к языку.
А знать асм конечно это плюс, выше уже перечислялись конкретные достоинства и я полностью с ними согласен.
Я сам знаю и I386 асм и несколько других, в том числе и Z80, принципиально они совершенно не различаются, только нюансы.
Re[9]: Есть ли смысл изучать Ассемблер ?
От: Владимир Гренадеров Россия  
Дата: 26.07.02 13:06
Оценка:
Здравствуйте Skvortsov Evgeniy, Вы писали:

ВГ>>Ты знаешь, что к .NET идет дизассемблер ?

ВГ>>И нэтовский асм подозрительно похож на x86...

SE>Вот после этих строк у меня появилось подозрение что Вы не очень хорошо представляете что такое асм. Он не может быть нэтовским, сишным, дельфийским или ещё там каким нибудь. Это мнемоническое представление машинного кода. Макросы и иже с ними под это определение понятное дело не попадают. И он (асм) относится исключительно к процессору, а совсем не к языку.


Гм... Я имел в виду только мнемонику. И если я правильно понимаю, то MSIL исполняется таки на виртуальном процессоре (аки Java). Просто увидев у них в ildasm'e RET, я порадовался — как бы не изворачивались мелкомягкие, но от дизассемблера им никуда не деться

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


и я согласен

SE>Я сам знаю и I386 асм и несколько других, в том числе и Z80, принципиально они совершенно не различаются, только нюансы.


Разбирался я в асме для PocketPC (Casio какая-то) — там тоже названия команд немного другие, а смысл — тот же.
OK
Re[10]: Есть ли смысл изучать Ассемблер ?
От: Mishka.NET Норвегия  
Дата: 26.07.02 13:20
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

ВГ>Гм... Я имел в виду только мнемонику. И если я правильно понимаю, то MSIL исполняется таки на виртуальном процессоре (аки Java). Просто увидев у них в ildasm'e RET, я порадовался — как бы не изворачивались мелкомягкие, но от дизассемблера им никуда не деться


MSIL никогда не исполняется. Он является лишь средством хранения кода. Во время выполнения программы куски MSIL компилируются в native code.
Кстати, а что такого в дизассемблере?

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

ВГ>и я согласен

Знать может быть и полезно, но мне так кажется, что уже позновато. IL он совсем другой и от машины не зависит, потому те, кто пытался абстрагироваться от железа, достигли своего.

SE>>Я сам знаю и I386 асм и несколько других, в том числе и Z80, принципиально они совершенно не различаются, только нюансы.

ВГ>Разбирался я в асме для PocketPC (Casio какая-то) — там тоже названия команд немного другие, а смысл — тот же.

Посмотри на IL, он один для всех компов
Re[2]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 20:46
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>Здравствуйте Mr-Twister, Вы писали:


MT>>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

ХД>Встречный вопрос: а можно ли научиться программировать на компьютере, не зная как он работает?

ХД>Ответ: Смотря как программировать

Ноль ставить не буду. Программировать, опираясь на задачу, прикладную область, а не на систему, где эта программа будет выполняться. Голубая мечта всех программистов с самого момента появления компьютеров...

ХД>С другой стороны, если посмотреть на программиста, который хочет разобраться в языке С с нуля ( ), то можно сказать следующее:

ХД>1) Та самая прослойка сведена к минимуму. Чем: самим выбранным языком. На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды. И не зря разработчики языка оставили такие вещи, как работа с памятью (всякие там указатели)

Угу... Хто-нить знает как оно в 386-м защищенном работает? А в 486-м да еще с кэшем? А дальше, в "пнях"? А оно кому-нить надо, окромя как разработчикам компиляторов?

ХД>2) что-то хотел написать -- забыл


Бывает...

ХД>В этом случае уже можно сказать о том, что классный специалист по С обязан разбираться в том, как работает его машина. А для этого он изучает специальный язык -- язык ассемблера -- который и помогает в достижении этой цели, потому что не содержит ничего лишнего. Компьютер ведь не знает о таких вещах как процедура, цикл (не пинайте, если не прав. моё знание ограничивается ассемблером процессора Z80 )... А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...


Процессор ныне шибко умный: он знает и что такое процедура, и что такое цикл и еще много чего, о чем мы даже не догадываемся. Про память я уж совсем молчу. Тут как-то была тема насчет скорости копирования памяти — вот это было что-то!

ХД>
ХД>О сколько нам открытий чудных
ХД>Готовит просвященья дух...
ХД>


ХД>Кстати, мысль вслух, "учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера. Т.е. это выражение не нужно понимать буквально


В общих чертах. А глубже — сейчас это чересчур сложно.

MT>>Мои мысли. Техника движется. Вроде как не стоит на месте. Значит и процессоры, тоже меняются, и возможно в скором необозримом будущем, схема работы процессора может поменять свою структуру . Тобишь будет не ассемблер , а что то другое , работающее по другим принципам и механизмам, отличающихся от процессоров Интел.

MT>>А языки Си и С++ просто переедут на другую систему и не поменяют свой синтаксис.
MT>>Верно ?

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


Уф! Снова вы в политику! Ну при чем тут история?!

ХД>Так и в мире программирования: всё новое -- это хорошо забытое старое.


В основном алгоритмы. Да и то далеко не все: новых тоже очень много.
Голь на выдумку хитра, однако...
Re[3]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 20:49
Оценка:
Здравствуйте George_Seryakov, Вы писали:

GS>Здравствуйте Хитрик Денис, Вы писали:


ХД>>2) что-то хотел написать -- забыл


GS>Что знать язык (С/С++, например) — это понимать, как он компилируется в ассемблер/машинный код? Видеть машинный код под исходным текстом.


GS>Мне, например, сравнительно часто приходится залезать в disassembly, чтобы посмотреть — соответствует исходник бинарику или нет.


А если не соответствует, что править: исходник или бинарник?
Голь на выдумку хитра, однако...
Re[4]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 20:54
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>Ваша правда. Определение спорное, но основа заложена верная. Чтобы управлять системой, необходимо некоторое знание о том, как она устроена. На этом основывается наша наука. Если мы знаем, какие процессы происходят в чайнике на печке, значит мы сможем вскипятить воду. Если мы знаем чего ожидать от компьютера, мы сможем так организовать своё управление (программу), что он будет делать именно то, что нам нужно (программа будет работать).


Угу... А если не знаем, какие там процессы, но пользоваться умеем — тогда не сможем? А если знаем "теоретически", но пользоваться не умеет — тогда как?

ХД>"Ничего лишнего": здесь -- отсутствие для компьютера таких понятий как процедур, объектов, циклов. А наличие лишь ячейки с адресом, линейного выполнения, ветвления и интструкции перехода. (Может я слишком узко представляю себе современный ассемблер, но в отношении Z80 всё именно так и обстоит).


Ну, уже в Z80 были CALL и RET...
Голь на выдумку хитра, однако...
Re[4]: Есть ли смысл изучать Ассемблер ?
От: George_Seryakov Россия  
Дата: 05.08.02 20:55
Оценка:
Здравствуйте The Lex, Вы писали:

GS>>Мне, например, сравнительно часто приходится залезать в disassembly, чтобы посмотреть — соответствует исходник бинарику или нет.


TL> А если не соответствует, что править: исходник или бинарник?


Ничего. Разводить руками и говорить — "ну да ты компилируешь одно, а отлаживаешь другое!"
GS
Re[4]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 21:00
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

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


ВГ><skip>


E>>Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное.


ВГ>Обязан ли водитель автомобиля знать устройство двигателя, представлять процессы, проходящие в нем?

ВГ>Нет, не обязан — вот руль, педали, коробка передач (может даже автомат) — вперёд...
ВГ>Только назвать такого водителя словом "профессионал" язык ни у кого не повернется !

У меня повернется. Мой отец — профессиональный водитель. Стаж — больше моего возраста. Он довольно хорошо разбирается в устройстве автомобиля. Устройство которого не менялось тоже побольше, чем я живу. Т.е. электронное зажигание он врядли сможет починить. Такого у него на автобусе и нет.

А вот у моего знакомого дальнобойщика Mersedes — могучая машина. О ее устройстве он имеет смутное представление. Мало того: ему туда лазить не только не надо, но даже и запрещено. Потому как на это есть сервис. Потому как ездит он по автобанам Европы. Потому как его работа — рулить. И он с этим прекрасно справляется! А мой знакомый автомеханик прекрасно справляется с двигателями. А другой — с коробками передач. И все счастливы и довольны. Странно, правда?

E>>Иногда это полезно при тонкой отладке, но позволю себе тоже "сильное" утверждение: если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны. Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN повнимательнее почитать. Хотя... всякое бывает, конечно


ВГ>Поиск ошибки в своем коде имеет смысл только в том случае, если она там есть

ВГ>А если это чужая DLL, или Билл постарался, что тогда?

Ну, "только программистам Microsoft плохо: им некого ругать..."
Голь на выдумку хитра, однако...
Re[6]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 21:10
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

[skip]

ВГ>Квантовая теория — это для разработчиков камней А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?


А на кой Шумахеру настраивать свой болид?! Ему ездить надо!!!

A>>Узкая специализация и есть как раз термин для выражения такого типа предпочтений, человек знает профессионально свою область, а в смежную и не пытается влезть. IMHO в скором будущем так и будет построена научная система, зачем человеку который изучает биологию знать квантовые процессы в атомах клеток . Специализированные знания других областей ему не нужны.

ВГ>А разве ассемблер для программиста — это другая область? И зачем, спрашивается инженеру изучать в универе историю или философию ???

Потому что это — составляющие высшего образования. Я когда-то тоже так думал: "зачем?"...

A>>Итоги(IMHO опять же):

A>>1.Сейчас изучать ассемблер нужно! Но лучше это делать абстрактно от железа, от самого языка ассемблера, а потом уже и к ассемблеру переходить. А ещё лучше если тебе кто-нить из профи сможет это всё рассказать и объяснить (есть люди которым просто от бога дано быть преподавателями!), потом проблем с изучением железа и его программирования будет меньше, если вдруг вздумаешь.

ВГ>Изучать асм абстракто от железа — это то же самое, что учить С++, абстрагируясь от компютера


Запросто!!! Вполне возможно что как раз C++ так и надо изучать...

ВГ>Ещё лучше бы совсем ничего не учить, пусть профи все объяснит и покажет...


A>>2. Но лучше всё таки вначале заниматься абстрактным программированием, даже без С/C++, алгоритмы, структуры и конечно математику и так далее ибо они основа всего программирования, а не синтаксис различных языков !!!

A>>Даже ещё раз повторюсь, Программирование это прежде всего способ перевода математических абстракций на язык структур данных и алгоритмов! А только потом на какой-то язык программирования (будь хоть он трижды ассемблером).
ВГ>С этим ни кто не спорит. Но! После изучения абстрактных моделей и алгоритмов (вспомним Кнута), необходимо будет
ВГ>сесть за КОНКРЕТНЫЙ компьютер, и писат программы под него. А если человек плохо представляет, что такое стек и как это в него параметры попадают, чем stdcall отличестся от cdecl — сможет ли он грамотно спроектировать ту же DLL ? А многпоточность? Как понять опасность одновременного досупа к глобальной переменной? Есть еще большая куча примеров на подобную тему.

А зачем ему все это? Если ему надо запрограммировать рассчет квантовой теории или биологической реакции — зачем ему соваться в COM и т.п.? И зачем ему проектировать распределенные вычисления? Может пусть этим программист занимается? Пусть и создает срдество для реализации "абстрактных моделей и алгоритмов" без привязки к конкретному компьютеру. Слабо?!
Голь на выдумку хитра, однако...
Re[8]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 21:13
Оценка:
Здравствуйте Sergey, Вы писали:

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


ВГ>>>Квантовая теория — это для разработчиков камней А если серьезно, то как тот же Шумахер может настроит свой болид, НЕ ЗНАЯ, как работают тормоза, подвеска, и т.д. ?

A>>Не должен он его настраивать, не должен. Это не его профессиональная область.

S>Ну так настраивает же. Вместе с механиками, естественно.


Хм!!! Правда?!
Голь на выдумку хитра, однако...
Re[10]: Понятнее этого, пока не нашел.
От: The Lex Украина  
Дата: 05.08.02 21:14
Оценка:
Здравствуйте Владимир Гренадеров, Вы писали:

ВГ>Здравствуйте Mr-Twister, Вы писали:


MT>>Не покажусь ли я эгоистом , но может на RSDN сделать ветку по ассемблеру ?

ВГ>Скорее надо сделать этакий FAQ — ведь профессионально писать на асме сейчас будут немногие
ВГ>А так начинающий С++ программист сможет наконец понять, что же такое этот таинственный стэк, и как его переполнить

Угу... А оно ему надо?
Голь на выдумку хитра, однако...
Re[10]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 21:22
Оценка:
Здравствуйте Хитрик Денис, Вы писали:

ХД>Здравствуйте Eugene, Вы писали:


ХД>В сторону: В плане сравнения с Шумахером, мне кажется больше подойдёт знание не термодинамики, а механики в плане обтекаемости машины, её устойчивости в поворотах etc., при этом с привлечением знаний, выработанных профессионалами в своих областях: в области конструирования ДВС, дизайна кузова (в плане той же обтекаемости и устойчивости). То есть они дают определённую исходную информацию и сам болид, обладающий этими известными характеристиками, а Шумахер как професионал, должен извлечь из этого аппарата и его данных наименьшее время на круге.


Шумахер — не компьютер, а просто гонщик. Может, конечно, он и вникает в суть физического процесса, почему именно на изношенной резине машина хуже держит трассу и чем дождевая резина от "сухой" отличается. Но я в этом искренне сомневаюсь! Мое мнение, раз уж вы зацепили эту тему, — представления Шумахера о болиде весьма поверхностны. Они ему и не нужны: он "мыслит" другими категориями. "Машина не держит трассу в повороте", "руль излишне пуст или излишне нагружен" и т.д. и т.п. А вот почему это происходит и как это поправить — это уже задача инженеров. Понять Шумахера и сделать так как надо. Неправда ли, очень похоже на программистов и постановщиков задач?

P.S. Вы уж извините: зацепило насчет Формулы-1...
Голь на выдумку хитра, однако...
Re[8]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 05.08.02 21:26
Оценка:
Здравствуйте Dr_Sh0ck, Вы писали:

DS>Здравствуйте Mishka<T>, Вы писали:


MT>>Не думаю, что Шумахеру позволяют руками лезть в мотор, там без него есть профи по настройке болидов.


DS>Так сейчас болид целиком напихан всякими компьютерами. Куда не ткни — везде процесоры. а Шумахер-то ассемблера не знает . Так вот ему инженеры и не дают туда лазить


Жаль баллов 100 не могу поставить за "а Шумахер-то ассемблера не знает"!!!
Голь на выдумку хитра, однако...
Re[7]: Есть ли смысл изучать Ассемблер ?
От: Dr_Sh0ck Беларусь  
Дата: 05.08.02 21:35
Оценка:
Здравствуйте The Lex, Вы писали:

[skipped]

TL>А зачем ему все это? Если ему надо запрограммировать рассчет квантовой теории или биологической реакции — зачем ему соваться в COM и т.п.? И зачем ему проектировать распределенные вычисления? Может пусть этим программист занимается? Пусть и создает срдество для реализации "абстрактных моделей и алгоритмов" без привязки к конкретному компьютеру. Слабо?!


Почти готов согласиться. "Почти" — потому, что правильного ответа на этот вопрос не существует. Истина может рождаться в споре. Т.е. мы здесь сейчас пытаемся ее родить

P.S. Но все-таки согласись, что знание ассемблера вряд ли помешает
Do not fake yourself ;)
ICQ#: 198114726
Re[8]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 06.08.02 06:21
Оценка:
Здравствуйте Dr_Sh0ck, Вы писали:

DS>Здравствуйте The Lex, Вы писали:


DS>[skipped]


TL>>А зачем ему все это? Если ему надо запрограммировать рассчет квантовой теории или биологической реакции — зачем ему соваться в COM и т.п.? И зачем ему проектировать распределенные вычисления? Может пусть этим программист занимается? Пусть и создает срдество для реализации "абстрактных моделей и алгоритмов" без привязки к конкретному компьютеру. Слабо?!


DS>Почти готов согласиться. "Почти" — потому, что правильного ответа на этот вопрос не существует. Истина может рождаться в споре. Т.е. мы здесь сейчас пытаемся ее родить


DS>P.S. Но все-таки согласись, что знание ассемблера вряд ли помешает

DS>

Не согласюсь! И не только потому, что "Баба Яга против". А еще потому что ассемблер очень часто может выступать "лишними знаниями", сбивать человека на другой способ мышления. И по-моему этот способ мышления очень часто далек от рационального.

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

По-моему ассемблер и все что с ним связано на данном этапе развития ПО и средств его разработки очень далеко отстоят от реальных задач и понятий, которыми оперируют эти задачи. И ближе он не станет. У ассемблера осталась ниша — низкоуровневая разработка разного рода "железа". Да и то только для того, чтобы реализовывать некоторые конкретные, четко определенные, "чисто железные" функции. Так как логику программы все равно удобнее писать на C или C++.

Разумеется это все всего лишь мое злобное нескромное мнение.
Голь на выдумку хитра, однако...
Re: Есть ли смысл изучать Ассемблер ?
От: User99  
Дата: 06.08.02 07:13
Оценка:
Здравствуйте Mr-Twister, Вы писали:

MT>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

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

К томуже, но это только мое личное мнение, в рамках познавательной деятельности, можно разделить на две категории:
1. Люди не могут идти далее до тех пор, пока до мелочей не изучат тот материал, на котором базируется последующий.
2. Люди, которым достаточно знать то, что необходимо для выполнения задачи.
Вот и получается написал ты с=a+b; и сидишь недоумеваешь каким образом компьютер выполняет эти операции, а если b отрицательное число? И не можешь двинуться дальше — тогда ознакамливайся с аасемблером.

В общем учить ассемблер не нужно, но в той или иной степени его знает каждый программист. Вот и решай сам как тебе быть бегло ознакомится с ним в полном объеме( это не один и не два дня) или по мере необходимости. Но ознакомиться все равно прийдется.
Re[2]: Есть ли смысл изучать Ассемблер ?
От: The Lex Украина  
Дата: 06.08.02 15:21
Оценка:
Здравствуйте User99, Вы писали:

U>Здравствуйте Mr-Twister, Вы писали:


MT>>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?

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


Ну стек... А при чем тут ассемблер?

U>Вот и получается написал ты с=a+b; и сидишь недоумеваешь каким образом компьютер выполняет эти операции, а если b отрицательное число? И не можешь двинуться дальше — тогда ознакамливайся с аасемблером.


Тогда "бросай ружье и всплывай" — никакой ассемблер уже не поможет...

U>В общем учить ассемблер не нужно, но в той или иной степени его знает каждый программист. Вот и решай сам как тебе быть бегло ознакомится с ним в полном объеме( это не один и не два дня) или по мере необходимости. Но ознакомиться все равно прийдется.


Не умеешь — научим! Не хочешь — заставим!
Голь на выдумку хитра, однако...
Re: Есть ли смысл изучать Ассемблер ?
От: Irenkov_Alexander  
Дата: 09.08.02 11:15
Оценка:
Здравствуйте Mr-Twister, Вы писали:

MT>А языки Си и С++ просто переедут на другую систему и не поменяют свой синтаксис.


На мой взгляд, человеку, "всласть" попрограммировавшему на ассемблере, гораздо проще понять всю красоту, лаконичность и удобство сначала структурных (которыми, собственно, и являются современные ассемблеры), а потом и объектно-ориентированных языков и сред. Вопросов типа "а зачем различаются строчные и заглавные буквы", "почему разделяются struct и class" становится существенно меньше.

Так что я считаю, что "путь гуру" обязательно проходит (обычно в начале) через "джунгли Ассемблера".
Re[7]: Да, все таки машину внутри знать надо.
От: Irenkov_Alexander  
Дата: 09.08.02 11:43
Оценка:
Здравствуйте Mishka<T>, Вы писали:

MT>Здравствуйте Mr-Twister,


MT>Я б советовал ерундой не заниматься, а тихо мирно переходить на IL из .NET. Мы всё равно все там будем, а это и есть тот самый ассемблер, но новый.

Новое — не значит лучшее (фу, как банально ;) ), а насчёт "того самого" — скорее не согласен.

MT>Ассемблер — простой язык, а вот то, как работает компьютер, к ассемблеру мало относится, поэтому тот же ассемблер на разных платформах сильно отличается. Если Microsoft всё таки правы со своей идеей .NET-a, то IL — это хороший выбор, поскольку он будет переносим на разные платформы и плюс к тому же он стандартизован.


Насколько я разобрался в IL, практически все данные там идут через стек. На мой взгляд, это довольно неэффективная организация. IMHO, IL потребуется только разработчикам компиляторов под .net и тем, кто хочет полной минимизации кода и нереализованных в языке конструкций, а всё остальное подомнёт под себя C# и компания.
А уж если нужно чего-то действительно быстродейственное написать (собственно, для чего ещё ассемблером пользоваться?) то IL в любом случае проиграет в быстроте native ассемблеру, использующему многообразие регистров и распределение по конвейерам. Для примера попробуйте реализовать достаточно неочевидный алгоритм на IL, а потом дизассемблируйте сгенерированный ngen код.
Re[9]: Есть ли смысл изучать Ассемблер ?
От: masquer Украина  
Дата: 21.08.02 14:27
Оценка:
Здравствуйте The Lex, Вы писали:

TL>По-моему ассемблер и все что с ним связано на данном этапе развития ПО и средств его разработки очень далеко отстоят от реальных задач и понятий, которыми оперируют эти задачи. И ближе он не станет. У ассемблера осталась ниша — низкоуровневая разработка разного рода "железа". Да и то только для того, чтобы реализовывать некоторые конкретные, четко определенные, "чисто железные" функции. Так как логику программы все равно удобнее писать на C или C++.


Чего все на железе зациклились — я вот, например, для фотошопа фильтры на досуге пишу, и ММХ утилизирую достаточно сильно, причем я сомневаюсь, что какой-либо компилятор, каким бы он интеллектуальным ни был, сделает это лучше чем я вручную, а те, кто 3д-движки разрабатывает, а те кто защиты разрабатывает с примененим полиморфизма, самомодификации, да и много можно придумать...
Естественно, это требует достаточно высокой квалификации, но все таки...
TL>Разумеется это все всего лишь мое злобное нескромное мнение.
Хе-хе, а это мое не менее скромное
Re: Есть ли смысл изучать Ассемблер ?
От: Lonely Dog Россия  
Дата: 26.08.02 11:42
Оценка:
В моей практике мне как-то встретилась задача оптимизации отрисовки лабиринта в одной DOOM-образной игре. После применения ASM и технологии MMX у меня FPS подскочил с 40 до 140. При этом я переписал всего два цикла и потратил на это всего около 3.5 часов. Так что мне кажется, что ASM знать надо. А заодно и методы оптимизации под современные процессоры. (В том числе и MMX)
Re: Есть ли смысл изучать Ассемблер ?
От: Andrew S Россия http://alchemy-lab.com
Дата: 17.11.02 21:23
Оценка: 6 (1)
Немного своих наблюдений по этому поводу.

Мне самому достаточно много приходится общаться с программерами, и независимо от того, на каком языке они сейчас пишут, замечаешь, что люди, знающие ассемблер и в свое время писавшие даже минимальные ассемблерные программы гораздо лучше понимают "как же все это на самом деле работает" и от них получаешь меньше "странных" вопросов. Наоборот же, народ, пришедший на С++ со скриптовых языков типа VB или перл, достаточно тяжело вникает, особенно в такие понятия как указатели. А если надо сделать что то сложнее обычного класса, тогда вообще начинается "ОЙ". Это примерно как дамы, которые ездят на автомобиле, но не могут в нем найти свечи зажигания, при условии, что в некоторых моделях их может и не быть Хотя у них (не у дам, см пред. предложение ) зачастую с логикой дела получше обстоят, нежели у человека, совсем не знакомого с регулярными выражениями.

И при приеме на работу я лично интересуюсь знанием ассемблера (не именно i8086, а просто знанием любого, хоть i8080 или Z80), это гарантирует минимальный уровень грамотности. Независимо от того, что делает человек именно сейчас, и на чем он пишет обычно.

Мне же лично нравится знать ассемблер просто потому, что я понимаю, как это работает там глубоко внутри на самом деле, а также помогает отлавливать баги на основе тех же значений в стеке... Заметьте, знать, а не писать на нем.

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

Всем спасибо за внимание и успехов в программинге (и изучении ассемблера).
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: Есть ли смысл изучать Ассемблер ?
От: Dmitry A. Sustretov Россия  
Дата: 18.11.02 16:40
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>В моей практике мне как-то встретилась задача оптимизации отрисовки лабиринта в одной DOOM-образной игре. После применения ASM и технологии MMX у меня FPS подскочил с 40 до 140. При этом я переписал всего два цикла и потратил на это всего около 3.5 часов. Так что мне кажется, что ASM знать надо. А заодно и методы оптимизации под современные процессоры. (В том числе и MMX)


учитывая то, как бурно развивается сегодня индустрия графических акселераторов....

Графика (а тем более риалтайм) — это совсем другая сфера, чем прикладное и даже некоторое системное программирование. При программировании риалтайм графики раньше использовали

— ручное выравнивание полей структур
— насильственное приведение типов (указатили кастятся к int-у за милую душу)
— грубые вычисления с фиксированной точкой (иногда использовалась фиксированная точка 8.8 или даже 12.4 ! Зато в два байта влезает, в одном регистре — два числа )
— void* указатели
— код на C и только на C, поскольку нельзя доверять C++овскому управлению памятью, из-за него может всё в неподходящий момент заттормоззитььсяяя ^_^.
— никакой нафик инкапсуляции и полиморфизьма ! Процедурный подход спасёт мир !
— ну, и на фоне этого свинства полировка критичных участков кода на асме (чтоб на один прохд цикла текстурирования уходило тактов по пять по шесть ^_^) выгляд вполне естественной забавой.

В Watcom C (был такой самый лучший компилятор под DOS) была такая штучка — #pragma, можно было мешать макросы, написанные на асме с C-шным кодом, так во втором Doom-е местами такая лапша была... Когда в модуле #pragma больше чем C-шного кода...

Так вот. А сейчас игрушки (и демки) пишут на C++ ^_^
Re[2]: Есть ли смысл изучать Ассемблер ?
От: Dmitry A. Sustretov Россия  
Дата: 18.11.02 16:42
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>В моей практике мне как-то встретилась задача оптимизации отрисовки лабиринта в одной DOOM-образной игре. После применения ASM и технологии MMX у меня FPS подскочил с 40 до 140. При этом я переписал всего два цикла и потратил на это всего около 3.5 часов. Так что мне кажется, что ASM знать надо. А заодно и методы оптимизации под современные процессоры. (В том числе и MMX)


Да, ещё забыл сказать.

Intel — ДЕРЬМО !!!!!

Только для того, чтобы понять это, надо изучать ассемблер ^__________^
Re: ASM: Есть ли смысл изучать Ассемблер ?
От: Anatoliy Elsukov Украина  
Дата: 03.02.03 16:20
Оценка:
Здравствуйте, Mr-Twister, Вы писали:

MT>Изучая Си, кто то написал мне в одном из ответов: Учи ассемблер поможет.

MT>Интересно поинтерисоваться, стоит ли учить этот язык (с виду не простой), или достаточно ограничиться Си и в будущем Си++ ?
Чем больше знаешь тем проще... всё таки ассемблер основа.

MT>Мои мысли. Техника движется. Вроде как не стоит на месте. Значит и процессоры, тоже меняются, и возможно в скором необозримом будущем, схема работы процессора может поменять свою структуру . Тобишь будет не ассемблер , а что то другое , работающее по другим принципам и механизмам, отличающихся от процессоров Интел.

MT>А языки Си и С++ просто переедут на другую систему и не поменяют свой синтаксис.
Боюсь, что когда процессоры настолько изменяться что там исчезнет ассемблер (не измениться набор команд, а именно исчезнет) то и С++ там уже жить не будет...
... << RSDN@Home 1.0 beta 5 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.