Scalaをdisるのが流行ってるらしいので、自分も混ざってみた。半ば自虐気味。
プログラミング言語に対する接し方には、2種類がある。1つは処理を実現する実用品として。もう1つは愛でるための嗜好品として。
多くのライトなプログラマは、言語を実用品としての視点のみで見ている。
「簡単?」「難しくない?」「覚えやすい?」「ちゃんと動く?」「安定してる?」「速い?」「流行ってる?」「廃れたりしない?」「仕事で使える?」「ライブラリ揃ってる?」「Webで使える?」「ゲーム作れる?」
そんな基本的なことに注意を向けている。
いくつかの新進の言語は、その言語に対する予備知識がゼロの状態でググッた際に、嗜好品としての美しさがまっ先に目に入ることがある。
「見ろ、この流線型を」「まるで飛行機を思わせる」「今にも飛び出して行きそうじゃないか」「まさに跳ね馬の名に相応しい」
うん、それは分かった。でも僕は、君をどうすれば利用できるか、どういったことに使うのが適しているかを知りたいんだ。
良く訓練された言語マニアと、実用品としてしか見ない言語ユーザとでは、視点も求める情報も違う。
良く訓練された言語マニアは、ライトなユーザがもっとも気にする「覚えるの簡単?」という要素が気にならない。むしろ難しい言語に対して積極的に挑んでしまう傾向すらある。
また「何ができる?」に対しても強い興味を示さない。「やろうと思えば何だってできる」と思っているからだ。
彼らが気にするのは、言語の「概念」とか「哲学」とか「整合性」とか「パターン」などだ。また、言語の特性を活かした「目新しいパワフルな書き方」に弱かったりもする。
それらは重要な要素ではあるけど、ライトなプログラマの関心とは距離がある上に、ものによっては実用から離れた嗜好品的なものであったりもする。
ここで少し、F1の話をしたい。
F1は面白いスポーツだと思うけど、セナの時代以降、なかなか人気が定着しないでいる。
小林可夢偉がザウバーでフェラーリ相手に互角のバトルをしても「ザウバーで」という前置詞の意味が理解できないと何が凄いのか分からない。何かと前提知識が必要になる難しいスポーツだ。
その上、ファンの間ではKERSがどうとか、ピレリがどうとか良く分からない専門用語が飛び交っていて、私のような初心者はその空気を「排他的」とさえ感じてしまうことがある。
でも、300km/hでストレートを駆け抜け、100km/hを超える速度でカーブをクリアしていく凄さってのは、誰にでも伝わるものだと思う。
プログラミング言語の中にも、せっかく300km/hの直線スピードと、100km/hでカーブを曲がれるトルクを誇っているのに、ファンがその向こう側のテクノロジーの話題ばかりに夢中になっているものがある。
コアなファンは斬新なシャーシの形状を気に入って、これは素晴らしいと褒め讃えているけど、ライトなユーザにはそれが他の言語とどう違うのかいまいちよく分からない。せいぜい95年のベネトンとリジェくらいの差しかないように見える。
その「分からない」という意識が、その言語に対する「壁」として感じられてしまうことがある。
新進の言語を愛でる際に、まず最初にやらないといけないことは「最高時速は300km/hです」という立て札を立てることなんじゃないだろうか。
そして「小林可夢偉は世界中のF1ファンから注目され、期待されています。ドルトムントの香川やUFCの岡見と同じくらい」という但し書きを付けること。
それから、新しく入ってきた人間に「堅苦しく考えずに、好きなように応援すればいいんだよ」と伝えること。
そういうことなんじゃないかと、私は思う。