Эта статья является введением в серию, которую я намереваюсь написать, в которой я пытаюсь воссоздать в рамках исполняемого в браузере JavaScript примитивную, но функциональную компьютерную архитектуру, которая во многом была вдохновлена ​​серией видеороликов, созданных Беном Итером (см. https://eater.net/8bit). Эта серия видеороликов просто фантастическая, и я безмерно благодарен мистеру Итеру за работу, которую он вложил в их создание, а также за его чрезвычайно четкие описания функций электрических и логических схем.

Прежде чем я углублюсь в суть этого проекта, я хотел бы потратить немного времени на объяснение того, ПОЧЕМУ этот проект важен для меня и, я надеюсь, может быть полезен для вас, мой читатель.

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

Я хотел воспроизвести машину, которую сделал Бен, но чувствовал себя вынужденным сделать это, так как мне не хватало места на рабочем столе, которое позволило бы мне оставить долгосрочный проект разбросанным на несколько недель. Я также был несколько ошеломлен, когда узнал, что требования к питанию его компьютера приближаются к 1,2 ампера (хотя, я уверен, многочисленные светодиоды на платах могут составлять значительную часть этой мощности). Наконец, я понял, что могу сделать что-то очень похожее на то, что создал Бен, используя JavaScript и веб-браузер. Размышляя об этом дальше, я пришел к выводу, что такая среда может дать много возможностей для возни с архитектурой процессора и что, кроме того, встроенные инструменты разработчика браузера с консолью и отладчиком могут дать мне возможность исследовать части модулей без необходимости писать пользовательский интерфейс для их отображения.

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

Много лет назад, когда я был старшим скаутом, я пытался убедить своего старшего сына присоединиться к нам в походе и разбить лагерь. У него не было энтузиазма по поводу такого проекта, и, когда я спросил его, почему, он сказал мне: «Мои предки уже терпели такие вещи, чтобы мне не пришлось». Хотя я был разочарован в нем в то время, не было никакого способа опровергнуть его логику. Тем не менее, меня постоянно тянет изучать и экспериментировать с «примитивными технологиями», такими как узлы и ремни, по крайней мере отчасти потому, что они позволяют мне оценить изобретательность моих предков, а также потому, что я вижу, что эти вещи лежат в основе многих Инфраструктура вокруг меня. Сто пятьдесят лет спустя в нашей долине все еще используется система оросительных каналов и канав, которая была построена по всему моему дому в долине с помощью лопат, скребков, запряженных лошадьми, и взрывчатых веществ.

Несколько лет назад я прочитал статью Э. В. Дейкстры под названием Под чарами сна Лейбница (см. https://www.cs.utexas.edu/users/EWD/transcriptions/EWD12xx/EWD1298.html). Изучение этой истории прошлого моей профессии приводит меня к пониманию того, что машины и абстракции, которыми я ежедневно пользуюсь, буквально являются воплощением мечтаний и устремлений таких великих людей, как Лейбниц, Бэббидж, Лавлейс, Тьюринг, фон Нейман и многих других, чьи вклады были по праву увековечены и чьи работы составляют фундаментальные основы вычислений. Для меня изучение этих корней путем создания примитивного компьютера помогает мне лучше понять и оценить величие их работ и разделить их мечты.

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

Спасибо за внимание!