Rustの安定性

Rustというプログラミング言語と数年心中する決意をしたのですが、民間(というか、比較的かるいのりでやる衛星打ち上げといった方が正しいかも)の衛星打ち上げに使われる言語としてMITの国土防衛系の研究をするLincon Labsが紹介しています。

https://www.youtube.com/watch?v=46JtinmZooY&feature=youtu.be&t=13867

一言でいうと、ソフト・ハード共にオープンソース化していき、衛星等すごく使い方によっては危険なハッキングされやすくなるよ、でも監視の目も増えて要するに開発の周辺環境が変わるよ、それにRust使えるかもよと述べております。特に、組み込み系においては、型安全性も保証されており、その上、c++と同程度の演算スピードが出るよという謳い文句です。

最近だとMicrosoftがOSの開発で部分的に使い始めたり、FacebookのLibreでもベース言語になったりいろんなところで採択が進んでいるRustですが、深く勉強すればするほど少し複雑な気持ちで、完璧な道具なんて存在しないのだから、しょうがないんだけど、例えば、 async周りの議論も結構迷走してたりしてました。

とはいえ、道具を使う上で利得のみならず、弱いところも含めて理解が進んでいるという意味で自分の成長に満足する一方で、どんどんみんなやれよと思いますのでどんどんやればいいと思います。一応公平にC++の肩を保つと

  1. Never use malloc() or free().
  2. Never use new or delete.
  3. Essentially never use raw pointers (*), and use “smart” pointers (uniqueptr or sharedptr) only when necessary.
  4. Avoid templates, threads, locks, and virtual functions.
  5. Avoid C-style strings (char *str) or string functions (strlen(),strcpy()). These are pretty error-prone. Use std::string instead.
  6. Never use C-style casts (e.g.,(FILE *)x). Use a C++staticcastif you have to
  7. Prefer passing function arguments by const reference (e.g.:const Address & address).
  8. Make every variable const unless it needs to be mutated.
  9. Make every method const unless it needs to mutate the object.
  10. Avoid global variables, and give every variable the smallest scope possible.

参照: スタンフォードのネットワークコンピューティングのPDF https://cs144.github.io/assignments/lab0.pdf

のような鬼の十戒的なポリシーのもとでやればいいわけで。この鬼がすでにコンパイラーの中にいるのがRustということでしょう。これもレッシングのコードですね。規範でやるか、アーキテクチャでやるか。