По степени близости к машинному языку или, напротив, заданной предметной области все многообразие языков программирования можно условно разделить на ЯП низкого, высокого и сверхвысокого уровня. ЯП сверхвысокого уровня еще называют проблемно-ориентированными, за их близость к какой-либо области знания, например, прикладной математике, экономике и т.д.
Языки программирования низкого уровняпризваны обеспечить в наибольшей степени доступ к техническим ресурсам компьютера. К таким языкам можно отнести Ассемблер. Программирование какой-либо прикладной задачи на таком ЯП доставляет мало удовольствия, т.к. в нем практически отсутствуют привычные операторы, а программа получается довольно громоздкой. Следует отметить также, что ЯП низкого уровня является машинно-зависимым, т.е. его конкретная реализация в значительной степени зависит от архитектуры используемого процессора.
Языки программирования высокого уровняпозволяют на уровне написания программы оперировать с привычными объектами: операторами, функциями, процедурами и т.д. Поэтому принято считать, что такие ЯП являются в определенном смысле универсальными. С одной стороны они не привязаны ни к какой конкретной предметной области, а с другой, часто имеют достаточно развитые системные возможности. К языкам такого уровня следует отнести Pascal, C и многие другие. Считается, что такие ЯП являются машинно-независимыми.В действительности, это далеко не так, а идея машинной независимости порождена желаниями разработчиков трансляторов!
Языки программирования сверхвысокого уровняпозволяют оперировать понятиями, принятыми в конкретной предметной области. Как правило, они практически лишены возможности доступа к системным ресурсам компьютера, но программировать в них может (часто без особой подготовки) специалист в соответствующей предметной области. Такими ЯП являются MatLab, Eureka Solver, MachCAD и т.д.
Резюмирует сказанное рисунок, из которого видно изменение возможности доступа к техническим ресурсам компьютера и удобства пользования для ЯП различных уровней. Необходимо отметить, что именно этими соображениями обычно руководствуются при выборе языка программирования для реализации какой-либо прикладной задачи. Часто в рамках одного и того же проекта пользуются различными ЯП.