Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby Everywhere

Ruby Everywhere

The keynote in RubyConf 2011 New Orleans

Yukihiro Matsumoto

October 02, 2011
Tweet

More Decks by Yukihiro Matsumoto

Other Decks in Programming

Transcript

  1. Powered by Rabbit 0.9.2
    Ruby Everywhere
    まつもと ゆきひろ
    Yukihiro "Matz" Matsumoto
    @yukihiro_matz

    View Slide

  2. Powered by Rabbit 0.9.2
     TPO 
    1/192

    View Slide

  3. Powered by Rabbit 0.9.2
    TPO
    O=Occasion
    2/192

    View Slide

  4. Powered by Rabbit 0.9.2
    Occasion
    Keynote
    3/192

    View Slide

  5. Powered by Rabbit 0.9.2
    Keynote
    a speech, as at a
    political convention,
    that presents
    important issues,
    principles, policies,
    etc.
    4/192

    View Slide

  6. Powered by Rabbit 0.9.2
    Keynote
    Give me a break
    5/192

    View Slide

  7. Powered by Rabbit 0.9.2
    Keynote
    I am a mere programmer
    6/192

    View Slide

  8. Powered by Rabbit 0.9.2
    a programmer
    who invented
    a language
    7/192

    View Slide

  9. Powered by Rabbit 0.9.2
     
    a great language
    8/192

    View Slide

  10. Powered by Rabbit 0.9.2
     
    accidentally
    9/192

    View Slide

  11. Powered by Rabbit 0.9.2
     
    But that's life
    Ce'st la vie
    10/192

    View Slide

  12. Powered by Rabbit 0.9.2
     
    Let's start the keynote
    11/192

    View Slide

  13. Powered by Rabbit 0.9.2
    Keynote
    Good and Bad
    12/192

    View Slide

  14. Powered by Rabbit 0.9.2
    Keynote: the good part
    The first at the conference
    I can enjoy rest of the
    conference
    13/192

    View Slide

  15. Powered by Rabbit 0.9.2
    Keynote: the bad part
    The first at the conference
    I have less time to prepare
    You have to endure
    14/192

    View Slide

  16. Powered by Rabbit 0.9.2
    TPO
    P=Place
    15/192

    View Slide

  17. Powered by Rabbit 0.9.2
    Place
    New Orleans
    16/192

    View Slide

  18. Powered by Rabbit 0.9.2
    Place
    松江
    Matsue
    17/192

    View Slide

  19. Powered by Rabbit 0.9.2
    Matsue
    My hometown
    18/192

    View Slide

  20. Powered by Rabbit 0.9.2
    Place
    Sister Cities
    19/192

    View Slide

  21. Powered by Rabbit 0.9.2
     
    Any locals?
    20/192

    View Slide

  22. Powered by Rabbit 0.9.2
    Place
    Mayor Matsuura of Matsue City
    21/192

    View Slide

  23. Powered by Rabbit 0.9.2
     
    Hi from him
    22/192

    View Slide

  24. Powered by Rabbit 0.9.2
    TPO
    T=Time
    23/192

    View Slide

  25. Powered by Rabbit 0.9.2
    Time
    2011
    24/192

    View Slide

  26. Powered by Rabbit 0.9.2
    The first RubyConf was
    Oct. 12-14 2001
    in Tampa, FL
    25/192

    View Slide

  27. Powered by Rabbit 0.9.2
    So it's
    11th RubyConf
    26/192

    View Slide

  28. Powered by Rabbit 0.9.2
     
    First RubyConf in second decade
    27/192

    View Slide

  29. Powered by Rabbit 0.9.2
     
    10th anniversary
    28/192

    View Slide

  30. Powered by Rabbit 0.9.2
     
    Good chance to beat the world
    29/192

    View Slide

  31. Powered by Rabbit 0.9.2
     
    30/192

    View Slide

  32. Powered by Rabbit 0.9.2
     
    2011
    31/192

    View Slide

  33. Powered by Rabbit 0.9.2
    New position
    32/192

    View Slide

  34. Powered by Rabbit 0.9.2
     
    Chief Architect, Ruby
    33/192

    View Slide

  35. Powered by Rabbit 0.9.2
     
    2010
    34/192

    View Slide

  36. Powered by Rabbit 0.9.2
     
    Salesforce.com acquires
    Heroku.com
    35/192

    View Slide

  37. Powered by Rabbit 0.9.2
    Marc Benioff
    “Ruby is the language of Cloud 2”
    36/192

    View Slide

  38. Powered by Rabbit 0.9.2
     
    6 months later
    37/192

    View Slide

  39. Powered by Rabbit 0.9.2
    TOYOTA Friend
    38/192

    View Slide

  40. Powered by Rabbit 0.9.2
     
    39/192

    View Slide

  41. Powered by Rabbit 0.9.2
    Marc Benioff
    “Ruby is great!”
    40/192

    View Slide

  42. Powered by Rabbit 0.9.2
    Marc Benioff
    “I want to help Ruby!”
    41/192

    View Slide

  43. Powered by Rabbit 0.9.2
    Marc Benioff
    “as the language of cloud age”
    42/192

    View Slide

  44. Powered by Rabbit 0.9.2
    Marc Benioff
    “I want to HIRE YOU!”
    43/192

    View Slide

  45. Powered by Rabbit 0.9.2
     
    What!?
    44/192

    View Slide

  46. Powered by Rabbit 0.9.2
     
    45/192

    View Slide

  47. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    Least Business-ish Title
    46/192

    View Slide

  48. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    I will keep working on Ruby core
    development
    47/192

    View Slide

  49. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    As I have done for long time
    48/192

    View Slide

  50. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    They don't ask me anything new
    49/192

    View Slide

  51. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    except attnending Dreamforce
    50/192

    View Slide

  52. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    I have been worked full time for
    long time
    51/192

    View Slide

  53. Powered by Rabbit 0.9.2
     
    52/192

    View Slide

  54. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    My financial situation has been
    improved
    53/192

    View Slide

  55. Powered by Rabbit 0.9.2
    Chief Architect, Ruby
    Hiring me do not accelerate
    development much
    54/192

    View Slide

  56. Powered by Rabbit 0.9.2
    We have to improve
    SFDC+Heroku want to
    accelerate Ruby development
    55/192

    View Slide

  57. Powered by Rabbit 0.9.2
    We have to improve
    So we are going to form a team
    56/192

    View Slide

  58. Powered by Rabbit 0.9.2
    We have to improve
    of full-time core committer(s)
    57/192

    View Slide

  59. Powered by Rabbit 0.9.2
    Full-time core committer
    Nobuyoshi Nakada (Nobu)
    58/192

    View Slide

  60. Powered by Rabbit 0.9.2
    Full-time core committer
    aka "Patch Monster"
    59/192

    View Slide

  61. Powered by Rabbit 0.9.2
    Full-time core committer
    PatchMon
    60/192

    View Slide

  62. Powered by Rabbit 0.9.2
    Full-time core committer
    Nobuyoshi Nakada (Nobu)
    61/192

    View Slide

  63. Powered by Rabbit 0.9.2
    Number One Committer
    62/192

    View Slide

  64. Powered by Rabbit 0.9.2
    Number One Committer
    63/192

    View Slide

  65. Powered by Rabbit 0.9.2
     
    You can expect more patches
    from Nobu
    64/192

    View Slide

  66. Powered by Rabbit 0.9.2
    Full-time Committers
    More to come (if budget allows)
    65/192

    View Slide

  67. Powered by Rabbit 0.9.2
    Full-time Committers
    I welcome more companies to
    hire core committers
    66/192

    View Slide

  68. Powered by Rabbit 0.9.2
    Full-time Committers
    I have already contacted
    EnginYard
    67/192

    View Slide

  69. Powered by Rabbit 0.9.2
     
    68/192

    View Slide

  70. Powered by Rabbit 0.9.2
     
    2011
    69/192

    View Slide

  71. Powered by Rabbit 0.9.2
    the Standard
    We have been working on the
    standard for last three years
    70/192

    View Slide

  72. Powered by Rabbit 0.9.2
    the Standard
    JIS
    Japan Industrial Standard
    71/192

    View Slide

  73. Powered by Rabbit 0.9.2
    the Standard
    JIS x3017
    72/192

    View Slide

  74. Powered by Rabbit 0.9.2
    the Standard
    ISO
    73/192

    View Slide

  75. Powered by Rabbit 0.9.2
    the Standard
    Vote: 20 vs 0
    74/192

    View Slide

  76. Powered by Rabbit 0.9.2
    The Standard
    The subset of Ruby
    75/192

    View Slide

  77. Powered by Rabbit 0.9.2
    The Standard
    1.8 and 1.9 compatible
    76/192

    View Slide

  78. Powered by Rabbit 0.9.2
    The Standard
    Platform independence
    77/192

    View Slide

  79. Powered by Rabbit 0.9.2
    The Standard
    No fork, no thread
    78/192

    View Slide

  80. Powered by Rabbit 0.9.2
    The Standard
    It's stll incomplete
    79/192

    View Slide

  81. Powered by Rabbit 0.9.2
    The Standard
    More versions to come
    80/192

    View Slide

  82. Powered by Rabbit 0.9.2
    The Standard
    Better coverage
    81/192

    View Slide

  83. Powered by Rabbit 0.9.2
    The Standard
    Will move to 1.9 (or 2.0)
    82/192

    View Slide

  84. Powered by Rabbit 0.9.2
    The Standard
    The reasons behind
    83/192

    View Slide

  85. Powered by Rabbit 0.9.2
    The reasons behind
    Business reliability
    84/192

    View Slide

  86. Powered by Rabbit 0.9.2
    The reasons behind
    Alternative implementations
    85/192

    View Slide

  87. Powered by Rabbit 0.9.2
     
    86/192

    View Slide

  88. Powered by Rabbit 0.9.2
     
    2011
    87/192

    View Slide

  89. Powered by Rabbit 0.9.2
     
    The world has been taken over
    by machines
    88/192

    View Slide

  90. Powered by Rabbit 0.9.2
     
    89/192

    View Slide

  91. Powered by Rabbit 0.9.2
     
    90/192

    View Slide

  92. Powered by Rabbit 0.9.2
     
    91/192

    View Slide

  93. Powered by Rabbit 0.9.2
     
    92/192

    View Slide

  94. Powered by Rabbit 0.9.2
     
    93/192

    View Slide

  95. Powered by Rabbit 0.9.2
     
    94/192

    View Slide

  96. Powered by Rabbit 0.9.2
     
    95/192

    View Slide

  97. Powered by Rabbit 0.9.2
     
    96/192

    View Slide

  98. Powered by Rabbit 0.9.2
     
    97/192

    View Slide

  99. Powered by Rabbit 0.9.2
     
    98/192

    View Slide

  100. Powered by Rabbit 0.9.2
     
    All driven by computers
    99/192

    View Slide

  101. Powered by Rabbit 0.9.2
     
    Computers need software
    100/192

    View Slide

  102. Powered by Rabbit 0.9.2
     
    Software ratio in systems
    increasing
    101/192

    View Slide

  103. Powered by Rabbit 0.9.2
     
    Software should be written by us
    102/192

    View Slide

  104. Powered by Rabbit 0.9.2
     
    in programming languages
    103/192

    View Slide

  105. Powered by Rabbit 0.9.2
     
    There are numerous
    programming languages
    104/192

    View Slide

  106. Powered by Rabbit 0.9.2
     
    But what we love most is..
    105/192

    View Slide

  107. Powered by Rabbit 0.9.2
     
    Ruby
    106/192

    View Slide

  108. Powered by Rabbit 0.9.2
     
    But what is Ruby?
    107/192

    View Slide

  109. Powered by Rabbit 0.9.2
     
    Muiti-fold definition
    108/192

    View Slide

  110. Powered by Rabbit 0.9.2
     
    Ruby the syntax
    109/192

    View Slide

  111. Powered by Rabbit 0.9.2
     
    Ruby the philosophy
    110/192

    View Slide

  112. Powered by Rabbit 0.9.2
     
    Ruby the library
    111/192

    View Slide

  113. Powered by Rabbit 0.9.2
     
    Ruby the gems
    112/192

    View Slide

  114. Powered by Rabbit 0.9.2
     
    Ruby the community
    113/192

    View Slide

  115. Powered by Rabbit 0.9.2
     
    We'd like to help more
    developers
    114/192

    View Slide

  116. Powered by Rabbit 0.9.2
     
    JRuby
    115/192

    View Slide

  117. Powered by Rabbit 0.9.2
     
    Ruby for JVM platform
    116/192

    View Slide

  118. Powered by Rabbit 0.9.2
     
    Ruby to reach Java world
    117/192

    View Slide

  119. Powered by Rabbit 0.9.2
     
    Ruboto
    118/192

    View Slide

  120. Powered by Rabbit 0.9.2
     
    JRuby on Android
    119/192

    View Slide

  121. Powered by Rabbit 0.9.2
     
    Rhodes
    120/192

    View Slide

  122. Powered by Rabbit 0.9.2
     
    Ruby for mobile phones
    121/192

    View Slide

  123. Powered by Rabbit 0.9.2
     
    CRuby
    122/192

    View Slide

  124. Powered by Rabbit 0.9.2
     
    Ruby 1.9.3
    123/192

    View Slide

  125. Powered by Rabbit 0.9.2
     
    Ruby 1.9.3RC1
    124/192

    View Slide

  126. Powered by Rabbit 0.9.2
     
    Yugui
    125/192

    View Slide

  127. Powered by Rabbit 0.9.2
     
    126/192

    View Slide

  128. Powered by Rabbit 0.9.2
     
    Keywords for the future
    127/192

    View Slide

  129. Powered by Rabbit 0.9.2
     
    Cloud+Mobile
    128/192

    View Slide

  130. Powered by Rabbit 0.9.2
     
    Cloud
    129/192

    View Slide

  131. Powered by Rabbit 0.9.2
     
    130/192

    View Slide

  132. Powered by Rabbit 0.9.2
     
    131/192

    View Slide

  133. Powered by Rabbit 0.9.2
     
    132/192

    View Slide

  134. Powered by Rabbit 0.9.2
     
    Mobile
    133/192

    View Slide

  135. Powered by Rabbit 0.9.2
     
    Small devices
    134/192

    View Slide

  136. Powered by Rabbit 0.9.2
     
    Digital appliances
    135/192

    View Slide

  137. Powered by Rabbit 0.9.2
     
    Mobile phones
    136/192

    View Slide

  138. Powered by Rabbit 0.9.2
     
    Vehicle
    137/192

    View Slide

  139. Powered by Rabbit 0.9.2
     
    Robots
    138/192

    View Slide

  140. Powered by Rabbit 0.9.2
     
    I'd like to address these fields
    139/192

    View Slide

  141. Powered by Rabbit 0.9.2
     
    As Lua does now
    140/192

    View Slide

  142. Powered by Rabbit 0.9.2
     
    141/192

    View Slide

  143. Powered by Rabbit 0.9.2
     
    mruby
    142/192

    View Slide

  144. Powered by Rabbit 0.9.2
    mruby
    Matz's
    embeddable
    minimal implementation of
    Ruby language
    143/192

    View Slide

  145. Powered by Rabbit 0.9.2
     
    RiteVM as core
    144/192

    View Slide

  146. Powered by Rabbit 0.9.2
     
    Minimal standard libraries
    145/192

    View Slide

  147. Powered by Rabbit 0.9.2
     
    Embeddable C API
    146/192

    View Slide

  148. Powered by Rabbit 0.9.2
     
    Incremental GC
    147/192

    View Slide

  149. Powered by Rabbit 0.9.2
     
    Soft realtime
    148/192

    View Slide

  150. Powered by Rabbit 0.9.2
     
    Parser to generate AST
    149/192

    View Slide

  151. Powered by Rabbit 0.9.2
     
    Codegen to generate bytecode
    150/192

    View Slide

  152. Powered by Rabbit 0.9.2
     
    RiteVM to run bytecode
    151/192

    View Slide

  153. Powered by Rabbit 0.9.2
     
    32bit instructions
    152/192

    View Slide

  154. Powered by Rabbit 0.9.2
     
    Instructions are serializable
    153/192

    View Slide

  155. Powered by Rabbit 0.9.2
     
    to binary files
    154/192

    View Slide

  156. Powered by Rabbit 0.9.2
     
    or C files
    155/192

    View Slide

  157. Powered by Rabbit 0.9.2
     
    Entirely written in C99
    156/192

    View Slide

  158. Powered by Rabbit 0.9.2
     
    for all imaginable platforms
    157/192

    View Slide

  159. Powered by Rabbit 0.9.2
     
    Linux
    158/192

    View Slide

  160. Powered by Rabbit 0.9.2
     
    Windows
    159/192

    View Slide

  161. Powered by Rabbit 0.9.2
     
    MacOS
    160/192

    View Slide

  162. Powered by Rabbit 0.9.2
     
    Android
    161/192

    View Slide

  163. Powered by Rabbit 0.9.2
     
    iOS
    162/192

    View Slide

  164. Powered by Rabbit 0.9.2
     
    VxWorks
    163/192

    View Slide

  165. Powered by Rabbit 0.9.2
     
    ITRON
    164/192

    View Slide

  166. Powered by Rabbit 0.9.2
     
    or even non OS platforms
    165/192

    View Slide

  167. Powered by Rabbit 0.9.2
     
    As I explained last year
    166/192

    View Slide

  168. Powered by Rabbit 0.9.2
     
    Difference?
    167/192

    View Slide

  169. Powered by Rabbit 0.9.2
     
    Now it works!
    168/192

    View Slide

  170. Powered by Rabbit 0.9.2
     
    Demo
    169/192

    View Slide

  171. Powered by Rabbit 0.9.2
    Demo
    Mandelbrot Set
    170/192

    View Slide

  172. Powered by Rabbit 0.9.2
     
    171/192

    View Slide

  173. Powered by Rabbit 0.9.2
     
    mruby is young
    172/192

    View Slide

  174. Powered by Rabbit 0.9.2
     
    it's small
    173/192

    View Slide

  175. Powered by Rabbit 0.9.2
     
    it's weak
    174/192

    View Slide

  176. Powered by Rabbit 0.9.2
     
    mruby has possibility
    175/192

    View Slide

  177. Powered by Rabbit 0.9.2
     
    huge possibility
    176/192

    View Slide

  178. Powered by Rabbit 0.9.2
     
    can you imagine?
    177/192

    View Slide

  179. Powered by Rabbit 0.9.2
     
    Mobile device
    178/192

    View Slide

  180. Powered by Rabbit 0.9.2
     
    Robots
    179/192

    View Slide

  181. Powered by Rabbit 0.9.2
     
    Digital appliances
    180/192

    View Slide

  182. Powered by Rabbit 0.9.2
     
    Games
    181/192

    View Slide

  183. Powered by Rabbit 0.9.2
     
    Ruby instead of Lua
    182/192

    View Slide

  184. Powered by Rabbit 0.9.2
     
    Server side
    183/192

    View Slide

  185. Powered by Rabbit 0.9.2
     
    Ruby instead of Node.js
    184/192

    View Slide

  186. Powered by Rabbit 0.9.2
     
    One big step to rule the world
    185/192

    View Slide

  187. Powered by Rabbit 0.9.2
     
    No perfect languages
    186/192

    View Slide

  188. Powered by Rabbit 0.9.2
     
    Even Ruby
    187/192

    View Slide

  189. Powered by Rabbit 0.9.2
     
    We'd like to provide choices
    188/192

    View Slide

  190. Powered by Rabbit 0.9.2
     
    Freedom to choose Ruby
    189/192

    View Slide

  191. Powered by Rabbit 0.9.2
     
    And make the world happier
    190/192

    View Slide

  192. Powered by Rabbit 0.9.2
     
    As we feel right now
    191/192

    View Slide

  193. Powered by Rabbit 0.9.2
     
    Thank you
    192/192

    View Slide