Оглянись. Что ты видишь? Ну, люди в основном. Но также и экспоненциально растущее количество компьютеров.

Они повсюду. Почти во всем, что работает на электричестве. Это хорошо и немного пугающе, но они очень помогают.

Но они тупые. Период. Они не могут сделать что-то одно, пока им об этом прямо не скажут.

Хотя сейчас это дело потихоньку меняется, и это совсем другой вопрос.

Итак, в чем их секретный соус? Что делает их такими полезными? И зачем нам вообще нужен компьютер?

Начнем с самого начала.

Помещение

Мы уже умеем считать. Нам не нужна никакая внешняя помощь для вычисления 2 + 5.

Кто-то может сказать, что это было слишком просто. Справедливо.

Как насчет 11 x 13? Это было немного сложнее, чем предыдущее. Но и это было легко. Поднимем игру.

Что такое 132 x 462? Это может занять минуту, чтобы сделать вручную. Но это все еще выполнимо.

Хорошо, тогда что такое 388126 x 481924? Теперь все становится сложнее, не так ли?

Мы все еще можем это сделать, но представьте, что десятки их приближаются к вам в одну секунду. Нужно либо специально обучаться, либо быть вундеркиндом.

Проблема

Итак, мы можем делать математические расчеты, мы можем даже делать некоторые сложные, но проблема в том, что большинство из нас столкнется с препятствием, если все начнет становиться немного большим и немного быстрым.

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

Итак, нам нужна рука помощи. Нам нужна вещь, которая будет делать вычисления за нас и, надеюсь, будет быстрее нас.

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

(Первоначальное) решение

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

1. Сумматор: машина, содержащая инструкции о том, как выполнять сложение двух чисел. Машина берет два целых числа, обрабатывает их, т. е. выполняет десятичное сложение, и возвращает другое целое число, т. е. сумму, в качестве результата.
2. Вычитатель: Машина, умеющая вычитать два. целые числа. Как и машина сложения, она принимает два целых числа и возвращает разницу в результате.
3. Множитель: машина, которая спаяна для умножения двух целых чисел. Он принимает входные данные, как и предыдущий, умножает их и возвращает результат.
4. Разделитель: машина-делитель. Аналогично, принимает два целых числа, делит первое на второе и возвращает результат.

Наш план изобретателен тем, что он избавляет нас от трудной задачи, вычислений, и работает как некая волшебная палочка, которая просто соединяет два целых числа любым способом, для которого она была создана.
Они могут, или особенно Multiplier, легко справляются с задачей 388126 x 481924, которая раньше вызывала у нас потливость ладоней.

Но подожди. Как насчет смешанных операций? (4723381 + 9323940) x 882123?
Это может показаться немного странным, но все, что нам нужно сделать, это получить результат 4723381 + 9323940из Сумматора и передать его в Множительвместе с >882123.

И хватит математики на один день.

Когда мы делаем расчет вручную, нам все равно нужно выполнить ровно три шага. Но сейчас мы исполняем один. Мы сократили работу на 66%, нам все еще нужно вмешиваться. Мы по-прежнему узкие места.

Узкое место (сущ.)

узкий участок дороги или перекресток, затрудняющий движение транспорта.

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

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

Решение (2.0)

Если вы присмотритесь, то заметите, что функция, которую выполняет машина, связана набором инструкций, которые были даны ей во время создания машины. Эти инструкции на самом деле обозначают машину как Машина сложения или Машина умножения.

Так как насчет создания такой машины, которая также принимает инструкции (т. е. что делать) вместе с операндами (т. е. что делать) в качестве входных данных?

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

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

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

Компьютер (сущ.)

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

(Уф. Это была плохая идея.)

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

Программа (сущ.)

запланированная серия будущих мероприятий или выступлений.

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

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

(Полуфинальное) решение

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

Как насчет того, чтобы сохранить все шаги, которые необходимо выполнить, вместе с числами, над которыми должны быть выполнены шаги, где-то априорно к расчету, и сообщить об этом процессору. (ну, конечно, он все обрабатывает), чтобы получить и обработать их оттуда в свое время?

Процессор (сущ.)

машина, которая что-то обрабатывает.

(у меня была оригинальная, клянусь.)

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

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

Как вы увидите, термин память для компьютеров весьма аналогичен тому,
как мы думаем о памяти человека. Разница лишь в том, что мы знаем все о памяти компьютера и почти ничего о памяти человека.

Весьма иронично, не правда ли?

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

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

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

И бац! Мы получим результат мгновенно (или как бы ни были быстры процессоры первого поколения).

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

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

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

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

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

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

Мы поговорим об этом подробнее, но пока , вернемся к нашей задаче — как можно быстрее эффективно решать вычисления.

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

Итак, какое же должно быть лекарство тогда?

'До следующего раза.