…aut discede

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Трансляторы

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

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

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

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

Компиляторы

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

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

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

1)
Использования термина «переносимый» несколько спорно, но дальше будет понятно в каком контексте он применяется
2)
Здесь небольшая путаница, человеко-понятный алгоритмический текст, готовый к трансляции, тоже называется программой