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

Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать

возможности процессора. При этом применять как можно меньше команд и обращений к памяти, что уменьшает размер и повышает скорость работы программы. Многие его НЕ любят, а мне язык ассемблера нравится.Ассемблер даёт полный контроль над кодом и обладает большей гибкостью, чем любой другой язык программирования (даже C/C++). На асме мы можем конструировать нашу программу, размещая блоки кода и данных как нам вздумается. Каждый генерируемый байт будет таким, каким мы хотим его видеть.Программа на ассемблере, как правило, значительно меньше аналогичной программы на другом языке программирования. Для микроконтроллеров, где всего несколько килобайт памяти, маленький размер программы очень важен. Чем меньше программа, тем меньше памяти требуется и тем проще и дешевле будет используемая микросхема. Знание ассемблера позволяет расковырять любую программу дизассемблером и изучить механизм её работы. Зная ассемблер, можно заглянуть внутрь любой программы и удовлетворить свое любопытство, даже не имея исходников. Ну и почему, невзирая на все эти плюсы, многие программисты ненавидят ассемблер???
А причём здесь разработчики? Вон, гики сколько лет KolibriOS пилят - и не надоедает им.

Ассемблер не нужен бизнесу - т.к. это очень дорого, очень долго, вероятность ошибок в коде очень велика, а перенести на другую процессорную архитектуру невозможно.

К тому же, современные компиляторы генерируют очень качественный код - часто более быстрый, чем код, написанный на ассемблере вручную. И проблема не в том, что программист плохо знает систему команд, а в том, что при написании эффективного ассемблерного кода надо учитывать не только сами команды, но и особенности их выполнения внутри процессора: как каждая из команд влияет на время выполнения соседних с ней команд.

В современный процессор встроены предварительное выполнение команд, предсказатель переходов (причём в последних поколениях процессоров на базе самообучающейся нейросети), достаточно длинный конвейер... И всё это надо учитывать при составлении последовательности ассемблерных команд. Часто самым эффективным оказывается очень странный - с точки зрения человека - код. Более длинный код, сгенерированный компилятором, оказывается эффективнее короткого кода, написанного человеком.

Создатели компиляторов могут учесть нюансы конкретного процессора, но у разработчиков коммерческого софта на это нет ни времени, ни ресурсов.

P.S. А программирование микроконтроллеров на ассемблере - не такая уж и редкая практика.
Madison Christopher
Madison Christopher
66 605
Лучший ответ
Чтоб его применять, надо хорошо знать железо. А с этим у современных программистов беда. Да и скорость разработки сильно ниже. В современных условиях это плохо.
Mr Fix
Mr Fix
66 948
Бейсик лучше всех
Amak Jon
Amak Jon
158
Потому что он бесит