QurioWork

日常思ったことと好奇心の追求

Nand2tetrisの紹介

Nand2tetris

最近巷では ChatGPT というAIが話題になっている。 これは、人間の会話を学習して人間のように会話をするAIである。 そして、実はここまでChatGPTが生成した文章である。

ここからは私(人間)がバトンタッチしよう。

私は最近 「もっと純粋にコンピュータサイエンスを楽しみたい」 と思った。

AIに対して、脅威やら何やら怯え過ぎだ。 新しい技術は今後も沢山でてくる。 であれば純粋に興味を持って楽しむのが良い生き方かと。

というわけで、最近興味を持ったのが、タイトルにある「Nand2tetris」だ。 これは『Nand回路を基本構成要素として最終的にテトリスを作ろう』、というコンセプトのオライリー本だ。 本のタイトルは「コンピュータシステムの理論と実装」

本の紹介文にはこんなことが書いてある。

コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです。コンピュータの構成要素は、ハードウェア、ソフトウェア、コンパイラ、OSに大別できます。本書では、これらコンピュータの構成要素をひとつずつ組み立てます。 具体的には、NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。 そして、オペレーティングシステムコンパイラ、バーチャルマシンなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます。

そんなことが400ページちょっとの本で解説可能なのかッ …というのが最初に抱いた感想。 試しに「Nand2tetris」で他の人の感想を調べてみると、とても手ごたえがある内容なようだ。なによりも自分の手でゼロから全てを作っていくというコンセプトが面白そうだ。

なぜ、「Nand2tetris」なのか

「Nand2tetris」を選んだ理由は、以下の通りだ。

  • NandGame や TruingComplete が元々大好き
  • コンピュータの低レイヤー部分をもっと理解したいという欲望
  • 純粋に好奇心

早速購入した

第1章では基本部品をNANDから作成する。 最近「NandGame」で遊んでいたので違和感なく取り組めた。 なによりも、テトリスを作るために使う基礎となるとモチベーションが高まる。

ちなみにこの記事を書いている時点で第1章を読み終えて課題も完遂したところだ。

演習問題

この本には章毎にプロジェクト(演習問題)が設定されている。 演習の問題の答えは載っていないので、用意されたツールを用い自分で考えて実装する必要がある。 「Nand2tetris」で検索すると、他の人の実装例もすぐに見つかる。 ただし、自分で理解し設計し実装できるようになるまでは他人の実装は見ないように心掛けたい。

内容については今後詳しく書いていくつもりだ。