拝読しました。
「初学者が何かを学ぶ過程」というものは非常に貴重な知見であって、知識を得た後では分からないこと、気づかないことに気づかせてくれることがしばしばあります。
経験者にとって、一番分からないのは「何が分からないのか」ですので、その情報が詰まった「分からなかった頃の話」というものは非常に貴重なのです。
そこで、私も初学時代の頃をちょっと振り返ってみようかと思ったんですが、私のプログラミング初学時代というのは小二の頃に触ったファミリーベーシックですので、ちょっと初学過ぎました。
ただ、当時は本当に色んな本を読みあさったり、ベーマガに載ってためちゃ長いプログラムを丸々全部打ち込んで0とOを打ち間違えてエラーが出て泣いたりしていたので、当時何に悩んだのかは割とはっきり覚えています。知見として役に立つかどうかはともかく、ちょっと懐かしいので当時のことを思い出して書いてみようと思います。内容のレベルが低すぎるのは小学校低学年の考えることだからと勘弁してやってください。
以下、承前。
〇そもそも「入力したプログラムを後から実行する」ということの意味がよく分からなかった
何を言ってるか分からねーと思うんですが、要は対話式の逐次実行しか分からなかったんですね。CLSって入力すると画面がクリアになる。BEEPって入力すると音が鳴る。言った通りのことをファミコンがしてくれる。うん、これはいい。
けど、じゃあ、 「10」 って入れてから入力すると何ですぐ実行されないのか?意外とどの参考書にもこれが書いてなかったんですよ。
で、行番号つけて入力してると、当然ながら段々画面はスクロールしていって、最初の方の行番号は画面から消えるじゃないですか?けどRUNするとちゃんと最初の方の命令が実行される。これは何でなんだ?と。当たり前ですがメモリとか記憶領域とかの知識もないので、最初プログラムってのは画面内に見えているものだけだと思ってたんですよ。
これについては、後々ベーマガで見かけた、「プログラミングというのは「計画書」を作ってあげることなんだ」みたいな表現を見て、そっか、自分が書いたものをファミコンが覚えていて後からその通り実行してくれてるんだな、的に納得しました。
〇「定義」と「動作」の違いが分からなかった
例えばMOVEとDEF SPRITEなんですけど、そもそも「何かを用意する」と「その何かを動かす」というのは別々にすることなんだよ、というのが最初全然分からなかった。というかDEF MOVEとか「動作を定義する命令」もあったんですけどそれ以前の問題ですね。DEF MOVEってその場でSPRITE呼んで動かすことも出来るんで、じゃあこれだけでいいじゃん、なんで処理分けるのとか思ってました。
これについては、確か「用意したキャラクターの色をゲームの展開に合わせて変える」みたいなプログラムがあって、そこで「あ、先にキャラクターだけを用意して、その状態を色々変えることが出来るんだな…」みたいなことでそのメリットというか、意味を納得したような記憶があります。
〇処理があっちこっち動くことの意味がよく分からなかった
GOTOとかGOSUBとか、「今いる場所から別の場所にいってそこの命令を処理して、またメインの流れに戻ってくる」みたいな命令の意味が最初さっぱり分かりませんでした。とにかく、「処理を飛ばして別のところに行く」という概念が理解出来なかった。アルゴリズムの一番基本的な部分ですよね。
これ解決したの実はゲームブックのおかげで、ゲームブックで項番飛ぶの「あ、これファミリーベーシックじゃん!!!」って納得して色んな疑問が一気に氷解したんですが、ゲームブックがなければずっと分からないままだったかも知れない。ゲームブックは偉大。
〇繰り返し処理が本当にさっぱり分からなかった
ファミリーベーシックだとFOR I=1 TO 10 STEP(繰り返す処理):NEXTみたいな感じで書くんですけど、要はfor文ですよね。これ、当時は何度解説読んでもわけわからなくって。多分、「同じ一文の中で処理がループする」「処理を抜ける為のカウンタがあってそれがインクリメントされていく」みたいな概念が難しかったからだと思うんですけど、かなり後まで繰り返し処理がうまく使えなかったんですよ。
これいつから分かるようになったのかよく覚えてないんですが、結局「なんとなくこう書くもんだから書いておこう」みたいに何度も書いてる内に、なんとなく「この回数分この処理が何度もぐるぐるするってことかな…」みたいに分かるようになったような気がします。
なんか改めて思い出すと分かってなさ過ぎて色々とアレですが、まあ初学者には違いなかったと思うのでそのまま書いてみます。ファミリーベーシック楽しかったですよね。
取り敢えずアルゴリズム的な「処理があっちこっち飛ぶ」ことを理解するのにゲームブックはマジ最適だったと思うのでみんなゲームブック読むといいと思います。特に創土社のヤツ。
今日書きたいことはそれくらいです。
私が小学生の時にBASICをやろうと思った
きっかけが、ゲームブックをPCでやりたい
(作りたい)と思ったからでした。
ゲームブックは、変数やフラグなどの概念の理解
や、GOTO文の理解に大変に役立ちました。