В основу построения подавляющего большинства компьютеров положены следующие общие принципы, сформулированные Джоном фон Нейманом еще в 1945 г.
1. Принцип программного управления. Программа состоит из набора команд, выполняющихся процессором автоматически в определенной последовательности.
Выборка программы из памяти осуществляется с помощью счетчика команд (PC). Этот регистр процессора последовательно увеличивает хранимый в нем адрес очередной команды на длину команды. А так как команды программы расположены в памяти друг за другом, то тем самым организуется выборка цепочки команд из последовательно расположенных ячеек памяти. Если же нужно после выполнения команды перейти не к следующей, а к какой-то другой, используются команды условного или безусловного перехода, которые заносят в счетчик команд номер ячейки памяти, содержащей следующую команду. Выборка команд из памяти прекращается после достижения и выполнения команды «стоп». (Необходимо уточнить – по команде стоп современный компьютер, конечно же, не останавливается: прикладная программа завершается, а управление возвращается операционной системе, которая, собственно, и запустила программу.)
Таким образом, процессор исполняет программу автоматически, без вмешательства человека.
2. Принцип однородности памяти. Программы и данные хранятся в одной и той же памяти, поэтому компьютер не различает, что хранится в данной ячейке памяти — данные (число, текст) или команда. Над командами можно выполнять такие же действия, как и над данными.
Это открывает целый ряд возможностей. Например, программа в процессе своего выполнения также может подвергаться переработке, что позволяет задавать в самой программе правила получения некоторых ее частей (так в программе организуется выполнение циклов и подпрограмм).
Более того, команды одной программы могут быть получены как результаты исполнения другой программы. На этом принципе основаны методы трансляции — перевода текста программы с языка программирования высокого уровня на язык конкретной машины.
3. Принцип адресности. Структурно основная память состоит из перенумерованных ячеек. Процессору в произвольный момент времени доступна любая ячейка.
Отсюда следует возможность давать имена областям памяти так, чтобы к запомненным в них значениям можно было впоследствии обращаться или менять их в процессе выполнения программ с использованием присвоенных имен.