Rust(プログラミング言語)単語

26件
ラスト
2.8千文字の記事
  • 5
  • 0pt
掲示板へ

Rustとは、メモリ安全性[1]や並列処理の安全性に注して開発されたプログラミング言語である。

概要

速度、安全性、並行性が特徴のプログラミング言語である。C++と遜色ない実行速度を誇り、GCがないにも関わらず手動のメモリ管理は不要で、しかもメモリ安全である。また、並列処理に起因するバグコンパイル時に検出することができる。

Rust Foundationによって管理されているが、開発オープンコミュニティによって行われている。

構文はCライクであるが、を後置したりする。また"fn" "Vec"のようにキーワードや識別子の省略を多用するのが気持ち悪い特徴的。関数型言語を受けて型推論や代数形、パターンマッチング、タプル高階関数クラス(トレイト)などをサポートしたマルチパラダイム言語である。

コンパイラ切なのもRustの特徴である。分かりやすいメッセージで、問題のあるコード部分に下線を引いて注釈を入れ、時には正しいコードを示してくれたりもする。また、言語仕様や標準ライブラリは処理系メジャーバージョンが変わるまで後方互換を保つ。処理系アップデートしても昔のコードが壊れることは滅多にないのだ。

一部では、Rust入門者にとって厳しい言語であるということで有名である。自動メモリ管理のための機構である「所有権(Ownership)」の概念把握できていないと、頻繁にコンパイルエラーに遭遇し、しかもその意味がわからないのである。ある程度習得できていればひと見て解決できる問題であったりする場合が多く、所有権を理解しないまま何時間も試行錯誤するようなことは時間の無駄となる可性がある。行き詰まったらRustコミュニティで質問したりして、エラーの原因を理解することを勧める。また、ドキュメントやサンプルも眺めておこう。

用途

新しい言語として同時に挙げられることの多いGoなどとべると、中々ニッチな領域を攻めている言語だと言える。Mozilla支援しているからには当然だがブラウザ開発はこれらの特徴にピッタリと当てはまり、Firefoxバージョン48以降で徐々にコンポーネント単位でRustに移行している[2]他、次世代ブラウザエンジンであるServoの開発にも用いられている。Mozillaの外ではDropboxやnpmがWebサービスバックエンドに用いており、ドワンゴも分散ファイルシステム開発Rustを用いているという。

パフォーマンス・生産性の高さからゲーム製作でも使われ、Pistonexitを始めゲームライブラリがいくつも存在する。

Linuxではカーネルバージョン6.1から記述言語に一部採用されている。[3]

ライブラリ

Rustについて言われることとして、標準ライブラリの機が少ないというものがある。なんと正規表現乱数すらく、外部ライブラリを使用する必要がある。パッケージマニフェスト(Cargo.toml)に一行追加するだけではあるが……。

これは開発初期ゆえ少ないのではなく、標準ライブラリを軽量に保つという方針によって意図的に削られたものである。Rustでは外部ライブラリの利用が推奨されており、定番となっているライブラリの評価・改善を公式導で行っていたりもする[4]。このようになっているのは何故かと言うと、先述した後方互換性の保のためである。標準ライブラリAPI自由に改良したり削除したりは出来ないため、議論の余地の少ない機だけ採用しているのである。正規表現乱数ライブラリも当初は標準ライブラリに含まれていたが取り除かれた経緯がある。

Rustライブラリcrates.ioexitにホストされている。的のライブラリが見つけられない場合はAwesome Rustexitのような有志によって作られた索引が役に立つ。

歴史

2006年頃からMozilla社員であるGraydon Hoare氏の趣味として開発が始まった。その後2009年Mozillaによる支援が開始され、現在まで続いている。2010年コンパイラの記述言語がOCamlからRustに移行し、セルフホスト(コンパイラコンパイルする言語自身で書かれていること)を達成した。

日は流れ、2015年に初の安定版であるRust1.0がリリースされた。以降は6週間毎に安定版のマイナーバージョンが上がる列車方式のリリースが行われている。

近年は、技術者向け質問コミュニティサイトStack Overflowユーザ投票において「最も好ましい言語」に選ばれ続けている。[5]

2021年に「Rust Foundation」が設立され、Mozillaから商標インフラ資産が譲渡されている。[6]

関連項目

関連リンク

脚注

  1. *メモリ安全とは、メモリの扱いに起因するバグが発生しない性質のこと。nullポインタによる実行時エラーセグメンテーション違反、バッファオーバーフロー/オーバーランダングリングポインタの発生などといった問題が起こらない。
  2. *https://wiki.mozilla.org/Oxidationexit
  3. *Linuxカーネルのバージョン6.1が公開、カーネル記述にRust言語を一部採用した最初のバージョンexit 2022.12.18
  4. *https://blog.rust-lang.org/2017/05/05/libz-blitz.htmlexit
  5. *開発者の「好きな言語」や「嫌いな言語」--Stack Overflow調査exit 2021.8.9
  6. *プログラミング言語「Rust」のための「Rust Foundation」設立--AWS、MS、グーグルらメンバーexit 2021.2.9

【スポンサーリンク】

  • 5
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

人類には早すぎる動画 (単) 記事と一緒に動画もおすすめ!
提供: 志塔喜摘
もっと見る

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

Rust(プログラミング言語)

25 ななしのよっしん
2021/03/15(月) 23:50:11 ID: qdmHtSlDEK
>残りの1割に副作用とかI/Oとかの現実では重要な問題が含まれてるという弱点がある。

どの非純関数型プログラミング言語はI/Oなどの副作用普通に行うのだから弱点と言われるとハテナ
関数型プログラミング言語は副作用と純関数が強制的に分離されているから合成性とテスタブルの面で手続きよりより扱いやすくなっているのだし

>つまりオブジェクトが全部ユニークで所有権を言語レベルで管理できることと、オブジェクトに状態がないことはほとんど一緒なんだと。

よく分からん
👍
高評価
1
👎
低評価
0
26 ななしのよっしん
2021/04/25(日) 15:15:36 ID: iz38qy13FU
>どの非純関数型プログラミング言語はI/Oなどの副作用普通に行うのだから弱点と言われるとハテナ
それは関数理論的な部分に非純妥協を持ち込んで解決するという話であって、関数それ自体で解決しているわけではない。Haskellとかは得るものは確かにあるが、実用として書きやすいかといわれると。

>>つまりオブジェクトが全部ユニークで所有権を言語レベルで管理できることと、オブジェクトに状態がないことはほとんど一緒なんだと。
>よく分からん
手続きで具体的に何が問題なのかというと、オブジェクトの状態を変更できるやつが複数いるからあるときは正しくあるときは正しくない競合コードを書きがちという点。Rustは記述方式としては手続き的であることを捨てていないが、オーナーシップを強制しているためにそのような競合問題は起こらない。
👍
高評価
0
👎
低評価
0
27 ななしのよっしん
2021/04/25(日) 18:56:18 ID: qdmHtSlDEK
>>26
>それは関数理論的な部分に非純妥協を持ち込んで解決するという話であって
せやね
>Haskellとかは得るものは確かにあるが、実用として書きやすいかといわれると。
そうかな 書きにくいと思うのは普段意識していない事を明示的に書かせるからで(OptionMaybeと同じ)読みやすさ、テスタブル、保守性などを考えるとモナドベース副作用の扱いは悪くないと思うが
複数の副作用Monadが重なった時の問題は確かにあるがそれは別にRustも解決しているわけではないし(モナトラやらeffやら)

所有権と借用は未定義動作とリソース安全性、スレッド安全性に対して有用だがI/Oに対しては特に解決策を提供しているわけではないと思う
(例えばRustはunsafe以外ではnull安全だけどそれはRustオーナーシップのおかげというよりRustOptionを持っているからだし)
👍
高評価
0
👎
低評価
0
28 ななしのよっしん
2021/07/29(木) 04:47:52 ID: l8pP713kXU
Rustのクレートって駄に抽化されててパズルにうんざりすることが多いな
ゼロコスト化なんて実際には存在しないのに
👍
高評価
1
👎
低評価
2
29 ななしのよっしん
2021/07/29(木) 05:15:33 ID: qdmHtSlDEK
ゼロコスト化はランタイムコストが(理想的には)ゼロであって
(抽化によるプログラマが払うコストは)ありますねぇ!
👍
高評価
5
👎
低評価
0
30 ななしのよっしん
2023/04/18(火) 14:30:48 ID: +YDOk8C5P2
最近rustの財団がトレードマーク周りで某魔剤みたいな事やり始めてて
👍
高評価
0
👎
低評価
0
31 ななしのよっしん
2023/07/17(月) 23:03:07 ID: r4D+rem0TO
👍
高評価
0
👎
低評価
0
32 ななしのよっしん
2023/07/17(月) 23:10:38 ID: wPW23E4t5z
Rustは本当に不満点の全くない優れた言語で、特に低レベルエンジニアこそ使うべきなんだけど、勉強しない低レベルな連中には敷居が高いという
👍
高評価
1
👎
低評価
0
33 ななしのよっしん
2024/10/29(火) 21:45:13 ID: +qvmMmCq0M
 使ってみたいけど、なんちゃってプログラマの自分ではこの程度ならC#でいいじゃん、ってなって使う機会がい。
 一般人にとってどういう用途ならこれが必要になるんだ?。
👍
高評価
0
👎
低評価
0
34 ななしのよっしん
2024/10/30(水) 00:24:41 ID: qdmHtSlDEK
一般人はミドルウェア触る事もないしあまり必要にならないかな
自作コマンドライン作るくらいか
👍
高評価
0
👎
低評価
0

ニコニコニューストピックス