Goの設計思想を深掘りする___Unixから継ぐもの_-_Slidev.pdf
by
Yamakazu
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Go の設計思想を深掘りする ― Unix から継ぐもの
Slide 2
Slide 2 text
名前:山浦麗斗 職業:ソフトウェアエンジニア 使用言語:C# X: ヤマカズ🎾 https://x.com/k_program510 最近はGo を学習中
Slide 3
Slide 3 text
Go 言語はなぜ生まれたのか?
Slide 4
Slide 4 text
Go 言語はGoogle が開発した言語 Go の開発者にはBell Labs 出身のエンジニアがいる 彼らはUnix を生み出した世代
Slide 5
Slide 5 text
Unix が大事にしたもの Small Simple Composable 小さく 単純に 組み合わせる
Slide 6
Slide 6 text
当時のGoogle はこのような課題がありました
Slide 7
Slide 7 text
ビルドが遅い ・C++ 等で巨大なコードベースをビルドすると数十分〜数時間… 生産性が低い 並行処理が難しい ・C/C++ やJava で安全な並列プログラミングが困難 複雑になりすぎた ・大規模開発でコード品質がバラつき、保守が辛い 実行性能も重要 ・高パフォーマンスが求められるが、スクリプト言語では物足りない
Slide 8
Slide 8 text
開発者が常に待ち時間と格闘していた
Slide 9
Slide 9 text
Google に足りなかったのは機能ではありません。
Slide 10
Slide 10 text
足りなかったのは「単純さ」です。
Slide 11
Slide 11 text
Go の設計思想(Why Go? ) Go が目指したもの
Slide 12
Slide 12 text
Google が望んだもの 超高速コンパイル シンプルな言語設計 並行処理を簡単に 依存管理とツールが統一 バグを減らす安全性
Slide 13
Slide 13 text
「巨大コードを大人数で、速く、安全に、並列処理しながら開 発したい」
Slide 14
Slide 14 text
① 学習しやすくなる
Slide 15
Slide 15 text
Go には継承がない 例外もない
Slide 16
Slide 16 text
それは「不足」ではなく 意図
Slide 17
Slide 17 text
制限の理由を知ると 迷わなくなる
Slide 18
Slide 18 text
② 得意領域がわかる
Slide 19
Slide 19 text
Go が得意なのは ・並行処理 ・大規模チーム開発 ・シンプルなバックエンド ・クラウド・インフラ基盤
Slide 20
Slide 20 text
設計思想は 「どこで使うべきか」を教えてくれる
Slide 21
Slide 21 text
③ 弱さもわかる
Slide 22
Slide 22 text
Go は ・複雑な抽象化 ・魔法のようなメタ機能 は得意ではない
Slide 23
Slide 23 text
これはGo だけの話ではない
Slide 24
Slide 24 text
設計そのものの話
Slide 25
Slide 25 text
まとめ 設計思想を知ることは
Slide 26
Slide 26 text
言語の「機能」を覚えることではない
Slide 27
Slide 27 text
言語の「意図」を理解すること
Slide 28
Slide 28 text
ご清聴ありがとうございました