プログラミング言語の選択とソフトウェア企業の競争優位性に関する本当のところ Smalltalk, Clojure, Lisp

プログラミング言語別の給与:Clojureがトップ。その次は…Smalltalk 🤔

Smalltalk

Smalltalker の給料が一見高く見えますが、そうではなくて、このグラフが示してるのはSmalltalkerの高齢化です。いっときSmalltalkをやっていた、ぼくの実感にも合います。

Smalltalkは、ある世代とともに消えゆく運命にあると言わざるを得ません。限界集落ならぬ限界言語。細々と伝統芸能的にでも継承していければいいんだけど。プログラミング言語も話者が絶えれば、人類から失われます。

Smalltalkは「オブジェクト思考」というか「メッセージ思考」を身に付けるために、「教養」として多くのプログラマーが学ぶべき言語だと思います。〔注:この段落の「思考」は ‘thinking’ であり、「指向」の誤りではありません。〕

Smalltalkという言語がソフトウェア産業にできる貢献は、まだしばらく続くでしょう。実際のプロジェクトで使わないにしても。

したがって、Smalltalkの「限界言語化」を危惧しています。せめて「本物のプログラマー」のための大学教育においては、残して欲しいものです。

Clojure & Lisp

Clojureは一種の「バカフィルター」になっています。つまり、バカなプログラマーがClojureを使っていることは稀です。バカには扱えない言語ですから。

〔クソリプ対策:もちろん「Clojure書いてるバカ」が一人もいないということはないでしょうけど、ほとんどいないとは言えるでしょう。〕

つまりClojureには、優秀なプログラマーについての「自己選択バイアス」のような効果があります。Clojureプログラマーの求人にバカは応募してこないだろうと期待できるからです。これは人材採用の観点では非常に有利なことです。

とはいえ、Clojureも流行ってしまえば、ダメプログラマーも増えるかもしれません。個人的には流行って欲しくないと思っています(笑)

ぼくはRubyを97年に、Railsを05年に始めました。Rubyという言語が、かつて「それを使ってるだけで優秀なプログラマーのシグナル」だった時代から、バカでも使ってる今日までの変遷を知っています。

これはRubyという言語の良し悪しとは関係ありません。それが簡単に使えて、爆発的に普及すれば、何だってそうなります。それが「人工物のエコシステムの進化論」というものです。

その点で言えば、Clojureは「難しい」言語ですから、大衆化しにくいでしょう。いわゆる「ラーニングカーブがなだらかな右上がり」ではなく、「しばらくは難解だが、コツを掴んでから一気に強力な武器に転じる」ような言語です。

このことにはよい面と悪い面があります。よい方を言えば、この言語のコミュニティが「バカ汚染」される可能性は小さいだろうと言えます。悪い方を言えば、採用できる人材の母集団が小さくなる点があります。

これは「質か量か」のトレードオフです。優秀な少数精鋭チームで戦いたいなら、Clojureはおすすめです。猫の手も借りたいなら、RubyやJavaでしょう。実際のところ、スタートアップでRubyが、SIerでJavaが採用される経済学的構造は、一言で言えば「人材調達の容易性」にあると考えています。(今日のこの状況はもちろん「鶏卵」「マッチポンプ」「自己成就的予言」のシステムダイナミクスから生じていると言えるでしょう。)

つまり、Clojureはその特性から言って大衆化しにくい言語であり、「玄人受けする言語」というポジションをキープするでしょう。しばらくは有力な「バカフィルター」として機能するはずです。

あるいは、20年後には、ClojureおよびLispの「限界言語化」を心配する必要があるかもしれませんが……。

ソフトウェア企業にとってのプログラミング言語の意味

複数の言語を比べて「どれがいい言語か」などと問いを立てるのは、炎上のネタでしかなく、生産的な議論になりません。

しかし、「どの言語で最良の人材を採用しやすいか」という問いは、ソフトウェア企業にとってクリティカルに重要であり、かつ言語自体の良し悪しを問わずに議論し、検証できる問いなのです。

Y Combinatorのポール・グレアムが2001年からスタートアップにLispをすすめてるのに、実際にそれを使うスタートアップは全然増えません。それはLispを使っているスタートアップにとって、とてもよいことです。

Lispの本を書いていた時、私は皆がLispを分かってくれたらいいと願っていたものだ。 Viawebを立ち上げた時、私の見方は変わった。Lispを分かって欲しい。 但し競争相手以外に、だ。 — — 普通のやつらの上を行け

ぼくがこんなことを公言したところで、どうせ1000人中1人も行動を変えたりしません。だから、ぼくは安心して、重大な競争優位性の秘密を公言できます。

本当に価値のある助言を実行する人の少ない世界でよかった!