SlideShare ist ein Scribd-Unternehmen logo
1 von 100
Downloaden Sie, um offline zu lesen
GC生誕50周年を
                        祝って
                    A Semicentennial history of the GC

                                                    nari/中村 成洋
                                      ネットワーク応用通信研究所
GC生誕50周年を祝って - A Semicentennial history of the GC         Powered by Rabbit 0.6.4
自己紹介
自己紹介


       ✓ nari/中村 成洋です
       ✓ 福岡生まれ、島根在住
       ✓ NaCl勤務


                                                               2/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
自己紹介

       ✓ GC歴 3.5年(駆け出し)
               ✓ GC界の中では最弱

       ✓ アイス工場歴 3年
       ✓ 大体一緒くらい

                                                               3/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
本を書きました
 
GC本を知ってる人
    ノシ
おぉ…
持ってる人
  ノシ
なんと…
全部読んだ人
  ノシ
僕だけですね!
今日話すこと
GCに興味を持ってもらう
今日話すこと

       ✓ GCとは
       ✓ 偉人達と共にあるGC
       ✓ 魅力
       ✓ まとめ

                                                             14/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
今日はなす事

       ✓ GCとは
       ✓ 偉人達と共にあるGC
       ✓ 魅力
       ✓ まとめ

                                                             15/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
GCとは
GCとは

                           プログラムが動的に確
                           保したメモリ領域のう
                           ち、不要になった領域を
                           自動的に解放する機能
                              [「ガベージコレクション - Wikipedia」より引用]


                                                                 17/99
GC生誕50周年を祝って - A Semicentennial history of the GC       Powered by Rabbit 0.6.4
GC = ゴミ集め
ナウい言語にGCは必須
       ✓ Ruby
       ✓ Perl
       ✓ Java
       ✓ Haskell
       ✓ etc..
                                                             19/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
そんなGCの仕組みは驚く
 ほど知られていない
さまざまな噂
GC = 魔法?
魔法として登場




        よくわかる現代魔法 2 ガーベージコ
        レクター              23/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
帯にも

                           古(いにしえ)からの魔
                           法、ガベージコレクショ
                           ンの秘密を完全解説
           [「ガベージコレクションのアルゴリズムと実装 − 帯」より
                                     引用]


                                                                   24/99
GC生誕50周年を祝って - A Semicentennial history of the GC         Powered by Rabbit 0.6.4
GC = 一子相伝?
GC好き = 秘密結社?
プログラミングが本当に
               好きな人の中にはGC
               Loverというタイプの人
               が結構います。教科書
               がほとんどないので、な
               にか秘密結社めかた連
               帯感がその人たちの間
               にあるような気がしま
               す。
        [「ガベージコレクションのアルゴリズムと実装 − 監修者                            27/99
GC生誕50周年を祝って - A Semicentennial history of the GC 前書き」より引用by Rabbit 0.6.4
                                                        Powered ]
そんなGC
歴史は古い


       ✓ 1960年に論文発表
       ✓ 今年は「GC生誕50周年」!!
       ✓ GCイヤー


                                                             29/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
歴史を
さかのぼってみよう
今日はなす事

       ✓ GCとは
       ✓ 偉人達と共にあるGC
       ✓ 魅力
       ✓ まとめ

                                                             31/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
偉人達と共にあるGC
実はGCは偉人達と共にあ
      る
John McCarthy
(ジョン・マッカーシー)
 


    http://www.flickr.com/photos/null0/272015955/
どんな人?


       ✓ LISPの父
       ✓ 人工知能の父
       ✓ チューリング賞受賞


                                                             36/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
GCとのつきあい
GCとのつきあい


       ✓ 実はGCの父でもある
       ✓ Mark Sweep GC
       ✓ 50年前に論文を発表

                                                             38/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
LISPからGCは産まれた

       ✓ 最初はなかった
       ✓ Listの操作とかが面倒だったらし
         い
       ✓ ほどなくしてD. Edwardsが実装し
         たそう
                                                             39/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
こんな話も
ルンバ




                                                                   41/99
GC生誕50周年を祝って - A Semicentennial history of the GC         Powered by Rabbit 0.6.4
ルンバの中ではLISPが動
    いている!
やっぱゴミ集めはLispに
                           任せろって
                 [「Lightweight Language Weekend: Language Update
                           (Common Lisp) 竹内郁雄先生」より引用]



                                                                    43/99
GC生誕50周年を祝って - A Semicentennial history of the GC          Powered by Rabbit 0.6.4
Marvin L. Minsky
(マービン・ミンスキー)
 


taken by Bcjordan : http://en.wikipedia.org/wiki/File:Marvin_Minsky_at_OLPCb.jpg
どんな人?


       ✓ 人工知能の父
       ✓ チューリング賞受賞


                                                             46/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
GCとのつきあい


       ✓ GCアルゴリズムを作成
       ✓ Copy GC(47年前)


                                                             47/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
Edsger Wybe Dijkstra
(エドガー・ダイクストラ)
 


photo ©2002 Hamilton Richards : http://userweb.cs.utexas.edu/users/EWD/
経歴


       ✓ ダイクストラ法(最短経路問題)
       ✓ セマフォ考案
       ✓ チューリング賞受賞


                                                                  50/99
GC生誕50周年を祝って - A Semicentennial history of the GC        Powered by Rabbit 0.6.4
GCとのつきあい


       ✓ 三色マーキング
       ✓ Dijkstraのライトバリア


                                                             51/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
Donald Ervin Knuth
(ドナルド・クヌース)
 


Flickr user Jacob Appelbaum : http://flickr.com/photos/ioerror/56359970/in/set-1220741/
経歴
       ✓ Tex
       ✓ METAFONT
       ✓ The Art of Computer
         Programming 鋭意執筆中
       ✓ チューリング賞受賞
                                                                  54/99
GC生誕50周年を祝って - A Semicentennial history of the GC        Powered by Rabbit 0.6.4
GCとのつきあい



       ✓ Lisp2(マークコンパクトGC)



                                                             55/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
Guy Steele Jr.
(ガイ・スティール)
 


    http://labs.oracle.com/people/mybio.php?uid=25706
経歴

       ✓ Schemeの設計
       ✓ Java言語仕様まとめ
       ✓ 並列アルゴリズムの研究
       ✓ ACMグレース・ホッパー賞受賞

                                                                  58/99
GC生誕50周年を祝って - A Semicentennial history of the GC        Powered by Rabbit 0.6.4
GCとのつきあい

       ✓ 並列GCの論文発表(学生時代)
       ✓ ACM Student Award 1975の1位
         論文
       ✓ GCの研究で世界的に有名になっ
         た
                                                             59/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
竹内郁雄先生
 


    http://jibun.atmarkit.co.jp/ljibun01/rensai/genius/01/01.html
経歴

       ✓ 竹内関数(≒tak関数)
       ✓ LISPの神様
       ✓ TAO
       ✓ 未踏ソフトウェア事業

                                                                  62/99
GC生誕50周年を祝って - A Semicentennial history of the GC        Powered by Rabbit 0.6.4
 


    http://jibun.atmarkit.co.jp/ljibun01/rensai/genius/01/01.html
GCとのつきあい

       ✓ 実時間 GC アルゴリズム実装 =>
         TAO
       ✓ GC本監修を引き受けてくださっ
         た!!

                                                             64/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
まつもとゆきひろさん
 
経歴


       ✓ Ruby作者
       ✓ 日経BP技術賞大賞受賞


                                                                  67/99
GC生誕50周年を祝って - A Semicentennial history of the GC        Powered by Rabbit 0.6.4
GCとのつきあい


       ✓ CRubyにGCを実装
       ✓ お仕事でGCを実装(レア!)


                                                             68/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
紹介しきれないけど、まだま
   だ偉人がいる!
竹内先生曰くGCとは

                           50年近くも火が消えず
                           に (ボーボーと燃えてい
                           るわけではないが) 研
                           究が続けられている基
                           幹技術である。
          [「2008年度下期未踏ユース「オープンかつポータブルな
          データベースガーベジコレクション」採択理由」より引用]

                                                             70/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
なぜGCは多くの偉人を引
   きつけたのか?
その魅力について
今日はなす事

       ✓ GCとは
       ✓ 偉人達と共にあるGC
       ✓ 魅力
       ✓ まとめ

                                                             73/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
魅力
私が考える魅力



           1. 制約が多い



                                                             75/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
制約が多い
GCは自由ではない


       ✓ 言語処理系に気を遣ったり
       ✓ OSに気を遣ったり


                                                             77/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
制約から工夫が生まれる
工夫を作るのは楽しい!
私が考える魅力


           1. 制約が多い
           2. 広い土壌


                                                             80/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
広い土壌
広い土壌


       ✓ 様々な人を受け入れる寛容さ
       ✓ 偉人達を見てもいろんな分野の人
         が!!


                                                             82/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
私が考える魅力


           1. 制約が多い
           2. 広い土壌
           3. 楽しい


                                                             83/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
楽しい
楽しい

       ✓ 純粋に楽しい
       ✓ 偉人達のCoolな工夫が見れる
       ✓ さっぱり上手く行かない、から楽し
         い

                                                                   85/99
GC生誕50周年を祝って - A Semicentennial history of the GC         Powered by Rabbit 0.6.4
私が考える魅力

           1. 制約が多い
           2. 広い土壌
           3. 楽しい
           4. 勉強になる

                                                             86/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
勉強になる
それぞれの偉人達を振り返る


       ✓ 決してGCが本業ではない
       ✓ それ以外の分野で大きな実績
       ✓ GCは修行であった


                                                             88/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
修行としてのGC!!
GC = 「虎の穴」
今日はなす事

       ✓ GCとは
       ✓ 偉人達と共にあるGC
       ✓ 魅力
       ✓ まとめ

                                                             91/99
GC生誕50周年を祝って - A Semicentennial history of the GC   Powered by Rabbit 0.6.4
まとめ
GCは多くの人にとって
 楽しい修行である
そんなGCを使ってばかり
  じゃもったいない
偉人達を見習って…
GCを知って遠くへ行こう!
最後に
 
ご静聴
ありがとうございました。

Weitere ähnliche Inhalte

Mehr von Narihiro Nakamura

Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GCNarihiro Nakamura
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」Narihiro Nakamura
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)Narihiro Nakamura
 
地獄のGC本スピンオフ
地獄のGC本スピンオフ地獄のGC本スピンオフ
地獄のGC本スピンオフNarihiro Nakamura
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることNarihiro Nakamura
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるNarihiro Nakamura
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできることNarihiro Nakamura
 
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Narihiro Nakamura
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Narihiro Nakamura
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフNarihiro Nakamura
 
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_objectNarihiro Nakamura
 
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In WhileTalk In Point Of Gc Once In While
Talk In Point Of Gc Once In WhileNarihiro Nakamura
 

Mehr von Narihiro Nakamura (20)

Parallel worlds of CRuby's GC
Parallel worlds of CRuby's GCParallel worlds of CRuby's GC
Parallel worlds of CRuby's GC
 
GC FAQ
GC FAQGC FAQ
GC FAQ
 
G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」G1GCへ伸びていた「いばらの道」
G1GCへ伸びていた「いばらの道」
 
CRubyGCの並列世界
CRubyGCの並列世界CRubyGCの並列世界
CRubyGCの並列世界
 
円環の理(Garbage Collection)
円環の理(Garbage Collection)円環の理(Garbage Collection)
円環の理(Garbage Collection)
 
地獄のGC本スピンオフ
地獄のGC本スピンオフ地獄のGC本スピンオフ
地獄のGC本スピンオフ
 
シャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできることシャイなRubyistがRubyKaigiでできること
シャイなRubyistがRubyKaigiでできること
 
われわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできるわれわれは、GCをX倍遅くできる
われわれは、GCをX倍遅くできる
 
GCが止まらない
GCが止まらないGCが止まらない
GCが止まらない
 
GC本のツクリカタ
GC本のツクリカタGC本のツクリカタ
GC本のツクリカタ
 
シャイなRubyistにできること
シャイなRubyistにできることシャイなRubyistにできること
シャイなRubyistにできること
 
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会
 
GC黄金時代
GC黄金時代GC黄金時代
GC黄金時代
 
Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会Androidの中身-第26回NaCl社内勉強会
Androidの中身-第26回NaCl社内勉強会
 
RubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフRubyのGC改善による私のエコライフ
RubyのGC改善による私のエコライフ
 
絶対復習について
絶対復習について絶対復習について
絶対復習について
 
AlgorithmDesign01
AlgorithmDesign01AlgorithmDesign01
AlgorithmDesign01
 
make of MiniGC
make of MiniGCmake of MiniGC
make of MiniGC
 
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object
 
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In WhileTalk In Point Of Gc Once In While
Talk In Point Of Gc Once In While
 

Kürzlich hochgeladen

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Kürzlich hochgeladen (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

GC生誕50周年を祝って