что означало бы, «сложить число, лежащее в ячейке «а» с числом в ячейке «b», а результат положить в ячейку «а».
Как видно из примера, язык очень сильно напоминает машинный, но здесь имеются некоторые «человеческие» элементы: например, команда «MOV» созвучна с английским словом «move», что означает «передвинуть», а команда «ADD» созвучна со словом «add» (прибавить). Во-вторых, здесь уже нет адресов ячеек, а есть переменные. Дать переменной конкретный адрес ячейки уже не задача программиста, а задача программы-транслятора. Таким образом, программист избавлен от проблемы поиска свободных ячеек памяти, за него это делает машина. Отметим, что в этом случае язык уже не совсем машинный, и для компьютера эти команды незнакомы, ему их нужно переводить (транслировать). Но все же этот язык очень похож на машинный. Такие языки называют языками программирования низкого уровня.
Однако даже на языках ассемблера работать достаточно сложно и трудоемко. Естественно желание писать программы так таком языке, который был бы более приближен к «человеческому», где команды звучали бы как фразы. Такие языки называются языками программирования высокого уровня. Например, такой фрагмент программы, написанный на языке Pascal
If n<15 then n:=n+3 else n:=n-2,
в переводе с английского звучит так: «если n < 15, то n:=n+ 3, иначе n:=n- 2». На языке программирования Pascal эта фраза означает «если n < 15, то к n прибавать 3, иначе от n отнять 2». Почти как на английском. Очевидно, что с помощью этого языка можно писать программы легче, такие программы легко понимаемы. Кроме того, языки программирования высокого уровня позволяют работать с любыми данными, а не только с числами. Еще стоит отметить, что если языки Ассемблера были предназначены для процессора определенного типа (поэтому неверно говорить «язык Ассемблер», так как ассемблер — это только программа-транслятор), то языки программирования высокого уровня не зависят от типа компьютера.
Языки программирования высокого уровня делятся на 2 типа:
императивные | декларативные |
Программа представляет собой алгоритм решения какой-то задачи. Алгоритм описывается пошагово. Например, «для того, чтобы перейти дорогу, нужно:
| В них по сути нет алгоритма, есть только описание данных в их взаимосвязи. На основании полученных данных компьютер должен сформулировать ответ. Например: «на проезжей части 3 автомобиля: красный, синий и зеленый; светофор стоит в пяти метрах, на нем горит красный свет; 2 автомобиля движутся, один стоит. Можно ли мне перейти через проезжую часть?»
Примерами декларативных языков программирования служат:
|
Транслятор
Для перевода с языка программирования высокого уровня на язык, понятный процессору, используются специальные программы – трансляторы. Трансляторы бывают двух видов:
1) интерпретатор;
2) компилятор.
В режиме интерпретации происходит трансляция построчно, то есть выполнение программы происходит непосредственно в среде программирования. Программы, написанные с использованием интерпретатора, не могут работать вне среды. Примером таких программ могут выступать любые, написанные на языке BASIC.
В режиме компиляции происходит перевод всей программы и запись ее в отдельный файл. Файл может быть сохранен в памяти компьютера, а затем исполнен.
Преимущество компилятора состоит в том, что предварительно программа проверяется на наличие ошибок. Также стоит отметить и то, что программа может работать вне среды программирования. Но у компилятора имеется и недостаток, который состоит в том, что в случае ошибки найти ее очень сложно, ибо в этом случае нельзя следить за промежуточными результатами. Для отладки используется режим интерпретации, то есть построчное выполнение написанной программы.