Введение

Цифровой компьютер — это машина, которая может решать задачи, исполняя данные ей команды. Последовательность команд, описывающих решение определенной задачи, называется программой.Все программы перед исполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее, чем, например:

  • сложить два числа;

  • проверить, не является ли число нулем;

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

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

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

Многоуровневая компьютерная организация

Существует огромная разница между тем, что удобно людям, и тем, что могут компьютеры. Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема. Цель данной книги — объяснить, как решить эту проблему.

Языки, уровни и виртуальные машины

Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором.

Современные многоуровневые машины

Современные компьютеры состоят из двух и более уровней, некоторые доходят до шести.

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

  • Уровень 2 - уровень архитектуры набора команд. Каждый производитель публикует руководство для компьютеров, которые он продает, под названием «Руководство по машинному языку X», «Принципы работы компьютера Y» и т. п. Подобное руководство содержит информацию именно об этом уровне, а не о более низких уровнях. Описываемый в нем набор машинных команд в действительности исполняется микропрограммой-интерпретатором или аппаратным обеспечением. Если производитель поставляет два интерпретатора для одной машины, он должен издать два руководства по машинному языку, отдельно для каждого интерпретатора.

  • Уровень 5 - уровень языка прикладных программистов. Обычно состоит из языков, разработанных для прикладных программистов. Такие языки называются языками высокого уровня(C, C++, Java, Perl, Python, PHP и т.д.). Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Трансляторы, которые обрабатывают эти программы, называются компиляторами, хотя в некоторых случаях имеет место интерпретация. Например, программы на языке Java сначала транслируются на язык, напоминающий машинные команды и называемый байт-кодом Java, который затем интерпретируется.

Системы счисления

Last updated