Выбрать главу

Компьютер — это универсальная машина Тьюринга. При определенном его состоянии и передаче на вход определенных данных будут выполнены некоторые операции, что приведет к полностью предсказуемому результату. Например, если на листке для расчета бюджета мы запишем определенные числовые данные, input, то результат, output, будет всегда один и тот же. Одной из самых интересных задач науки со времен Джона фон Неймана, который одним из первых поднял этот вопрос, стало получение алгоритмов, генерирующих последовательность чисел случайно, как если бы мы доставали номера из лотерейного барабана. Если числа, получаемые путем доставания из барабана, называются случайными, то числа, выдаваемые компьютером, называются псевдослучайными. Компьютерная программа, с помощью которой мы можем получить такие числа, называется генератором случайных чисел. Псевдослучайные числа находятся в интервале [0,1]. Например, последовательность двенадцати чисел 0,092833; 0,472751; 0,542341; 0,022788; 0,069853; 0,317325; 0,808213; 0,225401; 0,633599; 0,133044; 0,530186,0,477541 получена в следующей программе на BASIC-256:

п=0

do

u=rand

print u

n=n+l

until n=12

Приведем другой пример: как можно с помощью данной программы сделать симуляцию игрального кубика? Мы просто заменим u=rand на и= =int (rand*6) + 1. Числа, получаемые с помощью программы, имеют определенные характеристики. В частности, они должны находиться в интервале между 0 и 1, должны быть независимы друг от друга, то есть если мы получаем число 0,808213, оно не должно влиять на следующее число последовательности, 0,225401. Также обязательным для таких чисел является условие равной возможности их получения. Любопытно, что эти числа по отдельности не являются случайными, их случайный характер проявляется только в последовательности, частью которой они являются и статистические характеристики которой подобны последовательности чисел, полученных с помощью механической системы лотерей. Сегодня существует возможность получить в интернете настоящие случайные числа, взятые из физических явлений, что заменяет алгоритм, подобный которому использовался в функции rand BASIC-256.

ЭЛЕКТРОННЫЕ ЛАМПЫ И ЛОГИЧЕСКИЕ ВЕНТИЛИ

Электронная лампа представляет собой вакуумную трубку, в которой имеются нить накаливания, испускающая электроны, — катод (отрицательный заряд), и металлическая пластинка, принимающая электроны, — анод (положительный заряд). В результате мы получаем ток электронов от катода при его накаливании к аноду. Так как ток проходит только в одном направлении, такая лампа реализует функцию важнейшего электронного компонента — диода. Впоследствии в диод добавили дополнительную нить — сетку между катодом, испускающим электроны, и анодом, получающим их. При приложении тока к сетке можно контролировать ток электронов от катода к аноду, увеличивая напряжение. Эта дополнительная нить лежала в основе нового изобретения — триода, электронного компонента, выполнявшего функцию современного транзистора. С помощью этих электронных компонентов можно создавать схемы, выполняющие арифметические операции, например суммирование, или логические операции, например сравнение чисел.

Два вида ламп: диод (слева) и триод (справа).

Нули и единицы

В компьютерах, в том числе в Colossus, арифметические и логические операции осуществляются на основании булевой алгебры, оперирующей битами, то есть числами 0 и 1, с применением к ним операторов, называемых на языке электроники вентилями. Предположим, ток в 0 В представляет число 0, а ток 3 В представляет 1. Следовательно, факт, проходит или не проходит электрический ток, определяет величина 0 или 1, а это один бит, то есть наименьшее количество информации, которую может обработать компьютер. Вентиль — электронная схема с диодами или транзисторами, в которой О или 1 на входе трансформируются на выходе также в 0 и 1 в результате применения одного из операторов булевой алгебры. Из всех возможных операторов самыми используемыми в цифровой электронике являются И и ИЛИ. Вентиль И, эквивалентный на логическом уровне союзу «и», на выходе дает 1, если на всех входах одновременно получено 1. С другой стороны, на выходе будет 0, если на одном или двух входах получен 0. Ниже приводится таблица и символ для этого вентиля.

А B А И В
0 0 0
0 1 0
1 0 0
1 1 1