システムプログラミング言語

第7回くらいのServo Readingで話したことをざっくりまとめた。誰がどれを話したかはmangleしてあるので御容赦を。

個人的にざっくりとTwitterなどなどをクロールして得た感想だけど、GoはCompiled Pythonともいうべき立ち位置な気がする。PythonとかPerlとかRubyとかシェルスクリプトとか以上C未満な箇所を、JavaやScalaよりももっとスマートに置き換える、そういう意味での「システム」開発言語。

対する?Rustは、カーネルとかブラウザエンジンとかゲームエンジンとか、ハードウェアに近いエリアの計算機資源をがしがしと叩きまくるための言語。C/C++の面倒くさい因習やエクストリームな部分をうまく隠蔽しつつ、時々必要になったらunsafeブロックで例外的に許容する。その安全性の担保として、コンパイラを使った静的チェックをCPUとメモリにものを言わせてブイブイとかけまくり、機械さまに網羅的にチェックしてもらう。これはこれで「システム」言語。

と考えると、一部の急進派Pythonista(RubyPerlの人も含む)やGo信奉者がなぜRustをdisったり揶揄するのかよくわからない。上手く住み分けできそうなものではあるけど。

個人的にはGoの方が後世に名を残す展望は明るいのではないかと思っている。Go界隈からはstable 1.0だの、ツールが一杯だの、コンパイルが速いだの、響きのいい言葉ばかりが聞こえて来る。隣の青い芝かは確かめてはないですけれども。成長しきった言語の常で、Javaは今や「クールじゃない」し、Scalaもやや妥協めいたニオイを感じるし、ここらで一丁新天地に行くというのはアリっぽい。JavaScriptはNodeさまにかかっている気がするけど、あの子は言語以前に唯一に近い処理系がシステム用途に向いているのかという宗教論争がゲフンゲフン。

Rustは、、、既に色んな競合がいる。C/C++の首を狙い続けるD言語老師もいるし、そもそもC++は最近どんどん「マシ」になってきていて、強い。WIndowsでC99/modern C++が使い難いからチャンスと思っても、RustはLLVMに依存しているので、だったらclangが進化するのを待っても大差ないとか言われたりする。ここでRustがstableになってれば十分に天下を獲る余地はあるけれど、まだまだその日は遠そうでございますれば、ツール類もまだまだ揃ってないのでございますれば、嗚呼、こりゃ前途多難。

とは言え、とは言え、新規学習者にしてみれば今更20余年のC++の歴史を紐解く気にはなれないし、スマートに並列プログラミングとかやりたいし、メモリ管理起因のアレやコレやに悩まされたくないわけで、Rustさまには頑張っていただきたく候。


誤字脱字があったのを修正。ハズカシイ。。。