Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixir
Search
Plataformatec
November 18, 2012
Technology
11k
17
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir
This talk highlights the reason, goals and roadmap behind Elixir,
http://elixir-lang.org
Plataformatec
November 18, 2012
More Decks by Plataformatec
See All by Plataformatec
O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro @ Elixir Brasil 2019
plataformatec
5
1.2k
O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro @ QCon SP 2018
plataformatec
1
260
Elixir @ iMasters Intercon 2016
plataformatec
1
280
GenStage and Flow by @josevalim at ElixirConf
plataformatec
17
2.9k
Elixir: Programação Funcional e Pragmática @ 2º Tech Day Curitiba
plataformatec
2
340
Elixir: Programação Funcional e Pragmática @ Encontro Locaweb 2016
plataformatec
4
320
What's ahead for Elixir: v1.2 and GenRouter
plataformatec
15
2.2k
Arquiteturas Comuns de Apps Rails @ RubyConf BR 2015
plataformatec
6
410
Pirâmide de testes, escrevendo testes com qualidade @ RubyConf 2015
plataformatec
10
2.5k
Other Decks in Technology
See All in Technology
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
880
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
400
Making sense of Google’s agentic dev tools
glaforge
1
280
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
230
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
370
マルチアカウント環境でSecurity Hubの運用、その後どうなった? / SRE NEXT 2026 miniLT会
genda
0
100
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
280
公式ドキュメントの歩き方etc
coco_se
1
120
シンガポールで登壇してきます
yama3133
0
240
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
300
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
110
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Building the Perfect Custom Keyboard
takai
2
810
Amusing Abliteration
ianozsvald
1
230
The Spectacular Lies of Maps
axbom
PRO
1
860
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Utilizing Notion as your number one productivity tool
mfonobong
4
420
Claude Code のすすめ
schroneko
67
230k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Transcript
@elixirlang / elixir-lang.org Monday, November 19, 2012
@josevalim Monday, November 19, 2012
Monday, November 19, 2012
Why? Monday, November 19, 2012
case #1 Monday, November 19, 2012
Switch Switch Monday, November 19, 2012
Switch Browser Endpoint Server Monday, November 19, 2012
Server Browser Monday, November 19, 2012
•Web sockets •API streaming •Server sent events Server Monday, November
19, 2012
case #2 Multi-core Monday, November 19, 2012
Server Server Server Server Monday, November 19, 2012
50 cores $2600 Monday, November 19, 2012
Server Monday, November 19, 2012
case #3 Doing it live! Monday, November 19, 2012
http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2011/ 2 million connections on a single node Monday, November
19, 2012
http://stackoverflow.com/questions/1636455/where-is-erlang-used-and-why Monday, November 19, 2012
Goals Monday, November 19, 2012
goal #1 Productivity Monday, November 19, 2012
Everything is an expression Monday, November 19, 2012
-module(my_module). some_function(Foo) -> % ... other_function(Bar) -> % ... erlang
Monday, November 19, 2012
-module(my_module). % won’t compile io:put_chars("hello"). some_function(Foo) -> % ... other_function(Bar)
-> % ... erlang Monday, November 19, 2012
defmodule MyModule do def some_function(foo) do # ... end IO.puts
"hello" def other_function(bar) do # ... end end elixir Monday, November 19, 2012
Macros Monday, November 19, 2012
:foo - atoms/symbols { 1, 2, 3 } - tuples
[ 1, 2, 3 ] - lists Monday, November 19, 2012
is_atom(:foo) function line args atom { :is_atom, 1, [:foo] }
Monday, November 19, 2012
1 + 2 function line args { :+, 1, [1,2]
} Monday, November 19, 2012
defmacro unless(expr, opts) do quote do if(!unquote(expr), unquote(opts)) end end
unless(true, do: exit()) elixir Monday, November 19, 2012
Domain Specific Languages Monday, November 19, 2012
defmodule MathTest do use ExUnit.Case test "basic operations" do assert
1 + 1 == 2 end end elixir Monday, November 19, 2012
defmodule MathTest do use ExUnit.Case def test_basic_operations do assert 1
+ 1 == 2 :ok end end elixir Monday, November 19, 2012
assert 1 + 1 == 2 { :==, 5, [1
+ 1, 2] } function line args Monday, November 19, 2012
# assert 1 + 1 == 2 defmacro assert({ :=~,
line, [l,r] }) do # ... end defmacro assert({ :==, line, [l,r] }) do # ... end defmacro assert(default) do # ... end Monday, November 19, 2012
goal #2 Extensibility Monday, November 19, 2012
-module(json). to_json(Item) when is_list(Item) -> % ... to_json(Item) when is_binary(Item)
-> % ... to_json(Item) when is_number(Item) -> % ... erlang Monday, November 19, 2012
Protocols Monday, November 19, 2012
defprotocol JSON do def to_json(item) end JSON.to_json(item) elixir Monday, November
19, 2012
defimpl JSON, for: List do # ... end elixir defimpl
JSON, for: Binary do # ... end defimpl JSON, for: Number do # ... end Monday, November 19, 2012
defimpl JSON, for: Array do # ... end elixir Monday,
November 19, 2012
goal #3 Compatibility Monday, November 19, 2012
Monday, November 19, 2012
DISTRIBUTED FAULT-TOLERANT APPLICATIONS WITH HOT-CODE SWAPPING Monday, November 19, 2012
There is no conversion cost for calling Erlang from Elixir
and vice-versa Monday, November 19, 2012
• UTF-8 binaries strings • Keyword arguments • First-class documentation
• First-class regular expressions • Zero-index access • ... Monday, November 19, 2012
Example Monday, November 19, 2012
defmodule MathTest do use ExUnit.Case, async: true test "basic operations"
do assert 1 + 1 == 2 end end elixir Monday, November 19, 2012
1 MathTest 2 SystemTest 3 ... 4 ... 5 ...
6 ... 7 ... 8 ... ExUnit. Runner ExUnit. Formatter Monday, November 19, 2012
1 MathTest 2 SystemTest 3 ... 4 ... 5 ...
6 ... 7 ... 8 ... ExUnit. Runner run ExUnit. Formatter Monday, November 19, 2012
1 MathTest 2 SystemTest 3 ... 4 ... 5 ...
6 ... 7 ... 8 ... ExUnit. Runner run ExUnit. Formatter Monday, November 19, 2012
1 MathTest 2 SystemTest 3 ... 4 ... 5 ...
6 ... 7 ... 8 ... ExUnit. Runner run ExUnit. Formatter Monday, November 19, 2012
1 MathTest 2 SystemTest 3 ... 4 ... 5 ...
6 ... 7 ... 8 ... ExUnit. Runner done ExUnit. Formatter info Monday, November 19, 2012
1 MathTest 2 SystemTest 3 ... 4 ... 5 ...
6 ... 7 ... 8 ... ExUnit. Runner ExUnit. Formatter run Monday, November 19, 2012
127.0.0.9 127.0.0.3 1 MathTest 2 SystemTest 3 ... 4 ...
5 ... 6 ... 7 ... 8 ... ExUnit. Runner ExUnit. Formatter Monday, November 19, 2012
127.0.0.9 127.0.0.3 1 MathTest 2 SystemTest 3 ... 4 ...
5 ... 6 ... 7 ... 8 ... ExUnit. Runner ExUnit. Formatter ExUnit. Supervisor Monday, November 19, 2012
Roadmap Monday, November 19, 2012
• v0.6 (Aug/12) Erlang language compatibility • v0.8 (Dec/12) Erlang
apps support • Dynamo (xx/13) Web framework • v0 (Jan/11) Monday, November 19, 2012
Monday, November 19, 2012
@elixirlang / elixir-lang.org Monday, November 19, 2012