プログラミング言語の選択は開発効率を左右する
ポール・グレアム「普通のやつらの上を行け」
ポール・グレアム氏は「普通のやつらの上を行け」(上記参照)というエッセイで、言語の選択の重要性(とLisp推し)を述べている。
かんたんにまとめておくと、彼の会社は開発言語にLispを採用したため、ライバル会社よりも高速にWebサービスをリリースでき、商業的に成功したという話だ。
Lispは難解だが強力な言語で、ハッカー御用達の言語とよく言われる。難解で習得者が非常に少ないため、使用しているライバル会社がほとんどなかったわけだ。
Lispを採用するかどうかはともかく、言語の選択が重要であることについては、私は完全に同意する。
最初の学習言語は何が良いか?
たとえばそう、これからプログラミングを学ぼうとする人がいるとしよう。
その人が機械語を読み書きしようとする選択肢はありえない。挫折率は100%近いだろう。
グレアムのエッセイにもあるように間違っている。
最初の学習言語として、機械語を支持する人はいないが、「アセンブラからやれ」という人はたまにいる。
しかし、今どきアセンブラから入るのはつらいだろう。感覚だけで言うが、挫折率80~90%くらいだろうか?
アセンブラはプログラミング言語が登場する順番に従っているから、理解しやすいだろうか?
しかし学生は国語の後に古文を学ぶのであって、古文から日本語を覚えようとするのは回り道だろう。
あるいは、英語を覚える前にラテン語から覚えようとするのも大変そうだ。
それでは、最初の学習言語は何が良いか。私は昔ならJavaをすすめていただろう。さらに昔ならC言語をすすめていただろう。
だが今ならJavaScriptをおすすめしたい。実行環境(ブラウザ)がかんたんに用意できるからだ。
新しい言語を習得するときに、開発環境の用意はストレスが溜まりやすい。
JavaScriptでなくてもよいが、習得者の人口が多い言語、とくにLL系の言語をおすすめする。
二番目の学習言語は戦略的に選択せよ
だれでも最初に学習する外国語は無条件に英語を選ぶだろう。いや、義務教育の中学校で英語を学ぶのだから、選択肢すら意識しなかっただろう。
しかし、第二外国語は意識的に選択することだろう。マイナーな言語を選ぶ場合でも、それなりの理由があるだろう。もし外国語を利用した職業、たとえば通訳、翻訳家、貿易業者、海外投資家などを目指すような人なら、なおさら重要なのは分かるだろう。
中国語とスペイン語では、道が大きく分かれている。プログラミング言語もそれと同じである。
だから、二番目(以降)の学習言語は、戦略的に選択する必要がある。開発人生を有意義に過ごすためには。
最初の言語は、無難なものがいい。外国語における英語のようなメジャーなものが良い。たとえばCやJavaやJavaScriptが良い。最初からLispだと挫折率が高い。しかし、二番目は主体的に選択すべきだ。二番目以降のLispは選択肢としてありうる。
言語に貴賤はないが、向き不向きは確実にある。あらゆる分野で最強の言語を探すのは時間のムダだが、ある目的に最適の言語を探すことには意味がある。言語も道具であり、手段である。だから、目的が何かに応じて、使う言語も決まってくるはずだ。
職業プログラマの場合、採用や募集の際に言語を指定してくるから、重要なのは自明だ。が、個人開発の場合はどうか? 私は同じことだと考える。個人であっても経営的視点がなくなるわけではないからだ。
言語は開発効率に直結し、ひいては開発費用に影響してくる
なぜ、ソフト開発会社は、採用・募集時に言語を指定するのか。それは言語の選択が、たんなる机上の空論ではなく、開発効率や開発費用に関係してくるからだ。
開発言語によって、同じ機能を実装するのにも、要するステップ数が違い、要する人月が違い、よって開発コストが違ってくる。
また学習の難易度が採用のしやすさにつながり、人件費も異なってくる。これを逆の視点で見ればとうぜん、労働者側は就職・転職の難易度や給与が異なってくる。
これもやはり、外国語のたとえで考えれば分かりやすい。第二外国語の選択に、その国への渡航費用などのコストと、旅行なり投資なりのリターンが関係してくるのと同じことだ。
言語自体よりコミュニティを見る
では具体的にどうやって言語を選ぶのか?
くわしくは別の機会にゆずるが、一言でいえば「コミュニティを見る」、ということをおすすめしたい。
やはり外国語のたとえで考えると、外国語の言語自体で決めようとするのは、労多くして功少なしだと思う。いや言語仕様の話ははてブなどネットをにぎわせている。が、あるていど習得してから判断できるのであって、外部からは分かりにくい。
外国語を学ぼうとするときに、大多数の人は言語構造で決めたりしないはずだ。旅行に行きたいとか、投資がしたいとか、できるようになることで決めるはず。そうすると言語の文法がどうとかよりも、治安とか為替といったほうが重要だったりする。
そういった情報を一言でかんたんに言ったのが、ここでの「コミュニティ」になる。言語のコミュニティ、たとえば公式サイトとか情報発信者のブログとか関連書籍とかから、自分の作りたい方向に沿っているかどうかを見ればよい。
おわりに
最後になるが冒頭の話に戻って、じつは私がLispを知って学ぼうと決めたのには、ポール・グレアムの存在が大きかった。
エピソード自体が強力な説得力があるのと、彼自身がLispの解説書も書いているので、マイナー言語ではあるが飛び込むモチベーションができたのだ。
そしてこれも「コミュニティを見よ」ということに沿っている。グレアムはLispコミュニティの代表的な伝道者だろうから。
ポール・グレアムの本
- 作者: ポールグレアム,Paul Graham,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2005/01
- メディア: 単行本
- 購入: 109人 クリック: 4,884回
- この商品を含むブログ (582件) を見る