В планах начать изучение JS(так же Node.JS), чуть дальше - Python, иногда задумывался о "разборке" скомпилированных программ(где уже вступает в игру язык ассемблера), иногда думал о пентесте, от чего есть пара вопросов.
1) Какое именно применение можно найти ассемблеру в веб-разработке? Есть ли применение ассемблеру в пентесте серверов, если знаешь только JS?
2) Если брать в расчёт множество программ, которые могут писать на Си/С++/Java и даже на скомпилированном Python, etc., то для модификации программ достаточно ли знать сам ассемблер, либо нужно иметь хотя бы поверхностные знания в языке, на котором писалась программа?
2) Совершенно недостаточно. Программы нынче состоят из многих мегабайт машинного кода и большая часть из этого мусор, который или не будет выполнен вовсе или результаты его работы никак не повлияют на результат для пользователя. Нужно уметь вычислять куски логики программы, причём именно те, которые Вам нужны. Для этого необходимо знать как пишутся такого рода программы и как они выглядят после компиляции. Java обычно превращается в машинный код только jit-компилятором, промежуточный байт-код прекрасно декомпилируется и необходимость копаться в байт-коде обычно не возникает. Python тоже. "Компиляторы" производящие из python .exe, создают по сути самораспаковывающийся архив в котором есть интерпретатор и скрипт или байт-код.
Artur_Averin, ассемблер в наше время полезен только для глубокого понимания работы железа. Это может пригодиться в борьбе за производительность на уровне системного ПО.
Artur_Averin, для скомпилированных программ достаточно знать ассемблер, но полезно понимать исходный язык и как работает его компилятор. Для Java и Python обязательно нужно знать как работает их виртуальная машина.