Языки программирования
Совсем не обязательно при разработке программы опускаться на уровень машинных операций, которыми оперируют электронно-вычислительные машины. Языки программирования предоставляют готовый набор подпрограмм для того, чтобы процесс декомпозиции не опускался на уровень машинного кода. Это называется уровнем абстракции языка программирования и у разных языков он различен.
Низкоуровневые языки программирования
Самый низкий уровень программирования – это машинный код, который исполняется непосредственно. По сути набор чисел, которые процессор знает и умеет выполнять. Ассемблер - язык, в котором каждому машинному коду присвоено буквенное обозначение и которое человек уже способен прочесть и понять. Глазами. Хотя уровень абстракций практически нулевой - за каждой командой скрывается машинный код.
Недостаток: зависимость от оборудования, любая замена оборудования – и программу надо будет писать заново. Сфера применимости: программирование контроллеров электронных компонентов, написание унифицированных подпрограмм для систем более высокого уровня.
Языки программирования сверхвысокого уровня
На самом высоком уровне описывается не «как делать», а «что делать». В таких языках используются не алгоритмические конструкции, а живой язык. Например, английский. Это уровень искусственного интеллекта.
Недостатки: искусственного интеллекта не существует, языки сверхвысокого уровня недостаточно эффективны. Сфера применимости: пока только научные изыскания в области искусственного интеллекта.
Специфические языки высокого уровня
Между этими крайностями существует огромное количество языков программирования специализированного назначения. Работа с базами данных, управление станками, игровые и графические языки – в каждом уровень абстракций приближен к той области, для которой этот язык спроектирован и будет использоваться.
Недостатки: невозможно или неэффективно использовать в непрофильной области. Сфера применимости: та, для которой проектировался.
Универсальные языки высокого уровня
Некоторые языки с разной степенью уверенности претендуют на звание универсальных языков. Обычно обучение программированию ведется на одном из таких языков.
Недостатки: менее эффективен, чем специализированные языки. Сфера применимости: везде.
Трансляторы
Языки программирования могут быть любого уровня абстракций, но ЭВМ как работала с машинными кодом, так и работает. Чтобы программы на языках программирования выполнялись, необходимо перевести их в машинный код. Этим занимаются трансляторы.
Транслятор - это переводчик с языка программирования на машинный язык. Можно сказать – программа, создающая программы. Трансляторы есть нескольких видов и языки в зависимости от вида трансляции называют интерпретируемыми, компилируемыми и переносимыми. 1).
Интерпретаторы
Интерпретатор - это программа, которая шаг за шагом читает программу 2) на языке программирования и выполняет ее. Для работы программ на интерпретируемых языках необходимо запустить интерпретатор и передать ему исходный код программы.
Компиляторы
Компилятор полностью переводит программу с исходного языка программирования в машинный и сохраняет эту программу в машинном виде. Скомпилированные программы не нуждаются в «сопровождении» и будут работать сами по себе, отдельно.
Генераторы байт-кода
Переносимые программы – так называемый байт-код – являются промежуточным методом трансляции. Исходный код преобразуется в другой вид, а полученный байт-код исполняется интерпретатором. Трансляция в байт-код считается компиляцией для «виртуальной машины», которой является интерпретатор компактного, оптимизированного байт-кода.