Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

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

Третье требование к программе— это язык, который понятен компьютеру.

Глубоко в недрах компьютера находится микропроцессор. Микропроцессор— это интегральная микросхе- ма, которая управляет всем, что происходит в компьютере (рис.1.1).

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

Физически микропроцессор выполняет всего четыре действия. Он может перемещать данные из одной об- ласти памяти в другую, изменять данные в конкретной области, проверять, содержит ли конкретная об-

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

Электрические сигналы, с которыми имеет дело компьютер, могут иметь только два состояния (в зависи- мости от уровня напряжения): высокий уровень напряжения— электрический сигнал есть (состояние

«включен») либо низкий уровень— электрический сигнал отсутствует (состояние «выключен»). Для того чтобы выполнить любую задачу, мы задаем микропроцессору последовательность сигналов в состоянии

«включен» или «выключен». На рис.1.2 для примера приведена последовательность состояний электри- ческих сигналов, необходимая для того, чтобы напечатать символ «А»*.

Для того чтобы задавать инструкции компьютеру на самом низком уровне, используется цифра 0, озна- чающая состояние «выключен», и цифра 1,

* Здесь и далее на рисунках приведены не конкретные последовательности машинных команд, а лишь дано общее представление о них. (Прим.ред.)

Рис. 1.2. Ряд последовательных сигналов «включен» или «выключен»говорит микропроцессору, что ему делать, в данном случае—взять символ из памяти и послать на принтер

означающая состояние «включен». Мы называем это двоичными цифрами (битами)* или двоичными ко- дами, так как они основаны на двоичной системе счисления, в которой, как известно, все числа представ- лены только при помощи комбинаций нулей и единиц.

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

* От английского binary digit, bit. (Прим.перев.)

Рис. 1.3. Транслятор с языка ассемблера преобразует инструкции в двоичные коды

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

Ассемблер представляет задачу, адресованную непосредственно микропроцессору, используя мнемониче- ские коды. Мнемонические коды— это несложные для запоминания слова или аббревиатуры, представ- ляющие завершенное задание для микропроцессора. Например, код MOV указывает компьютеру на то, что некую информацию следует переместить из одной области памяти в другую, а код JMP указывает, что не- обходимо перейти в другую область памяти. Таким образом, вместо того, чтобы составлять последова- тельные ряды 0 и 1, программист на ассемблере может использовать мнемонические коды, подобные при- веденным выше, каждый из которых представляет собой восемь или более бит.

Как показано на рис. 1.3, транслятор с ассемблера переводит эти коды в информацию о состояниях от- дельных электрических сигналов, понятную компьютеру. Так как каждый мнемонический код соотносится непосредственно

Рис. 1.4. Сравнение языка Си, ассемблера и двоичных кодов

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

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

В настоящее время большинство программистов работают с языками высокого уровня, где инструкции за- дают с помощью человеческих слов, а не мнемонических кодов или 0 и 1. Каждое слово представляет практически завершенную операцию, а не одно задание для микропроцессора. Например, функция языка Си puts()* указывает компьютеру, что некая информация должна быть выведена на дисплей. Для выпол- нения этой же функции может потребоваться использование большого количества мнемонических кодов ассемблера и сотен бит.

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

Разумеется, сам по себе компьютер не понимает, что означает функция puts() и другие инструкции языков высокого уровня, поэтому, прежде чем компьютер реально сможет выполнить задание, оно должно быть переведено на его собственный язык— язык двоичных кодов.

* От английского put string. (Прим.перев.)

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