Другие языки программирования и технологии
Вопросы, касающиеся ассамблера.
Ассамблер - это, как я понял, сложнее, чем высокоуровневый ЯП, но быстрее, эффективнее и безопаснее (с точки зрения взлома, утечки), да? Для каждого процессора, прочел в инете, свой ассамблер. Значит, нельзя на ассамблере написать универсальную программу? Придется, если представить, что написал что-то, в установщик запихнуть несколько версий для разных процессоров? А используют ли ассамблер на сервере, например, для сайта какого-нибудь?
Изучать ассемблер нужно только для саморазвития (и это важно, понимать как всё работает на низком уровне). Реально его применяют уже редко даже для драйверов и микроконтроллеров. Максимум - это отдельные вставки в Си`шный код, для оптимизации.
О сложности: Сами языки ассемблера проще, чем языки высокого уровня, т. к. в них гораздо меньше синтаксических конструкций и, как следствие, гораздо меньше различных правил. Но использование этих языков, ввиду отсутствия всяких абстракций, сложнее.
О безопасности: нет, не безопаснее, наоборот - вероятность ошибок, приводящих к различным гадостям, при использовании ассемблера, как правило, выше.
Об эффективности: В общем случае - да, результат будет эффективнее. Но только если программист знает, что он делает. Код написанный неопытными новичками зачастую оказывается хуже, чем код сгенерированный компилятором ЯВУ.
Об универсальности: ассемблеры бывают разные, есть IL-ассемблеры (например Ilasm), которые транслируют программу в байт-код .NET/Mono. Аналогичные ассемблеры должны быть и для байт-кода Java. С ними можно делать полноценно кроссплатформенные программы.
О безопасности: нет, не безопаснее, наоборот - вероятность ошибок, приводящих к различным гадостям, при использовании ассемблера, как правило, выше.
Об эффективности: В общем случае - да, результат будет эффективнее. Но только если программист знает, что он делает. Код написанный неопытными новичками зачастую оказывается хуже, чем код сгенерированный компилятором ЯВУ.
Об универсальности: ассемблеры бывают разные, есть IL-ассемблеры (например Ilasm), которые транслируют программу в байт-код .NET/Mono. Аналогичные ассемблеры должны быть и для байт-кода Java. С ними можно делать полноценно кроссплатформенные программы.
Бред. Ассемблер один, просто в разных процах разные регистры.
С точки зрения эффективности, как раз таки он не лучший, ибо затраченное время не окупается стольким выигрышем в скорости. (учитывая нынешние технологии)
Высокоуровневые ЯПы просто нагромождают скомпилированный код разными шаблонными вставками/костылями, поэтому и считается, что он "быстрее", поелику не имеет такого. (исключение - макросные вставки, вроде if while в masm)
Единственное его применение - энто когда требуется выжать максимум. Вроде графических 2D and 3D редакторов, ИИ et cetera, et cetera. Но люди не идиоты - писать на чистом ассемблере - энто токмо трата времени. Просто, сложные моменты пытаются выполнить вставками на asm.
На счёт взлома: уже придумано куча интерфейсов и обёрток над управлением памятью компуктера, так что вряд ли когда-нибудь понадобится писать чисто на asm.
Вот пример, на delphi + asm, взлом wc3:
http://xgm.guru/p/wc3/inside_of_warcraft_mpq_hook
Ещё один пример написания Lua движка на delphi:
http://www.gamedev.ru/projects/forum/?id=140784
Разработчик прилагает исходный код, можешь ознакомиться. Там чётко видно, что в сложные моменты (обращения, в lua оне занимают миллисекунды-секунды, но asm сокращает энто дело в несколько раз) он использует ассемблер, но, в остальном он не обращается к нему, ибо энто уже трата времени программиста.
С точки зрения эффективности, как раз таки он не лучший, ибо затраченное время не окупается стольким выигрышем в скорости. (учитывая нынешние технологии)
Высокоуровневые ЯПы просто нагромождают скомпилированный код разными шаблонными вставками/костылями, поэтому и считается, что он "быстрее", поелику не имеет такого. (исключение - макросные вставки, вроде if while в masm)
Единственное его применение - энто когда требуется выжать максимум. Вроде графических 2D and 3D редакторов, ИИ et cetera, et cetera. Но люди не идиоты - писать на чистом ассемблере - энто токмо трата времени. Просто, сложные моменты пытаются выполнить вставками на asm.
На счёт взлома: уже придумано куча интерфейсов и обёрток над управлением памятью компуктера, так что вряд ли когда-нибудь понадобится писать чисто на asm.
Вот пример, на delphi + asm, взлом wc3:
http://xgm.guru/p/wc3/inside_of_warcraft_mpq_hook
Ещё один пример написания Lua движка на delphi:
http://www.gamedev.ru/projects/forum/?id=140784
Разработчик прилагает исходный код, можешь ознакомиться. Там чётко видно, что в сложные моменты (обращения, в lua оне занимают миллисекунды-секунды, но asm сокращает энто дело в несколько раз) он использует ассемблер, но, в остальном он не обращается к нему, ибо энто уже трата времени программиста.
В плане программирования и в плане обучения спорно, для разных архитектур свой набор инструкций, который может ограничиваться лишь сдвигами, логическими операциями и минимальной математикой и наоборот множеством различных команд со своими особенностями (x86). Кроссплатформенные ассемблеры существуют (NASM,GAS,FASM), но в каждом отдельном случае приходится писать специфичный код для конкретной платформы. Для сайтов используются интерпретируемые языки.
Похожие вопросы
- Вопрос касается искусственного интеллекта. В чём грань между испытанием роботом настоящих эмоций и имитацией их?
- Почему здесь пишут о всякой ерунде? и только 5-10% вопросов касаются программирования? модераторы где?
- Ребят Ребят кто умет программировать на ассамблере, скажите стоит ли начинать программировать?
- Хочу выучить язык программирования, Лучше ассамблер или C#?
- Вопрос наверно касается всех.
- Кто-нибудь может объяснить мне нормально и внимательно прочитав мой вопрос, а не тяп-ляп? Ворос касается HD
- знатоки компьютера, обращаюсь к вам, у меня очень важный вопрос, что касается антивирусных программ)))
- Помогите мне пожалуйста... Это касается "Железа" !!!
- Тема касается компьютерных програмистов...
- КАК научиться web дизайну самостоятельно, если никогда не касалась этого и не знаю ни html ни css и фотошопа тоже (