@cthulhudx

Стоит ли учить ассемблер для глубокого понимания архитектуры компьютера?

Стоит ли учить ассемблер для глубокого понимания архитектуры железа? Есть ли какие-либо другие способы понять как все происходит "под капотом"?
  • Вопрос задан
  • 3533 просмотра
Решения вопроса 2
alex-saratov
@alex-saratov
Вспомним фразу из книги "Шерлок Холмс" - " человеческий мозг — это пустой чердак, куда можно набить всё, что угодно. Дурак так и делает: тащит туда нужное и ненужное. И наконец наступает момент, когда самую необходимую вещь туда уже не запихнёшь. Или она запрятана так далеко, что её не достанешь."
На цитаты не обижаемся.

Изучать глубоко стоит, если Вы в дальнейшем собираетесь найти этому практическое применение. Поверхностное знание может пригодиться. А глубокое изучение без последующего применения - это трата времени. Самое дорогое в нашей жизни - это время, ибо его не купишь не за знания ни за деньги.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Учить ассемблер глубоко необязательно.
Будет достаточно, если вы на ассемблере сможете написать Hello World, и что-нить не намного сложнее, но главное что поймете принцип работы машинного кода.

То есть вам нужно почитать на досуге, и понять что такое инструкция, что такое регистр, что такое битность (размер инструкций), что такое такт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
Olej
@Olej
инженер, программист, преподаватель
Нет, не стоит - напрасная и большая трата времени.
Ответ написан
@vilgeforce
Раздолбай и программист
Стоит. Под капотом в любом случае выполняются инструкции процессора, и чтобы смотреть что же там реальном происходит вам придется их понимать.
Ответ написан
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
Стоит просто порешать банальные задачки: отрисовка графики, например, на ассемблере (пишем в память vga адаптера).
- линию,
- косую линию,
- размытие (aka clearType),
- фигуры,
- заливка фигур.

Если каждый день по часу уделять, то 2-3 недели на такие простенькие лабораторные вполне хватит, заодно какие-то алгоритмы на стеке можно глянуть, попробовать оптимизировать.
Ответ написан
Комментировать
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Удивляюсь, что не задали вопроса: А стоит ли вообще программировать?
Про ассемблер: Конечно стоит!
У Джоэла Спольски есть статья про то как протекаются абстракции. Все дело в том, что пока якобы на высоком уровне программирования все идет хорошо и Вы думаете, что все ОК и не паритесь. Но как только сталкиваетесь с нетривиальной проблемой, то тут же начинаете плясать с бубном. "привязка к железу" развивает мышление в более строгим. Ведь ни один из программистов не задается вопросом "А стоит ли учить математику?". Вернее задаются, но это маргиналы. Так и с ассемблером. Он развивает программиста таким образом, что после его понимания это уже будет более качественный программист по отношению к прежнему уровню.
Ответ написан
hahenty
@hahenty
('•')
Процесс изучения должен идти с другой стороны.
Стоит сначала почитать по устройству электронной техники: транзисторы, логические элементы, цифровые устройства, жесткая и программная логика вычислительных устройств. А потом ассемблер покажется достаточно простой сущностью. Ведь каждый ассемблер просто набор инструкций для процессора — буквенное обозначение машинных кодов, а суть у различных микропроцессоров одна.
Ответ написан
Комментировать
@mamkaololosha
Почитайте Computer Architecture, Fifth Edition: A Quantitative Approach . В целом лишним не будет.
Ответ написан
Комментировать
Mrrl
@Mrrl
Заводчик кардиганов
Стоит изучить хоть какой-нибудь ассемблер, чтобы вообще представлять, что там может быть. Потом, для конкретного процессора и конкретной архитектуры - прочитать список инструкций, понять, что там реализуется легко, а что сложно; прочитать про структуру памяти. Тогда будет понятно, какими конструкциями в языках высокого уровня (например, в С) пользоваться стоит, а каких следует избегать. Изучать ассемблер (в смысле зубрить инструкции), наверное, не обязательно.
Ответ написан
Комментировать
customtema
@customtema
arint.ru
Для понимания архитектуры? Нет.

Если вы хотите программировать на ассемблере, ради каких-то целей (тут может быть множество достаточно интересных вариантов) - да.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы