Почему машинно-зависимый язык
быть более подходящим для письма
определенные типы программ?
Скорость
Некоторые машины имеют специальные наборы инструкций (например, MMX или SSE на x86), которые позволяют «эксплуатировать» архитектуру таким образом, чтобы компиляторы могли или не могли использовать ее наилучшим образом (или не использовать вообще). Если скорость критична (например, видеоигры или программы обработки данных), вам следует использовать лучшее из архитектуры, на которой вы работаете.
Где мобильность бесполезна
При кодировании программы для конкретного устройства (например, iPhone или Nintendo DS) переносимость - это наименьшая из ваших проблем. Этот код, скорее всего, никогда не перейдет на другую платформу, поскольку он специально разработан для этой комбинации архитектуры и оборудования.
Невежество разработчика и / или рыночный спрос
Компьютерные видеоигры являются ярким примером - Windows - доминирующая ОС для компьютерных игр, так зачем ориентироваться на других? Это позволит разработчикам сосредоточиться на известных переменных для скорости / размера / простоты использования. Некоторые разработчики не знают - они учатся кодировать только на одной платформе (такой как .NET) и «забывают», что существуют другие платформы, потому что они не знают о них. Кажется, они используют подход, похожий на «Он работает на моей машине, зачем мне переносить его на странную комбинацию, которую я никогда не буду использовать?»
Другого выбора нет.
Я возьму iPhone снова, так как это очень хороший пример. Хотя вы можете программировать на него на C или C ++, вы не можете получить доступ ни к одному из виджетов UI, которые связаны со средой выполнения Objective C. У вас нет другого выбора, кроме как написать код в Objective-C, если вы хотите получить доступ к любому из этих виджетов.
Какие типы программ будут
ассигновать
Встроенные системы
Все вышеперечисленное применимо - когда вы пишете код для встроенной системы, вы хотите использовать весь потенциал оборудования, над которым вы работаете. Будь то управление памятью (например, CP15 на ARM9) или даже неясное оборудование, которое подключено только к целевому устройству (серводвигатели, специальные датчики и т. Д.).