Другие языки программирования и технологии

Если язык ассемблер позволяет писать такой невероятно компактный код, то почему им пользуется всё меньше людей?

А некоторые и вовсе выделяются среди всех называя его устаревшим.

И если что я ничего не знаю о нём.
Трудоёмкость. Где-то видел такое сравнение: язык высокого уровня - это блочное строительство. Бах, бах, всё, хоть и не красиво выглядит, и много лишнего, но строится быстро. А ассемблер - это кирпичи. Долго, нудно, но можно сделать (теоретически) супер-пупер красиво и компактно.
У мну диплом на ассемблере))
Могу добавить, что программирование risc-процессоров - это как строительство из деталек lego...
Виталий Бик320 Пв
Виталий Бик320 Пв
61 064
Лучший ответ
Ничего невероятного, современные компиляторы языка Си и С++ могут генерировать код не хуже. Трудоемкость слишком высока, вероятность ошибок - тоже. Получается, что на ассемблере имеет смысл писать только то, что не выражается на языке высокого уровня (доступ к регистрам процессора и т. п.), обычно это очень короткие функции, которые выносят в библиотеку доступа к аппаратуре.
Потому что писать его в десятки раз дольше, чем на языке высокого уровня.
Ассемблер не устарел. Он ещё всех переживёт. Вопрос надо иначе ставить. Ассемблер - низкоуровневый язык: одна мнемоника ассемблера = одной команде процессора. Соответственно пользуются им те, кто пишет ядро операционной системы и драйверы - и то только наиболее критичные участки, всё остальное пишется на чистом C. А когда ядро системы и драйверы построены, можно подключать платформозависимые библиотеки и писать на C++/Pascal а так же использовать фреймворки (Java, дотнет) и языковые интерпретаторы (php, perl, python, ruby).
Так что это вопрос разделения труда. Писать абсолютно всё на ассемблере для современных процессоров достаточно муторно. Тем не менее, если интересно, посмотри в сторону KolibriOS.
Miras Bakyt-Zaisanov
Miras Bakyt-Zaisanov
35 909
Платформозависимый. Много букофок писать надо.
Да ты и о жизни не знаешь.
Давай, пиши на Angular вместо PHP, согласно ответу из предыдущего вопроса, который ты лайкнул.
Когда у человека руки из жопы, он из всего выбирает худшее.
BM
Berdibek Malikov
5 149
Он позволяет писать не компактный, а очень быстрый код, то есть программа которая работает на ассемблере будет выполнятся быстрее чем на языках высокого уровня
Роман Киреев Далеко, не факт. В большинстве ЯВУ есть настройки агрессивной оптимизации, которые позволяют выполнять код по скорости не хуже ассемблера, быстрота определяется конкретно для каждого процессора, т. к устройство конвейера почти всегда уникальная...
Владимир Карпенков И компактный и быстрый. Но и то и другое сильно зависит от навыков программиста и от компилятора языка высокого уровня, с которым сравниваем. Ещё зависит от задачи: для некоторых задач есть специальные команды процессора, доступные только из Ассемблера. На языке высокого уровня такие команды вызывают косвенно - через библиотеки, написанные на Ассемблере.
Сергей Мороз сильно зависит от программиста. человек не разбирающийся в целевой архитектуре, сможет написать код в лучшем случае одинаковый по скорости с тем, что сгенерирует транслятор с оптимизацией.
а в среднем - в разы медленнее.
Кроме того, что писать код на ассемблере достаточно долго, он не обладает понятным для человека синтаксисом, например a = b + c
Ассемблерные команды близки к машинным, он ближе к машине чем к человеку.
Во вторых программа на ассемблере пишется для какого то конкретного вида процессоров, а код на C++ в зависимости от компилятора, который ты используешь, будет работать почти на любой платформе.
Android, IOS, Windows, PS4, XBOX
EM
Eldos Makhanov
124