Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
#DeStudy #01 Rust入門
Search
K.Mori
July 31, 2020
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
#DeStudy #01 Rust入門
#DeStudy #01のRust入門スライドです。
K.Mori
July 31, 2020
More Decks by K.Mori
See All by K.Mori
GraphQL入門
morikyon
1
110
Other Decks in Programming
See All in Programming
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.7k
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
260
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
270
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
act1-costs.pdf
sumedhbala
0
140
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
380
Datadog LLM Observabilityで実現する 安全なLLM Usage 管理
3150
0
130
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
600
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
620
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.5k
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Cost Of JavaScript in 2023
addyosmani
55
10k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
Speed Design
sergeychernyshev
33
1.9k
Amusing Abliteration
ianozsvald
1
210
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
630
What's in a price? How to price your products and services
michaelherold
247
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Transcript
もちろん俺らは抵抗するで︖ Rustで kmori (@forestython)
今⽇のテーマ 2
3 Rust
Rust • Firefox の Mozilla がつくった新しいプログラミング⾔語 • 2010年7⽉7⽇に登場 • Stack
Overflowの最も愛されているプログラミング⾔語の 2016年から2019年まで4年連続1位︕ • 以下のソフト / サービスはRustで実装 • Firefox • Dropbox • AWS Lambda (Firecracker) • Discord 4
Rustのいいところ • メリット • くっそはやい • メモリ管理が優秀である • NULL安全と型推論が存在する •
デメリット • 学習コストが半端じゃない 5
実⾏速度 • 私のダメダメな実装よりQiitaの記事⾒たほうが有益なので引⽤ ü https://qiita.com/reki2000/items/55ef54b96b2 6d80ad694 • ダイクストラ法での探索アルゴリズム(枝数30万程度) ü C++
≒ Rust > Go > Julia > Kotlin > Cython > JavaScript > Python • ちなみに私のダメダメ実装でもエラトステネスの篩(指定数以下の 素数をすべて抽出)で⽐較したところ、C++とRustは拮抗してい て、Juliaがその2倍程度、Pythonが10倍程度でした 6
メモリ管理 • メモリ管理⽅法 1. プログラマが気合で管理 (C, C++) → 開放し忘れによるメモリリークの危険性 2.
システムが⾃動で不要なメモリを集約 (GC) → 実⾏時のオーバーヘッド発⽣ • Rustの管理⽅法 ü 値の所有者(=値を格納する変数)がスコープ(=簡単 に⾔うと値を含む関数等)から出た時点で開放 ü 気合で管理してた際の⼀時的な確保/開放が実現可能かつ、 GCのようなオーバヘッドとよしなにしてくれる部分をもつ 7
NULL安全、型推論 • NULL安全 • nullに対するメソッドのコール等をしたら実⾏時に出るエラー String str = null; str.length();
// => java.lang.NullPoinerException を回避するために、コンパイル時にエラーを出すこと • 鬱陶しいnull pointer exception をテスト時に発⾒ もしくは バグのまま納品せずに済む • 型推論 • 簡単に⾔うと型を推測してくれる let num; // => この時点で num は i32型と宣⾔していない num = 100; // => がしかし100の代⼊によって⾃動で定義 8
• サンプル︓ただのFizzBuzz • https://doc.rust-jp.rs/rust-by-example-ja/fn.html • よくある感想 • 正直、型が多すぎてわからん︕ • 関数の引数でも型指定しすぎててわからん︕
• 関数の定義の順番がしていないのでパッと⾒参照関係がわからん︕ 学習コスト 9
タイトル: とりまいれてみよう 10
• Mac $ brew install rust • Ubuntu $ sudo
apt install rustc • Windows スタートボタン → Ubuntu → $sudo apt install rustc ※ Windowsを素のままで使ってコーディングは 正気の沙汰ではない(諸説あり) How to install 11