+ All Categories
Home > Documents > @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we...

@elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we...

Date post: 22-Aug-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
60
@elixirlang / elixir-lang.org Wednesday, May 14, 14
Transcript
Page 1: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

@elixirlang / elixir-lang.orgWednesday, May 14, 14

Page 2: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Rails 2.2threadsafe

Wednesday, May 14, 14

Page 3: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Sapir-Whorfhypothesis

Wednesday, May 14, 14

Page 4: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

The structure of a language affects the ways in which its

respective speakers conceptualize their world

Wednesday, May 14, 14

Page 6: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 7: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

“Threadsafe”

Wednesday, May 14, 14

Page 8: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Functionalprogramming

Wednesday, May 14, 14

Page 9: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 10: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Explicit instead of implicit state

Wednesday, May 14, 14

Page 11: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Explicit instead of implicit state• Transformation instead of mutation

Wednesday, May 14, 14

Page 12: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 13: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Functional

Wednesday, May 14, 14

Page 14: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Functional• Concurrent

Wednesday, May 14, 14

Page 15: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Functional• Concurrent• Distributed

Wednesday, May 14, 14

Page 16: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 17: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Switch

Wednesday, May 14, 14

Page 18: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Switch

Wednesday, May 14, 14

Page 19: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Switch

Wednesday, May 14, 14

Page 20: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Switch

Wednesday, May 14, 14

Page 21: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Switch

Switch

Wednesday, May 14, 14

Page 22: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Switch

Browser

Endpoint

Server

Wednesday, May 14, 14

Page 24: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2011/

2 million connections on a single node

Wednesday, May 14, 14

Page 25: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Intel Xeon CPU X5675 @ 3.07GHz24 CPU - 96GBUsing 40% of CPU and Memory

Wednesday, May 14, 14

Page 26: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Idioms

Wednesday, May 14, 14

Page 27: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Sequentialcode

Wednesday, May 14, 14

Page 28: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Sequentialcode

elixir

Wednesday, May 14, 14

Page 29: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Sequentialcode

elixir

Wednesday, May 14, 14

Page 30: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

elixir

Wednesday, May 14, 14

Page 31: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

elixir

Wednesday, May 14, 14

Page 32: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

elixir

Wednesday, May 14, 14

Page 33: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

WebDB MailerStats

Wednesday, May 14, 14

Page 34: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

WebDB MailerStats

Sup

Wednesday, May 14, 14

Page 35: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

WebDB MailerStats

Sup

App

Wednesday, May 14, 14

Page 36: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Processes• Supervisors• Applications• Message passing• “Fail fast”

Wednesday, May 14, 14

Page 37: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 38: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Isolated• Concurrent• Fault tolerant

Wednesday, May 14, 14

Page 39: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Isolated• Concurrent• Fault tolerant• Distributed?

Wednesday, May 14, 14

Page 40: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

elixir

Wednesday, May 14, 14

Page 41: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

app2@localapp1@local

elixir

Wednesday, May 14, 14

Page 42: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 43: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Compatibility

Wednesday, May 14, 14

Page 44: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Compatibility• Extensibility

Wednesday, May 14, 14

Page 45: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

• Compatibility• Extensibility • Productivity

Wednesday, May 14, 14

Page 46: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

goal #1

Compatibility

Wednesday, May 14, 14

Page 47: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

goal #2

Extensibility

Wednesday, May 14, 14

Page 48: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Now we need to go meta. We should now think of a language design as being a

pattern for language designs. A tool for making more tools of the same kind.

Guy Steele - “Growing a language”at ACM OOPSLA 1998

Wednesday, May 14, 14

Page 49: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

defmacro unless(expr, opts) do quote do if(!unquote(expr), unquote(opts)) endend

unless(is_number(x), do: raise(“oops”))

elixir

Wednesday, May 14, 14

Page 50: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

defmodule MathTest do use ExUnit.Case

test "basic operations" do assert 1 + 1 == 2 endend

elixir

Wednesday, May 14, 14

Page 51: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 52: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

from p in Post,where: p.published_at < now and p.author == “José”,order: p.created_at

elixir

Wednesday, May 14, 14

Page 53: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

goal #3

Productivity

Wednesday, May 14, 14

Page 54: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Focus on tooling.Demo time!

Wednesday, May 14, 14

Page 55: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

elixir-lang.orgWednesday, May 14, 14

Page 56: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 57: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

GeeConValim2014

Wednesday, May 14, 14

Page 58: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 59: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

Wednesday, May 14, 14

Page 60: @elixirlang / elixir-langs3-eu-west-1.amazonaws.com/presentations2014/12_presentation.pdf · Now we need to go meta. We should now think of a language design as being a pattern for

@elixirlang / elixir-lang.orgWednesday, May 14, 14


Recommended