Принцип построения компьютера и вычислительных систем

Обновлено: 21.11.2024

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

Добавьте свой клуб в книжные клубы Amazon, создайте новый книжный клуб и пригласите своих друзей присоединиться к нему или найдите подходящий вам клуб бесплатно.

Есть более новая версия этого элемента:

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

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

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

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

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

Лучший способ понять, как работают компьютеры, — создать их с нуля. В этом учебнике учащиеся знакомятся с двенадцатью главами и проектами, которые постепенно создают аппаратную платформу и иерархию программного обеспечения для простой, но мощной компьютерной системы. В процессе учащиеся получают практические знания об оборудовании, архитектуре, операционных системах, языках программирования, компиляторах, структурах данных и алгоритмах, а также о разработке программного обеспечения. Используя этот конструктивный подход, книга знакомит читателей со значительным объемом знаний в области компьютерных наук и синтезирует ключевые теоретические и прикладные методы в одной конструктивной структуре. Результат известен как Nand to Tetris: путешествие, которое начинается с самых элементарных логических элементов, называется Nand и заканчивается через двенадцать проектов компьютерной системой общего назначения, способной запускать Tetris и любую другую программу, которая придет вам на ум.

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

Об авторе

Ноам Нисан — декан факультета компьютерных наук и инженерии Еврейского университета в Иерусалиме.

Шимон Шокен — профессор компьютерных наук и декан-основатель Школы компьютерных наук Эфи Арази IDC в ​​Герцлии, Израиль.

Похвала за…

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

Шимон Шокен и еще 1 преподаватель

Доступна финансовая помощь

или фиксируе с помощью учетной записи или

Создание современного компьютера с нуля: от Nand до Tetris (проектный курс)

Об этом известно

Чего вы добьетесь:

В этом проектно-ориентированном курсе* вы создадите современную компьютерную систему с нуля. Мы разделим это увлекательное путешествие на шесть практических проектов, которые проведут вас от создания элементарных логических элементов до создания полностью функционирующего компьютера общего назначения. В процессе вы самым прямым и конструктивным образом узнаете, как работают компьютеры и как они устроены. Что вам понадобится: Это автономный курс: все знания, необходимые для успешного прохождения курса и создания компьютерной системы, будут даны как часть учебного процесса. Поэтому мы не предполагаем никаких предыдущих знаний в области информатики или инженерии, и все учащиеся приветствуются на борту. Вам не понадобятся физические материалы, так как вы будете собирать компьютер на своем собственном ПК, используя программный аппаратный симулятор, точно так же, как настоящие компьютеры разрабатываются компьютерными инженерами в полевых условиях. Аппаратный симулятор, а также другие программные инструменты будут предоставлены бесплатно после того, как вы зарегистрируетесь на курс. Формат курса: Курс состоит из шести модулей, каждый из которых состоит из серии видеолекций и проекта. Вам понадобится около 2-3 часов, чтобы посмотреть лекции каждого модуля, и около 5-10 часов, чтобы выполнить каждый из шести проектов. Курс можно пройти за шесть недель, но вы можете проходить его в своем собственном темпе. Вы можете посмотреть доклад TED об этом курсе, набрав в Google «nand2tetris TED talk». *О курсах, ориентированных на проекты: Курсы, ориентированные на проекты, предназначены для того, чтобы помочь вам выполнить личный значимый проект из реальной жизни, а ваш инструктор и сообщество учащихся со схожими целями будут давать советы и предложения на этом пути. Активно применяя новые концепции по мере обучения, вы более эффективно освоите содержание курса; вы также получите преимущество в использовании полученных навыков, чтобы внести позитивные изменения в свою жизнь и карьеру. Когда вы закончите курс, у вас будет законченный проект, который вы будете гордиться тем, что будете использовать его и делиться им.

Субтитры: Арабский, Французский, Португальский (Европа), Итальянский, Вьетнамский, Немецкий, Русский, Английский, Иврит, Испанский

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

Получить копию

Отзывы друзей

Вопросы и ответы читателей

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

Списки с этой книгой

Отзывы сообщества

Начните обзор книги "Элементы вычислительных систем: создание современного компьютера с первых принципов"

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

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

Самое важное, что нужно знать о книге, это то, насколько она доступна, другими словами, что вы можете это сделать!. Вы можете начать работать над этим, не имея базовых знаний, кроме программирования (используйте любой ваш любимый язык). Авторы делают акцент, я думаю, на (1) простоте, (2) практическом опыте (учитесь, выполняя проекты, а не читая тексты) и (3) постепенности [небольшие проекты, которые вы можете создать за один уик-энд в время]. Эта книга отлично подошла бы мне в универе, поскольку она больше подходит для моего стиля обучения.

Хорошо, итак, еще немного о книге. Вы получаете логические элементы И-НЕ (и DFF, которые в принципе могут быть получены из них) и строите свой путь вверх: сначала несколько простых логических вентилей, а затем сумматоры и простое АЛУ, затем память и соответствующий ЦП (все это с использованием простой язык описания оборудования и симулятор Java).Собрав себе компьютер, вы затем пишете ассемблер для своего с трудом заработанного машинного языка, а в довершение всего — простую виртуальную машину на основе стека; и выше, компилятор для языка более высокого уровня, предназначенный для вашей виртуальной машины, и, наконец, «операционная система»/стандартная библиотека (предоставляющая простые услуги, такие как рисование кругов на экране).

Зачем вам делать что-то подобное? Почему, особенно если вы уже были там и сделали это с чипами, компиляторами, операционными системами? Подумайте минутку о своем опыте студента университета по информатике. Вы сделали кусочки и куски. Вы прошли курс проектирования оборудования (CSE 371) и в замешательстве уставились на защелки на плате. Вы писали аварийные фрагменты операционной системы (CSE 380); и вы собрали воедино многие части компилятора (CSE 340). Это был отличный (хотя иногда и разочаровывающий), но изолированный и индивидуальный опыт. Вы получили много хорошего образования в области компьютерных наук, но потратили так много энергии, пытаясь уложить в голове отдельные концепции и идеи, что не смогли собрать их воедино, понять, как все это сочетается друг с другом.

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

Я не разгадал всех секретов этой книги (то, что в ней правильно). Вот некоторые из ингредиентов, на мой взгляд:

* интеграция: мысленный образ соединения кусочков головоломки воедино
* практический опыт: очень много рубить дрова и носить воду
* простота: ваше АЛУ выполняет только сложение, отрицание и некоторые простые логические операции; ваш компилятор должен анализировать только язык LL(0) - глубина не имеет значения; мы просто делаем минимум всего, что может быть полезно
* модульность: вы создаете один уровень абстракции и можете его выбросить и вместо этого использовать эталонную реализацию
* маленькие кусочки — каждую главу можно сделать по одному уик-энду каждый. Это 3 месяца, если вы готовы посвящать книге выходные в месяц. Это может занять у вас гораздо меньше времени (я был особенно медленным)
* scaffolding — книга предоставляет всю инфраструктуру, необходимую для работы: все эмуляторы, компиляторы, автоматизированные модульные тесты. Одна ключевая вещь: вы даже получаете файлы скелета для каждого модуля, который вы должны написать (заполнить функции). Это важно. Вам не нужны мелкие препятствия. Вы хотите иметь возможность быстро прогрессировать.
* жесткость - все задания имеют четкое условие успеха; вы точно знаете, к чему стремитесь
* линейность — постоянное ощущение движения вверх, вверх, вверх по лестнице абстракции. Чувство «прогресса» важно
* дружелюбие в одиночку — групповые проекты прекрасны, но эта книга лучше всего работает в одиночку (вам нужно видеть всю картину целиком; недостаточно писать куски систем). Хорошо, что это подчеркивает размер укуса!

Некоторые разочарования или вещи, которые могли бы быть лучше:

* эмулятор VM немного глючит (исключения нулевого указателя, вздох) * глава 9 (изучение языка Jack), в отличие от остальных глав, была для меня слишком открытой (а, найдите что-нибудь, что вы хочется писать и писать). Откровенно говоря, мне неинтересно писать программы на этом дурацком маленьком языке.
* Глава 12 (ОС/stdlib) была немного утомительной (к концу книги хочется просто закончить и получить этот чертов Pong). игра уже работает) Интересно, можно ли решить эту проблему, заменив чрезмерно открытое назначение ch9 некоторыми стандартными библиотечными функциями. Таким образом, ch9 кажется работой над чем-то, а ch12 не такой длинный. Это даже не должно быть представлено как часть операционной системы в ch9. Просто случайное «давайте реализуем умножение!»
* [это я чересчур требователен]: набор тестов, предоставленный для последней главы, мог бы быть более обширным, использовать больше добавочных этапов. Понятия не имею. Создание люксов стоило бы дорого, поэтому я действительно просто требователен, а с другой стороны, важная часть этой книги заключалась в том, чтобы делать очень конкретные ошибки и сталкиваться с деталями на собственном горьком опыте. Так что, возможно, разреженность наборов не так уж и плоха, заставляет вас переоценивать вещи.

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

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