Компьютерные программы, позволяющие проводить расчеты с данными, представленными в форме

Обновлено: 06.07.2024


9 . Обработка данных

В предыдущих главах мы встречались с некоторыми полезными инструментами для конкретных вычислительных задач. Например, в главе 7 мы узнали о SQL для извлечения данных из реляционной базы данных.

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

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

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

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

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

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

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

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

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

SQL позволяет нам взаимодействовать с системами баз данных; мы можем попросить программное обеспечение базы данных извлечь определенные данные из таблиц базы данных. С помощью HTML мы можем общаться с веб-браузерами; мы можем указать программному обеспечению браузера отображать определенный контент на веб-странице. Работа с XML немного сложнее, потому что мы, по сути, обращаемся к любой программной системе, которая может быть заинтересована в наших данных. Однако мы можем сказать только «вот данные».

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

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

Рисунок 9.1: Схема, иллюстрирующая основные компоненты стандартной вычислительной среды.


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

ЦП также имеет доступ к часам для определения времени.

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


Компьютерная память , аппаратное обеспечение, в котором хранятся значения данных, бывает разных форм. Оперативная память (ОЗУ) — это термин, обычно используемый для описания памяти, расположенной ближе всего к центральному процессору. Эта память является временной - значения данных в ОЗУ сохраняются только во время работы компьютера (они исчезают, когда компьютер выключается) - и это быстро - значения могут быть переданы в ЦП для обработки, а результат может быть передан обратно в оперативную память очень быстро. Оперативной памяти также обычно относительно мало.

Грубо говоря, оперативная память соответствует популярному понятию кратковременной памяти.

Во всех процессах обработки данных обычно задействованы как минимум ОЗУ и ЦП. Значения данных временно сохраняются в ОЗУ, передаются в ЦП для выполнения арифметических операций, сравнений или чего-то более сложного, а результат затем сохраняется обратно в ОЗУ. Фундаментальной особенностью языка программирования является возможность хранить значения в ОЗУ и указывать вычисления, которые должен выполнять ЦП.

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


Клавиатура является одним из примеров устройств ввода.

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

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


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

Связанный набор аппаратных компонентов включает внешние устройства хранения, такие как дисководы CD и DVD, а также флэш-накопители (карты памяти), которые позволяют физически переносить данные с компьютера.

Там, где ОЗУ соответствует кратковременной памяти, запоминающее устройство соответствует долговременной памяти.

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


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

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


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

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

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

Как организована эта глава

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

Разделы 9.2 и 9.3 содержат начальное введение в язык программирования R для выполнения подобных задач. Эти разделы позволят нам написать и запустить очень простой код R.

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

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

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

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

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

Раздел 9.10 описывает, как форматировать результаты обработки данных либо для отображения на экране, либо для использования в отчетах об исследованиях.

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

<УЛ>
      • 9 . 0 . 0 . 1 Компьютерное оборудование
      • 9 . 2 . 1 Командная строка
      • 9 . 2 . 2 Рабочая область
      • 9 . 2 . 3 пакета
      • Подведение итогов
      • 9 . 3 . 1 выражение
      • 9 . 3 . 2 постоянных значения
      • 9 . 3 . 3 Арифметика
      • 9 . 3 . 4 условия
      • 9 . 3 . 5 вызовов функций
      • 9 . 3 . 6 Символы и назначение
      • 9 . 3 . 7 ключевых слов
      • 9 . 3 . 8 Flashback: Письмо для аудитории
      • 9 . 3 . 9 Именование переменных
      • Подведение итогов
      • 9 . 4 . 0 . 1 Основные типы данных
      • 9 . 4 . 0 . 2 Основные структуры данных
      • 9 . 4 . 1 Пример из практики: подсчет конфет
      • 9 . 4 . 2 вектора
      • 9 . 4 . 3 фактора
      • 9 . 4 . 4 фрейма данных
      • 9 . 4 . 5 списков
      • 9 . 4 . 6 Матрицы и массивы
      • 9 . 4 . 7 Воспоминание: числа в памяти компьютера
      • Подведение итогов
      • 9 . 5 . 1 Назначение подмножеству
      • 9 . 5 . 2 подмножества факторов
      • Подведение итогов
      • 9 . 6 . 1 Правило утилизации
      • 9 . 6 . 2 Приведение типа
        • 9 . 6 . 2 . 1 Принуждающие факторы
        • 9 . 7 . 1 Рабочий каталог
        • 9 . 7 . 2 Указание файлов
        • 9 . 7 . 3 формата текста.
        • 9 . 7 . 4 Практический пример: Точка Немо (продолжение)
          • 9 . 7 . 4 . 1 Пример read.table()
          • 9 . 7 . 4 . 2 Пример read.fwf()
          • 9 . 7 . 4 . 3 Пример readLines()
          • 9 . 7 . 4 . 4 Пример write.csv()
          • 9 . 8 . 1 Пример из практики: школы Новой Зеландии
          • 9 . 8 . 2 трансформации
            • 9 . 8 . 2 . 1 биннинг
            • 9 . 8 . 11 . 1 плавление
            • 9 . 8 . 11 . 2 Кастинг
            • 9 . 9 . 1 Пример из практики: самое длинное географическое название
            • 9 . 9 . 2 Регулярные выражения
            • 9 . 9 . 3 Пример из практики: ржавая пшеница
            • Подведение итогов
            • 9 . 10 . 1 Пример из практики: Точка Немо (продолжение)
            • 9 . 10 . 2 Преобразование в текст
            • 9 . 10 . 3 результата для отчетов.
            • Подведение итогов
            • 9 . 11 . 1 Пример из практики: выставка данных (продолжение)
            • 9 . 11 . 2 Управление потоком
            • 9 . 11 . 3 Функции записи
            • 9 . 11 . 4 Воспоминание: написание функций, написание кода и принцип DRY
            • 9 . 11 . 5. Воспоминание: отладка
            • Подведение итогов


            Эта работа находится под лицензией Creative Commons Attribution-Noncommercial-Share Alike 3.0 New Zealand.

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

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

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

            Ранняя история

            Предшественники компьютеров

            Счеты

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

            Счеты — это цифровое устройство; то есть он представляет значения дискретно. Бусинка находится либо в одном предопределенном положении, либо в другом, однозначно представляя, скажем, единицу или ноль.

            Аналоговые калькуляторы: от логарифмов Непера к логарифмической линейке

            Вычислительные устройства приняли другой оборот, когда Джон Нейпир, шотландский математик, опубликовал свое открытие логарифмов в 1614 году. Любой человек может подтвердить, что сложение двух десятизначных чисел намного проще, чем их умножение, а преобразование задача умножения в задачу сложения — это именно то, что позволяют логарифмы. Это упрощение возможно благодаря следующему логарифмическому свойству: логарифм произведения двух чисел равен сумме логарифмов чисел. К 1624 году были доступны таблицы с 14 значащими цифрами для логарифмов чисел от 1 до 20 000, и ученые быстро освоили новый инструмент, позволяющий экономить труд и выполнять утомительные астрономические расчеты.

            Что наиболее важно для развития вычислительной техники, преобразование умножения в сложение значительно упростило возможности механизации. Вскоре появились аналоговые вычислительные устройства, основанные на логарифмах Непера, представляющих цифровые значения с аналогичными физическими длинами. В 1620 году Эдмунд Гюнтер, английский математик, придумавший термины косинус и котангенс, построил прибор для выполнения навигационных вычислений: шкалу Гюнтера, или, как ее называли мореплаватели, гантер. Около 1632 года английский священник и математик по имени Уильям Отред построил первую логарифмическую линейку, опираясь на идеи Непера. Эта первая логарифмическая линейка была круглой, но Отред также построил первую прямоугольную линейку в 1633 году. Аналоговые устройства Гюнтера и Отреда имели различные преимущества и недостатки по сравнению с цифровыми устройствами, такими как счеты. Важно то, что последствия этих дизайнерских решений проверялись в реальном мире.

            Цифровые калькуляторы: от часов-счетчиков до арифмометра

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

            Расчет часов

            Репродукция счетных часов Вильгельма Шикарда. Устройство могло складывать и вычитать шестизначные числа (с звонком для семизначных переполнений) с помощью шести взаимосвязанных шестерен, каждая из которых поворачивалась на одну десятую оборота за каждый полный оборот шестерни вправо. Таким образом, 10 оборотов любой шестерни вызовут «перенос» одной цифры на следующей передаче и изменят соответствующий дисплей.

            Но, возможно, Шикард не был истинным изобретателем калькулятора. Столетием ранее Леонардо да Винчи набросал планы калькулятора, которые были достаточно полными и правильными, чтобы современные инженеры могли построить на их основе калькулятор.

            Первым калькулятором или арифмометром, произведенным в любом количестве и фактически использовавшимся, была Паскалина, или арифметическая машина, разработанная и построенная французским математиком и философом Блезом Паскалем между 1642 и 1644 годами. Она могла только складывать и вычитать, с числами, вводящимися, манипулируя его циферблатами. Паскаль изобрел машину для своего отца, сборщика налогов, так что это была и первая бизнес-машина (если не считать счеты). Он построил 50 из них в течение следующих 10 лет.

            Арифметическая машина, или Паскалин

            Арифметическая машина, или Паскалин, французский денежный (недесятичный) калькулятор, разработанный Блезом Паскалем c. 1642. Числа можно было складывать, поворачивая колеса (расположенные вдоль нижней части машины) по часовой стрелке, и вычитать, поворачивая колеса против часовой стрелки. Каждая цифра в ответе отображалась в отдельном окошке, видимом вверху фотографии.

            В 1671 году немецкий математик и философ Готфрид Вильгельм фон Лейбниц сконструировал вычислительную машину, названную счетчиком шагов. (Впервые он был построен в 1673 году.) Счетчик шагов расширил идеи Паскаля и выполнял умножение путем многократного сложения и сдвига.

            Счетчик шагов

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

            Лейбниц был активным сторонником двоичной системы счисления. Двоичные числа идеально подходят для машин, поскольку для них требуется всего две цифры, которые можно легко представить включенным и выключенным состояниями переключателя. Когда компьютеры стали электронными, двоичная система стала особенно подходящей, потому что электрическая цепь либо включена, либо выключена. Это означало, что on может означать true, off — false, а поток current — напрямую представлять поток логики.

            Лейбниц предвидел целесообразность использования двоичной системы в вычислительных машинах, но его машина не использовала ее. Вместо этого счетчик шагов представлял числа в десятичной форме в виде позиций на 10-позиционных циферблатах. Даже десятичное представление не было данностью: в 1668 году Сэмюэл Морланд изобрел арифмометр, предназначенный для британских денег, — явно недесятичная система.

            Устройства Паскаля, Лейбница и Морланда были редкостью, но с промышленной революцией 18 века возникла широко распространенная потребность в эффективном выполнении повторяющихся операций. Если другие виды деятельности механизированы, то почему не расчет? В 1820 году Шарль Ксавье Тома де Кольмар из Франции успешно справился с этой задачей, когда построил свой арифмометр, первое коммерческое вычислительное устройство массового производства. Он мог выполнять сложение, вычитание, умножение и, при более сложном участии пользователя, деление. Основанный на технологии Лейбница, он был чрезвычайно популярен и продавался в течение 90 лет. В отличие от современного калькулятора размером с кредитную карту, арифмометр был достаточно большим, чтобы покрыть рабочий стол.

            Жаккардовый станок

            Калькуляторы, такие как арифмометр, оставались популярными и после 1820 года, и их потенциал для коммерческого использования был хорошо изучен. Многие другие механические устройства, построенные в 19 веке, также выполняли повторяющиеся функции более или менее автоматически, но лишь немногие из них имели какое-либо применение в вычислительной технике. Было одно важное исключение: жаккардовый ткацкий станок, изобретенный в 1804–1805 годах французским ткачом Жозефом-Мари Жаккаром.

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

            Жаккардовый ткацкий станок

            Жаккардовый ткацкий станок, гравюра, 1874 г. В верхней части станка находится стопка перфокарт, которые будут подаваться в ткацкий станок для контроля рисунка ткачества. Этот метод автоматического выдачи машинных инструкций использовался компьютерами еще в 20 веке.

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

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

            Не будет большим преувеличением сказать, что на жаккардовом станке программирование было изобретено раньше, чем компьютер. Тесная связь между устройством и программой стала очевидной спустя 20 лет, когда Чарльз Бэббидж изобрел первый компьютер.

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

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

            Разностная машина

            цифровой компьютер, любое из класса устройств, способных решать задачи путем обработки информации в дискретной форме. Он работает с данными, включая величины, буквы и символы, которые выражены в двоичном коде, т. е. с использованием только двух цифр 0 и 1. Считая, сравнивая и манипулируя этими цифрами или их комбинациями в соответствии с набором инструкций, хранимых в своей памяти цифровая вычислительная машина может выполнять такие задачи, как управление производственными процессами и регулирование работы машин; анализировать и систематизировать огромные объемы бизнес-данных; и моделировать поведение динамических систем (например, глобальные погодные условия и химические реакции) в научных исследованиях.

            Далее следует краткое описание цифровых компьютеров. Полное описание см. в см. информатике: основные компьютерные компоненты.

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

            Функциональные элементы

            Типичная цифровая компьютерная система имеет четыре основных функциональных элемента: (1) оборудование ввода-вывода, (2) основную память, (3) блок управления и (4) арифметико-логическое устройство. Любое из ряда устройств используется для ввода данных и программных инструкций в компьютер и для получения доступа к результатам операции обработки. Общие устройства ввода включают клавиатуры и оптические сканеры; устройства вывода включают принтеры и мониторы. Информация, полученная компьютером от своего блока ввода, сохраняется в основной памяти или, если не для непосредственного использования, во вспомогательном запоминающем устройстве. Блок управления выбирает и вызывает инструкции из памяти в соответствующей последовательности и передает соответствующие команды соответствующему блоку. Он также синхронизирует различные рабочие скорости устройств ввода и вывода со скоростью арифметико-логического устройства (ALU), чтобы обеспечить правильное перемещение данных по всей компьютерной системе. ALU выполняет арифметические и логические алгоритмы, выбранные для обработки входящих данных, с чрезвычайно высокой скоростью — во многих случаях за наносекунды (миллиардные доли секунды). Основная память, блок управления и АЛУ вместе составляют центральный процессор (ЦП) большинства цифровых компьютерных систем, а устройства ввода-вывода и вспомогательные запоминающие устройства составляют периферийное оборудование.

            Разработка цифрового компьютера

            Блез Паскаль из Франции и Готфрид Вильгельм Лейбниц из Германии изобрели механические цифровые вычислительные машины в 17 веке. Однако обычно считается, что английский изобретатель Чарльз Бэббидж создал первый автоматический цифровой компьютер. В 1830-х годах Бэббидж разработал свою так называемую аналитическую машину, механическое устройство, предназначенное для объединения основных арифметических операций с решениями, основанными на собственных вычислениях. Планы Бэббиджа воплотили в себе большинство фундаментальных элементов современного цифрового компьютера. Например, они призывали к последовательному управлению, т. е. программному управлению, которое включало ветвление, циклирование, а также арифметические и запоминающие устройства с автоматической распечаткой. Однако устройство Бэббиджа так и не было завершено и было забыто до тех пор, пока его труды не были заново открыты более века спустя.

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

            Джону В. Атанасову, американскому математику и физику, приписывают создание первого электронного цифрового компьютера, который он построил с 1939 по 1942 год с помощью своего аспиранта Клиффорда Э. Берри. Конрад Цузе, немецкий инженер, фактически изолированный от других разработок, в 1941 году завершил строительство первой действующей вычислительной машины с программным управлением (Z3). В 1944 году Ховард Эйкен и группа инженеров корпорации International Business Machines (IBM) завершили работу над Harvard Mark I – машиной, операции обработки данных которой контролировались главным образом электрическими реле (коммутационными устройствами).

            Клиффорд Э. Берри и компьютер Атанасова-Берри

            Клиффорд Э. Берри и компьютер Атанасова-Берри, или ABC, c. 1942 г. ABC, возможно, был первым электронным цифровым компьютером.

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

            В 1946 году Дж. Преспер Эккерт и Джон У. Мочли из Пенсильванского университета сконструировали ENIAC (аббревиатура от eэлектронный nмерический i). интегратор ии cкомпьютер), цифровая машина и первый электронный компьютер общего назначения. Его вычислительные возможности были заимствованы у машины Атанасова; оба компьютера включали электронные лампы вместо реле в качестве активных логических элементов, что привело к значительному увеличению скорости работы. Концепция компьютера с хранимой программой была представлена ​​в середине 1940-х годов, а идея хранения кодов инструкций, а также данных в электрически изменяемой памяти была реализована в EDVAC (electronic d создать vпеременный аавтоматический cкомпьютер).

            Manchester Mark I

            Второе поколение компьютеров появилось в конце 1950-х годов, когда в продажу поступили цифровые машины, использующие транзисторы. Хотя этот тип полупроводникового устройства был изобретен в 1948 году, потребовалось более 10 лет опытно-конструкторских работ, чтобы сделать его жизнеспособной альтернативой электронной лампе. Небольшой размер транзистора, его большая надежность и относительно низкое энергопотребление значительно превосходили лампу. Его использование в компьютерных схемах позволило производить цифровые системы, которые были значительно эффективнее, меньше и быстрее, чем их предки первого поколения.

            первый транзистор

            Транзистор был изобретен в 1947 году в Bell Laboratories Джоном Бардином, Уолтером Х. Браттейном и Уильямом Б. Шокли.

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

            интегральная схема

            Развитие крупномасштабной интеграции (БИС) позволило производителям оборудования разместить тысячи транзисторов и других связанных компонентов на одном кремниевом чипе размером с ноготь ребенка. Такая микросхема дала два устройства, которые произвели революцию в компьютерной технике. Первым из них был микропроцессор, представляющий собой интегральную схему, содержащую все арифметические, логические и управляющие схемы центрального процессора. Его производство привело к разработке микрокомпьютеров, систем размером не больше портативных телевизоров, но со значительной вычислительной мощностью. Другим важным устройством, появившимся из схем БИС, была полупроводниковая память. Это компактное запоминающее устройство, состоящее всего из нескольких микросхем, хорошо подходит для использования в миникомпьютерах и микрокомпьютерах. Кроме того, он находит применение во все большем числе мейнфреймов, особенно в тех, которые предназначены для высокоскоростных приложений, из-за его высокой скорости доступа и большой емкости памяти. Такая компактная электроника привела в конце 1970-х годов к разработке персонального компьютера, цифрового компьютера, достаточно небольшого и недорогого, чтобы его могли использовать обычные потребители.

            микропроцессор

            К началу 1980-х интегральные схемы продвинулись до очень крупномасштабной интеграции (СБИС). Этот дизайн и технология производства значительно увеличили плотность схем микропроцессора, памяти и вспомогательных микросхем, т. Е. Те, которые служат для сопряжения микропроцессоров с устройствами ввода-вывода. К 1990-м годам некоторые схемы СБИС содержали более 3 миллионов транзисторов на кремниевой микросхеме площадью менее 0,3 квадратных дюйма (2 квадратных см).

            Цифровые компьютеры 1980-х и 90-х годов, использующие технологии БИС и СБИС, часто называют системами четвертого поколения. Многие микрокомпьютеры, произведенные в 1980-х годах, были оснащены одним чипом, на котором были интегрированы схемы процессора, памяти и функций интерфейса. (См. также суперкомпьютер.)

            Использование персональных компьютеров выросло в 1980-х и 90-х годах. Распространение Всемирной паутины в 1990-х годах привело миллионы пользователей к Интернету, всемирной компьютерной сети, и к 2019 году около 4,5 миллиардов человек, более половины населения мира, имели доступ к Интернету. Компьютеры становились меньше и быстрее, и в начале 21 века они были широко распространены в смартфонах, а затем и в планшетных компьютерах.

            iPhone 4

            Редакторы Британской энциклопедии Эта статья была недавно отредактирована и обновлена ​​Эриком Грегерсеном.

            Разностная машина № 1, часть, 1832

            Чарльз Бэббидж (1791–1871), пионер компьютерной техники, разработал два класса машин: разностные машины и аналитические машины. Разностные машины названы так из-за математического принципа, на котором они основаны, а именно метода конечных разностей. Прелесть этого метода в том, что он использует только арифметическое сложение и устраняет необходимость в умножении и делении, которые сложнее реализовать механически.

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

            Двоичный, десятичный формат и обнаружение ошибок

            Вычислительные машины Бэббиджа представляют собой десятичные цифровые машины. Они десятичные в том смысле, что в них используются знакомые десять цифр от «0» до «9», и цифровые в том смысле, что только целые числа распознаются как действительные. Числовые значения представлены шестеренками, и каждой цифре числа соответствует свое колесо.Если колесо останавливается в положении, промежуточном между целыми числовыми значениями, значение считается неопределенным, и двигатель заклинивает, чтобы указать, что целостность расчета была нарушена. Глушение — это форма обнаружения ошибок.

            Бэббидж рассматривал возможность использования систем счисления, отличных от десятичной, включая двоичную систему счисления, а также системы счисления 3, 4, 5, 12, 16 и 100. Он остановился на десятичной системе из соображений инженерной эффективности — чтобы уменьшить количество движущихся частей — а также за их повседневное знакомство.

            Разностная машина №1

            Бэббидж начал в 1821 году с Разностной машины № 1, предназначенной для вычисления и табулирования полиномиальных функций. Проект описывает машину для расчета ряда значений и автоматической печати результатов в таблице. Неотъемлемой частью концепции дизайна является печатающее устройство, механически связанное с вычислительной секцией и являющееся неотъемлемой частью ее. Разностная машина № 1 — это первый законченный проект автоматической вычислительной машины.

            Время от времени Бэббидж менял мощность Двигателя. На чертеже 1830 года показана машина, выполняющая вычисления с шестнадцатью цифрами и шестью порядками разности. Для двигателя потребовалось около 25 000 деталей, поровну распределенных между вычислительной секцией и принтером. Если бы он был построен, то весил бы примерно четыре тонны и имел бы высоту около восьми футов. Работы по строительству двигателя были остановлены в 1832 году из-за спора с инженером Джозефом Клементом. Государственное финансирование было окончательно прекращено в 1842 году.

            Аналитическая машина

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

            Аналитическая машина обладает многими важными функциями, присущими современному цифровому компьютеру. Его можно было запрограммировать с помощью перфокарт - идея, заимствованная у жаккардового станка, используемого для ткачества сложных узоров на текстиле. В движке было «Хранилище», где могли храниться числа и промежуточные результаты, и отдельная «Мельница», где выполнялась арифметическая обработка. Он имел внутренний репертуар из четырех арифметических функций и мог выполнять прямое умножение и деление. Он также мог выполнять функции, для которых у нас есть современные названия: условное ветвление, зацикливание (итерация), микропрограммирование, параллельная обработка, итерация, фиксация, опрос и формирование импульса, среди прочего, хотя Бэббидж нигде не использовал эти термины. У него было множество выходных данных, включая распечатку на бумаге, перфокарты, построение графиков и автоматическое производство стереотипов - лотков из мягкого материала, в которые впечатывались результаты, которые можно было использовать в качестве форм для изготовления печатных форм.

            Логическая структура аналитической машины была по существу такой же, как и та, которая доминировала в компьютерном дизайне в эпоху электроники — отделение памяти («Хранилище») от центрального процессора («Мельница»), последовательная работа с использованием «цикла выборки-выполнения» и средств для ввода и вывода данных и инструкций. Называть Бэббиджа «первым пионером компьютерных технологий» не просто так.

            Новая разностная машина

            После того как к 1840 году новаторская работа над аналитической машиной была практически завершена, Бэббидж задумался о новой разностной машине. Между 1847 и 1849 годами он завершил разработку разностной машины № 2, улучшенной версии оригинала. Этот движок вычисляет числа длиной в тридцать одну цифру и может табулировать любой многочлен до седьмого порядка. Конструкция была элегантно простой и требовала лишь примерно одной трети частей, требуемых в разностной машине № 1, обеспечивая при этом аналогичную вычислительную мощность.

            Разностная машина № 2 и аналитическая машина имеют одинаковую конструкцию принтера — устройства вывода с замечательными функциями. Он не только производит распечатку на бумажном носителе в качестве контрольной копии, но также автоматически стереотипирует результаты, то есть отпечатывает результаты на мягком материале, например, на гипсе, который можно использовать в качестве формы, из которой может сделанный. Устройство печатает результаты автоматически и допускает программируемое форматирование, т. е. позволяет оператору предварительно задать расположение результатов на странице. Изменяемые пользователем функции включают переменную высоту строки, переменное количество столбцов, переменные поля столбцов, автоматический перенос строк или перенос столбцов, а также оставление пустых строк через каждые несколько строк для удобства чтения.

            Физическое наследие

            За исключением нескольких частично законченных механических узлов и тестовых моделей небольших рабочих секций, ни один из проектов Бэббиджа не был полностью физически реализован при его жизни. Основная сборка, которую он завершил, составляла одну седьмую часть разностной машины № 1, демонстрационный образец, состоящий примерно из 2000 деталей, собранных в 1832 году.Это работает безупречно по сей день и является первым успешным автоматическим вычислительным устройством, воплощающим математическое правило в механизме. Небольшая экспериментальная часть аналитической машины строилась на момент смерти Бэббиджа в 1871 году. Многие из небольших экспериментальных сборок сохранились, как и обширный архив его рисунков и записных книжек.

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

            Читайте также: