RubyConf China
Why Ruby?
Yukihiro "Matz" Matsumoto
まつもと ゆきひろ
matz@ruby-lang.org
Copyright (c) 2008 Yukihiro "Matz" Matsumo...
Moore’s Law
The number of Transistors
in LSI Doubles Every
18 Months
Moore’s Law Means:
Computer Grows Exponentially
Faster
Cheaper
More Common
Faster Computer
PCs are Faster than Super
Computers of 20 Years Ago
Cheaper Computers
We can Buy a PC for $400 Now
Common Computers
Now Everyone Owns Computers
Personal Computers
Cell Phones
Cell Phone as a Computer
Cell Phone as a Computer
Everyone is Connected
Broadband
WiFi
Mobile Networks
Influence in Programming
Moore’s Law Changes
Software Complexity
Programming Languages
Software Complexity
No Business Can Be Run
without Software
We Need More Software
Quicker
Cheaper
Humans Don’t Improve
Moore’s Law Does Not Apply to
Humans
Productivity
We Need More Software with
Limited Resources
Productivity
We Have Faster Computers
Development Efficiency At the
Cost of Runtime Efficiency
Productivity
The Most Important Factor of
Language Evolution
Languages are One of the Tools
for Productivity
How Languages Help
Productivity
Sapir-Whorf hypothesis
Language determines the way
we think.
Theorem #1
Languages influence
human thought,
more than you think
Programming Languages
Do programming
languages
influence human
thoughts?
Thinking in Programming
Language
Natural languages are too
ambiguous.
Or, too verbose.
Or, too indirect.
Thinking in Programming
Language.
If programmers think in
programming languages,
They must influence thoughts
as much as
n...
Theorem #2
"languages" in
Theorem #1 includes
programming
languages.
Why don’t you choose a good
language?
Programming
langugages are so
easy to learn.
What is a good language?
The language that helps thinking
Recursion
BASIC did not allow recursion
Factorial
def fact(n)
if n == 0
1
else
n * fact(n - 1)
end
end
print "6!=", fact(6), "n"
6!=740
A good Language
does not restrict our thought
Factorial Again
print "200!=", fact(200), "n"
200!=78865786736479050355236321393218506
22951359776871732632947425332443594...
Less Restriction
print "200!=", fact(200), "n"
200!=788657867364790503552363213932185062295
135977687173263294742533244359...
A good language
Consise
Succinctness is Power
by Paul Graham
Fred Brooks’ Law
Less Lines ≒ Effective
Succinctness is Power
Less Code, Less Bugs
Less Bugs, You Feel Yourself
Smarter.
You can be 10 times (or even
1000 times) ...
More Factorial
class Factorial {
private static int fact(int n) {
if (n == 1) return 1;
return n * fact(n - 1);
}
public s...
Succinctness Example
def fact(n)
if n == 1
1
else
n * fact(n - 1)
end
end
print "6!=", fact(6), "n"
6!=740
Ruby
A good language
Inspiring
Functional Factorial
def fact(n)
(1..n).inject(:*)
end
print "6!=", fact(6), "n"
6!=740
A good language
makes better programming
experience
For Better Programming
Experience
Learnability
Efficiency
Memorability
Errors
Satisfaction
According to Dr. Jacob Nielsen
Learnability
How easy is it for users to
accomplish basic tasks the first
time they encounter the design?
Learnability
Usability for Beginners
Important to Acquire New Users
"Common Sense" is the Key
Efficiency
Once users have learned the
design, how quickly can they
perform tasks?
Efficiency
More important than learnability
Efficiency is the top purpose of
languages
Memorability
When users return to the design
after a period of not using it, how
easily can they reestablish
proficiency?
Memorability
Association
Consistency
Orthogonality
Common Sense
No Radical
Errors
How many errors do users make,
how severe are these errors, and
how easily can they recover from
these errors?
Errors
When you see repeated errors,
you have to do something.
Errors are the source of design
inspiration.
Satisfaction
How pleasant is it to use the
design?
Satisfaction
We program to have fun.
Even when we program for
money, we want to have fun as
well.
How Ruby Serves
Learnability
Efficiency
Memorability
Errors
Satisfaction
How Ruby Serves
Learnability
Efficiency
Memorability
Errors
Satisfaction
Learnability
Ruby is very conservative except
for a few places
Quick to learn
Quick to try
Learnability Example
Hello World!
print "Hello Worldn"
Hello World
How Ruby Serves
Learnability
Efficiency
Memorability
Errors
Satisfaction
Efficiency
No Run-Time Efficiency
Ruby focuses on the cost
of programming.
Devlopment Efficiency
Ruby focuses on the cost of
programming by
Simplicity
Consistency
Smartness
Simplicity
Do you like programming
language to be simple?
Probably you do.
Simplicity
Does language simplicity really
help you?
not always.
need more complex tool
sometimes
Need More Complex Tool
Knife vs Chain Saw
Bicycle vs Airplane
Human Heart: No Simple
We love simplicity
We love complexity
We love easy problems
We hate easy problems
Pseudo-Simplicity
Ruby is NOT a simple
language.
Simplicity Example
Rakefile
Rake = Ruby Make
task :default => [:test]
task :test do
ruby "test/unittest.rb"
end
Simplicity Example
In Simpler Syntax
task({:default => [:test]})
task(:test, lambda(){
ruby "test/unittest.rb"
})
Solution-Simplicity
Tool Complexity is OK
if it makes the Solution Simple
Efficiency Example
/bin/cat in Ruby
puts ARGF
It would be more than 50 lines of
code in C
How Ruby Serves
Learnability
Efficiency
Memorability
Errors
Satisfaction
Memorability
Conservativeness helps here too
Easy-to-remember syntax
Ruby looks like other languages
Memorability Example
Can you write /bin/cat -n without
looking anything?
I can, if I use Ruby.
ARGF.each_with_index{|line,...
How Ruby Serves
Learnability
Efficiency
Memorability
Errors
Satisfaction
Errors
You will see less errors due to
Consistent Syntax Rules
Succinct Code
Less code, Less bug.
How Ruby Serves
Learnability
Efficiency
Memorability
Errors
Satisfaction
Satisfaction
As a result, Ruby is fun to use.
It makes you feel smarter.
Ruby the Language
Ruby is Good for
Text Processing
Web Programming
XML Programming
GUI Applications
Ruby is Good for
Bioinformatics
eXtreme Programming
"I love it. Conceptually it is really clean and sweet."
-- Kent Beck
Why I created Ruby
Just for Fun
Tool for me myself
Ideal tool for Everyday Task
How I created Ruby
Combine Good Things from the
Past
Design Conservative
Design a Tool I Want to Use
To Have Fun
The History of
the Ruby Language
Pre-History
OO Fanboy
Language Geek
In 1993
Project Started
Mere Hobby
Goals
Scripting
a la Perl
Nice Clean Syntax
With OO
Real Goal
To Enjoy
Making Language
Implementation
Programming
Process
Lisp Semantics
Smalltalk OO
Conservative Syntax
Process
Deconstruct Perl
Reorganize into Class Library
Process
Iterators from CLU
Higher-order Functions using
Blocks
Process
Some Spice from Python
..and other languages
Released
1995-12-21
fj.sources
In 1997
Hired by NaCl
Became Full-time OSS
Developer
In 1999
First Book
In 2000
First English Book
Ruby in early 2000s
Became a Language
for Geeks
In 2004
Ruby on Rails
Ruby on Rails
Web Application
Framework
Web development that doesn’t hurt
Ruby on Rails
10x Productive than Java
15 Minutes to code Blog
Enterprise Ruby
Ruby started to be used in the
Enterprise Environment
Enterprise Ruby
Concerns
Fast Enough?
Scales?
Enterprise Ruby
Issues are Matters of
Resource/Money We Put in.
Ruby’s Mindshare
From Java To Ruby
What’s "Enterprise"?
What Major Players
Recommend:
Sun Microsystems
Microsoft
Apple
Etc.
Why Ruby?
Ruby is Productive
Ruby is Motivating
Ruby is Fun
A Message from Ruby
Enjoy Programming!
Upcoming SlideShare
Loading in …5
×

Why Ruby

4,906 views
4,743 views

Published on

Published in: Technology, Education
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,906
On SlideShare
0
From Embeds
0
Number of Embeds
44
Actions
Shares
0
Downloads
152
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Why Ruby

  1. 1. RubyConf China Why Ruby? Yukihiro "Matz" Matsumoto まつもと ゆきひろ matz@ruby-lang.org Copyright (c) 2008 Yukihiro "Matz" Matsumoto, No rights reserved thou
  2. 2. Moore’s Law The number of Transistors in LSI Doubles Every 18 Months
  3. 3. Moore’s Law Means: Computer Grows Exponentially Faster Cheaper More Common
  4. 4. Faster Computer PCs are Faster than Super Computers of 20 Years Ago
  5. 5. Cheaper Computers We can Buy a PC for $400 Now
  6. 6. Common Computers Now Everyone Owns Computers Personal Computers Cell Phones
  7. 7. Cell Phone as a Computer
  8. 8. Cell Phone as a Computer
  9. 9. Everyone is Connected Broadband WiFi Mobile Networks
  10. 10. Influence in Programming Moore’s Law Changes Software Complexity Programming Languages
  11. 11. Software Complexity No Business Can Be Run without Software We Need More Software Quicker Cheaper
  12. 12. Humans Don’t Improve Moore’s Law Does Not Apply to Humans
  13. 13. Productivity We Need More Software with Limited Resources
  14. 14. Productivity We Have Faster Computers Development Efficiency At the Cost of Runtime Efficiency
  15. 15. Productivity The Most Important Factor of Language Evolution Languages are One of the Tools for Productivity
  16. 16. How Languages Help Productivity
  17. 17. Sapir-Whorf hypothesis Language determines the way we think.
  18. 18. Theorem #1 Languages influence human thought, more than you think
  19. 19. Programming Languages Do programming languages influence human thoughts?
  20. 20. Thinking in Programming Language Natural languages are too ambiguous. Or, too verbose. Or, too indirect.
  21. 21. Thinking in Programming Language. If programmers think in programming languages, They must influence thoughts as much as natural languages do.
  22. 22. Theorem #2 "languages" in Theorem #1 includes programming languages.
  23. 23. Why don’t you choose a good language? Programming langugages are so easy to learn.
  24. 24. What is a good language? The language that helps thinking
  25. 25. Recursion BASIC did not allow recursion
  26. 26. Factorial def fact(n) if n == 0 1 else n * fact(n - 1) end end print "6!=", fact(6), "n" 6!=740
  27. 27. A good Language does not restrict our thought
  28. 28. Factorial Again print "200!=", fact(200), "n" 200!=78865786736479050355236321393218506 2295135977687173263294742533244359449963 4033429203042840119846239041772121389196 3883025764279024263710506192662495282993 1113462857270763317237396988943922445621 4516642402540332918641312274282948532775 2424240757390324032125740557956866022603 1904170324062351700858796178922222789623 7038973747200000000000000000000000000000 00000000000000000000
  29. 29. Less Restriction print "200!=", fact(200), "n" 200!=788657867364790503552363213932185062295 13597768717326329474253324435944996340334292 03042840119846239041772121389196388302576427 90242637105061926624952829931113462857270763 31723739698894392244562145166424025403329186 41312274282948532775242424075739032403212574 05579568660226031904170324062351700858796178 92222278962370389737472000000000000000000000 0000000000000000000000000000 Ruby
  30. 30. A good language Consise
  31. 31. Succinctness is Power by Paul Graham Fred Brooks’ Law Less Lines ≒ Effective
  32. 32. Succinctness is Power Less Code, Less Bugs Less Bugs, You Feel Yourself Smarter. You can be 10 times (or even 1000 times) more productive
  33. 33. More Factorial class Factorial { private static int fact(int n) { if (n == 1) return 1; return n * fact(n - 1); } public static void main(String[] argv) { System.out.println("6!="+fact(6)); } } 6!=740
  34. 34. Succinctness Example def fact(n) if n == 1 1 else n * fact(n - 1) end end print "6!=", fact(6), "n" 6!=740 Ruby
  35. 35. A good language Inspiring
  36. 36. Functional Factorial def fact(n) (1..n).inject(:*) end print "6!=", fact(6), "n" 6!=740
  37. 37. A good language makes better programming experience
  38. 38. For Better Programming Experience Learnability Efficiency Memorability Errors Satisfaction According to Dr. Jacob Nielsen
  39. 39. Learnability How easy is it for users to accomplish basic tasks the first time they encounter the design?
  40. 40. Learnability Usability for Beginners Important to Acquire New Users "Common Sense" is the Key
  41. 41. Efficiency Once users have learned the design, how quickly can they perform tasks?
  42. 42. Efficiency More important than learnability Efficiency is the top purpose of languages
  43. 43. Memorability When users return to the design after a period of not using it, how easily can they reestablish proficiency?
  44. 44. Memorability Association Consistency Orthogonality Common Sense No Radical
  45. 45. Errors How many errors do users make, how severe are these errors, and how easily can they recover from these errors?
  46. 46. Errors When you see repeated errors, you have to do something. Errors are the source of design inspiration.
  47. 47. Satisfaction How pleasant is it to use the design?
  48. 48. Satisfaction We program to have fun. Even when we program for money, we want to have fun as well.
  49. 49. How Ruby Serves Learnability Efficiency Memorability Errors Satisfaction
  50. 50. How Ruby Serves Learnability Efficiency Memorability Errors Satisfaction
  51. 51. Learnability Ruby is very conservative except for a few places Quick to learn Quick to try
  52. 52. Learnability Example Hello World! print "Hello Worldn" Hello World
  53. 53. How Ruby Serves Learnability Efficiency Memorability Errors Satisfaction
  54. 54. Efficiency No Run-Time Efficiency Ruby focuses on the cost of programming.
  55. 55. Devlopment Efficiency Ruby focuses on the cost of programming by Simplicity Consistency Smartness
  56. 56. Simplicity Do you like programming language to be simple? Probably you do.
  57. 57. Simplicity Does language simplicity really help you? not always. need more complex tool sometimes
  58. 58. Need More Complex Tool Knife vs Chain Saw Bicycle vs Airplane
  59. 59. Human Heart: No Simple We love simplicity We love complexity We love easy problems We hate easy problems
  60. 60. Pseudo-Simplicity Ruby is NOT a simple language.
  61. 61. Simplicity Example Rakefile Rake = Ruby Make task :default => [:test] task :test do ruby "test/unittest.rb" end
  62. 62. Simplicity Example In Simpler Syntax task({:default => [:test]}) task(:test, lambda(){ ruby "test/unittest.rb" })
  63. 63. Solution-Simplicity Tool Complexity is OK if it makes the Solution Simple
  64. 64. Efficiency Example /bin/cat in Ruby puts ARGF It would be more than 50 lines of code in C
  65. 65. How Ruby Serves Learnability Efficiency Memorability Errors Satisfaction
  66. 66. Memorability Conservativeness helps here too Easy-to-remember syntax Ruby looks like other languages
  67. 67. Memorability Example Can you write /bin/cat -n without looking anything? I can, if I use Ruby. ARGF.each_with_index{|line,i| printf "%4d %s",i,line }
  68. 68. How Ruby Serves Learnability Efficiency Memorability Errors Satisfaction
  69. 69. Errors You will see less errors due to Consistent Syntax Rules Succinct Code Less code, Less bug.
  70. 70. How Ruby Serves Learnability Efficiency Memorability Errors Satisfaction
  71. 71. Satisfaction As a result, Ruby is fun to use. It makes you feel smarter.
  72. 72. Ruby the Language
  73. 73. Ruby is Good for Text Processing Web Programming XML Programming GUI Applications
  74. 74. Ruby is Good for Bioinformatics eXtreme Programming "I love it. Conceptually it is really clean and sweet." -- Kent Beck
  75. 75. Why I created Ruby Just for Fun Tool for me myself Ideal tool for Everyday Task
  76. 76. How I created Ruby Combine Good Things from the Past Design Conservative Design a Tool I Want to Use To Have Fun
  77. 77. The History of the Ruby Language
  78. 78. Pre-History OO Fanboy Language Geek
  79. 79. In 1993 Project Started Mere Hobby
  80. 80. Goals Scripting a la Perl Nice Clean Syntax With OO
  81. 81. Real Goal To Enjoy Making Language Implementation Programming
  82. 82. Process Lisp Semantics Smalltalk OO Conservative Syntax
  83. 83. Process Deconstruct Perl Reorganize into Class Library
  84. 84. Process Iterators from CLU Higher-order Functions using Blocks
  85. 85. Process Some Spice from Python ..and other languages
  86. 86. Released 1995-12-21 fj.sources
  87. 87. In 1997 Hired by NaCl Became Full-time OSS Developer
  88. 88. In 1999 First Book
  89. 89. In 2000 First English Book
  90. 90. Ruby in early 2000s Became a Language for Geeks
  91. 91. In 2004 Ruby on Rails
  92. 92. Ruby on Rails Web Application Framework Web development that doesn’t hurt
  93. 93. Ruby on Rails 10x Productive than Java 15 Minutes to code Blog
  94. 94. Enterprise Ruby Ruby started to be used in the Enterprise Environment
  95. 95. Enterprise Ruby Concerns Fast Enough? Scales?
  96. 96. Enterprise Ruby Issues are Matters of Resource/Money We Put in.
  97. 97. Ruby’s Mindshare From Java To Ruby
  98. 98. What’s "Enterprise"? What Major Players Recommend: Sun Microsystems Microsoft Apple Etc.
  99. 99. Why Ruby? Ruby is Productive Ruby is Motivating Ruby is Fun
  100. 100. A Message from Ruby Enjoy Programming!

×