Rustは高学歴御用達言語なのか?

Rustは高学歴御用達言語!?

Rustはよく、難しい言語だと言われる。

その文脈で、低学歴の人はこんなことを言ってるらしい。

Rustは高学歴御用達言語…

「正直Rustやってる人例外無く高学歴で(本当にただの1例としても例外を見た事がない)、『自分や自分と似ている人にとって難しくない』だから『難しい言語では無い』という閉じた世界しか見てない人にありがちな認知の歪みがあると思ってる」

確かにおれも京大卒だし、 これは実際に事実っぽいところもあるのだが、 では一体なぜそうなってしまうのだろうか?

可能性として2つ考える。

  1. Rustは本質的に難しい言語であり、高いIQがないと書くことが出来ない。
  2. Rustを書くためには学習が必要であり、低学歴の人は学習をする能力が低いからRustを書けるようにならない。

ここでは「書ける」というのは、その言語を使ってアプリケーションを開発出来る程度のことだと定義する。

結論をいうと、おれは2が真実だと思っている。

ちなみにおれは、Rustを仕事で書いてそろそろ3年になるし、 lolをはじめとして、 色々なRust製ソフトウェアを公開しているから、 おれがここで論じる立場にある人間かどうかは、それらを見て判断してもらえばいい。

Rustは簡単な言語である

1についていうと、Rustはむしろ簡単な言語だと考える。 基本仕様自体そこまで複雑ではないし、 よく槍玉に上げられる所有権だとか借用という概念も、 結局他の言語で書いていた時にコードの外で管理してたものを コードの中で管理しましょうということに過ぎない。 おれはRustの前はScalaを書いて仕事していたが、 Scalaでのソフトウェア開発は完全に地獄だった。

おれはHaskellやPrologなども浅くは理解しているつもりだが、 これらでアプリケーション開発をすることはさらに 難しいだろと想像し、Haskellでは簡単なテストツールを書く以上には 挑戦したことすらない。Haskellこそ、高IQ御用達言語だと思う。

そもそもだが、所有権という概念自体は、 Linuxカーネルの中でも明確にコメントされている箇所があるくらい、 きちんとしたシステム開発をしようと思えば当たり前の概念だ。

敢えていうと、Future周りは少し難しいかも知れないとは思う。 asyncをつけた関数がどんなコードを生成しているか、 一体Pinとは何なのか。 こういったものを土台にして、 Tokioランタイムはどうやって動作しているのか。 そもそもFutureはなぜ必要なのか?

こういったことを理解するためには、 多少、ドキュメントやコードを読み込む必要があるし、 OSやコンピュータの知識も多少はあった方が助けにはなると思う。 ただ、仕組み自体はそんなに難しいことを言っていないし、 そもそも、ここでいう「書ける」に到達する程度、 つまりアプリケーションを開発する程度であれば、 これらはブラックボックスとして、 ゴリゴリな連中が作ったゴリゴリなライブラリを使うだけでも ほとんど問題ない。

学習の出来ない低学歴たち

おれがさまざまな低学歴の人たちを見ていて思うことは、 単に頭の回転が遅いとかそういうこと以前の問題として、 学習に取り組む姿勢が出来ていないということだ。

彼らは決まって、コスパという言葉を使い、 決まって「1週間で700点がとれるTOEIC」みたいな本を買う。 そもそも本腰を入れて英語学習に取り組めばいいだけの話なのに、 それを常に回避し続ける。

だから、Rustを勉強するためにはある程度学習が必要とわかれば、 それを全力で回避しようとする。

それではいつまで経っても何も得られない。

どうしてこんなことが起こるかというと、 これは努力した体験が欠けていることによると思っている。 中学受験や大学受験で難関校に合格しようと思えば、 一部の天才は例外として、 それなりに膨大な時間の勉強量を必要とする。 大学に入ってからも、 例えばおれが卒業した京都大学の電気電子工学科などは ゴリゴリのブラック学部と呼ばれていて、 膨大な量の努力をしなければたやすく留年する。 おれの代も3割は留年していたはずだし、 半分が留年した代もあったと聞く。 大学院などは理系であればどこも、一定の負荷はかかるものだ。

だから、こういった難所をクリアした人間は、 努力が必要な何かが目の前にあっても、 「まぁおれならやれるっしょ」という感じで考えて、 さっと手をつけることが出来る。 もちろん、その結果、膨大すぎて無理ということがわかり撤退することはあるかも知れないが、 とりあえず取っ掛かりの時点では「まぁやれるっしょ」で前に進める。

一方で、こういった難所をクリアしてこなかった人間は、 この「まぁやれるっしょ」脳汁的なものが出ないから、 少し難しそうに思えばすぐに回避しようとする。 こういった人間はまた、仕事に対する耐性も低く、 少し仕事量が多くなるとすぐにへこたれるし、 少しきつい言葉を言われただけですぐに心が折れる。 挙げ句、モチベーションが失われたのは他人のせいだとか言い出す。 モチベーションの管理はどう考えても自分の責任だろう。 こういった人間の中には大学を中退するものもいて、 これが、特に新卒においては中退あるいは留年が大きなバツとみなされる理由である。 こういった人間は多く場合、仕事に耐性がないというのが経験則としてあるということだ。 おれは、特に学部レベルでの中退は犯罪歴に等しいと思っている。

Rustに話を戻すと、 Rustは今では多くの本が日本語で出ており、 どれか一つを買ってさくっと読めばRustの学習が出来るようになっている。 しかし、おれがRustに出会った2015年にはまだ公式のドキュメントがあっただけであり、 それからオライリーのアーリーアクセスが出たが英語だった。 Rustについてちゃんと学びたかったから、何百ページもあっただろうが 多少気合を入れて読んだものだ。 それはなぜかというと、おれの脳が「まぁやれるっしょ」と判断したからだろう。

今ではさらに整理された本が日本語で出版されていて、 本腰を入れれば長くても一週間では読めるでしょというまさに「秒でボコすだけ」 の状況なのだが、学習に対して耐性がない人はここでも前に進めない。 結果、「Rustは高学歴御用達言語だ」とぶーたれて、一生そこに留まることを選択する。

低学歴は哀れな生き物だ。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。