プログラムは文芸だ

プログラムは小説のようなものです。斬新なアイデアと練りに練られた構成が 必要なのです。わけのわからない呪文の羅列ではありません。

プログラムは簡単だ

多くの人は「プログラムを書く事は難しい事である」と思い違いをしています。 特にプログラムを書けない人はそうです。英語だかなんだかよくわからない記 号が羅列されていて、非常に読みにくいものだと思っています。しかしこれは 思い違いです。プログラムコードは決して読みにくくはありません。それどこ ろか、よいプログラムコードは簡潔で見やすく、しばしば日本語で書いてある 説明よりずっとわかりやすいものなのです。

プログラムは数式のようなもの

プログラムコードはいわば数学でいう数式です。知らない人が見れば数式はわ けのわからない記号が並んだ、見るのも嫌になるようなものでしょう。しかし それを全部日本語で書き下すことを考えてみて下さい。もっとわかりにくくな るでしょう?

数式を理解するのが難しいのは、それらが記述している数学上の概念が難しい からに他なりません。数式が悪いのではありません。同様に、プログラムコー ドが読みにくいのもそれが表しているソフトウェアが難しいからです。プログ ラムコードというのはそうした難しいソフトウェアを精一杯簡潔に記したもの なのです。

プログラムの初心者のよくやる間違いの一つに、コメントをつけようとしてプ ログラムコードの動作を日本語で書く、というのがあります。例えばこういう ものです。

// 配列の添字を0から100を越えない範囲まで順に増やしていく
for(int i=0; i<100; i++){
    //内容が10より大きい場合は中断する
    if( data[i]>10 ){
        break;
    }
}

「コメントをつけよう」と言われると多くの人はこうします。しかし実際のと ころ理解の役に立っているでしょうか?プログラムをちゃんと読める人なら、 日本語の文を読んで理解するよりプログラムの方を読んで理解する方が速いは ずです。

プログラムは外国語と同じ

なぜか、「コメントを付けよう」というと初心者は動作を説明する文章を書き たがります。プログラムですっきりと書いてある事柄をなぜわざわざ日本語で 説明するのでしょう?それはプログラムが読めないからです。プログラムの文 法の基礎は学校で習ったかもしれませんが、それが身についていないからです。

こうしたコメントは、中学生が英語の教科書に書き込みをするのに似ています。 教科書に書いてある単語をいちいち辞書で調べて意味を書いていくのです。 中学生がこれをやるのはいいのですが、英文科卒のプロの翻訳者がこれをやっ ていてはプロ失格です。プロなら英語はすらすら読めて当然なのです。 同様に、プログラムが読めないプログラマも当然のことながらプロ失格です。

中学高校と英語を習ってきて、単語の意味や文法は皆結構覚え ています。それにもかかわらず、多くの人は英語を読み書きできません。それ はなぜでしょう?英語を読み書きできるようになるには、まず読むこと、そし て書くことです。それをしないで単語を覚えたり文法を覚えたりするから、知 識はあっても実際には使えないのです。

プログラムの場合、圧倒的に少ないのが「読む」という行為です。特に「名文」 (あるいは「名プログラム」)を読む機会がないのが残念です。名文でなくても いいから、たくさんのプログラムを読んで、いいプログラムと悪いプログラム の区別ができるようになって下さい。

プログラマは文系の職業である

極端に言えば、プログラマは普通のテクニカルライターと同じ仕事なのです。 ライターは日本語でわかりやすい文章を書くのが仕事で、プログラマはC言語 やJava言語でわかりやすい文章を書くのが仕事です。 さあ、ここで一つ質問です。ここでいう「わかりやすい」とは誰にとってのも のでしょう?もちろん、ライターがわかりやすく書く対象は「読者」 です。では、C言語は?

上の文章を「ライターは日本語で読者にわかりやすい文章を書き、プログラマ はC言語でコンピュータにわかりやすい文章を書く」と解釈した人はいません か?これは間違いです。「コンピュータにわかりやすい文章」っていったい何 ですか?C言語で書きさえすれば、そしてそこに文法間違いさえなければ、コ ンピュータはどう書こうとそこに書いてある通り忠実に実行してくれるのです。

C言語を読む対象はコンピュータではなく、(自分も含む)プログラマなのです。 つまり、C言語で書くプログラムもライターが書く日本語と同様に、それを 読むであろう「人」にとってわかりやすくなくてはならないのです。違いは単 に書く言語が日本語や英語かC言語やJava言語かの違いでしかありません。

まとめ

プログラム言語は日本語や英語などと同じ「言語」です。あるいは数式に例え られるかもしれません。どちらも概念を人に伝えるものであり、人間が読んで わかりやすいものでなくてはなりません。

プログラム言語を学ぶ時は、自分が英語を学んだ時のことを思い出して下さい。 文法や単語を覚えただけで英語が使えるようになりましたか?普通の人は英語 の長文を読んで覚えたことと思います。