お前ら、「コンパイルできて実行ファイルは高速に動作し、けれどもインタプリタ(スクリプト)言語みたいにプログラミングできる言語」が欲しいんだろ?

ネタにマジレス

発言者達に認知バイアスが大いに掛かっているのはよーくわかる。C++は20の仕様を満たす実装が生まれれば、そりゃあ強いだろう。

ただ如何せん蟠りを抱いているので、いつもの事ながらネタにマジレスポエムを書いてけちょんけちょんにされる。

俺の思う今日での「コンパイルできて実行ファイルは高速に動作し、インタプリタ(スクリプト)言語みたいにプログラミングできる言語」

Nimでは?

JavaScriptとPythonを融合し、そのソースコードが出力するのは、最適化したC/C++やJavaScriptというど変態言語である。しっかりと Nim Script なんていうのもある。

もう一つ紹介するなら、Haxeもめちゃつよ言語だろう。C++, Python, Java, CSharp, PHP, Luaと大体行ける。

とは言いつつも、やはりDも捨てがたい。ただ友達(多分。私は勝手に彼のことをそう思っている)に「D言語によるクリエイティブコーディングフレームワーク作っている人」が居るのでそう思ってしまう。これも私の認知バイアスだ。

それと忘れちゃいけないのがLispやSchemeだな。その代わり、たくさんの実装があってどれから触ればいいか、ほぼ同じ言語なのに方言が違うため、色々困る。

インタプリタ言語とコンパイラ言語

今日のマシンスペックでは、どちらがどれだけ早いかなんて気にすることもない。
気にするのはよっぽどシビアな組み込みのや競技プログラミングやゲームプログラミングの世界だろう。

昔はよく、
「インタプリタ言語は1行1行実行して結果を出してるから遅い」
とは言われた。

今でもそれはそうなのだが、マシンスペックが20年前のスーパーコンピューターよりも格段に良いデスクトップないしラップトップマシンがゴロゴロしている今日では、ボトルネックになるのは通信などによるI/O周りの問題ではなかろうかと思う。

それを省けば、インタプリタだろうがコンパイラだろうが気にすることは特になくなった。

REPL搭載言語

インタプリタ言語にはいつもくっついてくる、生真面目で物静かなやつがいる。REPLだ。

律儀にソースコードを何行も書いてプログラミングしている方々には無縁なのかもしれないが、REPLは数行(むしろ1行)の実行結果を見たいときなんかに、ちょっと尋ねられる良き相棒である。隣の机でプレゼン資料を作るのに必死な先輩なんかより声を掛けやすいだろう。

こいつと会話して、エラーをちゃんと読み解く 様にしたら、設計以降のコーディングの問題は割と片付く。

ちょっと昔はインタプリタ言語を使う利点としてREPLが挙がっていたと思うが、今となってはほぼどの言語にも搭載しているといっても過言ではないだろう。

誤解しないでいただきたいのが、今日のコンパイラ言語も1行1行実行して結果を出しているという訳ではない

コンパイラ言語だって、コンパイル時に最適化という処理を行い、あなたの書いたソースコードをコンピューターが読みやすくかつ実行しやすい処理に書き換えているのである。この辺の話は思い切って LLVMの実装について調べてみても面白いのかもしれない。私はまだ踏み込んでいない。

Smalltalk環境はなぜ流行らなかったのか

Smalltalk環境は本当にすごいと思った。Pharoを一度どこかのドキュメントを読みながらでいいから触ってほしい。

しかし、流行らなかった。なぜかはsumimさんがよく存じ上げていると思う。

また、これも確かに的を得ているのかもしれない。

「コンピューターを便利に使いたいだけなのに、アプリ開発環境まで積んでいる」

私の様に幼少期はおもちゃを分解して中身を覗くのが楽しくて仕方のない劣化知的生命体には、
「こんなに素晴らしい環境が流行らないのはおかしい!」
と思ってしまうが、世の中そうではないらしい。

みんな、道具を作るのは面倒だし難しいと思っているのだ。

ましてや、
「ふとした拍子にプログラムの中身を開けてしまったら」
と考えると、怖いのだろう。

でもさ、痒いところに手が届かなかったら、道具作りたいじゃん

自分はそうである。

探したって良いのだろうけれど、手元に作れる環境があるのに作らないという選択に対して、とても面倒くさい印象を覚えがちである。これは自分がへたくそだけどプログラミングやイラストや3DCGモデリングや作曲ができてしまうからそう思ってしまうのかもしれない。

自分の欲しいコンテンツさえ自分で作りたがる

私が欲しいものを誰かが作ってくれれば、それに越したことはない。でも世の中そうでもない。ましてや僕にはお金もない。毎月給料日から3日で現金が財布から無くなり、預金残高も0になるような劣化知的生命体なので。

だったら、自分で能力を身に着けて作るという方向に発想が行きがちなのである。

なので批評家という人種があまり好きになれない。
「お前の欲しいオカズくらい、自分で作れボケ」
とつい思うし、自分に対しても、
「俺が欲しいオカズくらい、自分で作れクソムシ」
と思う。

今日になってよくなったと思うけど、パソコンに思っていた「不自由」

リンゴや窓のシンボルのOSは、せっかくそのパソコンに開発環境を作るポテンシャルがあったとしても、ユーザーをただのOS利用者として閉じ込めておこうという雰囲気をものすごく感じていた。

15年前くらいだったら、下手すると開発環境を作るのに、小学生のお小遣いでは手に入れることのできない様な額が必要だった。Visual Studio 6が出たての頃の話。

その辺りの意識が変わり始めたのは、やはりインターネットの影響だろうか。HTMLがWindowsのメモ帳でも組めることを知った私は、水を得た魚の様になっていたと思う。

ソフトウェア開発などの不自由が最近のリンゴや窓のシンボルのOSでも改善された様子があるので、悪くはない世の中になったのかなとは思う。

ただ、私としては、もっと気軽にちょっと便利なツールを、いろんな人たちが自由に作ってくれるといいと思っている。

まとめ

コンピューターを使った創作活動は楽しい。ついでに言うと、コンピューターと協力して作る創作活動は楽しい。だから私はプログラマでいることにこだわり続けるのだろうし、コンテンツ制作者になることにこだわり続けるのだろう。

解ってくれる人が居ればそれでいいが、解ってもらえるきっかけがいろんな人に舞いこんだらなと思う。

だからどの言語が将来性がないとか、どのフレームワークはお終いだとか。そんなのは少し脇に置いて、自由にモノを作りたいだけなのだ。

確かに、使う道具は洗練されていた方がいいし、新しい考え方や古来からある優れた考え方を取り入れた道具・思考は積極的に取り入れるべきだ。

「いつまで不平不満を垂れているだけユーザー様でいるんだ? スペルバインダーの世界じゃあるまいし」


まんじゅ(´ん`)@CoderDojo駄Mentor

CoderDojo Sapporo/Sapporo East の駄メンターです。 子どもたちにオープンソースソフトウェアの布教をしています。

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント