Другие языки программирования и технологии
Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
возможности процессора. При этом применять как можно меньше команд и обращений к памяти, что уменьшает размер и повышает скорость работы программы. Многие его НЕ любят, а мне язык ассемблера нравится.Ассемблер даёт полный контроль над кодом и обладает большей гибкостью, чем любой другой язык программирования (даже C/C++). На асме мы можем конструировать нашу программу, размещая блоки кода и данных как нам вздумается. Каждый генерируемый байт будет таким, каким мы хотим его видеть.Программа на ассемблере, как правило, значительно меньше аналогичной программы на другом языке программирования. Для микроконтроллеров, где всего несколько килобайт памяти, маленький размер программы очень важен. Чем меньше программа, тем меньше памяти требуется и тем проще и дешевле будет используемая микросхема. Знание ассемблера позволяет расковырять любую программу дизассемблером и изучить механизм её работы. Зная ассемблер, можно заглянуть внутрь любой программы и удовлетворить свое любопытство, даже не имея исходников. Ну и почему, невзирая на все эти плюсы, многие программисты ненавидят ассемблер???
А причём здесь разработчики? Вон, гики сколько лет KolibriOS пилят - и не надоедает им.
Ассемблер не нужен бизнесу - т.к. это очень дорого, очень долго, вероятность ошибок в коде очень велика, а перенести на другую процессорную архитектуру невозможно.
К тому же, современные компиляторы генерируют очень качественный код - часто более быстрый, чем код, написанный на ассемблере вручную. И проблема не в том, что программист плохо знает систему команд, а в том, что при написании эффективного ассемблерного кода надо учитывать не только сами команды, но и особенности их выполнения внутри процессора: как каждая из команд влияет на время выполнения соседних с ней команд.
В современный процессор встроены предварительное выполнение команд, предсказатель переходов (причём в последних поколениях процессоров на базе самообучающейся нейросети), достаточно длинный конвейер... И всё это надо учитывать при составлении последовательности ассемблерных команд. Часто самым эффективным оказывается очень странный - с точки зрения человека - код. Более длинный код, сгенерированный компилятором, оказывается эффективнее короткого кода, написанного человеком.
Создатели компиляторов могут учесть нюансы конкретного процессора, но у разработчиков коммерческого софта на это нет ни времени, ни ресурсов.
P.S. А программирование микроконтроллеров на ассемблере - не такая уж и редкая практика.
Ассемблер не нужен бизнесу - т.к. это очень дорого, очень долго, вероятность ошибок в коде очень велика, а перенести на другую процессорную архитектуру невозможно.
К тому же, современные компиляторы генерируют очень качественный код - часто более быстрый, чем код, написанный на ассемблере вручную. И проблема не в том, что программист плохо знает систему команд, а в том, что при написании эффективного ассемблерного кода надо учитывать не только сами команды, но и особенности их выполнения внутри процессора: как каждая из команд влияет на время выполнения соседних с ней команд.
В современный процессор встроены предварительное выполнение команд, предсказатель переходов (причём в последних поколениях процессоров на базе самообучающейся нейросети), достаточно длинный конвейер... И всё это надо учитывать при составлении последовательности ассемблерных команд. Часто самым эффективным оказывается очень странный - с точки зрения человека - код. Более длинный код, сгенерированный компилятором, оказывается эффективнее короткого кода, написанного человеком.
Создатели компиляторов могут учесть нюансы конкретного процессора, но у разработчиков коммерческого софта на это нет ни времени, ни ресурсов.
P.S. А программирование микроконтроллеров на ассемблере - не такая уж и редкая практика.
Чтоб его применять, надо хорошо знать железо. А с этим у современных программистов беда. Да и скорость разработки сильно ниже. В современных условиях это плохо.
Бейсик лучше всех
Потому что он бесит
Похожие вопросы
- ..почему, многие программисты не любят PHP5?
- Почему многие программисты не создают игры
- Почему многие программисты все какие-то не очень на вид? Компьютер что, как-то влияет на дальнейшее развитие внешности?
- Почему многие программисты и веб дизайнеры предпочитают работать не у себя в России а в США ?
- Почему в ряде случаев у многих программистов плохо с математикой?
- Есть вопрос почему многие ненавидят windows 8 он ведь не так ушь и плох
- Почему многие хотят стать программистом
- Программисты, знающие ассемблер, помогите.
- Почему у программистов такие лютые собеседования?
- почему среди программистов так много ЧСВ? мне тут как то писала одна женщина не молодая, что она супер математик, dev