LINUX.ORG.RU

Нужность ассемблера

 , ,


0

1

Никак не могу понять или найти единого мнения на вопрос «Кому нужно знать ассемблер и нужно ли его знать вообще?»

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

Мнение другого знакомого, который пишет на сях под линуксы, - ассемблер полезно знать для отладки программы.

Мнение кучи народа из интернета - ассемблер не нужен вообще никак.

Нужно ли его знать программисту микроконтроллеров? Нужно ли его знать системному программисту? На каком уровне его нужно знать (иметь представление, уметь хорошо писать)?

реверсинженеринг

Да и знание его помогает писать на С более оптимальный код, иначе для тебя то, что делает компилятор, будет черной коробкой

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 2)

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

Мнение кучи народа из интернета

«Программирование не нужно»

buddhist ★★★★★ ()

Для обоих — обязательно, для других — нет, так как обычно их разработки не привязаны к конкретной аппаратной платформе.

olibjerd ★★★★★ ()

Мнение кучи народа из интернета

Куча это никто.

cinyflo ★★★★★ ()

микроконтроллеров - ассемблер знать очень и очень полезно.

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

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

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

ассемблер не нужен вообще никак.

это такие программисты не нужны

в любом случае ассемблер необходимо знать хотя бы как это работает

anonymous ()

иметь некоторое представление полезно

Deleted ()

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

Обрати внимание, что ассемблер для ARMv8 гараздо перспективние, учитывая, что Google и другие пилят новые процессоры для серверов на данной архитектуре.

tlx ★★★★★ ()

Желательно знать как работает железо, ~ CPU, память, носители. Asm хорошо знать на уровне чтения кода если пишешь на с/с++, он совсем несложный и осилить его довольно просто. Но голые знания asm'а без железа мало чем полезны.

mashina ★★★★★ ()

не понимаю таких вопросов.
ассемблерам учат на первых курсах, их невозможно не знать, если не прообывать пары

wxw ★★★★★ ()

Не, не нужно. Только разработчику ядер и компиляторов — чтобы оптимизации использовать.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от wxw

не понимаю таких ответов. как будто все учились на программистов

mentalmenza ()

Нужно ли его знать программисту микроконтроллеров?

Да. Для понимания предметной области.

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

На асме пишу, в основном, под оффтоп. было дело, некие псевдонаучные исследования (хе-хе) проводил, тоже асм применял. Там тема такая, что важна была скорость.

На каком уровне его нужно знать (иметь представление, уметь хорошо писать)?

Решённых задачек/лаб достаточно. И потом, системный программист системному программисту рознь. Либы к онтопику или, скажем, какая-нить шифровалка. От задачи всё.

Deleted ()

Для написания программ на высокоуровневых языках от знания ассемблера пользы ровно ноль

anonymous ()
Ответ на: комментарий от mentalmenza

это звучит как «Нужно ли знать количество языков в ретороманской подгруппе? Не все же учились на филолога.»

wxw ★★★★★ ()

Никак не могу найти единого мнения

И не найдёшь. Каждый со своей колокольни судит.

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

Бывает что нужно, смотря чем занимаешься. В ядре ассемблера хватает.

true_admin ★★★★★ ()
Ответ на: комментарий от anonymous

Лоровские школьники-аналитики по нелепым обобщениям просто мастера. Нигде больше таких спецов нет!

anonymous ()

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

Все крики о ручной оптимизации кода неактуальны уже несколько лет - компайлер в подавляющем большинстве случаев оптимизирует код лучше человека. Гораздо быстрее и эффективнее писать прямой (хорошо оптимизируемый) код, чем возиться с ассемблерными вставками.

Неплохо иметь самое общее представление, что бы иногда смотреть выхлоп gcc с опцией -S.

AIv ★★★★★ ()
Ответ на: комментарий от AIv

Во всех остальных случаях - ненужно

Если пишешь компилятор - тоже нужно.

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

Вот что действительно не нужно почти никогда (или даже вообще никогда), так это писать непосредственно на ассемблере. Не надо на нем писать. Его надо читать.

anonymous ()

Нужно ли его знать программисту микроконтроллеров? Нужно ли его знать системному программисту?

Да и да. И это будут два разных ассемблера (а может и больше).

/thread

fenris ★★★★★ ()
Ответ на: комментарий от fornlr

Сейчас в компиляторах столько оптимизаций, что даже зная асм, оно для тебя будет (и является) черной коробкой.

Асм нужно знать для понимания flow control. Например, оптимизируются множественные if-else или do-while.

unt1tled ★★★★ ()
Последнее исправление: unt1tled (всего исправлений: 1)

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

Deleted ()

Мнение кучи народа из интернета

лiл

Deleted ()
Ответ на: комментарий от Deleted

ты пишешь быстрее, чем оптимизирует компилятор крестов? Мы только что деанонимизировали Чака Норриса!

stevejobs ★★★☆☆ ()
Ответ на: комментарий от unt1tled

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

stevejobs ★★★☆☆ ()

Принципиально проще ассемблера только машина Тьюринга, там и осваивать-то нечего, если для общего развития.

CrossFire ★★★★★ ()
Последнее исправление: CrossFire (всего исправлений: 1)
Ответ на: комментарий от stevejobs

ты пишешь быстрее, чем оптимизирует компилятор крестов?

Я - нет, но код асма - да.

Deleted ()
Последнее исправление: rht (всего исправлений: 1)
Ответ на: комментарий от anonymous

Даже при разработке на джаве пользы от знания на уровне чтения кода чуть больше нуля. Пруф

BlackHawk ()

Нужно ли его знать программисту микроконтроллеров?

Иногда без него никуда. Ресурсы очень ограничены бывают.

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

Только на уровне понимания, как работает процессор и оптимизация.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

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

Только на уровне понимания, как работает процессор и оптимизация.

Ну полную хуйню же городишь. Как раз оптимизировать лучше компилятора ты вряд ли сможешь, разве что на simd где компиляторы хуевасто справляются. А вот стартовый код для процессора и управление его ресурсами в загрузчиках и ОС (настройки PLL, внешней памяти, MMU и кешей) - это на асме пишется. Бывает что даже от С/C++ отказываются - пишут на высокоурвневых языках и асме - так безопасней.

anonymous ()

Ассемблер необходимо знать если ты работаешь близко к железу. Ядро, драйвера, загрузчики и т.д.

Ассемблер неплохо бы знать, если ты пишешь на C/C++ когда надо понять, что тебе там конпелятор нафигачил.

Ассемблер нафиг не надо знать, если ты пишешь веб-сайтики на похапе или джангошопы на петоне.

В остальном по желанию.

Dark_SavanT ★★★★★ ()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от anonymous

В редких случаях типа низкоуровневой инициализации железа, код на асме получается значительно нагляднее нежели битоё*ство на си.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Ассемблер нафиг не надо знать, если ты пишешь веб-сайтики

V8 тебе в шайтан.

ebantrop ()
Ответ на: комментарий от ebantrop

Отношение сайтегов пусть даже на ноджс к ассемблеру чуть менее чем нулевое. А что V8 на асме кусками возможно оптимизирован - так это не сайтики клепать.

Dark_SavanT ★★★★★ ()

тебя это беспокоит и ты хочешь поговорить об этом?

Harald ★★★★★ ()

нужно ли знать <подставить что угодно>

Если есть на это время, то да, разумеется.

mix_mix ★★★★★ ()

Для понимания того, как вообще работают компьютеры.

olibjerd ★★★★★ ()

Если ты занимаешься низкоуровневыми вещами, работаешь с железом - знать нужно. В остальных случаях знать полезно. А если ты просто вебельщик - знание применить будет негде, так что полезность под вопросом.

m0rph ★★★★★ ()

Нужно ли его знать программисту микроконтроллеров

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

no-such-file ★★★★★ ()
Ответ на: комментарий от m0rph

В остальных случаях знать полезно.

В большинстве остальных случаев - только если для общего развития. Практическая польза сомнительна.

lazyklimm ★★★★★ ()

Нужность скальпеля

Мнение одного моего знакомого нейрохирурга - владение скальпелем очень и очень полезно.

Мнение другого знакомого, который работает в морге - скальпель полезен при всрытии.

lazyklimm ★★★★★ ()

Если в потребностях он не требуется, то совсем необязательно его знать.

th3m3 ★★★★★ ()
Ответ на: комментарий от lazyklimm

В большинстве остальных случаев - только если для общего развития. Практическая польза сомнительна.

Здесь я немного криво написал. Имелось в виду, что полезно знать разработчику ПО. Хотя уже сейчас выросло поколение, которым полезней скорее будет знать байткод их любимой VM.

m0rph ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.