Первым «компьютером», который автоматизировал вычисления, была аналитическая машина, изобретенная Чарльзом Бэббиджем (сокращенно Капуста?). Бэббидж хотел улучшения по сравнению с человеческими вычислениями, видя попытку Наполеона Бонапарта перейти от имперской к метрической системе измерений. Интересно, что слово «компьютер» появилось с 1600-х годов. Это относилось к человеку, который будет решать вычисления на бумаге.

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

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

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

Самый первый электронно-программируемый компьютер был разработан Томми Флауэрсом в 1943 году. Он назывался Колосс и был собран из 1700 электронных ламп. Цель Колосса состояла в том, чтобы помочь взломать немецкий шифр Лоренца во время Второй мировой войны. Он был запрограммирован переключением выключателей и вилок, а не написанием компьютерных программ в коде, как мы это делаем сегодня. Звучит как кошмар для отладки для меня…

Возможно, первым по-настоящему работающим цифровым компьютером был ENIAC, изобретенный в 1943 году Дж. Преспером Эккертом и Джоном Мочли. Он весил 50 тонн и занимал площадь 1800 квадратных футов! ENIAC явно расшифровывается как Easy Netflix An’ Chill. Ранние компьютеры использовали электронные лампы для усиления и переключения тока. Это были более крупные части схемы, отсюда и размер ENIAC. Позже мы начали использовать транзисторы для управления потоком электронов.

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

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

Это был большой шаг вперед по сравнению с ENIAC, больше не было фиксированных программ, на перепрограммирование которых могло уйти 3 недели. Вместо этого программы можно было изменять и загружать в память гораздо быстрее. EDVAC, разработанный Нойманном, был одним из первых компьютеров, запускавших программы, хранящиеся в памяти (технически первым был UNIVAC в 1950 году).

В конце концов, транзисторы были введены в компьютерные схемы, и эти компьютеры размером с титана стали меньше. Первый микропроцессор (ЦП с интегральной схемой IBM 4004) был изобретен в 1971 году компанией IBM. Вскоре после этого в 1975 году был изобретен первый «персональный» компьютер, каким мы его знаем сегодня, Altair 8800 (Kenbak-1 1971 года также претендует на это звание). Я расскажу о процессорах/процессорах в следующем блоге.

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

Чтобы проиллюстрировать разницу между современным компьютером и этими ранними персональными компьютерами, давайте быстро сравним таблицу между IBM PC 1981 года и моим HP Omen. IBM PC был пионером на момент своего выпуска, так как это был хорошо сложенный компьютер, которым можно было пользоваться дома. Конечно, по выгодной цене в 3000 долларов…

Довольно невероятная разница всего в 35 лет!

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

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

И это был очень краткий обзор некоторых достижений в области компьютерных технологий. Одна из моих любимых книг, посвященных ранним компьютерам и коду, — Код: скрытый язык компьютерного оборудования и программного обеспечения, и я очень рекомендую ее! Если вы хотите узнать больше об истории компьютеров, тогда Computerphile на YouTube также является хорошим местом для начала.

Ссылки