コンピュータは、世界一誠実な読み手

よみもの+手を動かす時間:およそ20分

まず、押してみる

説明はあとにします。下の「実行する」を押してください。

にわ語
まる を かく

ここに絵があらわれます

Ctrl+Enter でも実行できます

円が描かれたはずです。いま起きたことは、こうです。

あなたが書いた(最初から書いてあった)「まる を かく」ということばを、コンピュータが読んで、そのとおりに実行した。プログラミングと呼ばれるものの全体は、結局この一往復でできています。

一語だけ、変えてみる

エディタの中の まる を消して、さんかく と打ちかえて、もう一度実行してみてください。ほししかく も使えます。

たった一語の入れかえで、結果が変わりました。文のかたち(〜を かく)はそのままで、中身だけが入れかわった——これは日本語で「りんごを食べる」を「パンを食べる」に変えるのと、同じ操作です。

二行目を、足してみる

今度は2行のプログラムです。実行すると、何が起きるか想像してから押してみてください。

にわ語
まる を かく
みぎ へ 90 まわる
50 すすむ

ここに絵があらわれます

Ctrl+Enter でも実行できます

コンピュータは、文を上から順番に読みます。「まるを描く」「右へ90度まわる」「50すすむ」。ペンを持った小さな描き手が、あなたの文を1行ずつ読んで動いている——そんな姿を想像してください。

数字は自由に変えてかまいません。9045 にしたら? 50200 にしたら? 予想して、外れたら、それがいちばん面白いところです。

よりみち:この言語はなに?

いま使っているのは「にわ語」という、この庭のために作られた小さな言語です。世の中のプログラミング言語は英語ばかりですが、英語であることはプログラミングの本質ではありません。このコースの後半で、にわ語から「本物の」言語へ橋を渡ります。そしてコース2では——にわ語そのものを、あなたが作る側にまわります。

わざと、困らせてみる

ここで、このレッスンでいちばん大事な実験をします。わざと変な文を書いて、実行してみてください。

にわ語
おおきい まる を かく

ここに絵があらわれます

Ctrl+Enter でも実行できます

実行すると、コンピュータはこう返してきます。「読み方が分かりませんでした」。

ここで注目してほしいのは、コンピュータが怒っていないことです。壊れてもいません。「おおきい、がどういうことか、私には分からなかった」と、正直に困っているだけです。

人間の読み手なら「大きい丸ね、はいはい」と察してくれます。コンピュータは察しません。どれくらい大きいのか、数で言ってもらえるまで動かない。不親切に見えますが、逆です。察しないからこそ、書いたとおりのことが、書いたとおりに起きる。世界一誠実な読み手です。

エラーは、失敗ではなく返事

プログラミングを学びはじめた人の多くが、エラーを「自分が失敗した印」だと感じて、こわくなります。先に言っておきます。ここは多くの人がつまずく場所で、つまずくのが普通です。

でも、見方を変えてください。エラーは、誠実な読み手からの返事です。「ここまで読めた。ここで分からなくなった」という、世界でいちばん正確な読書感想文。この庭では、エラーを出した数だけ、コンピュータとの会話が進んだと考えます。

演習:エラーを3つ、集めてください

下のエディタで、わざといろいろな壊し方を試して、ちがう種類のエラーを3つ集めてみてください。どう壊すかは、あなたの自由です。

にわ語
まる を かく

ここに絵があらわれます

Ctrl+Enter でも実行できます

ヒント1(考え方)

「読み手が困りそうな文」を考えます。知らない言葉を使う、文を途中で切る、記号をまちがえる——日本語の文を壊すのと同じ要領です。

ヒント2(壊し方の例)

たとえば:まる を で止めてみる。まるを かく(スペースを消す)。まる を たべる。それぞれ、返事がちがうことに注目してください。

こたえ(の一例)

「まる を」→ 文の途中で終わったという返事。「まる を たべる」→ 「を」のあとの読み方が分からないという返事。「ほしほし を かく」→ そんな言葉は知らないという返事。

大事なのは、エラーの全部が「どこで・何に困ったか」を教えてくれていることです。あなたの集めた3つが、これと違っていても、まったく問題ありません。

このレッスンで分かったこと

  • プログラム=読み手(コンピュータ)に宛てて書く、曖昧さのない文
  • コンピュータは文を上から順に読んで、そのとおりに実行する
  • コンピュータは察しない。だから、書いたとおりのことが正確に起きる
  • エラーは失敗ではなく、どこで困ったかを伝える返事

あなたはもう、コンピュータと「ことば」で会話しました。これがプログラミングの、すべての出発点です。