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

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

Совсем не обязательно при разработке программы опускаться на уровень машинных операций, которыми оперируют электронно-вычислительные машины. Языки программирования предоставляют готовый набор подпрограмм для того, чтобы процесс декомпозиции не опускался на уровень машинного кода. Это называется уровнем абстракции языка программирования и у разных языков он различен.

Низкоуровневые языки программирования #

Самый низкий уровень программирования – это машинный код, который исполняется непосредственно. По сути набор чисел, которые процессор знает и умеет выполнять. Ассемблер - язык, в котором каждому машинному коду присвоено буквенное обозначение и которое человек уже способен прочесть и понять. Глазами. Хотя уровень абстракций практически нулевой - за каждой командой скрывается машинный код.

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

Языки программирования сверхвысокого уровня #

На самом высоком уровне описывается не “как делать”, а “что делать”. В таких языках используются не алгоритмические конструкции, а живой язык. Например, английский. Это уровень искусственного интеллекта.

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

Специфические языки высокого уровня #

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

Недостатки: невозможно или неэффективно использовать в непрофильной области. Сфера применимости: та, для которой проектировался.

Универсальные языки высокого уровня #

Некоторые языки с разной степенью уверенности претендуют на звание универсальных языков. Обычно обучение программированию ведется на одном из таких языков.

Недостатки: менее эффективен, чем специализированные языки. Сфера применимости: везде.

Трансляторы #

Языки программирования могут быть любого уровня абстракций, но ЭВМ как работала с машинными кодом, так и работает. Чтобы программы на языках программирования выполнялись, необходимо перевести их в машинный код. Этим занимаются трансляторы.

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

Интерпретаторы #

Интерпретатор - это программа, которая шаг за шагом читает программу2 на языке программирования и выполняет ее. Для работы программ на интерпретируемых языках необходимо запустить интерпретатор и передать ему исходный код программы.

Компиляторы #

Компилятор полностью переводит программу с исходного языка программирования в машинный и сохраняет эту программу в машинном виде. Скомпилированные программы не нуждаются в “сопровождении” и будут работать сами по себе, отдельно.

Генераторы байт-кода #

Переносимые программы – так называемый байт-код – являются промежуточным методом трансляции. Исходный код преобразуется в другой вид, а полученный байт-код исполняется интерпретатором. Трансляция в байт-код считается компиляцией для “виртуальной машины”, которой является интерпретатор компактного, оптимизированного байт-кода.


  1. Использования термина “переносимый” несколько спорно, но дальше будет понятно в каком контексте он применяется ↩︎

  2. Здесь небольшая путаница, человеко-понятный алгоритмический текст, готовый к трансляции, тоже называется программой ↩︎