Украинское сообщество программистов

Форум программистов » Программирование

Насколько реально востребованы навыки программирования на ассемблере

(71 posts)
  1. Насколько реально востребованы навыки программирования на ассемблере?
    Имеется в виду не допотопный ассемблер под MS DOS, а версии под новейшие аппаратные и программные платформы, например под 64 bit Vista и 64 bit Linux.
    А то практически во всех ВУЗах на программистских факультетах преподают этот язык, а в списке требований к вакансиям я его встречаю очень редко?

  2. При программировании под Windows, практически нет разницы что использовать: Си или Ассемблер. Все равно все сводится к вызову множества системных функций. Так что код на Си не только будет работать очень быстро, но и лучше читаться. Конечно же ассемблер будет работать быстрее. Но, эта скорость реально нужна только при программировании критичных по скорости участков кода.

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

  3. Понятно, что ассемблер преимущественно используется для программирования критичных по скорости участков кода, остальной код намного рациональнее писать на высокоуровневом языке.
    Хотелось бы знать, насколько его реально используют в программистских фирмах при программировании критичных по скорости участков кода?

  4. Есть еще одно направление, где без ассемблера очень трудно обойтись. Это использование новых инструкций последних моделей микропроцессоров, всяких там 3DNow10, Ulta MMX, HiperSSE5 и т.д. Ведь не секрет, что компиляторы с высокоуровневых языков обычно включают поддержку новых инструкций с существенной задержкой во времени, кроме того, реализация поддержки этих новых инструкций зачастую заставляет желать лучшего.
    Есть масса направлений, где поддержка этих инструкций последних моделей микропроцессоров просто жизненно необходима: компьютерные игры, программы сжатия/анализа/шифрования данных и т.д.
    Если кто сталкивался с этим направлением - просьба откликнутся

  5. Хорошую фразу где-то читал: "Изучение ассемблера должно предварять изучение ЯВУ, также как изучение латыни должно предварять изучение романо-германских языков"
    Практически на ассемблере никто не программирует, но без его знания программист не имеет представления о работе компьютера. Распределение памяти, передача параметров, сигнатура функций, все имеет под собой асмовый бэкграунд,
    А без понимания этих вещей программист просто тупой пользователь фреймворка.
    Кроме того асм крайне полезен (а иногда необходим) в случаях сложной отладки.
    Так что учите - оно того стоит.

  6. to eugene_n: предварять-то в идеале конечно должно, но кривая обучения от этого страдает, пойдет ли кто на это? из пары <готовый программист или фирма ему платящая>. наверное нет. ассемблер учить будут как и раньше только гик-студенты. ассемблер (весь CISC x86+-го) реально выучить можно только за год, imo.

    2 billneutron: А Вы с какой целью интересуетесь? найти работу или статистику подвести?
    Если случай работы, то, мне кажется по-первых вакансий чистого асм уже ждать бессмысленно, не начало 80х, сейчас только вместе со знанием С/С++ asm может жить. Вы совершенно правы и про сложную отладку ( что случается намного чаще) и про задачи числодробительные, когда применение низкого уровня может быть оправданно.
    А если смотреть именно в такокй связке (C/C++/asm), то можно их встретить в задачах-или-вакансиях 1 драйверо-писания 2 антивирусо-писания, наверное в части вирусо-понимания, либо в ядре антивируса копошиться. правда в ядра антивирусов в основном не пускают, особенно, когда стабильно-денежный продукт :)

    Из недавних примеров когда сделали что-то сами, не без ассемблера, так скажем - это группа создавшая RootKit Unhooker. просуществовали пару лет, создали лучший продукт в своей нише... а после этого их купило Microsoft.

  7. "... А Вы с какой целью интересуетесь? ... " статистику подвести, работы у меня хватает

  8. 2 Sherlok ну собсно и подразумеваеться, что студент выучит асм в тоже время, когда и дискретную математику и теорию БД. Правда нынешний молодняк уже и "Hello world" без 300-мегабайтной ИДЕ не в состоянии написать :(

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

  9. странно, неужели действительно программирование на АСМ настолько слабо востребовано

  10. http://jooble.com.ua/SearchResult.aspx?cntmsg=0&date=7&kw=assembler&rgn=

  11. 2billneutron
    Используется в основном x86 ассемблер, который еще с процессорами 80386 появился, остальные почти не востребованны. Всякие там ТриДэНау и SSE5 - вы под них врядли сможете эффективно программировать, вы хотя бы посмотрите количество команд в них...

    "Есть еще одно направление, где без ассемблера очень трудно обойтись. Это использование новых инструкций последних моделей микропроцессоров, всяких там 3DNow10, Ulta MMX, HiperSSE5 и т.д. Ведь не секрет, что компиляторы с высокоуровневых языков обычно включают поддержку новых инструкций с существенной задержкой во времени, кроме того, реализация поддержки этих новых инструкций зачастую заставляет желать лучшего."

    Тут Вы ошибаетесь. Во-первых, количество компьютеров с SSE5 ничтожно мало по отношению к общему количеству компьютеров, во-вторых, тот же интел, насколько мне известно, одновременно с процессором выпускает компилятор под него для языков (C++ и Fortran точно) http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm

    Ассемблер является необходимым профессиональному девелоперу, но не достаточным языком для успешной работы. Скорее всего востребован специфический ассемблер для какихнить контроллеров, но для x86-x64 процессоров писать программы на асме - это все равно что стоить небоскреб без подъемных кранов и прочей техники.

  12. 2 eugene_n: Насчет применения могу еще добвить все чаще появляющюся тему компиляторописания.

    Компиляторописание - чрезвычайно редкая профессия, не думаю, чтоб с 1997го что-то резко изменилось
    почитайте Зуева
    http://www.interstron.ru/upload/images/pubs/Redkaya_professiya.pdf
    http://zouev.blogspot.com/2008/04/blog-post_28.html

    сам как (в том числе) компиляторописатель на себе почуствовал, когда-то. )

  13. 2Sherlok - читал я этот опус, читал. Чуть ли не в год выхода. И по моему мнению, это заурядная рефлексия русского интелегента. Программист пишущий только компиляторы сродни музыканту, который играет только Бетховена. Человек умеющий писать компиляторы должен разбираться в синтаксическом и семантическом анализе, операционных системах и процессорных архитектурах. Я уже не говорю про сам язык. И гуру в любом из этих направлениях идет на вес золота. Если конечно хочет и может продать свои умения. Чего руссская интелегенция не умеет и не хочет.
    А на деле, за последний год мимо меня прошли ТРИ позиции спецов по компиляторам. В Украине. Что вобщем-то заставляет задуматься.

  14. На мой взгляд, без знания ассемблера не может быть ни одного программиста на C/C++, способного писать эффективный и быстро выполняющийся код. Программист всегда должен думать о том, что красивая запись, красивый и внешне понятный код на C/C++ может вылиться в тонну лишних строчек ассемблера при компилировании. Многие программисты считают что достаточно алгоритмической оптимизации кода, а различные оптимизирующие компиляторы выполняют за них остальную работу. Нет, алгоритмической оптимизации мало и компиляторы, какие бы оптимизирующие они не были, они не способны эффективно скомпилировать плохо написанный код. Это первое и самое главное для чего нужно преподавать ассемблер, как азы.

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

    Тут звучала фраза о том, что свежие выходящие компиляторы используют при генерации кода все доступные расширения команд процессоров, упоминался даже Intel'овский компилятор, который может использовать все свежие расширения и наработки. Это всё так, но одной уверенности мало. Необходимо знать как писать код на C/C++, надо представлять, во что код на C/C++ выльется при компиляции, чтобы компилятор всё мог собрать, хотя бы с использованием MMX/SSE1/3DNOW!, не говоря уже про дальнейшие расширения. Простое включение галочки "Use SIMD instructions", либо указание /arch:SSE2 не поможет ни капли.

  15. спрос на ассемблер совсем небольшой, но есть:
    http://reboot.com.ua/cgi-bin/job/vac?q=assembler

  16. 2lestat
    Вы неправы, программист не должен: "Программист всегда должен думать о том, что красивая запись, красивый и внешне понятный код на C/C++ может вылиться в тонну лишних строчек ассемблера при компилировании".
    Почитайте на досуге http://www.rsdn.ru/article/philosophy/Optimization.xml

    А по поводу С\С++ - переходите на шарп или жаву, С вообще мертв а плюсы скоро умрут... ИМХО

  17. >>"А по поводу С\С++ - переходите на шарп или жаву, С вообще мертв а плюсы скоро умрут... ИМХО"

    Мир не заканчивается на корпоративных приложениях и интернет сайтах. ИМХО :)
    Ни чуть не спорю с тем, что эти отрасли за счет аутсорса продвигают вперед весь отечественный хайтек. Наверное поэтому у Вас и сложилось подобное мнение.

    По поводу "мертвого С": Вы ведь не станете писать драйвер на джаве? И на С++ тоже не станете...
    У С/С++ совсем другая целевая аудитория, где как первый так и второй - были, есть и будут. Здесь общие знания ассемблера целевой платформы не то что приветствуются, а просто необходимы (хотя на нем пишут крайне редко, даже вставки).

    Чистый академический ассемблер (х86) у нас скорее всего пригодится только для академических целей (субъективно).

  18. "...По поводу "мертвого С": Вы ведь не станете писать драйвер на джаве? И на С++ тоже не станете......" драйвера под Виста (за редким исключением) пишутся именно на С++, а не С.
    Вот книга об этом:
    http://www.proklondike.com/contentview.php?content=484

  19. "...С вообще мертв а плюсы скоро умрут... ИМХО..." это что-то новенькое, Вам нужно срочно докторскую писать по компьютерным наукам

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

RSS экспорт этой темы

Отправить сообщение »

Навигация


Форумы

Зарплатная анкета:

чистыми, в экв. $ США по курсу

Теги:

интернет магазин бытовая техника магазин Laptoper