アプリ開発ナレッジ

アプリ開発のナレッジを掲載します

学習記録Rust概要

はじめに

Rustの勉強記録です
この記事では概要のみ記載して、その後の勉強を進められるサイトの情報を記載しておきます
ほぼ個人のメモみたいな記事です

Rustとは

簡単に言うとC言語の上位種
ハードウェアよりの低レイアのメモリ上のデータを扱える言語で、コンパイルして機械語を生成し、C言語と同水準の高速処理が可能
C/C++言語ではメモリ操作における致命的なバグが発生しやすい文法となっていたが、Rustではバグが発生しにくい設計になっておりメモリ安全性が担保されている
ただし、学習が難しいが、学習難易度は高いため一度学習しておくと一目置かれるスキルセットとなり、技術的に廃れる速度が遅く、さらに今はGoogleAndroidの基盤言語(Linuxカーネル)として採用されたりMicroSoftでも書き換えがあるなど需要があり、技術セットを持っていると高い給料がもらえる可能性がある

Rustの特徴

  • 静的型付け言語
  • メモリ制御実装

Javaのようなガベージコレクションを使用しないため、Rustでは実装者が明示的にメモリ上のデータを確保したり解放したり適切に制御をする必要がある
バグは発生しやすいが高速になる
ガベージコレクション:使用されなくなったメモリを自動的に開放してくれる機能

  • メモリ制御の所有権モデル

C/C++では手動でメモリ管理していたが、重大なセキュリティ脆弱性が多数発生したが、Rustの所有権モデルではコンパイルが通る限りはメモリ安全性が担保されて、人為的ミスが発生しない

Rustの特徴を一言でいうとバグが少なく高速な処理を実現できる言語
※処理速度の速さとしてはPythonRubyなどの処理の遅い言語と比べて30倍速い

Rustの活用領域

  • Webアプリのバックエンド actix-web
  • WebAssembly(WASM)

ブラウザで実行可能なバイナリコードを作成することができて、JavaScriptからRustの処理を呼び出すことができる

  • OS開発
  • 組み込み機器

Rust勉強サイト

初めてRustに触れる人が取り組むことをお勧めされているサイトが以下です
今後勉強する場合はこちらを参照します
The Rust Programming Language 日本語版 - The Rust Programming Language 日本語版

Rustのパッケージサイト

Rustで使えるライブラリがまとめられたサイトはこちらです
https://crates.io/


おわりに

ちなみにC言語命名的にはC→C++C#の流れでRustになったのはなんでなんでしょうね