Языки и методы программирования
Мы уже знаем, что любой информационный процесс реализуется каким-либо исполнителем. Причем каждое действие исполнителя инициируется неким предписанием (инструкцией или программой), представленным на понятном исполнителю языке.
В том случае, когда исполнителем является компьютер, то такое предписание оформляется как компьютерная программа. Таким образом, компьютерная программа – последовательность команд, понятная компьютеру. Используемый при этом язык называется языком программирования.
Сам процесс написания программ называется программированием. Более точно, программирование – это раздел информатики, изучающий методы и приемы составления программ для компьютера.
Язык программирования содержит три основных компонента:
Эти компоненты определяют правила записи программ.
Алфавит языка – это набор символов, которые можно применять в инструкциях языка программирования. Другие символы допустимы только в особых случаях, например в строковых константах.
Синтаксис языка определяет правила построения операторов.
Семантика – это смысловое содержание операторов языка программирования. Семантические правила определяют действия, описываемые различными операторами, и, в итоге сущность всего алгоритма.
Языки программирования можно разделить на две группы – языки высокого уровня и языки низкого уровня (машинные).
6.5.1 Языки низкого уровня
Машинный язык. Компьютер как исполнитель может только выполнять определенный набор цифровых команд. Такой набор команд составляет язык компьютера или машинный язык. По форме записи программа на машинном языке представляет собой битовую последовательность нулей и единиц. Это единственная форма информации, непосредственно доступная компьютеру. Все остальные формы программ перед их исполнением на компьютере должны быть предварительно преобразованы (переведены) на машинный язык.
Рисунок 6.9 – Схема команды машинного языка |
Это связано с тем, что каждый процессор имеет свою оригинальную систему команд. По этой причине компьютер может выполнить только такую последовательность команд в машинных кодах, которая понятна его процессору.
Типичная команда машинного языка состоит из двух частей или полей: поля операции и поля операндов (рисунок 6.9).
Каждая машинная команда записывается в соответствующем двоичном коде. Приведем пример такой машинной команды для компьютера IBM-360, записанной в различных кодах (рисунок 6.10). Данная команда означает: «Загрузить содержимое ячейки с адресом, указанным в операнде 2, в регистр общего назначения, указанного в операнде 1».
Машинные команды в двоичной форме (см. рисунок 6.10а) могут непосредственно выполняться компьютером. Однако, написание даже относительно небольших программ в таких кодах требует от программиста больших затрат времени и усилий по причине малой наглядности и громоздкости используемого языка. Кроме того, ошибка в каком-либо бите, внешне малозаметная, как правило, приводит к фатальным для всей программы последствиям. Поиск такой ошибки становится непростой и чрезвычайно малоприятной задачей.
Рисунок 6.10 – Пример машинной команды: а – в двоичных кодах; б – в шестнадцатеричных кодах; в – на языке ассемблера |
Отмеченная проблема может быть частично устранена, если при написании программ применить недвоичные системы счисления, которые затем легко и в автоматическом режиме преобразуются в двоичные коды. На практике получили распространение две таких системы – восьмеричная и шестнадцатеричная: в первой три двоичных цифры, а во второй – четыре заменяются одной цифрой из соответствующей системы счисления. В качестве примера на рисунке 6.2б приведена такая шестнадцатеричная форма кодировки.
Язык ассемблера. В языке ассемблера программа пишется на уровне программных кодов, однако при этом используется символьная форма записи машинных команд. Например, приведенная выше команда (см. рисунок 6.10в) на языке ассемблера может быть записана так:
L Reg, Number1 – Загрузить содержимое ячейки Number1 в регистр Reg.
Очевидно, что благодаря символьным обозначениям, программу на ассемблере легче писать и воспринимать.
Таким образом, язык ассемблера – это символьное представление машинного языка. При этом каждой команде на ассемблере соответствует одна команда на машинном языке. Для разных моделей процессоров, отличающихся системой команд, используются различные языки ассемблера, т.е. языки ассемблера являются машинно-зависимыми языками.
При работе компьютера каждая команда на ассемблере однозначно преобразуется (транслируется) в соответствующую одну команду на машинном языке.
Машинный язык и язык ассемблера относятся к языкам низкого уровня. С их помощью создаются, как правило, небольшие, но эффективные компьютерные программы, учитывающие все особенности компьютера, – драйверы, некоторые системные приложения и пр.
6.5.2 Языки высокого уровня
Эффективность программирования существенно возросла с появлением языков нового типа, которые получили название языков программирования высокого уровня. Это формальные языки, специально созданные для облегчения общения человека с компьютером. Они в большой степени имитируют естественные человеческие языки и обладают значительно укрупненными (по сравнению с машинными) командами.
Языки программирования высокого уровня существенно отличаются от машинных языков. Основные отличия:
1) алфавит языка значительно шире, что позволяет создавать тексты программ в более наглядной и понятной форме;
2) набор операций, допустимых при написании программ, не зависит от набора машинных команд, т.е. языки являются машинно-независимыми;
3) конструкции операторов языка задаются в более привычном для человека виде;
4) наличие библиотек стандартных подпрограмм.
Первым и одним из самых популярных языков высокого уровня стал язык Фортран (Fortran – от FORmula TRANslator), разработанный группой программистов фирмы IBM в 1954 г. Модификации данного языка до сих пор широко используются при решении инженерных и научных задач, требующих большого объема вычислений.
Классификация языков программирования высокого уровня приведена на рисунке 6.11.
Каждый язык программирования имеет свое название. История этих названий восходит к моменту создания языков. Правила программ в некоторых языках неоднократно менялись, но названия языков остались без изменения.
Рисунок 6.11 – Классификация языков программирования высокого уровня
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями: