What is software made of?

What is software made of?

0ec4920185b657a03edf01fff96b4e9b?s=128

Yukihiro Matsumoto

January 28, 2017
Tweet

Transcript

  1. Powered by Rabbit 2.1.9 What is software made of? Heroku

    Ruby Association Yukihiro "Matz" Matsumoto @yukihiro_matz
  2. Powered by Rabbit 2.1.9   RubyConf India

  3. Powered by Rabbit 2.1.9   What is software made of?

  4. Powered by Rabbit 2.1.9   What are little boys made

    of?
  5. Powered by Rabbit 2.1.9   What are little boys made

    of? What are little boys made of? Snips and snails And puppy-dogs' tails That's what little boys are made of
  6. Powered by Rabbit 2.1.9   What are little girls made

    of? What are little girls made of? Sugar and spice And all things nice That's what little girls are made of
  7. Powered by Rabbit 2.1.9   What is software made of?

  8. Powered by Rabbit 2.1.9   First Ingredient

  9. Powered by Rabbit 2.1.9   Hardware

  10. Powered by Rabbit 2.1.9   Hardware can exist without Software

  11. Powered by Rabbit 2.1.9  

  12. Powered by Rabbit 2.1.9   No Software can exist without

    Hardware
  13. Powered by Rabbit 2.1.9   Not 100% True

  14. Powered by Rabbit 2.1.9   But Mostly True

  15. Powered by Rabbit 2.1.9   My first computer

  16. Powered by Rabbit 2.1.9  

  17. Powered by Rabbit 2.1.9   4bit CPU BASIC 1400 Steps

    26 Variables
  18. Powered by Rabbit 2.1.9   Poor Computer

  19. Powered by Rabbit 2.1.9   It's 37 years ago

  20. Powered by Rabbit 2.1.9   The Computer has been evolving

    so fast!
  21. Powered by Rabbit 2.1.9   Faster CPU More memory More

    storage Wider bandwidth
  22. Powered by Rabbit 2.1.9   The Computer I was using

    when I started Ruby (1993)
  23. Powered by Rabbit 2.1.9   Engineering Work Station

  24. Powered by Rabbit 2.1.9   SONY NEWS (NWS-831)

  25. Powered by Rabbit 2.1.9   CPU: 68020 16MHz MEM: 8MB

    HDD: 156MB
  26. Powered by Rabbit 2.1.9   Cost: 20,000USD

  27. Powered by Rabbit 2.1.9   2016

  28. Powered by Rabbit 2.1.9   Lenovo Thinkpad T460s

  29. Powered by Rabbit 2.1.9   CPU: Core i7 (2.6GHz) MEM:

    20GB HDD: 1TB (SSD)
  30. Powered by Rabbit 2.1.9   Cost: 2,000USD

  31. Powered by Rabbit 2.1.9   CPU: 325x

  32. Powered by Rabbit 2.1.9   MEM: 2500x

  33. Powered by Rabbit 2.1.9   HDD: 6410x

  34. Powered by Rabbit 2.1.9   Now Computers are Fast!

  35. Powered by Rabbit 2.1.9   The problem is..

  36. Powered by Rabbit 2.1.9   Grand Illusion

  37. Powered by Rabbit 2.1.9   1. Moore's Law

  38. Powered by Rabbit 2.1.9   The number of transistors in

    LSI doubles every 18 months=  
  39. Powered by Rabbit 2.1.9  

  40. Powered by Rabbit 2.1.9   2. Cores

  41. Powered by Rabbit 2.1.9   Multi Cores

  42. Powered by Rabbit 2.1.9   The end of free lunch

  43. Powered by Rabbit 2.1.9   Concurrency

  44. Powered by Rabbit 2.1.9   Concurrency is hard

  45. Powered by Rabbit 2.1.9   3. Caches

  46. Powered by Rabbit 2.1.9   Variables≒Memory

  47. Powered by Rabbit 2.1.9   Memory Model Registers Memory (Stack+Heap)

  48. Powered by Rabbit 2.1.9   Real Memory Model Registers Caches

    Memory (Stack+Heap) Storage
  49. Powered by Rabbit 2.1.9   Registers (1x) L1 Caches (4x)

    L2 Caches (10x) L3 Caches (40x) Memory (100x) Storage (20Mx)
  50. Powered by Rabbit 2.1.9   Developers (sometimes) need to fight

    with illusion
  51. Powered by Rabbit 2.1.9   Next Ingredient

  52. Powered by Rabbit 2.1.9   Languages

  53. Powered by Rabbit 2.1.9   Language = Grammar + Vocabulary

  54. Powered by Rabbit 2.1.9   Language = Syntax + Library

  55. Powered by Rabbit 2.1.9   How to express your idea

  56. Powered by Rabbit 2.1.9   Communication between humans and machines

  57. Powered by Rabbit 2.1.9   The tool to form your

    idea
  58. Powered by Rabbit 2.1.9   The tool to boost your

    brain
  59. Powered by Rabbit 2.1.9   Sapir-Whorf hypothesis

  60. Powered by Rabbit 2.1.9   human thoughts are influenced by

    (spoken) languages
  61. Powered by Rabbit 2.1.9   Languages influence human thought, more

    than you think
  62. Powered by Rabbit 2.1.9   Languages matter

  63. Powered by Rabbit 2.1.9   The evolution of programming languages

  64. Powered by Rabbit 2.1.9   More abstract

  65. Powered by Rabbit 2.1.9   More concise

  66. Powered by Rabbit 2.1.9   Less code

  67. Powered by Rabbit 2.1.9   Easier to write

  68. Powered by Rabbit 2.1.9   Easier to read

  69. Powered by Rabbit 2.1.9   More productive

  70. Powered by Rabbit 2.1.9   Abstraction

  71. Powered by Rabbit 2.1.9   Hide internal detail

  72. Powered by Rabbit 2.1.9   Illusion

  73. Powered by Rabbit 2.1.9   Languages create illusion

  74. Powered by Rabbit 2.1.9   Developers (sometimes) need to play

    with illusion
  75. Powered by Rabbit 2.1.9   Illusion that make you productive

  76. Powered by Rabbit 2.1.9   Illusion that make you consume

    less brain power
  77. Powered by Rabbit 2.1.9   Productivity matters

  78. Powered by Rabbit 2.1.9   Productivity solves most of problems

  79. Powered by Rabbit 2.1.9   Productivity make work work less

  80. Powered by Rabbit 2.1.9   Productivity make work earn more

  81. Powered by Rabbit 2.1.9   Productivity bring you success

  82. Powered by Rabbit 2.1.9   Last Ingredient

  83. Powered by Rabbit 2.1.9   Developers Community

  84. Powered by Rabbit 2.1.9   Programmers

  85. Powered by Rabbit 2.1.9   People

  86. Powered by Rabbit 2.1.9   Programming is a human thing

  87. Powered by Rabbit 2.1.9   Machines don't program

  88. Powered by Rabbit 2.1.9   At least yet

  89. Powered by Rabbit 2.1.9   We are not machines

  90. Powered by Rabbit 2.1.9   Difference?

  91. Powered by Rabbit 2.1.9   Heart

  92. Powered by Rabbit 2.1.9   Desire

  93. Powered by Rabbit 2.1.9   Machines do not desire anything

  94. Powered by Rabbit 2.1.9   We program because we want

    something
  95. Powered by Rabbit 2.1.9   Passion

  96. Powered by Rabbit 2.1.9   Machines do not have passion

  97. Powered by Rabbit 2.1.9   We keep programming because we

    have passion
  98. Powered by Rabbit 2.1.9   20+ years of Ruby development

  99. Powered by Rabbit 2.1.9   Anger

  100. Powered by Rabbit 2.1.9   We (sometimes) program because we

    get angry at something
  101. Powered by Rabbit 2.1.9   3 Virtues of Programmers Laziness

    Impatient Hubris
  102. Powered by Rabbit 2.1.9   Weakness

  103. Powered by Rabbit 2.1.9   Weak memory

  104. Powered by Rabbit 2.1.9   Weak will

  105. Powered by Rabbit 2.1.9   Weak mind

  106. Powered by Rabbit 2.1.9   Weakness is the reason we

    need illusion
  107. Powered by Rabbit 2.1.9   Community

  108. Powered by Rabbit 2.1.9   Communication

  109. Powered by Rabbit 2.1.9   Collaboration

  110. Powered by Rabbit 2.1.9   Motivation

  111. Powered by Rabbit 2.1.9   They made Ruby possible

  112. Powered by Rabbit 2.1.9   They made other great software

  113. Powered by Rabbit 2.1.9   They will make your software

  114. Powered by Rabbit 2.1.9   Summary

  115. Powered by Rabbit 2.1.9   What is software made of?

    Hardware and languages And developers community That's what is software made of?
  116. Powered by Rabbit 2.1.9   Hardware

  117. Powered by Rabbit 2.1.9   Languages

  118. Powered by Rabbit 2.1.9   Community

  119. Powered by Rabbit 2.1.9   Happy Hacking!

  120. Powered by Rabbit 2.1.9   A Few More Things

  121. Powered by Rabbit 2.1.9   Ruby3

  122. Powered by Rabbit 2.1.9   Concurrency Performance Static Analysis

  123. Powered by Rabbit 2.1.9   mruby

  124. Powered by Rabbit 2.1.9   Streem

  125. Powered by Rabbit 2.1.9   Happy Hacking!