プログラミングの学習を始めようとする人がする定番の質問がある。「どのプログラミング言語を選べばいいか」というものだ。
私はこのコラムで以前、JavaScriptからプログラミングを始めてはどうかと書いた。JavaScriptはWebブラウザーさえあれば動作するからだ。例えば「Chrome」であれば、F12キーを押して「Console」タブを選ぶだけで、JavaScriptの対話実行環境を利用できる。
関連記事: 保存していないクレジットカード情報が漏洩する謎、鍵はあのプログラミング言語もっとも、JavaScriptは最初に学ぶ言語としては少し癖が強いとも感じている。どちらかというと、2番目か3番目に学ぶことで視野が広がるタイプの言語ではないだろうか。
私が初心者に勧めるとしたら候補は2つある。「Ruby」と「Python」だ。
私がRubyを勧める理由は、「プログラミングの楽しさ」を体験できる点にある。個人的に好きなのがRubyの「timesメソッド」だ。整数オブジェクトがtimesというメソッドを持っており、このメソッドに「処理の内容」をブロックとして渡すことで、整数の回数だけ繰り返し処理を行える。例えば、1から10までを表示するRubyのプログラムは「10.times do |i| p i+1 end」になる。
「整数自体がメソッドを持っていること」「メソッドに処理を引数のように渡せること」が自分にとって新鮮だった。何より「10.times do」がそのまま「10回やる」という英語になっているのが楽しい。C言語などのforループだと、特定の回数の繰り返し処理を行うには、どのような条件を設定するかをいちいち考えなければならず少し面倒だ。
Rubyの「method_missing」というメソッドを知ったときにも驚いた。定義されていないメソッドを呼び出そうとした場合に呼び出されるメソッドだ。初心者がうかつに手を出すと危険なメソッドだが、例えば上級者がフレームワークを開発する際に内部で利用することで、そのフレームワークの柔軟性を上げられる。
こうした機能は、Rubyで発明されたものというよりは、「言語おたく」を自認するRuby開発者のまつもとゆきひろ氏が、様々な言語から持ってきてうまくブレンドしたものだ。同氏の卓越した言語デザインセンスがあったからこそ、Rubyはメジャーな言語になったといえる。
一方、Pythonで体験できるのは「ソフトウエアを作る楽しさ」だ。「プログラミングの楽しさと同じではないか」と思うかもしれないが、少し違う。
Pythonのコードを書いていて感じるのは「無機質」だということだ。Rubyのように書いていて楽しいという感覚はあまりない。ソフトウエアのロジックを説明する際に、様々な言語の最大公約数的なプログラムである「疑似コード」が使われることがあるが、Pythonのプログラムはまるで疑似コードのようだと感じることがある。いい意味で没個性なのだ。