Должен ли программист знать ассемблер?

В интернетах довольно много различных мнений по данному вопросу, одни говорят, что полезно для развития, другие что это поможет писать более качественый код, некоторые вообще считают знания ассемблерв вредным. Хочется узнать ваше мнение, желательно сдобренное личным опытом :)
  • Вопрос задан
  • 2779 просмотров
Пригласить эксперта
Ответы на вопрос 11
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Чем больше знаешь - тем лучше, разве не очевидно?
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
1) Сам ассемблер знать не нужно
2) нужно знать что ассемблер вообще есть и полезно хотя бы минимально представлять как оно там внутри все работает и что есть семантический разрыв. Ну то есть не сам ассемблер даже важен, а принципы как оно что там выполняется, что есть конвееризация и т.д. Кэш процессора, зачем он нужен и т.д.
3) это не must have, это скорее факультативные штуки
4) это нужно для тех кто занимается разработкой систем, для которых критична производительность (так или иначе при оптимизации приходится ковыряться в опкодах/байткоде/разбираться что там делают оптимизирующие компиляторы).
5) это нужно для тех кто разрабатывает средства для дебага и профилирования.

Первые пару лет этого всего можно и не знать. А далее уже задачи сами определят, потом хотя бы поверхносные знания приобрести стоит просто для того что бы быть более грамотным разработчиком.
Ответ написан
Комментировать
@protven
Конечно, особенно фронт-енд разработчики!
Ответ написан
Adamos
@Adamos
Программисту желательно понимать, что происходит "под капотом" того, что он пишет.
Но это не обязательно изучать "снизу", от машинных кодов.
Веб-программисту полезнее будет знать, например, каким образом PHP реализует свои объекты и массивы, или что творится в памяти, когда используешь замыкание в JS...

Если глубина знаний достигнет регистров процессора - это, конечно, замечательно. Но начитываться неактуальной информации про работу предсказателя ветвлений, не представляя досконально, как работают ежедневно используемые функции того языка, на котором пишешь - просто нелепо.
Ответ написан
Комментировать
m77x
@m77x
Консультант
Наверное отвечу в стиле "были наши времена"…
Ностальгируя по понятиям "ма. меня нет, дома два программиста, ты не волнуйся, - кота покормят" - канули в лета. Возросла молодая поросль стремится "рубить бабло", реже, но "рубить бабло по крупному". Именно для них(вас) мы писали всякие фичи, лазили с паяльником и делали будущее.
Стоит ли вам изучать асемблер? Если из под палки, лучше закиньте эту мысль там. откуда вы бы сами не смогли её вытянуть.
Если в вас остался (ну мало ли, информационное поле земли подсказало) и вы хотите с железом говорить "ты чо чувак, я должен тебе кишку новую пришить? - пошел на…" и будете выполнять невыполнимые с точки зрения сейвойнишных лаботрясов задачи на порядок опережая скорузлых очочников, - тогда смело в путь!
Но на вашем пути встретятся такие странности и тупости (если будете кодить оптимально), что я вам завидую как первооткрывателю )))
Ответ написан
@doctorcat
вот допустим у тебя есть простая задача, например вывести на экран Hello world. На асме это займет время, очень сложно будет новичку с нуля понять вообще принцип программирования нужен какой-то базис из более простого чего-то для понимания основ ассемблера, качественный код он никак тебе не поможет писать, хотя допустим если ты пишешь на близком языке по синтаксису к ассемблеру то может быть. Что поможет: понять как работает стек, что такое память, что такое переполнение буфера, более качественно разобраться в системах счисления в частности в шестнадцатиричной. Может для саморазвития и полезно, но сейчас врятли это кому-то полезно. Только любителям хардкора разве что, или чувакам которые пишут драйвера устройств или другие крайне специфические низкоуровневые фичи.
Ответ написан
Комментировать
Aquarius-Michael
@Aquarius-Michael
Программист и железячник
Ну ассемблер даёт хорошее представление, как работают языки программирования среднего и высокого уровней. Да и программирование напрямую железо даёт программисту неплохой результат по производительности и компактности кода в памяти. Но это может сделать хороший программист.
Ответ написан
Комментировать
@SunRaDev
anonim
Не более чем для ознакомления и общего развития, так как если ты не собираешься программировать микропроцессоры и писать софт для железа, то вряд ли пригодиться. То есть какую-то выгоду от понимания работы низкоуровневых языков ты вряд ли получишь, если твои задачи не упираются в понимании работы железа и тп.
Ответ написан
bingo347
@bingo347
Crazy on performance...
Хотя бы на уровне чтения кода и понимания что тут написано полезно знать другие языки, кроме основного, особенно низкоуровневые, как минимум для общего развития, как максимум - для понимания того, как сделаны вещи на них написанные.
На практике же, востребованность будет очень низкой ибо бизнес требует, чтоб задачи решались быстро.
По личному опыту: могу писать на C, asm.js, llvm-asm, понимаю что написано на C++, java, c#, но пишу большую часть времени на javascript и иногда на go так как на них гораздо быстрее решаются однотипные задачи
Ответ написан
Комментировать
@abcd0x00
Если тебе нужно что-то переделать в какой-то программе, то ты никак это не переделаешь, не зная ассемблера. Например, сидишь ты в винде, тут раз она начала куда-то подключаться и что-то качать. Ты ищешь, а где это отключается, и обнаруживаешь, что нигде, что так задумано. Вот тогда ты лезешь в то место, где она включает эту закачку, и переключаешь там байты на то место, где она думает, что уже всё закачала.
Ответ написан
Комментировать
@pudovMaxim
web-developer
Если изучать просто так, то бесполезен, смысла от этого мало. Если в институте под правильный соус из курса теории по программированию, то полезно.
Также полезно, если в будущем будешь искать работу по этому направлению.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы