複数のプログラミング言語とパラダイムを使いこなせれば、プログラマとしての幅が広がります。本書は、1週間で1つの新しい言語を学ぶ"Seven Languages in Seven Weeks"を、Rubyの作者まつもとゆきひろ氏の監訳で発行するものです。言語の特徴を映画の登場人物になぞらえて、Ruby、Io、Prolog、Scala、Erlang、Clojure、Haskellという個性的な7つの言語を紹介。各言語の特性とそこにあるプログラミングパラダイムを、体験を通してものにしましょう。
執筆中の著作『プルーストを読めば良いプログラマになれる理由』より
Joe Armstrong(Erlangの作者)
「Gmailのエディタが引用符の起こしと受けを正しく入力させてくれないのですが」
「けしからん.教養のないプログラマと退廃的な文化の兆候だ」
「どうすればよいでしょうか」
「プルーストの『失われたときを求めて』を読んでいることをプログラマの採用条
件に含める必要があるだろう」
「7巻すべてですか」
「そうだ.7巻すべてだ」
「それで句読点の使い方が改善され,引用符の使い方が正しくなるでしょうか」
「それは分からないが,良いプログラマにはなるだろう.禅的な考え方だよ......」
プログラミングを学ぶことは,泳ぎを覚えるのに似ている.いくら理論を学んでも,プールに飛び込んで,息をしようと喘ぎながら水の中で手足をばたつかせる経験には代えられない.最初水中に沈んだときはパニック状態になるが,水面にひょいと顔を出して空気を飲み込むと,うれしい気分になる.「自分は泳げる」と思えるからだ.少なくとも,私は泳ぎを覚えるときそんな風に感じた.
プログラミングにも同じことが言える.学び始めが一番難しい.水に飛び込む気持ちになるには,良い先生が必要だ.
Bruce Tateはそんな先生だ.本書はプログラミングを学ぶときに最も困難な時期,すなわち最初のとっかかりの機会を提供するものだ.
興味のある言語のインタープリタまたはコンパイラをダウンロードおよびインストールする面倒な作業を何とか終えたとしよう.次に何をすべきだろうか.最初のプログラムはどのような内容だろうか.
Bruceはこの質問に見事に答えてくれる.「本書に掲載したプログラムまたはプログラムの一部を単に入力して,本書と同じ結果が得られるかどうか確認してみよ.自分でプログラムを書こうなどと思ってはいけない.本書の例を単に写すだけでよい.自信がついてくると,自分のプログラミングプロジェクトに挑戦できるようになる」.
何か新しいスキルを取得するときに実行すべき最初のステップは,自分で新しく何かを行えるようになることではなく,他の人が既にやってみせたことを自分でも再現できるようになることである.これが,新しいスキルを身につけるための最短経路だ.
新しい言語でプログラミングを始めるときに行うのは,その言語を構成している基本原理を理解するための難しい練習をこなすことなどではない.むしろ,セミコロンやカンマを正しい位置に指定するとか,何かを間違えたときにシステムが出力する奇妙なエラーメッセージを理解するといった単純なことだ.プログラムを入力し,コンパイラエラーをなくすという面倒な作業を終えて初めて,さまざまな構文の意味を考え始めることができるのである.
プログラムの入力と実行という機械的な作業を終わらせてしまえば,あとはゆったりくつろげる.残りの作業であるコードの解釈は潜在意識がやってくれるからだ.脳が意識してセミコロンの位置を決めている間に,潜在意識が表面的な構文の下に隠れている深い意味を理解する.そしてある日突然,論理プログラムの深い意味や特定の言語が特定の構文を備えている理由が分かるのだ.
多くの言語について少しだけ知っていると有用なスキルになる.筆者は,特定の問題を解くために,PythonやRubyを少しだけ理解する必要があると気づくことがよくある.また,インターネットからダウンロードするプログラムはさまざまな言語で書かれており,個人で使うには少し手を入れなければならないことが多い.
各言語にはそれぞれ,イディオム,長所,短所がある.さまざまなプログラミング言語を学ぶことによって,自分が興味を持っている種類の問題を解くのに最適な言語が分かるようになる.
喜ばしいことに,本書の著者であるBruceのプログラミング言語の好みは多岐にわたっている.彼はRubyのような確立された言語だけでなく,Ioのようなあまり評価されていない言語も取り上げている.プログラミングとは結局,理解することであり,理解できるかどうかはどれだけアイデアの引き出しがあるかにかかっている.したがって,新しい言語を直接体験することは,プログラミングが何たるかをより深く理解するために欠かせない.
禅の指導者は,数学が出来るようになりたければラテン語を勉強せよと言うだろう.プログラミングでも同じだ.オブジェクト指向プログラミングの本質を深く理解するには,論理プログラミングや関数型プログラミング(FP)を勉強する必要がある.関数型プログラミングに上達したければ,アセンブラを勉強する必要がある.
筆者がプログラマとして経験を積んでいた頃,プログラミング言語を比較した本は人気があったが,その大半は学術的な本で,言語の実際の使い方に関する実践的な情報は得られなかった.そうした状況が,その当時のテクノロジを反映していた.当時は,言語の概念について読むことはできたが,それを実際に試してみるのは事実上不可能だった.
現在では,概念について読むことができるだけでなく,実際に試してみることができる.泳ぐのは楽しいだろうかと思いながらプールサイドで突っ立っているのと,プールに飛び込んで水を楽しむのとでは雲泥の差がある.読むのと実際に試すのも,同じくらい大きな違いがある.
本書を心からお勧めする.皆さんが私と同じように本書を楽しまれるよう願っている.
2010年3月2日
Erlangの作者
Joe Armstrong
ストックホルムにて
登録情報
|
|
|
|