Slide 1

Slide 1 text

Powered by Rabbit 2.1.9 What is software made of? Heroku Ruby Association Yukihiro "Matz" Matsumoto @yukihiro_matz

Slide 2

Slide 2 text

Powered by Rabbit 2.1.9   RubyConf India

Slide 3

Slide 3 text

Powered by Rabbit 2.1.9   What is software made of?

Slide 4

Slide 4 text

Powered by Rabbit 2.1.9   What are little boys made of?

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Powered by Rabbit 2.1.9   What is software made of?

Slide 8

Slide 8 text

Powered by Rabbit 2.1.9   First Ingredient

Slide 9

Slide 9 text

Powered by Rabbit 2.1.9   Hardware

Slide 10

Slide 10 text

Powered by Rabbit 2.1.9   Hardware can exist without Software

Slide 11

Slide 11 text

Powered by Rabbit 2.1.9  

Slide 12

Slide 12 text

Powered by Rabbit 2.1.9   No Software can exist without Hardware

Slide 13

Slide 13 text

Powered by Rabbit 2.1.9   Not 100% True

Slide 14

Slide 14 text

Powered by Rabbit 2.1.9   But Mostly True

Slide 15

Slide 15 text

Powered by Rabbit 2.1.9   My first computer

Slide 16

Slide 16 text

Powered by Rabbit 2.1.9  

Slide 17

Slide 17 text

Powered by Rabbit 2.1.9   4bit CPU BASIC 1400 Steps 26 Variables

Slide 18

Slide 18 text

Powered by Rabbit 2.1.9   Poor Computer

Slide 19

Slide 19 text

Powered by Rabbit 2.1.9   It's 37 years ago

Slide 20

Slide 20 text

Powered by Rabbit 2.1.9   The Computer has been evolving so fast!

Slide 21

Slide 21 text

Powered by Rabbit 2.1.9   Faster CPU More memory More storage Wider bandwidth

Slide 22

Slide 22 text

Powered by Rabbit 2.1.9   The Computer I was using when I started Ruby (1993)

Slide 23

Slide 23 text

Powered by Rabbit 2.1.9   Engineering Work Station

Slide 24

Slide 24 text

Powered by Rabbit 2.1.9   SONY NEWS (NWS-831)

Slide 25

Slide 25 text

Powered by Rabbit 2.1.9   CPU: 68020 16MHz MEM: 8MB HDD: 156MB

Slide 26

Slide 26 text

Powered by Rabbit 2.1.9   Cost: 20,000USD

Slide 27

Slide 27 text

Powered by Rabbit 2.1.9   2016

Slide 28

Slide 28 text

Powered by Rabbit 2.1.9   Lenovo Thinkpad T460s

Slide 29

Slide 29 text

Powered by Rabbit 2.1.9   CPU: Core i7 (2.6GHz) MEM: 20GB HDD: 1TB (SSD)

Slide 30

Slide 30 text

Powered by Rabbit 2.1.9   Cost: 2,000USD

Slide 31

Slide 31 text

Powered by Rabbit 2.1.9   CPU: 325x

Slide 32

Slide 32 text

Powered by Rabbit 2.1.9   MEM: 2500x

Slide 33

Slide 33 text

Powered by Rabbit 2.1.9   HDD: 6410x

Slide 34

Slide 34 text

Powered by Rabbit 2.1.9   Now Computers are Fast!

Slide 35

Slide 35 text

Powered by Rabbit 2.1.9   The problem is..

Slide 36

Slide 36 text

Powered by Rabbit 2.1.9   Grand Illusion

Slide 37

Slide 37 text

Powered by Rabbit 2.1.9   1. Moore's Law

Slide 38

Slide 38 text

Powered by Rabbit 2.1.9   The number of transistors in LSI doubles every 18 months=  

Slide 39

Slide 39 text

Powered by Rabbit 2.1.9  

Slide 40

Slide 40 text

Powered by Rabbit 2.1.9   2. Cores

Slide 41

Slide 41 text

Powered by Rabbit 2.1.9   Multi Cores

Slide 42

Slide 42 text

Powered by Rabbit 2.1.9   The end of free lunch

Slide 43

Slide 43 text

Powered by Rabbit 2.1.9   Concurrency

Slide 44

Slide 44 text

Powered by Rabbit 2.1.9   Concurrency is hard

Slide 45

Slide 45 text

Powered by Rabbit 2.1.9   3. Caches

Slide 46

Slide 46 text

Powered by Rabbit 2.1.9   Variables≒Memory

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

Powered by Rabbit 2.1.9   Real Memory Model Registers Caches Memory (Stack+Heap) Storage

Slide 49

Slide 49 text

Powered by Rabbit 2.1.9   Registers (1x) L1 Caches (4x) L2 Caches (10x) L3 Caches (40x) Memory (100x) Storage (20Mx)

Slide 50

Slide 50 text

Powered by Rabbit 2.1.9   Developers (sometimes) need to fight with illusion

Slide 51

Slide 51 text

Powered by Rabbit 2.1.9   Next Ingredient

Slide 52

Slide 52 text

Powered by Rabbit 2.1.9   Languages

Slide 53

Slide 53 text

Powered by Rabbit 2.1.9   Language = Grammar + Vocabulary

Slide 54

Slide 54 text

Powered by Rabbit 2.1.9   Language = Syntax + Library

Slide 55

Slide 55 text

Powered by Rabbit 2.1.9   How to express your idea

Slide 56

Slide 56 text

Powered by Rabbit 2.1.9   Communication between humans and machines

Slide 57

Slide 57 text

Powered by Rabbit 2.1.9   The tool to form your idea

Slide 58

Slide 58 text

Powered by Rabbit 2.1.9   The tool to boost your brain

Slide 59

Slide 59 text

Powered by Rabbit 2.1.9   Sapir-Whorf hypothesis

Slide 60

Slide 60 text

Powered by Rabbit 2.1.9   human thoughts are influenced by (spoken) languages

Slide 61

Slide 61 text

Powered by Rabbit 2.1.9   Languages influence human thought, more than you think

Slide 62

Slide 62 text

Powered by Rabbit 2.1.9   Languages matter

Slide 63

Slide 63 text

Powered by Rabbit 2.1.9   The evolution of programming languages

Slide 64

Slide 64 text

Powered by Rabbit 2.1.9   More abstract

Slide 65

Slide 65 text

Powered by Rabbit 2.1.9   More concise

Slide 66

Slide 66 text

Powered by Rabbit 2.1.9   Less code

Slide 67

Slide 67 text

Powered by Rabbit 2.1.9   Easier to write

Slide 68

Slide 68 text

Powered by Rabbit 2.1.9   Easier to read

Slide 69

Slide 69 text

Powered by Rabbit 2.1.9   More productive

Slide 70

Slide 70 text

Powered by Rabbit 2.1.9   Abstraction

Slide 71

Slide 71 text

Powered by Rabbit 2.1.9   Hide internal detail

Slide 72

Slide 72 text

Powered by Rabbit 2.1.9   Illusion

Slide 73

Slide 73 text

Powered by Rabbit 2.1.9   Languages create illusion

Slide 74

Slide 74 text

Powered by Rabbit 2.1.9   Developers (sometimes) need to play with illusion

Slide 75

Slide 75 text

Powered by Rabbit 2.1.9   Illusion that make you productive

Slide 76

Slide 76 text

Powered by Rabbit 2.1.9   Illusion that make you consume less brain power

Slide 77

Slide 77 text

Powered by Rabbit 2.1.9   Productivity matters

Slide 78

Slide 78 text

Powered by Rabbit 2.1.9   Productivity solves most of problems

Slide 79

Slide 79 text

Powered by Rabbit 2.1.9   Productivity make work work less

Slide 80

Slide 80 text

Powered by Rabbit 2.1.9   Productivity make work earn more

Slide 81

Slide 81 text

Powered by Rabbit 2.1.9   Productivity bring you success

Slide 82

Slide 82 text

Powered by Rabbit 2.1.9   Last Ingredient

Slide 83

Slide 83 text

Powered by Rabbit 2.1.9   Developers Community

Slide 84

Slide 84 text

Powered by Rabbit 2.1.9   Programmers

Slide 85

Slide 85 text

Powered by Rabbit 2.1.9   People

Slide 86

Slide 86 text

Powered by Rabbit 2.1.9   Programming is a human thing

Slide 87

Slide 87 text

Powered by Rabbit 2.1.9   Machines don't program

Slide 88

Slide 88 text

Powered by Rabbit 2.1.9   At least yet

Slide 89

Slide 89 text

Powered by Rabbit 2.1.9   We are not machines

Slide 90

Slide 90 text

Powered by Rabbit 2.1.9   Difference?

Slide 91

Slide 91 text

Powered by Rabbit 2.1.9   Heart

Slide 92

Slide 92 text

Powered by Rabbit 2.1.9   Desire

Slide 93

Slide 93 text

Powered by Rabbit 2.1.9   Machines do not desire anything

Slide 94

Slide 94 text

Powered by Rabbit 2.1.9   We program because we want something

Slide 95

Slide 95 text

Powered by Rabbit 2.1.9   Passion

Slide 96

Slide 96 text

Powered by Rabbit 2.1.9   Machines do not have passion

Slide 97

Slide 97 text

Powered by Rabbit 2.1.9   We keep programming because we have passion

Slide 98

Slide 98 text

Powered by Rabbit 2.1.9   20+ years of Ruby development

Slide 99

Slide 99 text

Powered by Rabbit 2.1.9   Anger

Slide 100

Slide 100 text

Powered by Rabbit 2.1.9   We (sometimes) program because we get angry at something

Slide 101

Slide 101 text

Powered by Rabbit 2.1.9   3 Virtues of Programmers Laziness Impatient Hubris

Slide 102

Slide 102 text

Powered by Rabbit 2.1.9   Weakness

Slide 103

Slide 103 text

Powered by Rabbit 2.1.9   Weak memory

Slide 104

Slide 104 text

Powered by Rabbit 2.1.9   Weak will

Slide 105

Slide 105 text

Powered by Rabbit 2.1.9   Weak mind

Slide 106

Slide 106 text

Powered by Rabbit 2.1.9   Weakness is the reason we need illusion

Slide 107

Slide 107 text

Powered by Rabbit 2.1.9   Community

Slide 108

Slide 108 text

Powered by Rabbit 2.1.9   Communication

Slide 109

Slide 109 text

Powered by Rabbit 2.1.9   Collaboration

Slide 110

Slide 110 text

Powered by Rabbit 2.1.9   Motivation

Slide 111

Slide 111 text

Powered by Rabbit 2.1.9   They made Ruby possible

Slide 112

Slide 112 text

Powered by Rabbit 2.1.9   They made other great software

Slide 113

Slide 113 text

Powered by Rabbit 2.1.9   They will make your software

Slide 114

Slide 114 text

Powered by Rabbit 2.1.9   Summary

Slide 115

Slide 115 text

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

Slide 116

Slide 116 text

Powered by Rabbit 2.1.9   Hardware

Slide 117

Slide 117 text

Powered by Rabbit 2.1.9   Languages

Slide 118

Slide 118 text

Powered by Rabbit 2.1.9   Community

Slide 119

Slide 119 text

Powered by Rabbit 2.1.9   Happy Hacking!

Slide 120

Slide 120 text

Powered by Rabbit 2.1.9   A Few More Things

Slide 121

Slide 121 text

Powered by Rabbit 2.1.9   Ruby3

Slide 122

Slide 122 text

Powered by Rabbit 2.1.9   Concurrency Performance Static Analysis

Slide 123

Slide 123 text

Powered by Rabbit 2.1.9   mruby

Slide 124

Slide 124 text

Powered by Rabbit 2.1.9   Streem

Slide 125

Slide 125 text

Powered by Rabbit 2.1.9   Happy Hacking!