Уровни языков программирования

Языки программирования низкого уровня: ориентированы на конкретный тип процессора и учитывают его особенности (разные типы процессоров имеют разные наборы команд); "низкий уровень" не означает плохой, операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

Язык самого низкого уровня – язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью символьных условных обозначений (мнемоник). Однозначное преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией. Так как наборы инструкций для каждой модели процессора отличаются, конкретной компьютерной архитектуре соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде.

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

Недостатки:

· требуется хорошее понимание устройства компьютера;

· затрудняется отладка больших приложений;

· результирующая программа не может быть перенесена на компьютер с другим типом процессора.

Подобные языки применяют для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. В машинной графике на ассемблере пишутся библиотеки.

Языки программирования высокого уровня ближе и понятнее человеку, чем компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше.

Кроме деления на уровни, языки программирования делятся на классы:

· машинные (computer language) – языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);

· машинно-ориентированные (computer-oriented language) – предназначены для использования на тех ЭВМ, для которых эти языки разработаны (ассемблеры);

· алгоритмические (algorithmic language) – языки, не зависящие от архитектуры компьютера и предназначенные для отражения структуры алгоритма (Паскаль, Фортран, Бейсик и др.);

· процедурно-ориентированные – языки программирования с возможностью описания программы как совокупности процедур (подпрограмм);

· проблемно-ориентированные – для решения задач из определенной профессиональной деятельности (Лисп);

· объектно-ориентированные языки – поддерживают понятия объектов, их свойств, методов обработки (Object Pascal, Delphi). Например, в Турбо Паскале объект – это особый тип данных, экземпляры этого объекта – переменные этого типа. Методами объекта являются связанные с ними функции и процедуры.