📚

Nand2Tetris読書会(13章)

2022/08/16に公開

概要

Nand2Tetris読書会 を開催しています。
今回取り上げるのは、13章『さらに先へ』です。

前の記事は こちら

内容

これまでの12章分の学習で、コンピュータシステムの構築を学んだ。
ここまでのプロジェクトで実装したソフトウェアには、修正・拡張によって次のような別の設計を取り入れる余地がある。

  • ハードウェアの実現
    • HDL でシミュレートしたハードウェアモジュールを、シリコン上に移して"本物のコンピュータ"へ
    • 実際に Hack を作って、その上で Jack プログラムを実行
      • Verilog-HDL や VHDL などの一般的な HDL で Hack を設計して、実際の回路を製造
      • スマートフォンなどの実在のハードウェア機器でエミュレート
  • ハードウェアの改良
    • ROM 書き込み式から、プログラム読み込み式に変更
      • 読み込んだプログラムを RAM に配置
      • プログラムを格納するための永久記憶装置を、ハードウェアの追加
      • OS のユーザーインターフェースに相当するもの (シェル、DOS) を追加
  • 高水準言語
    • Jack 言語を他の言語に置き換え (例:Scheme)
    • VM の仕様を修正 (例:継承を追加)
  • 最適化
    • VM 変換器
    • 機械語や VM 言語のインターフェイスの改善
  • 通信
    • ビルトインの通信回路をハードウェアに追加して、高水準の通信プロトコルを扱うコードを追加
    • シミュレートした通信回路とやりとりするプログラムを追加 (例:HTTP を話す Webブラウザ)

予習メモ

ハードウェア記述言語 (HDL) の種類

Verilog HDL と VHDL の基本文法がまとめられているページはこちら。

https://miyo.github.io/learning_fpga/docs/book01/languages/

感想

13章自体は、この章で詳しく扱われなかった課題が挙げられているだけなので、読み物として楽しみました。
演習で扱った Jack 言語は、普段の仕事で使っている言語に比べて"できること"が限られていましたが、そのおかげで演習の難易度が高くなりすぎずに取り組めました。

最後に

Nand2Tetris読書会始めました』の記事で始まった読書会が、ようやく終了しました!

途中からもくもくタイムを挟んだ隔週開催になったり、参加者が少なくスキップした回が増えたりしたため、1年半以上をかけて1冊を読み切るという壮大な読書会になってしまいました。

参加者からは、

  • 普段気にしないコンピュータの中身の勉強になった
  • 論理回路や VM など個々の分野の知識はあったが、全体の繋がりを理解する機会が今までなかったので有意義だった
  • 学生時代に学んだことの総まとめのような内容で、復習になった
    といったコメントをもらいました。
    概ね好評だったようで安心しました。

わたし自身は、大学の講義で本書の頭の方の内容を少しかじったくらいの知識しかなかったので、アセンブラやコンパイラなど学ぶことがとても多かったです。
章ごとに zenn の記事を書くと言う目標を立てていたおかげで、予習や復習にしっかり取り組むモチベーションにもなり、より有意義な読書会となりました。

実は、この読書会をやっている間に仕事の内容がガラリと変わったので、今は少し開発から離れた業務に従事しています。
最近手を動かす機会が少なくなっていたので、コードを書く感覚を忘れずにいられたのもよかったです。
次にどんな本を読むのか、読書会を開催するのかは未定ですが、今回身につけた"学習し続ける習慣"はこれからも継続したいです。

GitHubで編集を提案

Discussion