hello, joe. hello, mike; hello, robert
Post on 14-Apr-2017
491 Views
Preview:
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)
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, Déjà vu
Hello, Déjà 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
I thought of objects being like biological cells and/or individual
computers on a network, only able to communicate with messages […].2
Hello, OOP.
2. 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
• steven.proctor@gmail.com
• @fngeekery
• http://www.functionalgeekery.com
• @dfwerlang
• http://www.meetup.com/DFW-Erlang-User-Group/
• @planeterlang
• http://www.planeterlang.com
top related