origins of elixir programming language
TRANSCRIPT
![Page 1: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/1.jpg)
# my_script.exs
defmodule MyModule do def my_func do IO.puts("Hello, world!") endend
MyModule.my_func()
gmile@macbook ~> elixir my_scriptHello, world!
gmile@macbook ~> iexiex(1)> c “my_script.exs”[MyModule]iex(1)> MyModule.my_func"Hello, world!”:ok
![Page 2: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/2.jpg)
defmodule MyModule do def my_func(1), do: "Got one!" def my_func(2), do: "Got two!" def my_func(n), do: "Got #{n}!"end
IO.puts(MyModule.my_func(10))IO.puts(MyModule.my_func(5))IO.puts(MyModule.my_func(2))IO.puts(MyModule.my_func(1))
![Page 3: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/3.jpg)
defmodule MyModule do def my_func(1), do: "Got one!" def my_func(2), do: "Got two!" def my_func(n), do: "Got #{n}!"end
MyModule.my_func(10) |> IO.putsMyModule.my_func(5) |> IO.putsMyModule.my_func(2) |> IO.putsMyModule.my_func(1) |> IO.puts
![Page 4: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/4.jpg)
defmodule MyModule do def my_func(a_thing) when is_list(a_thing) do "Got a list!” end
def my_func(a_thing) when is_integer(a_thing) do "Got a number!” end
def my_func(_) "Got something else!” endend
MyModule.my_func([1,2,3]) # => “Got a list!”MyModule.my_func(369) # => “Got a number!”MyModule.my_func(“yo”) # => “Got something else!”
![Page 5: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/5.jpg)
defmodule MyModule do def match_a_list([head|tail]) do IO.puts(“First element is #{head}!”) endend
![Page 6: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/6.jpg)
defmodule MyModule do def match_a_list([one, two|tail]) do IO.puts(“First element is #{one}!”) IO.puts(“Second element is #{two}!”) match_a_list(tail) endend
![Page 7: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/7.jpg)
defmodule MyModule do def match_a_list([]) do IO.puts(“A list is empty!”) end
def match_a_list([one, two|tail]) do IO.puts(“First element is #{one}!”) IO.puts(“Second element is #{two}!”) match_a_list(tail) endend
![Page 8: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/8.jpg)
defmodule MyModule do def match_a_list([one, two|tail]) do IO.puts(“First element is #{one}!”) IO.puts(“Second element is #{two}!”) endend
![Page 9: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/9.jpg)
defmodule MyModule do def match_a_list([{_,b,_}|tail]) do IO.puts(“First element is a tuple”) IO.puts(“Tuple’s second element is #{b}”) endend
![Page 10: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/10.jpg)
defmodule MyModule do def match_a_list([t = {_,b,_}|tail]) do IO.puts(“First element is a tuple of size 3”) IO.puts(“Tuple’ss second element is #{b}”) endend
![Page 11: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/11.jpg)
defmodule Anagram do def match(base, candidates) do base_ = String.downcase(base) fingerprint = fingerprint(base_)
Enum.filter(candidates, fn(candidate) -> cand_ = String.downcase(candidate) cand_ != base_ && fingerprint(cand_) == fingerprint end) end
def fingerprint(string) do string |> String.codepoints |> Enum.sort endend
![Page 12: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/12.jpg)
![Page 13: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/13.jpg)
Kyiv, July 2016
Introduction toElixir & Erlang
VM
Kiev, 2016
![Page 14: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/14.jpg)
Erlang.Brief history and facts
Erlang VM.An overview of languages on BEAM
Elixir.Brief history and ecosystem overview
![Page 15: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/15.jpg)
![Page 16: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/16.jpg)
Who created Erlang?
![Page 17: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/17.jpg)
![Page 18: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/18.jpg)
![Page 19: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/19.jpg)
![Page 20: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/20.jpg)
![Page 21: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/21.jpg)
Who uses Erlang in production?
![Page 22: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/22.jpg)
![Page 23: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/23.jpg)
![Page 24: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/24.jpg)
![Page 25: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/25.jpg)
How old is erlang?
![Page 26: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/26.jpg)
![Page 27: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/27.jpg)
version 1.03 “lost in
the mists of time”
![Page 28: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/28.jpg)
version 1.06 dated 1986-12-18
![Page 29: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/29.jpg)
Who supports erlang today?
![Page 30: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/30.jpg)
![Page 31: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/31.jpg)
![Page 32: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/32.jpg)
How many packages are there?
![Page 33: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/33.jpg)
470!
![Page 34: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/34.jpg)
What are some of the most popular
libs/projects?
![Page 35: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/35.jpg)
![Page 36: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/36.jpg)
How many popular projects
are there, per GitHub?
![Page 37: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/37.jpg)
![Page 38: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/38.jpg)
What exactly erlang is?
![Page 39: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/39.jpg)
erlang a mathematician
a measurement unit
a programming language
![Page 40: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/40.jpg)
erlang the language itself (syntax)
the OTP framework
the virtual machine
![Page 41: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/41.jpg)
-module(hello).-export([hello_world/0]).
hello_world() -> io:fwrite("hello, world\n").
![Page 42: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/42.jpg)
Eshell V8.0.1 (abort with ^G)1> c(hello).{ok,hello}2> hello:hello_world().hello, worldok
![Page 43: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/43.jpg)
-module(count_to_ten).-export([count_to_ten/0]). count_to_ten() -> do_count(0). do_count(10) -> 10;do_count(Value) -> do_count(Value + 1).
![Page 44: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/44.jpg)
Open Telecom Platform
![Page 45: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/45.jpg)
OTP ~~~ It’s a framework ~~~
a set of design principles
a set of tools
![Page 46: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/46.jpg)
![Page 47: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/47.jpg)
BEAM
![Page 48: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/48.jpg)
What is BEAM?
![Page 49: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/49.jpg)
BEAM a name for virtual machine
binary file format
file extension, e.g. .beam
![Page 50: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/50.jpg)
Before BEAM Warren Abstract Machine, WAM
Joe’s Abstract Machine, JAM
Bogdan's Erlang Abstract Machine
![Page 51: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/51.jpg)
Bogdan/Björn's Erlang Abstract
Machine
![Page 52: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/52.jpg)
Current version is R19
![Page 53: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/53.jpg)
Line numbersin exceptions,
woohoo!!!
![Page 54: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/54.jpg)
![Page 55: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/55.jpg)
What kind of virtual machine
BEAM is?
![Page 56: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/56.jpg)
What is M in VM?
![Page 57: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/57.jpg)
![Page 58: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/58.jpg)
![Page 59: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/59.jpg)
{module, add}. %% version = 0{exports, [{add,2},{module_info,0},{module_info,1}]}.{attributes, []}.{labels, 9}.
{function, add, 2, 2}. {label,1}. {line,[{location,"add.erl",6}]}. {func_info,{atom,add},{atom,add},2}. {label,2}. {allocate,1,2}. {move,{x,1},{y,0}}. {line,[{location,"add.erl",7}]}. {call,1,{f,4}}. {move,{x,0},{x,1}}. {move,{y,0},{x,0}}. {move,{x,1},{y,0}}. {line,[{location,"add.erl",7}]}. {call,1,{f,4}}. {line,[{location,"add.erl",7}]}. {gc_bif,'+',{f,0},1,[{y,0},{x,0}],{x,0}}. {deallocate,1}. return.
{function, id, 1, 4}. {label,3}. {line,[{location,"add.erl",9}]}. {func_info,{atom,add},{atom,id},1}. {label,4}. return.
{function, module_info, 0, 6}. {label,5}. {line,[]}. {func_info,{atom,add},{atom,module_info},0}. {label,6}. {move,{atom,add},{x,0}}. {line,[]}. {call_ext_only,1,{extfunc,erlang,get_module_info,1}}.
{function, module_info, 1, 8}. {label,7}. {line,[]}. {func_info,{atom,add},{atom,module_info},1}. {label,8}. {move,{x,0},{x,1}}. {move,{atom,add},{x,0}}. {line,[]}. {call_ext_only,2,{extfunc,erlang,get_module_info,2}}.
-module(add).
-export([add/2]).
add(A, B) -> id(A) + id(B).
id(I) -> I.
![Page 60: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/60.jpg)
![Page 61: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/61.jpg)
![Page 62: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/62.jpg)
158 instructions
![Page 63: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/63.jpg)
![Page 64: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/64.jpg)
Write your own language that compiles to
BEAM!
![Page 65: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/65.jpg)
So: what languages run on BEAM?
![Page 66: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/66.jpg)
![Page 67: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/67.jpg)
![Page 68: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/68.jpg)
![Page 69: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/69.jpg)
![Page 70: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/70.jpg)
![Page 71: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/71.jpg)
![Page 72: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/72.jpg)
![Page 73: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/73.jpg)
![Page 74: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/74.jpg)
![Page 75: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/75.jpg)
![Page 76: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/76.jpg)
![Page 77: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/77.jpg)
![Page 78: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/78.jpg)
But before Elixir…
![Page 79: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/79.jpg)
![Page 80: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/80.jpg)
![Page 81: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/81.jpg)
![Page 82: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/82.jpg)
![Page 83: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/83.jpg)
![Page 84: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/84.jpg)
![Page 85: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/85.jpg)
Jose Valim
![Page 86: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/86.jpg)
![Page 87: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/87.jpg)
![Page 88: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/88.jpg)
Who created Elixir?
![Page 89: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/89.jpg)
![Page 90: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/90.jpg)
![Page 91: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/91.jpg)
How old is Elixir?
![Page 92: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/92.jpg)
![Page 93: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/93.jpg)
![Page 94: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/94.jpg)
![Page 95: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/95.jpg)
![Page 96: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/96.jpg)
Who supports Elixir today?
![Page 97: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/97.jpg)
![Page 98: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/98.jpg)
What is Elixir?
![Page 99: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/99.jpg)
Functional Concurrent
General-purpose programming
language
![Page 100: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/100.jpg)
Supports:metaprogramming
via macrospolymorphism via
protocols
![Page 101: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/101.jpg)
How many packages are there?
![Page 102: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/102.jpg)
![Page 103: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/103.jpg)
How many popular projects
are there, per GitHub?
![Page 104: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/104.jpg)
![Page 105: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/105.jpg)
What are some of the most popular
libs?
![Page 106: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/106.jpg)
![Page 107: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/107.jpg)
![Page 108: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/108.jpg)
![Page 109: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/109.jpg)
![Page 110: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/110.jpg)
Who uses Elixir in production?
![Page 111: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/111.jpg)
![Page 112: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/112.jpg)
![Page 113: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/113.jpg)
![Page 114: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/114.jpg)
What Joe Armstrong thinks of Elixir?
![Page 115: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/115.jpg)
![Page 116: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/116.jpg)
> Elixir has a non-scary syntax and combines the
good features of Ruby and Erlang.
> It's not Erlang and it's not Ruby and it has ideas of its
own.
![Page 117: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/117.jpg)
What Elixir offers?
![Page 118: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/118.jpg)
defmodule MathTest do use ExUnit.Case, async: true
test "can add two numbers" do assert 1 + 1 == 2 endend
![Page 119: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/119.jpg)
import Supervisor.Spec
children = [ supervisor(TCP.Pool, []), worker(TCP.Acceptor, [4040])]
Supervisor.start_link(children, strategy: :one_for_one)
![Page 120: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/120.jpg)
parent = self()
# Spawns an Elixir process (not an OS process!)spawn_link(fn -> send parent, {:msg, "hello world"}end)
# Block until the message is receivedreceive do {:msg, contents} -> IO.puts contentsend
![Page 121: Origins of Elixir programming language](https://reader034.vdocuments.site/reader034/viewer/2022051318/58e49d681a28aba3458b55af/html5/thumbnails/121.jpg)