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
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.