why elixir matters a genealogy of functional programming fileoutline 1. introduction 2. genealogy 3....

51
Why Elixir Matters A Genealogy of Functional Programming Osa Gaius github.com/osagaius @osagaius

Upload: others

Post on 03-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Why Elixir MattersA Genealogy of Functional Programming

Osa Gaiusgithub.com/osagaius

@osagaius

Page 2: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Who am I?

Engineer at Mailchimp

Organizer - Atlanta Elixir Meetup

Page 3: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Outline

1. Introduction2. Genealogy3. History of Functional Programming4. Why Elixir Matters5. Moving Forward6. Conclusion

Page 4: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Introduction

Page 5: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 6: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 7: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 8: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 9: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 10: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 11: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Language Popularity (TIOBE Index)

Page 12: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 13: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Genealogyjee-nee-ol-uh-jee

Page 14: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 15: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 16: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

History ofFunctional Programming

Page 17: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Page 18: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Lambda Calculus

Page 19: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion
Page 20: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Lambda Calculus

LISP

Page 21: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Lambda Calculus

LISP

Scheme

Page 22: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Lambda Calculus

LISP

Scheme

ML

Page 23: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Lambda Calculus

LISP

Scheme

ML

Erlang

Page 24: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010 2020

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Page 25: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

20201960

Page 26: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

1960

Page 27: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

F#

Page 28: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

F#

Clojure

Page 29: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

F#

Akka

Clojure

Page 30: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

F#

Akka

Clojure

Rust

Page 31: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

F#

Akka

Clojure

Rust

Elixir

Page 32: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Lambda Calculus

LISP

Scheme

ML

Erlang

Miranda

Haskell

2020

Scala

F#

Akka

Clojure

Rust

Elixir

Elm

Page 33: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Why Elixir Matters

Page 34: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

“The rise in popularity of the Internetand the need for non-interrupted

availability of services has extendedthe class of problems that Erlang can

solve.”Joe Armstrong

Page 35: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Erlang x Elixir

● Syntax● The Web● Evangelism

Page 36: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Erlang x Elixir

● Syntax● The Web● Evangelism

Page 37: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Erlang

2020

Page 38: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Erlang

Java

2020

Page 39: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Erlang

Java

2020

JS

Page 40: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Erlang

Java

2020

RubyJS

Page 41: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

1930 1940 1950 1960 1970 1980 1990 2000 2010

Erlang

Java

2020

Ruby

RailsJS

Page 42: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Erlang x Elixir

● Syntax● The Web● Evangelism

Page 43: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

“The rise in popularity of the Internetand the need for non-interrupted

availability of services has extendedthe class of problems that Erlang can

solve.”Joe Armstrong

Page 44: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Moving Forward

Page 45: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

“Unpopular languages are niche languages”

Meyerovich and Rabkin

Page 46: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Moving Forward

● Breadth vs Depth● Evangelism

Page 47: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Breadth vs Depth

● Libraries (aka Gems)● Domains

Page 48: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Moving Forward

● Breadth vs Depth● Evangelism

Page 49: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Evangelism

● Marketing● Consultation● Fan Out

Page 50: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Conclusion

Page 51: Why Elixir Matters A Genealogy of Functional Programming fileOutline 1. Introduction 2. Genealogy 3. History of Functional Programming 4. Why Elixir Matters 5. Moving Forward 6. Conclusion

Gracias!

Questions?

github.com/osagaius@osagaius