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

Ruby_through_Reserved_Words.pdf

 Ruby_through_Reserved_Words.pdf

Yukihiro Matsumoto

July 02, 2019
Tweet

More Decks by Yukihiro Matsumoto

Other Decks in Programming

Transcript

  1. Powered by Rabbit 2.2.1
    Ruby through Reserved
    Words
    Heroku
    Ruby Association
    Yukihiro "Matz" Matsumoto
    まつもとゆきひろ
    @yukihiro_matz

    View Slide

  2. Powered by Rabbit 2.2.1
     
    Ruby has 41 reserved words

    View Slide

  3. Powered by Rabbit 2.2.1
     
    Each reflects (early) design
    decisions

    View Slide

  4. Powered by Rabbit 2.2.1
     
    The story behinds the words

    View Slide

  5. Powered by Rabbit 2.2.1
     
    begin/end

    View Slide

  6. Powered by Rabbit 2.2.1
     
    Comb Style Indentation

    View Slide

  7. Powered by Rabbit 2.2.1
     
    Inherited from Eiffel

    View Slide

  8. Powered by Rabbit 2.2.1
     
    along with rescue, ensure, retry

    View Slide

  9. Powered by Rabbit 2.2.1
     
    break/next/redo

    View Slide

  10. Powered by Rabbit 2.2.1
     
    not continue

    View Slide

  11. Powered by Rabbit 2.2.1
     
    From Perl (shorter)

    View Slide

  12. Powered by Rabbit 2.2.1
     
    class/def

    View Slide

  13. Powered by Rabbit 2.2.1
     
    From Python

    View Slide

  14. Powered by Rabbit 2.2.1
     
    module

    View Slide

  15. Powered by Rabbit 2.2.1
     
    Lisp (Flavors)

    View Slide

  16. Powered by Rabbit 2.2.1
     
    Mix-in

    View Slide

  17. Powered by Rabbit 2.2.1
     
    if/else/elsif

    View Slide

  18. Powered by Rabbit 2.2.1
     
    elsif

    View Slide

  19. Powered by Rabbit 2.2.1
     
    elseif, elif, elsif

    View Slide

  20. Powered by Rabbit 2.2.1
     
    The shortest pronounceable

    View Slide

  21. Powered by Rabbit 2.2.1
     
    then

    View Slide

  22. Powered by Rabbit 2.2.1
     
    The stop words

    View Slide

  23. Powered by Rabbit 2.2.1
     
    then and class methods

    View Slide

  24. Powered by Rabbit 2.2.1
     
    unless

    View Slide

  25. Powered by Rabbit 2.2.1
     
    From Perl

    View Slide

  26. Powered by Rabbit 2.2.1
     
    No elsif or elsunless

    View Slide

  27. Powered by Rabbit 2.2.1
     
    while

    View Slide

  28. Powered by Rabbit 2.2.1
     
    Simple loop

    View Slide

  29. Powered by Rabbit 2.2.1
     
    for/in

    View Slide

  30. Powered by Rabbit 2.2.1
     
    From Python?

    View Slide

  31. Powered by Rabbit 2.2.1
     
    until

    View Slide

  32. Powered by Rabbit 2.2.1
     
    From Perl

    View Slide

  33. Powered by Rabbit 2.2.1
     
    true/false/nil

    View Slide

  34. Powered by Rabbit 2.2.1
     
    Truthy and Falsy

    View Slide

  35. Powered by Rabbit 2.2.1
     
    Three value model

    View Slide

  36. Powered by Rabbit 2.2.1
     
    Inspired by Lisp

    View Slide

  37. Powered by Rabbit 2.2.1
     
    and/or/not

    View Slide

  38. Powered by Rabbit 2.2.1
     
    From Perl

    View Slide

  39. Powered by Rabbit 2.2.1
     
    Only for precedence

    View Slide

  40. Powered by Rabbit 2.2.1
     
    do/yield

    View Slide

  41. Powered by Rabbit 2.2.1
     
    The block

    View Slide

  42. Powered by Rabbit 2.2.1
     
    From CLU (1970s, MIT)

    View Slide

  43. Powered by Rabbit 2.2.1
     
    The biggest invention of Ruby

    View Slide

  44. Powered by Rabbit 2.2.1
     
    rescue/ensure/retry

    View Slide

  45. Powered by Rabbit 2.2.1
     
    Exception handling

    View Slide

  46. Powered by Rabbit 2.2.1
     
    Inspired by Eiffel

    View Slide

  47. Powered by Rabbit 2.2.1
     
    Icon (1970s, U of Arizona)

    View Slide

  48. Powered by Rabbit 2.2.1
     
    Success/Failure model

    View Slide

  49. Powered by Rabbit 2.2.1
     
    return

    View Slide

  50. Powered by Rabbit 2.2.1
     
    From C

    View Slide

  51. Powered by Rabbit 2.2.1
     
    Multiple values (Tuple)

    View Slide

  52. Powered by Rabbit 2.2.1
     
    self/super

    View Slide

  53. Powered by Rabbit 2.2.1
     
    Smalltalk

    View Slide

  54. Powered by Rabbit 2.2.1
     
    alias/undef

    View Slide

  55. Powered by Rabbit 2.2.1
     
    From Sather (1980s, UCB)

    View Slide

  56. Powered by Rabbit 2.2.1
     
    BEGIN/END

    View Slide

  57. Powered by Rabbit 2.2.1
     
    From Awk

    View Slide

  58. Powered by Rabbit 2.2.1
     
    Not recommendation anymore

    View Slide

  59. Powered by Rabbit 2.2.1
     
    __FILE__/__LINE__

    View Slide

  60. Powered by Rabbit 2.2.1
     
    From C (cpp)

    View Slide

  61. Powered by Rabbit 2.2.1
     
    __ENCODING__

    View Slide

  62. Powered by Rabbit 2.2.1
     
    From Ruby1.9 (encoding)

    View Slide

  63. Powered by Rabbit 2.2.1
     
    UCS vs CSI

    View Slide

  64. Powered by Rabbit 2.2.1
     
    Unicode

    View Slide

  65. Powered by Rabbit 2.2.1
     
    BDFL

    View Slide

  66. Powered by Rabbit 2.2.1
     
    Benevolent Dictator For Life

    View Slide

  67. Powered by Rabbit 2.2.1
     
    How to make decisions

    View Slide

  68. Powered by Rabbit 2.2.1
     
    Scope
    Background
    Motivation

    View Slide

  69. Powered by Rabbit 2.2.1
     
    Committee

    View Slide

  70. Powered by Rabbit 2.2.1
     
    Voting

    View Slide

  71. Powered by Rabbit 2.2.1
     
    A ship would climb a mountain
    with many captains

    View Slide

  72. Powered by Rabbit 2.2.1
     
    too many cooks spoil the broth

    View Slide