Страницы

Поиск по вопросам

вторник, 26 ноября 2019 г.

Ассемблер. Стоит ли его изучать теперь? [закрыт]


Я студент 2-го курса. Программирование мы начинали изучать сразу же с языка C, сейча
заканчивается курс ООП С++ (я не говорю про вспомогательные предметы типа основ конструировани
программ и так далее). Мне нравится программировать, но меня никогда не покидала мысль
может стоит сначала разобраться в Ассемблере? Хочу конечно же когда-нибудь стать профессионало
и, разумеется, работать по специальности. Но хочется спросить: уместно ли изучение Ассемблера
Просто я ожидаю, что, изучив его, я больше буду понимать "внутреннюю реализацию". Н
тут опять же вопрос: так ли важно это понимание, что внутри происходит? Я не знаю, понадобиться ли мне он на будущей работе, так как я, вероятнее всего, буду работать с языками высокого уровня. Может быть я смогу писать более оптимизированные программы. Но смогу ли так много выиграть за счет этого? Да и вообще сейчас особо с ресурсами проблем нет. А если еще подумать про читаемость кода... Думаю, она резко уменьшится, если я буду пользоваться Ассемблерными вставками (хотя я не уверен, что они используются для опитимизации :D). А может она мне в отладке поможет? Печально, что пока в универе на это внимание почти не уделяется, но я думаю, что это важно, особенно на следующих этапах, когда программы станут серьезными.
Естественно, польза хоть какая-то будет, если я его изучу и разберусь с "внутренне
реализацией". Но "окупятся" ли усилия на изучения Ассемблера? Или может быть мне лучше начать изучать что-то более "дельное"? 
Заранее спасибо ;)    


Ответы

Ответ 1



Коварная постановка вопроса, холиварная такая :) Скажу так: знать его очень желательно, причем желательность прямо пропорциональн высокоуровневости основного языка. Если это C - можно не учить, если это js/php/c# обязательно. Не нужно даже делать ассемблерные вставки и кодить юниты на нем, но желательно именно знать, что там происходит внутри. Просто чтобы не возникало глупых вопросов вида "почему после int i = 0; if (i++ > 0) { code } i не становится обратно нулем?". Также он очень хорошо лечит от индусского кода. А насчет окупится-нет... Ну, это долгосрочное вложение, оно может окупиться незаметно а может и очень пригодиться, если будете разрабатывать высоконагруженные приложения. В любом случае если не сейчас, то в качестве хобби было бы неплохо хоть пару утилиток на нем накидать в свободное время, гарантирую веселое времяпровождение)

Ответ 2



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

Ответ 3



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

Ответ 4



Имея в багаже С/C++, поковырять ассемблер, хотя бы чтобы изучить его возможност и архитектуру, будет очень полезно, на мой взгляд. Если Вам он когда-то действительно понадобиться - Вы будете знать, где искать и что учить. И действительно понимания в С/C++ он добавит. Лишних знаний вообще нет.

Ответ 5



Скажу, что элементарные ассемблеровские операторы надо знать по-любому, а еще лучш владеть им хотя бы на уровне "багокопателя". Ведь многие современные компиляторы компилирую написанный вами код в asm-код. Иногда надо знать, как именно компилятор транслировал ваш код, например, на C++ в машинный, чтобы, к примеру отыскать корень ошибки. А вообще, все пентестеры, все крякеры используют такой инструмент, как дизассемблер. Чтобы искать баги в чьем-либо программном коде и писать эксплоиты, к примеру.

Ответ 6



Нет, не стоит. Изучение ассемблера по книжкам десятилетней давности даст вам ложное представлени о работе процессора, расширит кругозор и поднимет ЧСВ. Еще при наличии времени стои изучить схемотехнику, чтобы знать, как из логических элементов создаются регистры. И прикладную теорию цифровых автоматов, чтобы знать, как сделана операция деления и почему она занимает больше времени. Но в целом это просто just for fun, в жизни редко встречается.

Ответ 7



Все эти ответы хороши, но проблема в том что Ассемблер человеку все равно придетс изучить, только будет это на курсе 4 (ну мне так помнится)... а еще помнится экзамен по сему предмету, на котором мы писали код на листочках в клеточку (эх были же времена :) ) но суть не в этом , так или иначе вы его все равно будете изучать, но лучше быт во всеоружии изначально ;)

Ответ 8



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

Ответ 9



Я не буду ортодоксом - поддержку оппозиционную точку зрения и плюсану @beardog. Согласен, что знание ассемблера не есть необходимость и может быть местами даже и вредно. Понятно, что сишнику без ассемблера никуда, но джависту/джаверу - зачем, зачем SQL прогеру? Чисто just for fun - абсолютно согласен. P.S. Я ассемблер увы знаю и иногда думаю, что это только вредит мне...

Ответ 10



Асм был, есть и будет всегда! Поэтому изучать его надо в любом случае!

Комментариев нет:

Отправить комментарий