SlideShare a Scribd company logo
Ruby is dying
What languages are cool now?
Michał Konarski
u2i.com
Seriously, is Ruby dying?
Ruby Go
https://blog.whoishiring.io/hacker-news-who-is-hiring-thread-part-1/
Who is hiring?
But let’s look from a different angle...
http://www.tiobe.com/
TIOBE Index
Well, not exactly.
But what languages are cool now?
Let’s look at six of them
Swift
Swift
● designed by Apple
● released in 2014
● created for iOS, macOS, tvOS
● multi-paradigm
● statically, strongly typed
● compiled
namespacesgenerics
closures
tuples
operator overloading
native collections
type inference
pattern matching
multiple return types
Read-Eval-Print-Loop (REPL)
Swift features
Nothing really outstanding.
So, what’s the story behind Swift?
“We absolutely loved Objective-C, but
we had to ask ourselves a question -
what would it be like if we had
Objective-C without the baggage of C?”
Tim Cook
It’s mainly because Objective-C is bad.
And they had nothing else.
@interface Foo : NSObject
@property (readonly) int bar;
- (instancetype)initWithBar:(int)bar;
+ (instancetype)fooWithBar:(int)bar;
@end
@implementation Foo
- (instancetype)initWithBar:(int)bar {
self = [super init];
if (self) {
_bar = bar;
}
return self;
}
+ (instancetype)fooWithBar:(int)bar {
return [[self alloc] initWithBar:bar];
}
@end
How bad is Objective-C?
http://www.antonzherdev.com/post/70064588471/top-13-worst-things-about-objective-c
Swift is easier to read
Objective-C
if (myDelegate != nil) {
if ([myDelegate respondsToSelector:
@selector(scrollViewDidScroll:)]) {
[myDelegate scrollViewDidScroll:myScrollView]
}
}
Swift
myDelegate?.scrollViewDidScroll?(myScrollView)
Why also Swift is better?
● no need to have two separate files (code and headers)
● it’s safer (runtime crash on null pointer)
● it has automatic ARC (Automatic Reference Counting)
● it’s faster
● it requires less code
● it has namespaces
It’s not only a language
XCode 8
https://developer.apple.com/xcode/
It’s not only a language
Swift Playgrounds
http://www.apple.com/swift/playgrounds/
Ruby is dying. What languages are cool now?
● sponsored by Mozilla
● announced in 2010
● first release in 2012
● stable release in 2015
● statically, strongly typed
● multi-paradigm
● compiled
“The goal of the project is to
design and implement a safe,
concurrent, practical systems
language”
Rust FAQ
There are not such languages?
Apparently not.
Current languages are wrong
● there is too little attention paid to safety
● they have poor concurrency support
● they offer limited control over resources
● they stick too much to paradigm
So let’s create a new high-low level
language!
Rust is a high level language!
● generics
● traits
● pattern matching
● closures
● type inference
● automatic memory allocation and deallocation
● guaranteed memory safety
● threads without data races
Rust is a low level language!
● no garbage collector
● manual memory management
● zero-cost abstractions
● minimal runtime
● as fast as C/C++
Guaranteed memory safety? How?
Ownership
fn foo() {
let v1 = vec![1, 2, 3];
let v2 = v1;
println!("v1[0] is: {}", v1[0]);
}
error: use of moved value: `v
You can’t have two references to the
same object!
Ownership
stack heap
[1, 2, 3]
v1
v2
There are more such mechanisms.
Future of Rust
● currently two big projects: servo and rust
● other smaller projects: redox, cgmath, Iron, rust-doom
● it changes very quickly
● it has a good opinion in the community
● it will be hard to replace C/C++
● It has a steep learning curve
Go
Go
● designed in Google in 2007
● first release in 2009
● stable release in 2016
● statically, strongly typed
● multi-paradigm, concurrent
● compiled
Standard languages (Java, C++)
● are very strong: type-safe, effective, efficient
● great in hands of experts
● used to build huge systems and companies
Standard languages (Java, C++)
● hard to use
● compilers are slow
● binaries are huge
● desperately need language-aware tools
● poorly adapt to clouds, multicore CPUs
Simpler languages (Python, Ruby, JS)
● easier to learn
● dynamically typed (fewer keystrokes)
● interpreted (no compiler to wait for)
● good tools (interpreters make things easier)
Simpler languages (Python, Ruby, JS)
● slow
● not type-safe
● hard to maintain in a big project
● very poor at scale
● not very modern
What if we had a static language with
dynamic-like syntax?
A niche for a language
● understandable
● statically typed
● productive and readable
● fast to work in
● scales well
● doesn't require tools, but supports them well
● good at networking and multiprocessing
Features of Go
● syntax typical for dynamic languages
● type inference
● fast compilation
● garbage collector
● memory safety features
● built-in concurrency
● object oriented without classes and inheritance
● lack of generics
● compiles to small statically linked binaries
Interfaces
type Animal interface {
Speak() string
}
type Dog struct {
}
func (d Dog) Speak() string {
return "Woof!"
}
func SaySomething(a Animal) {
fmt.Println(a.Speak())
}
func main() {
dog := Dog{}
SaySomething(dog)
}
Built-in concurrency!
Goroutines
func main() {
go expensiveComputation(x, y, z)
anotherExpensiveComputation(a, b, c)
}
Channels
func main() {
ch := make(chan int)
go expensiveComputation(x, y, z, ch)
v2 := anotherExpensiveComputation(a, b, c)
v1 := <- ch
fmt.Println(v1, v2)
}
Future of Go
● it’s popularity constantly raises
● it’s backed by Google
● it’s used by Docker, Netflix, Dropbox, CloudFare,
SoundCloud, BBC, New York Times, Uber and others
● it’s seen as a good balance between Java-like languages
and Python-like
● it easy to learn and powerful
● it runs well in cloud environments
● might be a good choice for microservices approach
Ruby is dying. What languages are cool now?
● created by José Valim
● released in 2012
● functional
● dynamically, strongly typed
● compiled to Erlang VM byte code
Erlang? Processes!
Elixir = Erlang with Ruby syntax
Elixir features
● massively concurrent
● scalable
● fault-tolerant
● great performance
● functional, but practical
● nice Ruby-like syntax
● metaprogramming via macros
Ruby has Rails.
Elixir has Phoenix.
Controllers in Rails
class PagesController < ApplicationController
def index
@title = params[:title]
@members = [
{name: "Chris McCord"},
{name: "Matt Sears"},
{name: "David Stump"},
{name: "Ricardo Thompson"}
]
render "index"
end
end
http://www.littlelines.com/blog/2014/07/08/elixir-vs-ruby-showdown-phoenix-vs-rails/
Controllers in Phoenix
defmodule Benchmarker.Controllers.Pages do
use Phoenix.Controller
def index(conn, %{"title" => title}) do
render conn, "index", title: title, members: [
%{name: "Chris McCord"},
%{name: "Matt Sears"},
%{name: "David Stump"},
%{name: "Ricardo Thompson"}
]
end
end
http://www.littlelines.com/blog/2014/07/08/elixir-vs-ruby-showdown-phoenix-vs-rails/
Future of Elixir
● new Erlang for the masses
● fits highly concurrent niche
● attracts Ruby developers
● no big company behind
● used by Pinterest
● will fly on the wings of Phoenix?
Ruby is dying. What languages are cool now?
● created by data scientists
● released in 2012
● dynamically, strongly typed
● compiled
Compiled one for fast stuff.
Interpreted one for visualisation.
Data scientists’ two languages problem:
Julia features
● solves scientists’ two language problem
● familiar syntax
● extensive scientific library
● user-defined types
● multiple dispatch
● built-in parallelism
● good performance (comparing to C)
Single dispatch (Ruby)
a.do_something(b, c)
Only a decides which method to choose.
Multiple dispatch
julia> f(x::Float64, y::Float64) = 2x + y;
julia> f(2.0, 3.0)
7.0
julia> f(2.0, 3)
ERROR: MethodError: `f` has no method matching
Here everything decides!
Future of Julia
● R, MATLAB and C competitor
● unifies scientific software stack
● not mature enough yet
● small, but growing number of libraries
Ruby is dying. What languages are cool now?
● created by Google
● released in 2011
● optionally typed
● interpreted
● translated to JavaScript
Let’s replace JavaScript!
Dart vs JavaScript
● class-based (not prototype-based)
● normal foreach
● named parameters
● operator overriding
● string interpolation
● optional typing
● false is false
● easy DOM operations
Looks familiar
class Point {
num x;
num y;
Point(this.x, this.y);
distanceFromOrigin() {
return sqrt(x * x + y * y);
}
}
main() {
var p = new Point(2, 3);
print(p.distanceFromOrigin());
}
Cascade operator
querySelector('#button')
..text = 'Confirm'
..classes.add('important')
..onClick.listen(
(e) => window.alert('Confirmed!'));
Future of Dart
● 2016 AdWord UI built in Dart
● no Dart VM in browsers
● fragmented community
● client-side future is dim
● backend future looks much better
Ruby is dying. What languages are cool now?
Sources
● developer.apple.com/swift
● rust-lang.org
● golang.org
● elixir-lang.org
● julialang.org
● dartlang.org
Any questions?
@mjkonarski
michalkonarski
michal.konarski@u2i.com

More Related Content

What's hot (20)

PDF
Kevin Whinnery: Write Better JavaScript
Axway Appcelerator
 
PDF
Introduction to Go
zhubert
 
PDF
Culerity - Headless full stack testing for JavaScript
Thilo Utke
 
PDF
Truly madly deeply parallel ruby applications
Hari Krishnan‎
 
KEY
Object oriented javascript
Garrison Locke
 
PPT
CSP: Huh? And Components
Daniel Fagnan
 
PDF
Ruby in office time reboot
Kentaro Goto
 
PDF
Metaprogramming with javascript
Ahmad Rizqi Meydiarso
 
PPTX
My month with Ruby
alextomovski
 
PPTX
Lisp in the Cloud
Mike Travers
 
PPTX
Rubykaigi 2017-nishimotz-v6
Takuya Nishimoto
 
KEY
About Clack
fukamachi
 
PDF
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
Real Nobile
 
PPTX
Ruby, the language of devops
Rob Kinyon
 
PDF
Ruby projects of interest for DevOps
Ricardo Sanchez
 
PDF
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Julian Gamble
 
KEY
Perl On The JVM (London.pm Talk 2009-04)
Ben Evans
 
PDF
Applying the paradigms of core.async in Clojure and ClojureScript
Julian Gamble
 
PDF
JRuby: The Hard Parts
Charles Nutter
 
KEY
Java Closures
Ben Evans
 
Kevin Whinnery: Write Better JavaScript
Axway Appcelerator
 
Introduction to Go
zhubert
 
Culerity - Headless full stack testing for JavaScript
Thilo Utke
 
Truly madly deeply parallel ruby applications
Hari Krishnan‎
 
Object oriented javascript
Garrison Locke
 
CSP: Huh? And Components
Daniel Fagnan
 
Ruby in office time reboot
Kentaro Goto
 
Metaprogramming with javascript
Ahmad Rizqi Meydiarso
 
My month with Ruby
alextomovski
 
Lisp in the Cloud
Mike Travers
 
Rubykaigi 2017-nishimotz-v6
Takuya Nishimoto
 
About Clack
fukamachi
 
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
Real Nobile
 
Ruby, the language of devops
Rob Kinyon
 
Ruby projects of interest for DevOps
Ricardo Sanchez
 
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Julian Gamble
 
Perl On The JVM (London.pm Talk 2009-04)
Ben Evans
 
Applying the paradigms of core.async in Clojure and ClojureScript
Julian Gamble
 
JRuby: The Hard Parts
Charles Nutter
 
Java Closures
Ben Evans
 

Viewers also liked (6)

PDF
Golang vs Ruby
Michał Konarski
 
PDF
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
José Yoshiriro
 
PDF
Go language presentation
paramisoft
 
PDF
Celluloid, Celluloid::IO and Friends
Marcelo Pinheiro
 
PPTX
Golang
Michael Blake
 
PDF
An introduction to go programming language
Technology Parser
 
Golang vs Ruby
Michał Konarski
 
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
José Yoshiriro
 
Go language presentation
paramisoft
 
Celluloid, Celluloid::IO and Friends
Marcelo Pinheiro
 
An introduction to go programming language
Technology Parser
 
Ad

Similar to Ruby is dying. What languages are cool now? (20)

PDF
Advantages of golang development services &amp; 10 most used go frameworks
Katy Slemon
 
PDF
Which programming language should you learn next?
Ganesh Samarthyam
 
PPTX
Go from a PHP Perspective
Barry Jones
 
PPTX
Swift programming language
Nijo Job
 
PDF
Introduction to Go
Simon Hewitt
 
PDF
Swift vs. Language X
Scott Wlaschin
 
PDF
Are High Level Programming Languages for Multicore and Safety Critical Conver...
InfinIT - Innovationsnetværket for it
 
PPT
Do Languages Matter?
Bruce Eckel
 
PPTX
Go programming language
Appstud
 
PDF
The Ring programming language version 1.10 book - Part 6 of 212
Mahmoud Samir Fayed
 
PDF
Languages used by web app development services remotestac x
Remote Stacx
 
PPTX
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
PDF
About programming languages
Ganesh Samarthyam
 
PPTX
Learning and Modern Programming Languages
Ray Toal
 
PDF
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
PDF
The Ring programming language version 1.9 book - Part 6 of 210
Mahmoud Samir Fayed
 
PPTX
Golang workshop - Mindbowser
Mindbowser Inc
 
PDF
Elixir intro
Anton Mishchuk
 
PPTX
Programming-Languages.pptx
Vrushabh Tokse
 
PPT
Future Programming Language
YLTO
 
Advantages of golang development services &amp; 10 most used go frameworks
Katy Slemon
 
Which programming language should you learn next?
Ganesh Samarthyam
 
Go from a PHP Perspective
Barry Jones
 
Swift programming language
Nijo Job
 
Introduction to Go
Simon Hewitt
 
Swift vs. Language X
Scott Wlaschin
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
InfinIT - Innovationsnetværket for it
 
Do Languages Matter?
Bruce Eckel
 
Go programming language
Appstud
 
The Ring programming language version 1.10 book - Part 6 of 212
Mahmoud Samir Fayed
 
Languages used by web app development services remotestac x
Remote Stacx
 
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
About programming languages
Ganesh Samarthyam
 
Learning and Modern Programming Languages
Ray Toal
 
Best Programming Language to Learn - Kinsh Technologies
Nishant Desai
 
The Ring programming language version 1.9 book - Part 6 of 210
Mahmoud Samir Fayed
 
Golang workshop - Mindbowser
Mindbowser Inc
 
Elixir intro
Anton Mishchuk
 
Programming-Languages.pptx
Vrushabh Tokse
 
Future Programming Language
YLTO
 
Ad

Recently uploaded (20)

PDF
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
PDF
Malaysia’s e-Invoice System: A Complete Guide for Businesses
Matiyas Solutions
 
PDF
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
PDF
What companies do with Pharo (ESUG 2025)
ESUG
 
PDF
Supabase Meetup: Build in a weekend, scale to millions
Carlo Gilmar Padilla Santana
 
PPTX
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
PDF
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
PDF
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
PDF
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
PPTX
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
PPT
Activate_Methodology_Summary presentatio
annapureddyn
 
PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
PPTX
ChessBase 18.02 Crack + Serial Key Free Download
cracked shares
 
PDF
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
PPTX
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
PPT
Brief History of Python by Learning Python in three hours
adanechb21
 
PPTX
Farrell__10e_ch04_PowerPoint.pptx Programming Logic and Design slides
bashnahara11
 
PDF
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
PPTX
TexSender Pro 8.9.1 Crack Full Version Download
cracked shares
 
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
Malaysia’s e-Invoice System: A Complete Guide for Businesses
Matiyas Solutions
 
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
What companies do with Pharo (ESUG 2025)
ESUG
 
Supabase Meetup: Build in a weekend, scale to millions
Carlo Gilmar Padilla Santana
 
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
Activate_Methodology_Summary presentatio
annapureddyn
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
ChessBase 18.02 Crack + Serial Key Free Download
cracked shares
 
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
Brief History of Python by Learning Python in three hours
adanechb21
 
Farrell__10e_ch04_PowerPoint.pptx Programming Logic and Design slides
bashnahara11
 
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
TexSender Pro 8.9.1 Crack Full Version Download
cracked shares
 

Ruby is dying. What languages are cool now?

  • 1. Ruby is dying What languages are cool now? Michał Konarski u2i.com
  • 4. But let’s look from a different angle...
  • 6. Well, not exactly. But what languages are cool now?
  • 7. Let’s look at six of them
  • 9. Swift ● designed by Apple ● released in 2014 ● created for iOS, macOS, tvOS ● multi-paradigm ● statically, strongly typed ● compiled
  • 10. namespacesgenerics closures tuples operator overloading native collections type inference pattern matching multiple return types Read-Eval-Print-Loop (REPL) Swift features
  • 11. Nothing really outstanding. So, what’s the story behind Swift?
  • 12. “We absolutely loved Objective-C, but we had to ask ourselves a question - what would it be like if we had Objective-C without the baggage of C?” Tim Cook
  • 13. It’s mainly because Objective-C is bad. And they had nothing else.
  • 14. @interface Foo : NSObject @property (readonly) int bar; - (instancetype)initWithBar:(int)bar; + (instancetype)fooWithBar:(int)bar; @end @implementation Foo - (instancetype)initWithBar:(int)bar { self = [super init]; if (self) { _bar = bar; } return self; } + (instancetype)fooWithBar:(int)bar { return [[self alloc] initWithBar:bar]; } @end How bad is Objective-C? http://www.antonzherdev.com/post/70064588471/top-13-worst-things-about-objective-c
  • 15. Swift is easier to read Objective-C if (myDelegate != nil) { if ([myDelegate respondsToSelector: @selector(scrollViewDidScroll:)]) { [myDelegate scrollViewDidScroll:myScrollView] } } Swift myDelegate?.scrollViewDidScroll?(myScrollView)
  • 16. Why also Swift is better? ● no need to have two separate files (code and headers) ● it’s safer (runtime crash on null pointer) ● it has automatic ARC (Automatic Reference Counting) ● it’s faster ● it requires less code ● it has namespaces
  • 17. It’s not only a language XCode 8 https://developer.apple.com/xcode/
  • 18. It’s not only a language Swift Playgrounds http://www.apple.com/swift/playgrounds/
  • 20. ● sponsored by Mozilla ● announced in 2010 ● first release in 2012 ● stable release in 2015 ● statically, strongly typed ● multi-paradigm ● compiled
  • 21. “The goal of the project is to design and implement a safe, concurrent, practical systems language” Rust FAQ
  • 22. There are not such languages? Apparently not.
  • 23. Current languages are wrong ● there is too little attention paid to safety ● they have poor concurrency support ● they offer limited control over resources ● they stick too much to paradigm
  • 24. So let’s create a new high-low level language!
  • 25. Rust is a high level language! ● generics ● traits ● pattern matching ● closures ● type inference ● automatic memory allocation and deallocation ● guaranteed memory safety ● threads without data races
  • 26. Rust is a low level language! ● no garbage collector ● manual memory management ● zero-cost abstractions ● minimal runtime ● as fast as C/C++
  • 28. Ownership fn foo() { let v1 = vec![1, 2, 3]; let v2 = v1; println!("v1[0] is: {}", v1[0]); } error: use of moved value: `v
  • 29. You can’t have two references to the same object!
  • 31. There are more such mechanisms.
  • 32. Future of Rust ● currently two big projects: servo and rust ● other smaller projects: redox, cgmath, Iron, rust-doom ● it changes very quickly ● it has a good opinion in the community ● it will be hard to replace C/C++ ● It has a steep learning curve
  • 33. Go
  • 34. Go ● designed in Google in 2007 ● first release in 2009 ● stable release in 2016 ● statically, strongly typed ● multi-paradigm, concurrent ● compiled
  • 35. Standard languages (Java, C++) ● are very strong: type-safe, effective, efficient ● great in hands of experts ● used to build huge systems and companies
  • 36. Standard languages (Java, C++) ● hard to use ● compilers are slow ● binaries are huge ● desperately need language-aware tools ● poorly adapt to clouds, multicore CPUs
  • 37. Simpler languages (Python, Ruby, JS) ● easier to learn ● dynamically typed (fewer keystrokes) ● interpreted (no compiler to wait for) ● good tools (interpreters make things easier)
  • 38. Simpler languages (Python, Ruby, JS) ● slow ● not type-safe ● hard to maintain in a big project ● very poor at scale ● not very modern
  • 39. What if we had a static language with dynamic-like syntax?
  • 40. A niche for a language ● understandable ● statically typed ● productive and readable ● fast to work in ● scales well ● doesn't require tools, but supports them well ● good at networking and multiprocessing
  • 41. Features of Go ● syntax typical for dynamic languages ● type inference ● fast compilation ● garbage collector ● memory safety features ● built-in concurrency ● object oriented without classes and inheritance ● lack of generics ● compiles to small statically linked binaries
  • 42. Interfaces type Animal interface { Speak() string } type Dog struct { } func (d Dog) Speak() string { return "Woof!" } func SaySomething(a Animal) { fmt.Println(a.Speak()) } func main() { dog := Dog{} SaySomething(dog) }
  • 44. Goroutines func main() { go expensiveComputation(x, y, z) anotherExpensiveComputation(a, b, c) }
  • 45. Channels func main() { ch := make(chan int) go expensiveComputation(x, y, z, ch) v2 := anotherExpensiveComputation(a, b, c) v1 := <- ch fmt.Println(v1, v2) }
  • 46. Future of Go ● it’s popularity constantly raises ● it’s backed by Google ● it’s used by Docker, Netflix, Dropbox, CloudFare, SoundCloud, BBC, New York Times, Uber and others ● it’s seen as a good balance between Java-like languages and Python-like ● it easy to learn and powerful ● it runs well in cloud environments ● might be a good choice for microservices approach
  • 48. ● created by José Valim ● released in 2012 ● functional ● dynamically, strongly typed ● compiled to Erlang VM byte code
  • 50. Elixir = Erlang with Ruby syntax
  • 51. Elixir features ● massively concurrent ● scalable ● fault-tolerant ● great performance ● functional, but practical ● nice Ruby-like syntax ● metaprogramming via macros
  • 54. Controllers in Rails class PagesController < ApplicationController def index @title = params[:title] @members = [ {name: "Chris McCord"}, {name: "Matt Sears"}, {name: "David Stump"}, {name: "Ricardo Thompson"} ] render "index" end end http://www.littlelines.com/blog/2014/07/08/elixir-vs-ruby-showdown-phoenix-vs-rails/
  • 55. Controllers in Phoenix defmodule Benchmarker.Controllers.Pages do use Phoenix.Controller def index(conn, %{"title" => title}) do render conn, "index", title: title, members: [ %{name: "Chris McCord"}, %{name: "Matt Sears"}, %{name: "David Stump"}, %{name: "Ricardo Thompson"} ] end end http://www.littlelines.com/blog/2014/07/08/elixir-vs-ruby-showdown-phoenix-vs-rails/
  • 56. Future of Elixir ● new Erlang for the masses ● fits highly concurrent niche ● attracts Ruby developers ● no big company behind ● used by Pinterest ● will fly on the wings of Phoenix?
  • 58. ● created by data scientists ● released in 2012 ● dynamically, strongly typed ● compiled
  • 59. Compiled one for fast stuff. Interpreted one for visualisation. Data scientists’ two languages problem:
  • 60. Julia features ● solves scientists’ two language problem ● familiar syntax ● extensive scientific library ● user-defined types ● multiple dispatch ● built-in parallelism ● good performance (comparing to C)
  • 61. Single dispatch (Ruby) a.do_something(b, c) Only a decides which method to choose.
  • 62. Multiple dispatch julia> f(x::Float64, y::Float64) = 2x + y; julia> f(2.0, 3.0) 7.0 julia> f(2.0, 3) ERROR: MethodError: `f` has no method matching Here everything decides!
  • 63. Future of Julia ● R, MATLAB and C competitor ● unifies scientific software stack ● not mature enough yet ● small, but growing number of libraries
  • 65. ● created by Google ● released in 2011 ● optionally typed ● interpreted ● translated to JavaScript
  • 67. Dart vs JavaScript ● class-based (not prototype-based) ● normal foreach ● named parameters ● operator overriding ● string interpolation ● optional typing ● false is false ● easy DOM operations
  • 68. Looks familiar class Point { num x; num y; Point(this.x, this.y); distanceFromOrigin() { return sqrt(x * x + y * y); } } main() { var p = new Point(2, 3); print(p.distanceFromOrigin()); }
  • 69. Cascade operator querySelector('#button') ..text = 'Confirm' ..classes.add('important') ..onClick.listen( (e) => window.alert('Confirmed!'));
  • 70. Future of Dart ● 2016 AdWord UI built in Dart ● no Dart VM in browsers ● fragmented community ● client-side future is dim ● backend future looks much better
  • 72. Sources ● developer.apple.com/swift ● rust-lang.org ● golang.org ● elixir-lang.org ● julialang.org ● dartlang.org