Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PREMATURE
OPTIMIZATION
The Root of ALL Evil
@akitaonrails
PREMATURE
OPTIMIZATION
The Root of ALL Evil
@akitaonrails
2.0
@akitaonrails
Uber para segurança particular
Uber para advogados
Uber para maconha
Uber para massagem
Uber para álcool
Uber para lavande...
Airbnb para barcos
Airbnb para cachorros
Airbnb para equipamentos
Airbnb para acampamentos
Airbnb para banheiros (!!)
Airb...
Tinder para sapatos
Tinder para cachorros
Tinder para notícias
Tinder para networking
Tinder para empregos
Tinder para sai...
http://bit.ly/1iUMuuF
elastic.co
“The Social Network" (2010)
“The Social Network" (2010)
“The Social Network" (2010)
“The Social Network" (2010)
“The Social Network" (2010)
“The Social Network" (2010)
Name Games Wins Loses Points Elo Rating
1 Kong 217 117 100 17 802
2 Samus 211 110 101 9 842
3 Wario 197 102 95 7 824
4 Lui...
Name Games Wins Loses Points Elo Rating
1 Kong 217 117 100 17 802
2 Samus 211 110 101 9 842
3 Wario 197 102 95 7 824
4 Lui...
Name Games Wins Loses Points Elo Rating
1 Kong 217 117 100 17 802
2 Samus 211 110 101 9 842
3 Wario 197 102 95 7 824
4 Lui...
Name Games Wins Loses Points Elo Rating
1 Samus 221 120 101 19 896
2 Kong 217 117 100 17 802
3 Luigi 186 95 91 4 841
4 Zel...
Name Games Wins Loses Points Elo Rating
1 Samus 221 120 101 19 896
2 Kong 217 117 100 17 802
3 Luigi 186 95 91 4 841
4 Zel...
Name Games Wins Loses Points Elo Rating
1 Samus 221 120 101 19 896
2 Kong 217 117 100 17 802
3 Luigi 186 95 91 4 841
4 Zel...
Name Games Wins Loses Points Elo Rating
1 Samus 221 120 101 19 896
2 Kong 227 117 110 7 732
3 Luigi 186 95 91 4 841
4 Zeld...
Name Games Wins Loses Points Elo Rating
1 Kong 217 117 100 17 802
2 Samus 211 110 101 9 842
3 Wario 197 102 95 7 824
4 Lui...
Name Games Wins Loses Points Elo Rating
1 Kong 217 117 100 17 802
2 Samus 211 110 101 9 842
3 Wario 197 102 95 7 824
4 Lui...
Name Games Wins Loses Points Elo Rating
1 Kong 217 117 100 17 802
2 Samus 211 110 101 9 842
3 Wario 197 102 95 7 824
4 Lui...
Name Games Wins Loses Points Elo Rating
1 Pikachu 209 105 104 1 851
2 Zelda 160 81 79 2 847
3 Samus 211 110 101 9 842
4 Lu...
Name Games Wins Loses Points Elo Rating
1 Pikachu 209 105 104 1 851
2 Zelda 160 81 79 2 847
3 Samus 211 110 101 9 842
4 Lu...
Name Games Wins Loses Points Elo Rating
1 Pikachu 209 105 104 1 851
2 Zelda 160 81 79 2 847
3 Samus 211 110 101 9 842
4 Lu...
Name Games Wins Loses Points Elo Rating
1 Zelda 170 91 79 12 904
2 Pikachu 209 105 104 1 851
3 Luigi 186 95 91 4 841
4 War...
Name Games Wins Loses Points Elo Rating
1 Zelda 170 91 79 12 904
2 Pikachu 209 105 104 1 851
3 Luigi 186 95 91 4 841
4 War...
Name Games Wins Loses Points Elo Rating
1 Zelda 170 91 79 12 904
2 Pikachu 209 105 104 1 851
3 Luigi 186 95 91 4 841
4 War...
Name Games Wins Loses Points Elo Rating
1 Zelda 170 91 79 12 904
2 Luigi 186 95 91 4 841
3 Fox 218 105 113 -8 829
4 Wario ...
ELO Rating System
Microsoft TrueSkill Rating System
Google PageRank
Facebook EdgeRank
.NET
C
CoffeeScriptElixir
F#
Groovy
Java
JavaScript
Objective-C
PHP
Perl PythonRuby
Swift
Visual Basic .NET
.NET
C
CoffeeScript
Elixir
F#
Groovy
Java JavaScript
Objective-C
PHPPerl
Python
Ruby
Swift
Visual Basic .NET
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Speedcode (1953)
John Backus
- interpreter took 310 memory words, a...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Fortran (1957)
John Backus
- first optimizing compiler
- complex num...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
CPL (1963)
Christopher Strachey
- Combined/Cambridge/

Combined Pro...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
BCPL (1966)
Martin Richards
- Basic CPL
- Bootstrap CPL
- popular c...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
occam (1983)
INMOS
- concurrent programming language
- Bootstrap CP...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Algol (1958)
ETH Zürich committee
- Algol 58, Algol 60, Algol 68, A...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Modula (1960)
Niklaus Wirth
- "One of the first languages
designed f...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
MUMPS (1966)
Neil Pappalardo
- "Massachusetts General Hospital Util...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
ADA (1966)
MIL-STD
- strong typing, generics
- modularity mechanism...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Hope (1970s)
Edinburgh University
- NPL and Hope: first languages
wi...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
SNOBOL (1962)
AT&T Bell Labs
- patterns as a first-class data type
-...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
FLOW-MATIC (1955)
Grace Hopper
- 1952 - A0 compiler
- 1959 - COBOL
...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Simula (1967)
Ole-Johan Dahl, Kristen Nygaard
- object-oriented pro...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
CLU (1974)
Barbara Liskov
- early object-oriented programming
- cla...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
ISWIM (1965)
Peter J. Landin
- "If you See What I Mean"
- functiona...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Miranda (1985)
David Turner
- lazy, purely functional programming
-...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Clean (1987)
Radboud University Nijmegen
- mutable state and I/O is...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Self (1987)
David Ungar, Randall Smith
- dialect of Smalltalk (OOP)...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Prolog (1972)
Alain Colmerauer
- logic programming (influenced Erlan...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
Erlang (1986)
Joe Armstrong, Robert Virding and Mike Williams
- dis...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
ML (1973)
Robin Milner/University of Edinburgh
- Hindley–Milner typ...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
REBOL (1997)
Carl Sassenrath
- "Relative Expression Based Object 
L...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
• APL (1964) introduced: array programming,
influenced: functional programming
• ALGOL (1958) refined both structured proced...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
FORTRAN (1957)
John Backus
- FORTRAN 2015
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
COBOL (1959)
Conference on Data Systems
Languages (CODASYL)
- ...
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
1960
1965
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
23%
32%
45%
Python Fortran C
500k LOC
Gordon Moore - Intel co-founder
0
1,000,000,000
2,000,000,000
3,000,000,000
4,000,000,000
5,000,000,000
6,000,000,000
7,000,000,000
8,000,000,000
1965 197...
0
1,000,000,000
2,000,000,000
3,000,000,000
4,000,000,000
5,000,000,000
6,000,000,000
7,000,000,000
8,000,000,000
1965 197...
0
1,000,000,000
2,000,000,000
3,000,000,000
4,000,000,000
5,000,000,000
6,000,000,000
7,000,000,000
8,000,000,000
1965 197...
Gordon Bell - DEC early employee
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
Minicomputadores
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
Minicomputadores
Workstations
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
Minicomputadores
Workstations
...
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
Minicomputadores
Workstations
...
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
Minicomputadores
Workstations
...
$100M
$10M
$1M
$100K
$10k
$1k
$100
$10
1940 1960 1970 1980 1990 2000 2010
Supercomputadores
Minicomputadores
Workstations
...
Vaticano 2005
Vaticano 2013
2010 2011 2012 2013 20142006 2007 2008 2009
2010 2011 2012 2013 20142006 2007 2008 2009
2010 2011 2012 2013 20142006 2007 2008 2009
2017 60 anos de FORTRAN
2017 60 anos de FORTRAN
2014 55 anos de COBOL
2017 60 anos de FORTRAN
2014 55 anos de COBOL
2013 55 anos de LISP
2017 60 anos de FORTRAN
2014 55 anos de COBOL
2013 55 anos de LISP
2012 40 anos de Smalltalk
2017 60 anos de FORTRAN
2014 55 anos de COBOL
2013 55 anos de LISP
2012 40 anos de Smalltalk
2015 35 anos de ADA
Séc XVII Cálculo Newton/Leibniz
Séc XVII Cálculo Newton/Leibniz
1930's Lambda Calculus Alonzo Church
Séc XVII Cálculo Newton/Leibniz
1930's Lambda Calculus Alonzo Church
1939 Elo Rating System Arpad Elo
Séc XVII Cálculo Newton/Leibniz
1930's Lambda Calculus Alonzo Church
1939 Elo Rating System Arpad Elo
1975 Vector Space Mo...
SPA e-commerce
SPA e-commerce
http://www.loja.com.br/#!/produtos/item-001
SPA e-commerce
http://www.loja.com.br/#!/produtos/item-001
http://www.loja.com.br/?_escaped_fragment_=/produtos/item-001
High Level
Numbers
Client #1
$ 4,000
$ 4,000
($ 7 MI/yr revenue - 0.68%)
Client #2
$ 100,000+
$ 100,000+
($ 800 MI/yr revenue - 0.15%)
• Minimum IT Cost:
• Minimum IT Cost:
• USD 1000 - Cloud Services
• Minimum IT Cost:
• USD 1000 - Cloud Services
• USD 3000 - 1 Developer
• Minimum IT Cost:
• USD 1000 - Cloud Services
• USD 3000 - 1 Developer
• USD 4000 - 1 “Responsible” (Manager, Marketing, ...
• Minimum IT Cost:
• USD 1000 - Cloud Services
• USD 3000 - 1 Developer
• USD 4000 - 1 “Responsible” (Manager, Marketing, ...
• Minimum IT Cost:
• USD 1000 - Cloud Services
• USD 3000 - 1 Developer
• USD 4000 - 1 “Responsible” (Manager, Marketing, ...
• Minimum IT Cost:
• USD 1000 - Cloud Services
• USD 3000 - 1 Developer
• USD 4000 - 1 “Responsible” (Manager, Marketing, ...
• Minimum IT Cost:
• USD 1000 - Cloud Services
• USD 3000 - 1 Developer
• USD 4000 - 1 “Responsible” (Manager, Marketing, ...
Increase Revenue
>
Lower Costs
Innovation
Impossible Yesterday
Possible Today
Innovation
Constraints
PREMATURE
OPTIMIZATION
is the Root of all Evil
THANKS!slideshare.net/akitaonrails
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
Upcoming SlideShare
Loading in …5
×

Premature Optimization 2.0 - Intercon 2016

915 views

Published on

Minha apresentação sobre Otimização Prematura e a carreira de Cientista da Computação. Esta versão junta com a anterior: Restrições = Inovação.

Published in: Technology
  • Be the first to comment

Premature Optimization 2.0 - Intercon 2016

  1. 1. PREMATURE OPTIMIZATION The Root of ALL Evil @akitaonrails
  2. 2. PREMATURE OPTIMIZATION The Root of ALL Evil @akitaonrails 2.0
  3. 3. @akitaonrails
  4. 4. Uber para segurança particular Uber para advogados Uber para maconha Uber para massagem Uber para álcool Uber para lavanderia Uber para passeio de cachorro
  5. 5. Airbnb para barcos Airbnb para cachorros Airbnb para equipamentos Airbnb para acampamentos Airbnb para banheiros (!!) Airbnb para impressão 3D Airbnb para cozinhas
  6. 6. Tinder para sapatos Tinder para cachorros Tinder para notícias Tinder para networking Tinder para empregos Tinder para saias
  7. 7. http://bit.ly/1iUMuuF
  8. 8. elastic.co
  9. 9. “The Social Network" (2010)
  10. 10. “The Social Network" (2010)
  11. 11. “The Social Network" (2010)
  12. 12. “The Social Network" (2010)
  13. 13. “The Social Network" (2010)
  14. 14. “The Social Network" (2010)
  15. 15. Name Games Wins Loses Points Elo Rating 1 Kong 217 117 100 17 802 2 Samus 211 110 101 9 842 3 Wario 197 102 95 7 824 4 Luigi 186 95 91 4 841 5 Zelda 160 81 79 2 847 6 Pikachu 209 105 104 1 851 7 Yoshi 223 112 111 1 803 8 Mario 203 101 102 -1 820 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785
  16. 16. Name Games Wins Loses Points Elo Rating 1 Kong 217 117 100 17 802 2 Samus 211 110 101 9 842 3 Wario 197 102 95 7 824 4 Luigi 186 95 91 4 841 5 Zelda 160 81 79 2 847 6 Pikachu 209 105 104 1 851 7 Yoshi 223 112 111 1 803 8 Mario 203 101 102 -1 820 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785
  17. 17. Name Games Wins Loses Points Elo Rating 1 Kong 217 117 100 17 802 2 Samus 211 110 101 9 842 3 Wario 197 102 95 7 824 4 Luigi 186 95 91 4 841 5 Zelda 160 81 79 2 847 6 Pikachu 209 105 104 1 851 7 Yoshi 223 112 111 1 803 8 Mario 203 101 102 -1 820 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785
  18. 18. Name Games Wins Loses Points Elo Rating 1 Samus 221 120 101 19 896 2 Kong 217 117 100 17 802 3 Luigi 186 95 91 4 841 4 Zelda 160 81 79 2 847 5 Pikachu 209 105 104 1 851 6 Yoshi 223 112 111 1 803 7 Mario 203 101 102 -1 820 8 Wario 207 102 105 -3 760 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785 Samus (2nd) wins from Wario (3rd) 10 times
  19. 19. Name Games Wins Loses Points Elo Rating 1 Samus 221 120 101 19 896 2 Kong 217 117 100 17 802 3 Luigi 186 95 91 4 841 4 Zelda 160 81 79 2 847 5 Pikachu 209 105 104 1 851 6 Yoshi 223 112 111 1 803 7 Mario 203 101 102 -1 820 8 Wario 207 102 105 -3 760 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785 Samus (2nd) wins from Wario (3rd) 10 times
  20. 20. Name Games Wins Loses Points Elo Rating 1 Samus 221 120 101 19 896 2 Kong 217 117 100 17 802 3 Luigi 186 95 91 4 841 4 Zelda 160 81 79 2 847 5 Pikachu 209 105 104 1 851 6 Yoshi 223 112 111 1 803 7 Mario 203 101 102 -1 820 8 Wario 207 102 105 -3 760 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785 Samus (2nd) wins from Wario (3rd) 10 times
  21. 21. Name Games Wins Loses Points Elo Rating 1 Samus 221 120 101 19 896 2 Kong 227 117 110 7 732 3 Luigi 186 95 91 4 841 4 Zelda 160 81 79 2 847 5 Pikachu 209 105 104 1 851 6 Yoshi 223 112 111 1 803 7 Mario 203 101 102 -1 820 8 Wario 207 102 105 -3 760 9 Bowser 196 92 104 -12 845 10 Fox 208 95 113 -18 754 Kong (2nd) loses to Bowser (10th) 10 times
  22. 22. Name Games Wins Loses Points Elo Rating 1 Kong 217 117 100 17 802 2 Samus 211 110 101 9 842 3 Wario 197 102 95 7 824 4 Luigi 186 95 91 4 841 5 Zelda 160 81 79 2 847 6 Pikachu 209 105 104 1 851 7 Yoshi 223 112 111 1 803 8 Mario 203 101 102 -1 820 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785
  23. 23. Name Games Wins Loses Points Elo Rating 1 Kong 217 117 100 17 802 2 Samus 211 110 101 9 842 3 Wario 197 102 95 7 824 4 Luigi 186 95 91 4 841 5 Zelda 160 81 79 2 847 6 Pikachu 209 105 104 1 851 7 Yoshi 223 112 111 1 803 8 Mario 203 101 102 -1 820 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785 Name Games Wins Loses Points E 1 Pikachu 209 105 104 1 2 Zelda 160 81 79 2 3 Samus 211 110 101 9 4 Luigi 186 95 91 4 5 Wario 197 102 95 7 6 Mario 203 101 102 -1 7 Yoshi 223 112 111 1 8 Kong 217 117 100 17 9 Bowser 186 82 104 -22 10 Fox 208 95 113 -18
  24. 24. Name Games Wins Loses Points Elo Rating 1 Kong 217 117 100 17 802 2 Samus 211 110 101 9 842 3 Wario 197 102 95 7 824 4 Luigi 186 95 91 4 841 5 Zelda 160 81 79 2 847 6 Pikachu 209 105 104 1 851 7 Yoshi 223 112 111 1 803 8 Mario 203 101 102 -1 820 9 Fox 208 95 113 -18 754 10 Bowser 186 82 104 -22 785 Name Games Wins Loses Points Elo Rating 1 Pikachu 209 105 104 1 851 2 Zelda 160 81 79 2 847 3 Samus 211 110 101 9 842 4 Luigi 186 95 91 4 841 5 Wario 197 102 95 7 824 6 Mario 203 101 102 -1 820 7 Yoshi 223 112 111 1 803 8 Kong 217 117 100 17 802 9 Bowser 186 82 104 -22 785 10 Fox 208 95 113 -18 754
  25. 25. Name Games Wins Loses Points Elo Rating 1 Pikachu 209 105 104 1 851 2 Zelda 160 81 79 2 847 3 Samus 211 110 101 9 842 4 Luigi 186 95 91 4 841 5 Wario 197 102 95 7 824 6 Mario 203 101 102 -1 820 7 Yoshi 223 112 111 1 803 8 Kong 217 117 100 17 802 9 Bowser 186 82 104 -22 785 10 Fox 208 95 113 -18 754
  26. 26. Name Games Wins Loses Points Elo Rating 1 Pikachu 209 105 104 1 851 2 Zelda 160 81 79 2 847 3 Samus 211 110 101 9 842 4 Luigi 186 95 91 4 841 5 Wario 197 102 95 7 824 6 Mario 203 101 102 -1 820 7 Yoshi 223 112 111 1 803 8 Kong 217 117 100 17 802 9 Bowser 186 82 104 -22 785 10 Fox 208 95 113 -18 754
  27. 27. Name Games Wins Loses Points Elo Rating 1 Pikachu 209 105 104 1 851 2 Zelda 160 81 79 2 847 3 Samus 211 110 101 9 842 4 Luigi 186 95 91 4 841 5 Wario 197 102 95 7 824 6 Mario 203 101 102 -1 820 7 Yoshi 223 112 111 1 803 8 Kong 217 117 100 17 802 9 Bowser 186 82 104 -22 785 10 Fox 208 95 113 -18 754
  28. 28. Name Games Wins Loses Points Elo Rating 1 Zelda 170 91 79 12 904 2 Pikachu 209 105 104 1 851 3 Luigi 186 95 91 4 841 4 Wario 197 102 95 7 824 5 Mario 203 101 102 -1 820 6 Yoshi 223 112 111 1 803 7 Kong 217 117 100 17 802 8 Bowser 186 82 104 -22 785 9 Samus 221 110 111 -1 775 10 Fox 208 95 113 -18 754 Zelda (2nd) wins from Samus (3rd) 10 times
  29. 29. Name Games Wins Loses Points Elo Rating 1 Zelda 170 91 79 12 904 2 Pikachu 209 105 104 1 851 3 Luigi 186 95 91 4 841 4 Wario 197 102 95 7 824 5 Mario 203 101 102 -1 820 6 Yoshi 223 112 111 1 803 7 Kong 217 117 100 17 802 8 Bowser 186 82 104 -22 785 9 Samus 221 110 111 -1 775 10 Fox 208 95 113 -18 754 Zelda (2nd) wins from Samus (3rd) 10 times
  30. 30. Name Games Wins Loses Points Elo Rating 1 Zelda 170 91 79 12 904 2 Pikachu 209 105 104 1 851 3 Luigi 186 95 91 4 841 4 Wario 197 102 95 7 824 5 Mario 203 101 102 -1 820 6 Yoshi 223 112 111 1 803 7 Kong 217 117 100 17 802 8 Bowser 186 82 104 -22 785 9 Samus 221 110 111 -1 775 10 Fox 208 95 113 -18 754 Zelda (2nd) wins from Samus (3rd) 10 times
  31. 31. Name Games Wins Loses Points Elo Rating 1 Zelda 170 91 79 12 904 2 Luigi 186 95 91 4 841 3 Fox 218 105 113 -8 829 4 Wario 197 102 95 7 824 5 Mario 203 101 102 -1 820 6 Yoshi 223 112 111 1 803 7 Kong 217 117 100 17 802 8 Bowser 186 82 104 -22 785 9 Samus 221 110 111 -1 775 10 Pikachu 219 105 114 -9 766 Pikachu (2nd) loses to Fox (10th) 10 times
  32. 32. ELO Rating System Microsoft TrueSkill Rating System Google PageRank Facebook EdgeRank
  33. 33. .NET C CoffeeScriptElixir F# Groovy Java JavaScript Objective-C PHP Perl PythonRuby Swift Visual Basic .NET
  34. 34. .NET C CoffeeScript Elixir F# Groovy Java JavaScript Objective-C PHPPerl Python Ruby Swift Visual Basic .NET
  35. 35. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  36. 36. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Speedcode (1953) John Backus - interpreter took 310 memory words, about 30% of the memory available on a 701 - twenty times that of machine code
  37. 37. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Fortran (1957) John Backus - first optimizing compiler - complex number types/ electric engineering
  38. 38. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 CPL (1963) Christopher Strachey - Combined/Cambridge/
 Combined Programming Language - low and high level
  39. 39. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 BCPL (1966) Martin Richards - Basic CPL - Bootstrap CPL - popular choice for bootstrapping a system
  40. 40. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 occam (1983) INMOS - concurrent programming language - Bootstrap CPL - communication between processes work through named channels
  41. 41. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  42. 42. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  43. 43. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Algol (1958) ETH Zürich committee - Algol 58, Algol 60, Algol 68, Algol W - Context-free Grammars (Backus-Naur Form/BNF) - "ALGOL 68 was the first (and possibly one of the last) major language for which a full formal definition was made before it was implemented” - “ALGOL 68 has been criticized, most prominently by some members of its design committee such as Hoare and Dijkstra, for abandoning the simplicity of ALGOL 60” - "Steve Bourne, who was on the Algol 68 revision committee, took some of its ideas to his Bourne shell (and thereby, to descendant shells such as Bash) and to C (and thereby to descendants such as C++)."
  44. 44. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Modula (1960) Niklaus Wirth - "One of the first languages designed from the start for modular programming"
  45. 45. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 MUMPS (1966) Neil Pappalardo - "Massachusetts General Hospital Utility Multi- Programming System” - hierarchical ACID built-in database - InterSystems Caché (SQL driver)
  46. 46. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 ADA (1966) MIL-STD - strong typing, generics - modularity mechanisms (packages) - run-time checking - access to unallocated memory, buffer overflow errors, range violations, off-by-one errors, array access errors, and other detectable bugs - parallel processing (tasks, synchronous message passing, protected objects, and - nondeterministic select statements) - exception handling - widely used in critical systems, where any anomaly might lead to very serious consequences, e.g., accidental death, injury or severe financial loss. Examples of systems where Ada is used include avionics,ATC, railways, banking, military and space technology
  47. 47. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Hope (1970s) Edinburgh University - NPL and Hope: first languages with call-by-pattern evaluation - influenced Standard ML, Haskell
  48. 48. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  49. 49. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  50. 50. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 SNOBOL (1962) AT&T Bell Labs - patterns as a first-class data type - operators for pattern concatenation and alternation - early regular expressions/pattern matching
  51. 51. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 FLOW-MATIC (1955) Grace Hopper - 1952 - A0 compiler - 1959 - COBOL - English-like high level language
  52. 52. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Simula (1967) Ole-Johan Dahl, Kristen Nygaard - object-oriented programming - inheritance and subclasses - virtual methods, coroutines - Garbage Collector
  53. 53. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 CLU (1974) Barbara Liskov - early object-oriented programming - classes with constructors and methods, without inheritance - iterators, abstract data types, type-safe parameterized/variant types - multiple return values (parallel assignment)
  54. 54. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  55. 55. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  56. 56. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 ISWIM (1965) Peter J. Landin - "If you See What I Mean" - functional programming
 (SASL, Miranda, ML, Haskell) - lazy evaluation
 (SASL, KRC, Hope, Miranda, Haskell,
  57. 57. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Miranda (1985) David Turner - lazy, purely functional programming - list comprehensions (Haskell)
  58. 58. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Clean (1987) Radboud University Nijmegen - mutable state and I/O is done through a uniqueness typing system (Haskell Monads) - performance comparable to Haskell
  59. 59. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Self (1987) David Ungar, Randall Smith - dialect of Smalltalk (OOP) - prototype-based (Javascript) - Just in time Compiling (JVM)
  60. 60. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Prolog (1972) Alain Colmerauer - logic programming (influenced Erlang) - natural language processing - relations, represented as facts and rules - running a query over these relations
  61. 61. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  62. 62. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  63. 63. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Erlang (1986) Joe Armstrong, Robert Virding and Mike Williams - distributed, fault-tolerant, soft-real- time, non-stop applications. It supports hot swapping - processes communicate using message passing
  64. 64. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 ML (1973) Robin Milner/University of Edinburgh - Hindley–Milner type system - parametric polymorphism - “Type Inference” - ML Family (Standard ML, OCaml), Clean, Haskell
  65. 65. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 REBOL (1997) Carl Sassenrath - "Relative Expression Based Object  Language" - dialecting: small, optimized, Domain-Specific Language (DSL) for code and data - influenced JSON
  66. 66. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  67. 67. • APL (1964) introduced: array programming, influenced: functional programming • ALGOL (1958) refined both structured procedural programming and the discipline of language specification. • Simula (1967) first language designed to support object-oriented programming; Smalltalk (1972) followed with the first "purely" object-oriented language. • C (1969 - 1973) popular system programming language • Prolog (1972), first logic programming language. • ML (1978) built a polymorphic type system on top of Lisp, pioneering statically typed functional programming languages.
  68. 68. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  69. 69. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 FORTRAN (1957) John Backus - FORTRAN 2015
  70. 70. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 COBOL (1959) Conference on Data Systems Languages (CODASYL) - COBOL 2014
  71. 71. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  72. 72. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  73. 73. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  74. 74. 23% 32% 45% Python Fortran C 500k LOC
  75. 75. Gordon Moore - Intel co-founder
  76. 76. 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 7,000,000,000 8,000,000,000 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020 Intel1Processors1Transistor1Count
  77. 77. 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 7,000,000,000 8,000,000,000 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020 Intel1Processors1Transistor1Count Intel 4004 10 µm Intel 80386 Pentium 0.8 µm Itanium 2 Six-core Xeon 7400 8-core Itanium Poulson 32 nm 18-core Xeon Haswell-E5 22 nm 15-core Xeon Ivy Bridge-EX Duo-core + GPU Core i7 Broadwell-U 14 nm
  78. 78. 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 7,000,000,000 8,000,000,000 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020 Intel1Processors1Transistor1Count Intel 4004 10 µm Intel 80386 Pentium 0.8 µm Itanium 2 Six-core Xeon 7400 8-core Itanium Poulson 32 nm 18-core Xeon Haswell-E5 22 nm 15-core Xeon Ivy Bridge-EX Duo-core + GPU Core i7 Broadwell-U 14 nm Apple A7 Apple A8 Apple A8X 20 nm
  79. 79. Gordon Bell - DEC early employee
  80. 80. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010
  81. 81. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores
  82. 82. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores
  83. 83. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations
  84. 84. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers
  85. 85. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers Scalable Clusters
  86. 86. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers Small Devices Scalable Clusters
  87. 87. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers Small Devices Scalable Clusters
  88. 88. Vaticano 2005
  89. 89. Vaticano 2013
  90. 90. 2010 2011 2012 2013 20142006 2007 2008 2009
  91. 91. 2010 2011 2012 2013 20142006 2007 2008 2009
  92. 92. 2010 2011 2012 2013 20142006 2007 2008 2009
  93. 93. 2017 60 anos de FORTRAN
  94. 94. 2017 60 anos de FORTRAN 2014 55 anos de COBOL
  95. 95. 2017 60 anos de FORTRAN 2014 55 anos de COBOL 2013 55 anos de LISP
  96. 96. 2017 60 anos de FORTRAN 2014 55 anos de COBOL 2013 55 anos de LISP 2012 40 anos de Smalltalk
  97. 97. 2017 60 anos de FORTRAN 2014 55 anos de COBOL 2013 55 anos de LISP 2012 40 anos de Smalltalk 2015 35 anos de ADA
  98. 98. Séc XVII Cálculo Newton/Leibniz
  99. 99. Séc XVII Cálculo Newton/Leibniz 1930's Lambda Calculus Alonzo Church
  100. 100. Séc XVII Cálculo Newton/Leibniz 1930's Lambda Calculus Alonzo Church 1939 Elo Rating System Arpad Elo
  101. 101. Séc XVII Cálculo Newton/Leibniz 1930's Lambda Calculus Alonzo Church 1939 Elo Rating System Arpad Elo 1975 Vector Space Model Gerald Salton
  102. 102. SPA e-commerce
  103. 103. SPA e-commerce http://www.loja.com.br/#!/produtos/item-001
  104. 104. SPA e-commerce http://www.loja.com.br/#!/produtos/item-001 http://www.loja.com.br/?_escaped_fragment_=/produtos/item-001
  105. 105. High Level Numbers
  106. 106. Client #1
  107. 107. $ 4,000
  108. 108. $ 4,000 ($ 7 MI/yr revenue - 0.68%)
  109. 109. Client #2
  110. 110. $ 100,000+
  111. 111. $ 100,000+ ($ 800 MI/yr revenue - 0.15%)
  112. 112. • Minimum IT Cost:
  113. 113. • Minimum IT Cost: • USD 1000 - Cloud Services
  114. 114. • Minimum IT Cost: • USD 1000 - Cloud Services • USD 3000 - 1 Developer
  115. 115. • Minimum IT Cost: • USD 1000 - Cloud Services • USD 3000 - 1 Developer • USD 4000 - 1 “Responsible” (Manager, Marketing, etc)
  116. 116. • Minimum IT Cost: • USD 1000 - Cloud Services • USD 3000 - 1 Developer • USD 4000 - 1 “Responsible” (Manager, Marketing, etc) • Total: USD 8.000/month (USD 96.000/year)
  117. 117. • Minimum IT Cost: • USD 1000 - Cloud Services • USD 3000 - 1 Developer • USD 4000 - 1 “Responsible” (Manager, Marketing, etc) • Total: USD 8.000/month (USD 96.000/year) • Minimum Business Requirement:
  118. 118. • Minimum IT Cost: • USD 1000 - Cloud Services • USD 3000 - 1 Developer • USD 4000 - 1 “Responsible” (Manager, Marketing, etc) • Total: USD 8.000/month (USD 96.000/year) • Minimum Business Requirement: • Revenue: > USD 2 MI / year
  119. 119. • Minimum IT Cost: • USD 1000 - Cloud Services • USD 3000 - 1 Developer • USD 4000 - 1 “Responsible” (Manager, Marketing, etc) • Total: USD 8.000/month (USD 96.000/year) • Minimum Business Requirement: • Revenue: > USD 2 MI / year • IT Cost / Revenue ratio: < 5%
  120. 120. Increase Revenue > Lower Costs
  121. 121. Innovation
  122. 122. Impossible Yesterday Possible Today
  123. 123. Innovation Constraints
  124. 124. PREMATURE OPTIMIZATION is the Root of all Evil
  125. 125. THANKS!slideshare.net/akitaonrails

×