hello, joe. hello, mike; hello, robert
Embed Size (px)
TRANSCRIPT
-
Hello, Joe. Hello, Mike; Hello, Robert.1
A Hello World Style Lighting Talk on Erlang.
1. From Erlang the Movie (https://archive.org/details/ErlangTheMovie)
https://archive.org/details/ErlangTheMovie
-
Hello, Erlang.
Erlang and OTP was designed for building distributed, asynchronous, highly-concurrent, fault
tolerant applications with high availability.
-
Hello, Erlang.
Erlang and OTP was designed for building distributed, asynchronous, highly-concurrent, fault
tolerant applications with high availability.
#BuzzwordBingo
-
Hello, Telecom.
-
Hello, Telecom.
100s of Thousands, if not Millions, of calls happen at the same time
-
Hello, Telecom.
100s of Thousands, if not Millions, of calls happen at the same time
Your phone line has to always be available
-
Hello, Telecom.
100s of Thousands, if not Millions, of calls happen at the same time
Your phone line has to always be available
My call cannot corrupt your call
-
Hello, Dj vu
-
Hello, Dj vu
Sound Familiar?
-
Hello, Internet!
-
Hello, Failure.
-
Hello, Failure. In the Real World things fail. Embrace it.
-
Hello, Failure. In the Real World things fail. Embrace it.
Let It Crash philosophy
-
Hello, Failure. In the Real World things fail. Embrace it.
Let It Crash philosophy
Immutability
-
Hello, Failure. In the Real World things fail. Embrace it.
Let It Crash philosophy
Immutability
No Shared State
-
Hello, Failure. In the Real World things fail. Embrace it.
Let It Crash philosophy
Immutability
No Shared State
Isolated Processes Communicate Through Message Passing (Actor Model)
-
Hello, Failure. In the Real World things fail. Embrace it.
Let It Crash philosophy
Immutability
No Shared State
Isolated Processes Communicate Through Message Passing (Actor Model)
Supervision Hierarchy
-
Hello, Failure. In the Real World things fail. Embrace it.
Let It Crash philosophy
Immutability
No Shared State
Isolated Processes Communicate Through Message Passing (Actor Model)
Supervision Hierarchy
Live code reloading
-
Hello, C10k Problem.
-
Hello, C10k Problem.
-
Hello, C10k Problem.
-
Alan Kay
Ithoughtofobjectsbeinglikebiologicalcells and/orindividual
computersonanetwork,onlyableto communicatewithmessages [].2
Hello, OOP.
2. http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
-
Hello, Weaknesses.
-
Hello, Weaknesses. No strings as a data type
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
Not great for GUIs
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
Not great for GUIs
Not going to be run on your mobile device;
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
Not great for GUIs
Not going to be run on your mobile device;
but great for you mobile device backend.
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
Not great for GUIs
Not going to be run on your mobile device;
but great for you mobile device backend.
WhatsApp anyone?
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
Not great for GUIs
Not going to be run on your mobile device;
but great for you mobile device backend.
WhatsApp anyone?
Not insanely fast
-
Hello, Weaknesses. No strings as a data type
List of Integers or Binary types
Not super performant for string manipulation, but good enough for most scenarios
Not great for GUIs
Not going to be run on your mobile device;
but great for you mobile device backend.
WhatsApp anyone?
Not insanely fast
"There's no such thing as fast, only fast enough" ~ Joe Armstrong
-
Hello, FizzBuzz.
-
Hello, fizzbuzz.erl-module(fizzbuzz).
-export([fizzbuzz/1]).
fizzbuzz(N) -> Translations = lists:map(fun translate/1, lists:seq(1, N)), lists:foreach(fun(Item) -> io:format("~s~n", [Item]) end, Translations).
translate(N) when N rem 3 =:= 0 andalso N rem 5 =:= 0 -> 'FizzBuzz'; translate(N) when N rem 3 =:= 0 -> 'Fizz'; translate(N) when N rem 5 =:= 0 -> 'Buzz'; translate(N) -> integer_to_list(N).
-
Hello, fizzbuzz.ex
defmodule FizzBuzz do def fizzbuzz(n) do 1..n |> Enum.map(&translate/1) |> Enum.join("\n") |> IO.puts end
def translate(n) when rem(n, 3) == 0 and rem(n, 5) == 0, do: :FizzBuzz def translate(n) when rem(n, 3) == 0, do: :Fizz def translate(n) when rem(n, 5) == 0, do: :Buzz def translate(n), do: n end
-
Hello, fizzbuzz.lfe(defmodule fizzbuzz (export (fizzbuzz 1)))
(defun fizzbuzz (n) (lists:foreach (lambda (term) (lfe_io:format "~p~n" `(,term))) (translate-upto n)))
(defun translate-upto (n) (let ((numbers (lists:seq 1 n))) (lists:map (lambda (n) (translate n (rem n 3) (rem n 5))) numbers)))
(defun translate ([_ 0 0] 'FizzBuzz) ([_ 0 _] 'Fizz) ([_ _ 0] 'Buzz) ([n _ _] n))
-
Hello, Demo.
-
Hello, Proctor. http://www.proctor-it.com
@stevenproctor
@fngeekery
http://www.functionalgeekery.com
@dfwerlang
http://www.meetup.com/DFW-Erlang-User-Group/
@planeterlang
http://www.planeterlang.com
http://www.proctor-it.comhttp://www.planeterlang.com