✨
Rustの何が良いのか?PHPではダメなの?
背景
PHPで実装されている社内システムのリプレイスをRustで行うという話を聞いて。
Rustの概要
2015年にリリースされた言語。
Rustは、スピードと安定性を言語に渇望する方向けです
と公式ドキュメントに記載あり。
低水準の処理が可能で、例えばこれまでOSの開発はC言語/C++で行われてきたが、Rustによる開発も出てきている(関連記事)
主に以下の特徴があるとのこと。
- 実行速度がC言語/C++並に高速
- 「所有権」によるメモリ管理で高い安全性
Rustの詳細
実行速度
Rustは以下によってC言語/C++並の実行速度となっている
- ネイティブコンパイラ言語
- JavaやC#と違い、中間言語へのコンパイルではなく機械語に直接コンパイルしている
- ゼロコスト抽象化
- Rustの抽象化は静的ディスパッチのため、実行時に追加でメモリが必要になることがない
- ※プログラミングにおける抽象化とは?
- プログラミングにおける抽象化とは、共通な部分を抽出し、その詳細をブラックボックス化すること
- ガベージコレクションを使用しない
- 「所有権」というシステムでメモリ管理をすることで、ガベージコレクションを不要としているのでその分の処理コストがかかることがない
- ※ガベージコレクションとは?
- メモリ上の不要なデータを自動的に削除する仕組みのこと
安全性
上記にある通りRustは「所有権」でメモリ管理をしている。
それにより実行スピードだけでなく高い安全性も特徴としている。
ガベージコレクションを起用していない点はC言語/C++と同様だが、それらにあるリスクのメモリリーク、メモリへの不正アクセスも「所有権」の機能により回避することを可能にしている。
PHPではダメ?
結論:ダメとか良いとかそういう話ではない、プログラミング言語は適材適所
Rustと比較したPHPお特徴
- スクリプト言語
- コンパイル不要
- ガベージコレクションでメモリ管理
PHPはRustの性能に比較すると速度、安全性においては劣っているが、初心者でも理解しやすいため学習コストの低いという特徴を持っている。
経験者の少ない小規模の組織でちょっとしたWEBシステムを開発する際にはPHPの方が適しているのかも。
補足
何度か出てきた「所有権」は公式ドキュメントを読むと少し理解が深まる
この記事では一旦割愛、また別途まとめるカモ
感想
Rust、圧倒的強者感
PHPは多分可愛いアイドルみたいな存在
参考
- https://doc.rust-jp.rs/book-ja/title-page.html
- https://freelance-start.com/articles/1110
- https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
- https://atmarkit.itmedia.co.jp/ait/articles/2107/28/news010.html
- https://qiita.com/kichion/items/d5d87b30176e1d2d5f54
- https://blog.rust-jp.rs/tatsuya6502/posts/2019-12-zero-cost-abstraction/#:~:text=ゼロコスト抽象化と,いわゆるオーバーヘッドを指します。
Discussion