standing on the shoulders of giants - zenspider.com · standing on the shoulders of giants mwrc...

Post on 25-May-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx1

Standing on the Shoulders of Giants

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Setting ExpectationsSorta a history talk. Le Sigh.

Very Little Code.

Ideas/Survey/Inspiration Talk.

109 Slides, ~3.6 SPM2

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx3

Intro

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

"we [the Moderns] are like dwarves perched on the shoulders of giants [the Ancients], and thus we are able to see more and farther than the latter. And this is not at all because of the acuteness of our sight or the stature of our body, but because we are carried aloft and elevated by the magnitude of the giants.”

Bernard of Chartres, 12th century

4

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

"If I have seen further it is by standing on ye sholders of Giants.”

Isaac Newton, 1676

5

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

In Other Words6

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Not a new concept, at all

7

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Newton was

iterating8

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Simple Idea9

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Idea10

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Begs the

question11

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

WTF, Language?

12

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby13

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

RubyCreated by Matz in 1993

Interpreted File-based “Scripting” System.

Purely Object-Oriented Class-based Runtime.

Incredibly Complex Syntax & Semantics.

Extensive Class Library, Numeric Tower, etc.

Designed for “Developer Happiness”.14

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Fibonacci

15

class Integer def fib self < 2 ? self : (self-1).fib + (self-2).fib end end

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby History

16

1981 - 1990

1981 1983 1985 1987 1989

1991 - 2000

1991 1993 1995 1997 1999

2001 - 2010

2001 2003 2005 2007 2009

2011 - 2020

2011 2013 2015 2017 2019

Feb 1993: Birth

Dec 1995: Ruby 0.95

Dec 1996: Ruby 1.0

Dec 1998: Ruby 1.2

Aug 1999: Ruby 1.4

Aug 2000: Ruby 1.6

Aug 2003: Ruby 1.8

Dec 2007: Ruby 1.9

Feb 2013: Ruby 2.0

Dec 2013: Ruby 2.1

Dec 2014: Ruby 2.2

Glo

bal

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby History

16

1981 - 1990

1981 1983 1985 1987 1989

1991 - 2000

1991 1993 1995 1997 1999

2001 - 2010

2001 2003 2005 2007 2009

2011 - 2020

2011 2013 2015 2017 2019

Feb 1993: Birth

Dec 1995: Ruby 0.95

Dec 1996: Ruby 1.0

Dec 1998: Ruby 1.2

Aug 1999: Ruby 1.4

Aug 2000: Ruby 1.6

Aug 2003: Ruby 1.8

Dec 2007: Ruby 1.9

Feb 2013: Ruby 2.0

Dec 2013: Ruby 2.1

Dec 2014: Ruby 2.2

Glo

bal

What Happened?

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby 1.0 Shipped with Almost Everything

17

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Not Much Added Since 1.0Private/Protected (~1.1)

Class Variables (1.6)

Encodings (1.9, 2.0)

frilly syntactic sugar (that doesn't really improve much of anything) (1.9+)

18

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby is a fantastic language, but it could be

better.19

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Smalltalk

Ruby

Lisp Perl

20

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

COLASelf

Smalltalk

Ruby

Lisp Perl

21

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx22

Smalltalk Self

Scheme/Racket FONC/COLA

+ V

PRI T

eam

+ P

LT T

eam

+ D

an In

galls

TooCoolfor

Logos?

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

& Many More23

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Smalltalk24

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Brief summary of SmalltalkBy Alan Kay & Dan Ingalls at Xerox PARC, created in 1972. Publicly released in 1980.

Bytecode Compiled Image-based System.

Purely Object-Oriented Class-based Runtime.

Incredibly Simple/Clean Syntax and Semantics. Only 6 keywords, 4 precedence levels.

Fully Immersive development environment.

Incubator for Ideas: this is where many ideas of OO, patterns, mvc, etc came from.

WAY ahead of its time. Still is in some ways.

25

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Fibonacci

26

!Integer methodsFor: 'benchmarks' stamp: 'jm 11/20/1998 07:06'! fib ^ self < 2 ifTrue: [self] ifFalse: [(self-1) fib + (self-2) fib] ! !

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Self27

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Brief summary of selfDavid Ungar & Randall Smith started at Xerox PARC and finished at Sun in 87.

Bytecode Compiled + JIT Image-based System.

Purely Object-Oriented Classless (aka prototypes) Runtime.

Incredibly Simple/Clean Syntax & Semantics. 8 bytecodes. EIGHT.

Fully Immersive development environment.

Incubator for Ideas: java hotspot was born here.

28

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Fibonacci

29

fibonacci = ( <= 1 ifTrue: [ self ] False: [ predecessor fibonacci + (- 2) fibonacci ])

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Scheme & Racket

30

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Brief summary of schemeBy Gerald Sussman & Guy Steele in 1975.

Scheme is a minimal variant of a lexically-scoped Lisp.

Lisp is a functional language based on lists.

Innovation Galore: Tail Call Optimizations, Numeric Tower, Hygienic Macros, 1st class continuations, etc.

31

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Brief summary of racketBy Matthias Felleisen & PLT Cohort.

Racket is a maximal variant of Scheme. Huge incredibly diverse library.

Bytecode Compiled + JIT File-based System.

Mostly functional multi-language Runtime.

Simple Syntax & Semantics w/ rich expressions like extensive macros & structural matching.

Ships with Editor & Runtime.

32

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Fibonacci

33

(define (fib x) (if (< x 2) x (+ (fib (- x 1)) (fib (- x 2)))))

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

COLA34

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

A Tiny, Beautiful

Kernel35

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

In the theme of this talk, we are coming back around to Alan Kay

36

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Brief Summary of VPRI Viewpoints Research Institute (VPRI) is Alan Kay's thinktank

5 year NSF grant to work on FONC: foundations of new computing

Project: STEPS (STEPS Toward Expressive Programming Systems)

They want a whole system that can be understood by one brain

Entire system, from language to GUI Apps, in ~20kloc.37

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Brief Summary of COLA Machine Compiled File-Based System.

Object Oriented Prototype-based Runtime.

Incredibly Simple/Clean Syntax & Semantics. (notice a pattern?)

COLA = Combined Object/Lambda Architecture.

“designed to be the simplest possible language which can be described in itself"

38

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Fibonacci

39

Integer fib { ; lispy (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2)))) }

Integer fib [ ; smalltalky ^ self < 2 ifTrue: [self] ifFalse: [(self - 1) fib + (self - 2) fib] ]

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Time to Plunder!

40

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Time to Plunder!

40

Yarrrrrr

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ideas from Smalltalk

41

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Squeak Smalltalk generates and builds itself.

42

Smalltalk

New VM

Smalltalk Subsetto C translator

VM written inSmalltalk Subset

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Extensive Hierarchy of Classes

43…lots more…

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Developer Tools!44

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx45

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx46

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx47

Integrated Debugger

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Implementors & Senders Browser

48

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

(and a lot more)49

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

#inspect actually useful# smalltalk: >> Color lightRed darker => (Color r: 0.92 g: 0.736 b: 0.736) >> (Color r: 0.92 g: 0.736 b: 0.736) => (Color r: 0.92 g: 0.736 b: 0.736)

# versus ruby: >> Color.new(0.92, 0.736, 0.736) => #<Color:0x007fad5114c458 @r=0.92, @g=0.736, @b=0.736>

50

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ideas from Self

51

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

This was the birthplace of JIT.

52

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Self is the reason why Java & Javascript

are fast53

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Dynamic languages CAN be fast.

54

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Prototyping55

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Influenced Javascript & IO

56

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Prototyping is Handy!class Object def define_method name, &b self.singleton_class.send :define_method, name, &b self end

def clone_method obj, name define_method name, &obj.method(name) end end

class X; def to_s; self.class.name; end; end class Y; def to_s; self.class.name; end; end

puts X.new # X puts Y.new # Y puts X.new.clone_method(Y.new, :to_s) # Y??

57

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Developer Tools!58

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx59

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx60

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx61

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx62

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ideas from Scheme & Racket

63

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx64

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx65

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx66

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx67

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Visual Stack Traces

68

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx69

Structural Pattern Matching

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Multiple Language Support

#lang scribble/manual @title{My Library} Welcome to my documentation: @racket[(list 'testing 1 2 3)].

70

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

OO is good for organization, scoping,

and data hiding71

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

But…72

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

lambda is king

73

𝞴

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

lambda is king

73

𝞴👑

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Speed Comparison% racket fib.rkt '(0 1 1 2 3 5 8 13) cpu time: 13 real time: 13 gc time: 0 cpu time: 22 real time: 22 gc time: 0 cpu time: 35 real time: 35 gc time: 0 '(832040 1346269 2178309)

% ruby fib.rb [0, 1, 1, 2, 3, 5, 8, 13] user system total real 30 0.230000 0.000000 0.230000 ( 0.237727) 31 0.390000 0.000000 0.390000 ( 0.389832) 32 0.600000 0.010000 0.610000 ( 0.602819)

74

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

17x faster75

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Tail Call Optimization

76

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ideas from COLA

77

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

STEP’s vision of computing is massively

powerful78

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx79

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Debian Mac OS X

Windows Vista FreeBSD

Open Office GTK+ v2

Ruby electromagnetism

283 million lines of code 86 million lines of code 50 million lines of code 9 million lines of code 10 million lines of code 650 thousand lines of code 1.2 million lines of code 4 lines of code

80

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Combined Object/Lambda Architecture

81

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Objects for storage and organization

82

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Lambdas for execution

83

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx84

Objectsfor

Storage

Lambdasfor

Execution

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx85

string "lookup"_vt

symbol

string "addMethod"_vt

symbolstring "allocate"_vt

symbol

string "delegated"_vt

symbol

string "intern"_vt

symbol

--datalookupmethod

_vtclosure

--dataaddMethodmethod

_vtclosure

--datadelegatedmethod

_vtclosure

--dataallocatemethod

_vtclosure

--datainternmethod

_vtclosure

parentvalueskeys

4size_vt

vtable_vt

--parentvalueskeys

5size--_vt

SymbolList

parent--values

keys --0size

_vtclosure_vt

parent--values

keys --0size

_vtobject_vt

parentvalueskeys

1size_vt

symbol_vt

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Nile (graphics language) Source

Nile to Nile AST

Nile AST

Nile AST to Nothing

Nothing Code

Nothing to N-AST

N-AST code

Nothing to x86

CPU

OMeta: Translators all the way down

86

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Define your system using basic axioms.

87

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Teach the GUI Euclid’s geometry and give it a rule

engine88

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

650 kloc gtk GUI library <

Rules + Euclid in ~250 loc89

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Runtime90

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

MUCH smaller91

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Much more understandable

92

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Much more maintainable.

93

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby’s 1.3 mloc <

STEPS’ 20 kloc94

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

👋 Too Hand Wavey?

👋95

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

TONS of Rich Info Here:

http://vpri.org/html/writings.php

96

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx97

Conclusion

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Surveyed a minority of ideasself-bootstrapping implementations

extensive collection / magnitude hierarchies

instance-based inheritance

JIT compilation

Importance of lambdas & Tail Calls

object level pattern matching

the combined object/lambda architecture

98

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Ruby is at its best

99

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Borrowing great ideas

100

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

From other languages

101

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

It has fallen behind

102

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

Lost its way103

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

It's time for ruby to step up

104

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

do more with these ideas

105

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

keep pushing forward

106

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx

to stand upon the shoulders of giants

107

 Standing on the Shoulders of Giants

MWRC 2015, SLC, UT

Ryan Davis, Seattle.rb 

@the_zenspiderx108

Thank You

top related