Я студент 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
Асм был, есть и будет всегда! Поэтому изучать его надо в любом случае!
Комментариев нет:
Отправить комментарий