Udemyでもプログラミングを教えていますUdemy

GoとRust 学ぶならどっち?プログラミング言語

  • URLをコピーしました!

GoとRustの二択でどちら?

テスラがGO推し、トヨタがRust推しという噂を聞きました。しかも自動車等のコンポーネントが複雑に絡み合いつつ、それぞれがある程度独立したものと思われます。自動車とか乗り物に絞った話であれば、ある程度の安全性も考慮が必要かと思われます。

その両者の推し選定の経緯について調べてないので単なる想像ですが、テスラがGo推し、トヨタがRust推しというのは、確かに「それっぽい」と感じます。自分はGoもRustも概要をさらっただけでプロでもなんでもないのであまり当てにならないかもしれませんが。

テスラは新興企業で考え方自体がIT業界に近いイメージがあります。Goはシンプルかつ強力な言語で、シンプルさ優先、使い勝手優先でかなり割り切った言語でもある辺り、非常にテスラらしい選択と感じます。

一方、Rustはなかなか一般化していませんが、とある調査の「愛すべき言語ランキング」でずっとトップを続けています。
通好み、玄人好みする言語というイメージがあります。仕様もしっかり、かっちりしていて、既存のプログラミング言語のあらゆるメリットを考え尽くしてミックスしていい感じにした集大成と感じます。そこが自動車メーカーであるトヨタらしいと感じさせます。

まあ、あくまで素人の単なるイメージですけど。

言語選定、あるいは、MWやFW選定というのは、ターゲットの性格とかを考慮して最適なものを選ぶというのは当然なのですが、それに加えて組織やチームの思想や風土というものも多分に影響します。

ですので、テスラにとっての最適解が必ずしもトヨタにとって、あるいは日産にとっての最適解とはなりません。

それどころか、トヨタの中、テスラの中でも違うかもしれません。そんな非科学的な、非論理的な、と感じるかもしれませんが、みんな違ってみんないい、の世界です。もちろん、統一化すればそれはそれでメリットもありますし、さすがにテスラの中であれもこれも全部あり、というのはそれはそれで問題でしょう。

例えば、本当のところどうかは存じませんが、トヨタは日本企業なので割と長期間同じ人たちが開発に関わるイメージ、テスラは出入りが激しいイメージがあります。

それが正しいという前提で考えると、テスラ的には学習コストが低めで誰が書いても同じようになるGoを使うのは合理的だと思います。一方、トヨタ的には学習コストが高めで、柔軟性も高いがゆえに書き方をルールで縛るなりする必要があっても強力なRustを指向したのはらしいと感じます。

それが何に由来するか。あるコードを書きたいときにGoは一つだけの正解があり、Rustはアプローチの仕方で色々な書き方がある、というように考え方が違う言語です。そのため、Goでは他の言語なら簡単にこう書けるのに、と思う場面はしばしば出てきます。ただ、逆に覚えるべきことが少なく、頻出パターンが明確なので、何をしたいのかがわかりやすいとも言えます。

そういう意味では、正解なんて初めから存在しないと自分は思っています。あるとしたら、それは各社で違います。銀の弾丸なんてどこにもないというのがIT関係のあらゆることに通じる格言だと思っています。

それでは答えにならないと言われるかもしれないので、強いて「正解」をあげるならRustかと思っています。個人的にはGoの割り切りは好きですし、正しいと感じます。が、人を選ぶとも思っています。命に関わるような分野では自分ならちょっと二の足を踏むかと思います(もちろん、しっかりテストすれば良いだけですが)。別に自分の考え方が一般的とは思いませんけど。

念の為、Googleトレンドも見てみましたが、Rustの方が注目度は高そうです。そういう点でもRustに軍配を上げるでしょうか。もっともGo言語は言語名的に一般的すぎて検索しづらいためトレンドもどこまでアテにできるかわからないのですが。Goは既存言語習得者は発想の転換が必要になる部分もあるので、Rustの方が受け入れられやすいとは感じます。

これからも開発が盛んになっていく言語なので、学んでみて損はないです。近くに教えてもらえたり質問ができたりする環境があればいいのですが、なければ独学もできます。Udemy では、有名なプログラマがわかりやすく教材を提供してくれています。おすすめは不定期ですが、セールをやっている時期です。2,000円前後で、10時間の教材を買うこともできます。1ヶ月の返金保証もあり、明らかに価格設定おかしいですw

いつセールをしているかはわからないので、ちょくちょくのぞいてみてください。

 

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次