要約:プログラムはなぜ動くのか2章パート2

記事
IT・テクノロジー

スタックの利用例:再帰関数

再帰関数はループに近い概念だが、大きく違う点は中身があるかどうか。再帰関数は戻った時に同じ作業を複数回行う。
この点ではループと同じだが、違う点として再帰関数は同じ作業を行う際に前回の作業内容や結果を引き継いで上でもう一度行う点。
ループ処理では前回のデータは引き継がずただ同じ作業を繰り替えす。例えるなら、再帰はリゼロの死に戻りのようなもの。
ベースレジスタ
一つのプログラムの先頭のメモリの位置を把握するためのレジスタ、とされていますが、正直現時点でベースレジスタの用途がわかっていないためわかる方は教えてください。
インデックスレジスタ
配列の要素に振り分けられている番号。以下の超簡単なコードで言うと変数Xの中にある数字にそれぞれインデックスが振られている。その例として、インデックス0のあたいは1とされてる。
picture_pc_177e4f3ef5c1fe6b0205eaa65c44d91e.png

上記二つを用いて配列(固まった一連のプログラム)を作成することができる。まず、ベースレジスタを使い、一番最初のアドレスを指定し、それをもとに続くインデックスを指定する。
イメージとしては、アヒルの親鳥がベースレジスタで指定されたプログラムで、ついてく子鳥がその後に指定されたプログラム。

一章まとめ

CPUが行っているのは
・レジスタ、メモリ、周辺装置のデータ転送
・アキュムレータでの算術演算、論理演算、比較演算、シフト演算
・条件分離、繰り返し、無条件ジャンプ
・関数呼び出し、と呼び出し元への帰還
の四つになります
と、前回と今回で大まかに一章をまとめました。いかがでしたでしょうか。
ここですでに苦戦してるかたは、仲間ですw。
僕も一章(わずか15ページ)理解するだけで数時間かかりましたから。
なんなら一度読みだして3ページで挫折してるくらいです。
でも、そんな皆さんにいくつかアドバイス。

1.一つのソースだけで理解しない。
僕はこの本を理解するために半分以上の時間ググってます。わからなければ即ググってください。どっかに自分に合った説明がある、はずです。

2.もしわかる説明がなければあきらめて一旦進む。
いまいち理解できてないのを無視するのは気持ち悪いです。わかります。理由は僕もそうだからです(twitterを見てくれればわかりますw)。
何となくわかってもそれが言葉にできるくらい理解できないと気持ち悪い僕としては余り気は向きませんが、一度飛ばしましょう。
恐らくそこまで詳しく説明されてないことは理解しなくてよい事ですし、もしできてなくて困ったらその時にまたしらべれば良いです。
ずっと一つの所で詰まってるのは時間の無駄です(経験済み)

3.仲間を探す。
こちらの本に限らずですが、難しい本、長い本は途中で飽きますw。
でも中にはそれでも理解しないといけない、したい本があると思います。
そんな時は一緒に進める仲間を探しましょう。僕の場合は永遠と配信して仲間(ほぼいない視聴者w)と作業してる気になって気を紛らわしてます。
ていうかこのブログを書いてるときも配信してます。そんな感じで知識を得る以外に動機をつくってモチベを高めましょう。

こんな感じです。僕もまだ読み終わってない、というか終わる気配もないこの本ですが、皆さんも一緒に頑張りましょう。この本が終るころにはブログの件数もかなり増えそうですがぜひお付き合いいただけたらなと思います。

以上レイでした。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す