ruby 124c41+ - matz

55
Powered by Rabbit 0.6.4 Ruby 124C41+ Yukihiro "Matz" Matsumoto まつもと ゆきひろ

Upload: thoughtworks

Post on 15-Jan-2015

1.594 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ruby 124C41+

Yukihiro "Matz" Matsumotoまつもと ゆきひろ

Page 2: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

FAQ

What's 124C41+?

1/54

Page 3: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ralph 124C41+

A romance of the year 26602/54

Page 4: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ralph 124C41+

The very early science fiction story

In the year 2660, a genius inventor Ralph 124C41+ saves his girlfriend kidnapped by a bad Martian.

3/54

Page 5: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ralph 124C41+Written by Hugo Gernsback✓

in 1911✓

Predicted a lot of modern inventions

Television✓

Solar power✓

and lot more✓

4/54

Page 6: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ralph 124C41+

Check Wikipedia

5/54

Page 7: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ralph 124C41+

One to foresee for one✓

means if we have enough input and insight, we can foresee the future.

The future of Ruby✓

6/54

Page 8: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ruby 124C41+

We try to foresee the future of Ruby the language

7/54

Page 9: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Moore's law

The number of transistors in LSI doubles every 24 months

8/54

Page 10: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

the CPU

Moore's law means the power of CPU grows exponentially

9/54

Page 11: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Faster Computers

PCs are faster than super computers of 20 years ago

10/54

Page 12: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Cheaper Computers

We can buy a laptop PC at appliance stores for $400 or less

11/54

Page 13: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Cheaper Connection

$50 or less for 100M optic fiber connection in Japan

12/54

Page 14: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Bigger Storage

Bigger RAM✓

Bigger HDD✓

13/54

Page 15: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The end of Clock grow

14/54

Page 16: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Many Cores

Dual core✓

Quad core✓

Many core✓

or even DC in a chip✓

15/54

Page 17: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ubiquitous Computer

Japanese cell phone from Panasonic

16/54

Page 18: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Hardware Trend

Faster✓

Cheaper✓

More ubiquitous✓

More cores✓

17/54

Page 19: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Software Trend

hardware changes✓

cause software changes✓

18/54

Page 20: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Runtime Efficiency

Less important✓

CPUs are fast✓

19/54

Page 21: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

No More Assembler

haven't heard lately?✓

20/54

Page 22: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Software Becomes

More important✓

More complex✓

We just need more software✓

21/54

Page 23: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Abstraction

Object-oriented programming

Functional programming✓

22/54

Page 24: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Software Trend

Runtime efficiency less important

We can emphasize human factor

More abstraction✓

More confortable tools✓

23/54

Page 25: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Information Explosion

We will produce 988 Exabytes in the year 2010

Bigger data than human kind have ever produced

24/54

Page 26: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Summary

Machines are faster✓

Connections are cheaper✓

We need more software✓

We have huge amount of data

25/54

Page 27: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ruby in the Past

back in 1993✓

mc68000 200MHz✓

200MB HDD✓

BSD UNIX✓

26/54

Page 28: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The year 1993

C / C++✓

Windows 3.1 / SunOS / MacOS

Perl4 / AWK✓

No one use OOP in scripting✓

27/54

Page 29: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The year 1993

OOP fanboy✓

Language geek✓

UNIX hacker✓

28/54

Page 30: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

OO Scripting

Too slow✓

Too complex✓

Too much✓

29/54

Page 31: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

No One Stopped Me

Project started on February 24, 1993

The day I choose the name Ruby

The name is so important for software

one thing I regret Googlability ✓

30/54

Page 32: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

No One Stopped Me

Took me 6 months for simple "hello world"

that made me realized GC needs

Released publicly December 21, 1995

31/54

Page 33: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Ruby the Language

Ruby has proven

OOP for scripting is useful✓

OOP can be simple and easy✓

Programming can be fun again

32/54

Page 34: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Extreme Language Design

if OOP is good, make everything OOP

if scripting is good, make everything scripting

if DSL is good, make everything DSL

33/54

Page 35: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Extreme Language Design

if higher order function is good, allow every method to be higher order function

if mixin is good, disallow multiple inheritance

34/54

Page 36: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Background

Machines are faster / cheaper / ubiquitous

More cores✓

Connections are cheaper✓

35/54

Page 37: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Background

We need more software✓

Productivity become more important

We have huge amount of data (988 Exabytes)

36/54

Page 38: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Background

Ruby focus on programmers✓

Ruby focus on productivity✓

Ruby tend to choose extreme design

37/54

Page 39: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

What do you think?

38/54

Page 40: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

Faster

Multiple VM✓

GC improvement✓

JIT?✓

39/54

Page 41: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

More Powerful

Distributed programmingdRuby / Rinda✓

Message Queue✓

faster IPC (messagepack)✓

Multi-core aware (via MVM)✓

40/54

Page 42: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

Broader

small → embedding✓

large → HPC✓

41/54

Page 43: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Embedding

Smaller Implementation

Alternative (not planned yet)✓

Atomic Ruby✓

42/54

Page 44: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

HPC

High Performance Computing

improve NArray (w/ libjit)✓

MPI Ruby✓

AOT compiler✓

and other HPC stuff✓

43/54

Page 45: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

More Modular

Selector namespaceclassbox✓

Traits✓

44/54

Page 46: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Selector Namespace

limit the effectiveness of name overriding

scoped mathn, for example✓

45/54

Page 47: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Traits

Operational combination of features (methods)

module operation +, -✓

46/54

Page 48: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

More Functional

Explicit lazy evaluation✓

Enumerator as Lazy List✓

47/54

Page 49: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Functional Ruby

explict vs implicit

obj.foo vs obj.method(:foo)✓

foo() vs foo.call()or foo[] or foo.()✓

48/54

Page 50: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Functional Ruby

explict vs implicit

(take 10 (lines f)) vs f.each.take(10)

not f.lines.take(10)✓

49/54

Page 51: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Functional Ruby (to be)

map etc. do not work for infinite enumerable

mapx (assumed name) would return enumerator

50/54

Page 52: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

Faster✓

More powerful✓

Broader✓

More modular✓

More functional✓

51/54

Page 53: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

The Future of Ruby

We will keep moving forward✓

Stay tuned✓

52/54

Page 54: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

We need you

Help us✓

Let's make Ruby even better!

See you at ruby-core✓

53/54

Page 55: Ruby 124C41+  - Matz

Powered by Rabbit 0.6.4

Make the World Better

Thank you

54/54