Каждый компьютер имеет свой машинный язык, то есть свою совокупность машинных команд, которая отличается количеством адресов в команде, информацией, задаваемой в адресах, а также набором операций, которые может выполнить машина и др.
При программировании на машинном языке программист может использовать любую команду и каждую ячейку памяти компьютера, использовать все возможности имеющихся машинных операций для конкретного компьютера.
Но процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, ее очень трудно отлаживать, изменять и развивать.
Поэтому в случае, когда нужно иметь эффективную программу, учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (т.н. ассемблеры).
Язык ассемблера — это система условных обозначений команд, используемая для программ, записанных в машинном коде.
Он позволяет программисту пользоваться текстовыми мнемоническими кодами, присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.
Перевод программы с языка ассемблера на машинный язык осуществляется специальной программой, которая также называется ассемблером и является простейшим транслятором.
Алгоритмические языки являются машинно-независимыми, что облегчает работу программиста и повышает надежность создаваемых программ.
Основные преимущества алгоритмических языков таковы:
· текст программы на алгоритмическом языке более понятен, чем на машинном языке;
· набор операций, применяемых в языке, определяется классом решаемых задач;
· формат операторов алгоритмического языка позволяет с помощью одного оператора задавать целый этап обработки данных с помощью нескольких машинных команд;
· требуемые операции задаются с помощью обыкновенных математических обозначений;
· данным в алгоритмических языках присваиваются индивидуальные имена, выбираемые программистом;
· в языке может быть применен более широкий набор типов данных по сравнению с набором машинных типов данных.