「プログラムはこうして作られる」という本を読みました。 いや、読んでいます。 まだ、読み切ってないので、タイトルに語弊はありますが、途中まで読んだ段階でメモ書きも含めて役に立ったところを書いていきたいと思います。 内容としては、著者である平山尚さんが作成したSunabaという言語を使用して、テトリスを作ってみようというものです。 あの有名なゲームであるテトリスって、どうやって考えて作られているの?というのがわかります。
プログラムは思ったようには動かない。書いたように動く
プログラムを書いて動かないとき、この考え方をしっかりする必要があります。 当たり前なようで、プログラミング初心者はなかなか意識できていないことではないでしょうか。
何かプログラムを書いて、意図しない画面表示になったときは自分が書いたプログラムがそのようになっています。 なぜ動かないんだ!と苛立ってしまったりすることがあると思います。 自分もハマってイライラしてしまうことがあり、そういうときは冷静に考えられないので、余計解決に時間がかかるという負のスパイラルになっていきます。
結果から考える
書いたように動く、と先ほど当たり前のことを書きました。
うまく動かないとなったときに、書いたプログラムとにらめっこするのではなく、 その挙動が起こうる状態はどんなときか考える、推理しようということが書かれています。
例えば、以下のようなコードを見てください。 ほしい結果は下記の通りですが、これを実行して得られる結果は#が1行に5つ表示されるという結果になります。 このとき、1行しか表示されないのはどんなときか考えることを推奨しています。
4行分繰り返していないのか、そもそも#が5つしか表示されないコードになっているのか、と言ったことが考えられると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
得られた結果から、推理し、原因を追求していくということが大切だと書いてありました。
思ったように書くための3つの思考
今こういう結果である以上、プログラムはこうなっているはずだ、と考えて間違いを推理する。 また、ほしい結果を得るために満たすべき条件は○○だが、満たされているか、を合わせて考える。
これらをふまえた上で、以下の3つの思考をしましょうということが謳われています。
- 動かしてみて、理想と現実がどう違うのかを把握する
- このような現実になっているのはなぜかを考える
- 理想と現実を一致させるために必要なものは何かを考える
「どう間違っている必要があるかを考える」ということは、自分の中でもしっかりと意識していきたいと思います。
機能を知ることより、その機能が目的を果たすかを納得すること
実現したいことのために、こんなことができたらよいなと考えに考え尽くした上で、機能を知ることにより、 どの場面でそれを使うべきかというのが自分のものとして理解できるというような内容が書かれていました。
確かに、今知っている自分の知識で、やりたいことを実現しようとして、「なんかコードが長過ぎる」「手間がかかりすぎる」となってから、機能を知るというのは重要かなと思います。
やりたいことをネットで探せば、ある程度近い内容のコードがあったりして、そういったものを繋ぎ合わせるだけで、動くものが作れたりもする場合があります。 しかし、この本では、自分で考えていくことの大切さはもちろんのこと、自分で考えるためにどうすればよいか、テトリスという題材を元に思考の掘り下げ方を教えてくれました。 実際にSunabaという言語を用いて、書いていくことが良いとは思いますが、本を読むだけでも参考になる点があるので、プログラミング初心者の方にはオススメの本です。
また、読み終わった後に、自分が勉強している言語でテトリスを作ってみるのがよいかなと思います。