なぜ私はRustを好きになれないのか

Rust Sucks Becauseを読んでいてRustのことを思い出し、「まぁそういう面もあるだろうな」と考えつつ、何か自分の感覚とは違うような気がしていた。なぜRustのコードは書いていてあまり楽しくないのだろう、なぜ楽しめないのだろう、自分のせいなのだろうか、前からそんな疑問があった。

Strict(制限が強い)なのはたしかだ。GCを載せて「おまかせ」するより所有権を管理する仕様になっている。この制限を守るとGCが不要となる。いままでの言語とはまったく異なるアプローチだし、新しさがある。

いろいろ考えた挙句こういうことになった。これは自分だけのRustの感じ方だろうと思うので、Rustがよくない言語だと取らないでいただきたい。簡単に言えば官僚的、つまり最初から強い秩序が用意され、プログラマが任意の戦略で秩序を作ろうとすることを抑止する。やりたいことをやりたいルールでやるよりも、与えられた職権に従いなさい、そう感じる。僕の感じ方ではRustはJavaに似ているところがある。GCの有無とかそういうことではなくて、つまりJavaが例外を出すメソッドにthrows ...と書かせるところと、Rustの所有権に関わるレキシカルもの(例えば<'a>)を書かせるところだ。言語から「どの例外を投げるか報告しなさい。所有権はどうなっているのか報告しなさい」と言われ、レキシカルな報告書をいちいち書いているような気分になってくる。何か新しい機能を言語を導入したときに、コード全体に渡ってそれに関わるレキシカルな何かを書かなければいけない状況、これをあまり支持しない人種なのかもしれない。例えばlambda(無名関数)を備えている言語でも、lambdaを使わない箇所ではそのレキシカルなものは影響してこない、関係ないのだ。Rustの所有権云々やJavaの例外安全への配慮はあらゆる箇所にレキシカルに表れてくる。

...でもこうしてRustを試している背景にはRustを好きになりたいという動機があるのは否定できない。ドキュメントに書かれているコード片や、サンプルコードを見るととても良く見える。その印象と、実際に書いた時の印象とに多少落差がある。で、後者の印象が僕にとっては官僚的だったのだ。



Contents © 2017 sharow - Powered by Nikola