Functional Leap of Faith (Keynote at JDay Lviv 2014)

Tomer Gabel
Tomer GabelConsulting Engineer at Substrate Software Services
Functional Leap of 
Faith 
Tomer Gabel, Wix 
JDay Lviv 2014
Through the Looking Glass 
20 years ago… 
• C/C++ rule the 
market [1] 
• First release of Java 
[1] TIOBE Index (historical data)
… since then?* 
• C and Java are neck-and-neck 
• Virtual machines are everywhere 
• Garbage collection is everywhere 
• OOP is everywhere 
* Not exhaustive
Virtual Machines 
1967 BCPL 
1978 UCSD p-System 
1994 JVM 
2014 Everywhere!
Garbage Collection 
1960 Formalized[1] 
1970s Research 
1994 JVM 
2014 Everywhere! 
[1] Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I
Object-Oriented Programming 
1967 Simula 67 
1980 Smalltalk 80 
1983 C++ 
2014 Everywhere!
Advances take 
decades to become 
mainstream
Market Growth[1] 
3000 
2500 
2000 
1500 
1000 
500 
0 
1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* 
Units (Millions) 
[1] eTForecasts Worldwide PC Market Research Report
3000 
2500 
2000 
1500 
1000 
500 
0 
1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* 
Units (Millions) 
Market Growth 
• Structured Programming 
• Module Systems 
• Dynamic Memory Allocation
3000 
2500 
2000 
1500 
1000 
500 
0 
1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* 
Units (Millions) 
Market Growth 
• Garbage Collection 
• OOP 
• VMs and JIT
3000 
2500 
2000 
1500 
1000 
500 
0 
1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* 
Units (Millions) 
Market Growth 
You are here!
What’s holding us 
back?
The Market has Shifted 
• SaaS is the norm 
• Shorter time to 
market 
• Latency requirements 
are stricter 
• Availability is 
business-critical
The Free Lunch is Over[1] 
[1] The Free Lunch is Over, Herb Stutter (Dr. Dobb's Journal, 2005) 
• CPUs aren’t getting 
(much) faster 
• Rather, they’re getting 
parallel 
• Concurrency is the 
new kid on the block
Datasets are Getting Bigger 
• Terabyte-scale data is 
common 
• Computation demand 
– NoSQL 
– Big Data 
• Specialized hardware 
(SAN) is a hindrance
We need new 
abstractions.
Three desirable 
attributes:
Today’s systems 
are highly available & reliable. 
Tomorrow’s abstraction must… 
encourage correct code.
Complexity is the Mind Killer 
• Complex system  bigger codebase 
• More code  more bugs 
• We want less code 
• We want correct code
Control flow  Data flow 
We need to invert our thinking.
How  What 
We need to invert our thinking.
Control flow describes the 
how 
List<Person> adults(List<Person> in) { 
ArrayList<Person> out = new ArrayList<>(); 
for (Person p : in) 
if (p.getAge() >= 18) 
out.add(p); 
return out; 
}
Data flow describes the what 
List<Person> adults(List<Person> in) { 
return in.stream() 
.filter(p -> p.age >= 18) 
.collect(Collectors.toList()); 
}
“What” is Better 
• Focuses on the 
problem 
• Reduces accidental 
complexity 
• Decouples intent from 
execution
Today’s systems 
are highly concurrent. 
Tomorrow’s abstraction must… 
encourage immutability.
The Case for Immutability 
• Inherently thread-safe 
• Referentially 
transparent 
• Easier to reason 
about!
Today’s systems 
are horizontally scalable. 
Tomorrow’s abstraction must… 
simplify workload distribution.
Distribution 101 
1. Take a core 
computation 
2. Split it out 
3. Run on many nodes 
4. Profit
Why is this hard? 
• Behavior-as-data 
• Side effects 
• High-performance 
frameworks 
 Lambdas 
 Immutability 
 Akka, Hadoop, 
Storm…
The future is 
functional. 
1. Data flow-oriented 
2. Immutable 
3. Easy to distribute
tomer@tomergabel.com 
@tomerg 
http://il.linkedin.com/in/tomergabel 
THANK YOU FOR YOUR TIME!
1 of 31

Recommended

Neo4j GraphDay Tel Aviv - Real World Graph Use Cases by
Neo4j GraphDay Tel Aviv - Real World Graph Use CasesNeo4j GraphDay Tel Aviv - Real World Graph Use Cases
Neo4j GraphDay Tel Aviv - Real World Graph Use CasesNeo4j
285 views17 slides
AI is Coming! Are You Ready? The story of “Self-Driving Datacenter” by
AI is Coming! Are You Ready? The story of “Self-Driving Datacenter”AI is Coming! Are You Ready? The story of “Self-Driving Datacenter”
AI is Coming! Are You Ready? The story of “Self-Driving Datacenter”Sergey A. Razin
356 views52 slides
Intro to Quantum Computing - IndiQ Hyderabad meetup (Feb 2nd) by
Intro to Quantum Computing - IndiQ Hyderabad meetup (Feb 2nd)Intro to Quantum Computing - IndiQ Hyderabad meetup (Feb 2nd)
Intro to Quantum Computing - IndiQ Hyderabad meetup (Feb 2nd)Rana Prathap Simh Mukthavaram
179 views28 slides
Design Pattern Automation by
Design Pattern AutomationDesign Pattern Automation
Design Pattern AutomationPostSharp Technologies
2.5K views69 slides
Bab satu by
Bab satuBab satu
Bab satuAida Ramlan II
480 views14 slides
Data mining by
Data miningData mining
Data miningMonsur Ahmed Shafiq
258 views6 slides

More Related Content

Viewers also liked

Covering (Rules-based) Algorithm by
Covering (Rules-based) AlgorithmCovering (Rules-based) Algorithm
Covering (Rules-based) AlgorithmZHAO Sam
16.9K views34 slides
Data mining notes by
Data mining notesData mining notes
Data mining notesAVC College of Engineering
11.8K views96 slides
2.4 rule based classification by
2.4 rule based classification2.4 rule based classification
2.4 rule based classificationKrish_ver2
17.7K views12 slides
05 classification 1 decision tree and rule based classification by
05 classification 1 decision tree and rule based classification05 classification 1 decision tree and rule based classification
05 classification 1 decision tree and rule based classificationนนทวัฒน์ บุญบา
22.6K views96 slides
C++ idioms by example (Nov 2008) by
C++ idioms by example (Nov 2008)C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)Olve Maudal
5.5K views78 slides
08 c++ Operator Overloading.ppt by
08 c++ Operator Overloading.ppt08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.pptTareq Hasan
16.7K views40 slides

Viewers also liked(13)

Covering (Rules-based) Algorithm by ZHAO Sam
Covering (Rules-based) AlgorithmCovering (Rules-based) Algorithm
Covering (Rules-based) Algorithm
ZHAO Sam16.9K views
2.4 rule based classification by Krish_ver2
2.4 rule based classification2.4 rule based classification
2.4 rule based classification
Krish_ver217.7K views
C++ idioms by example (Nov 2008) by Olve Maudal
C++ idioms by example (Nov 2008)C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)
Olve Maudal5.5K views
08 c++ Operator Overloading.ppt by Tareq Hasan
08 c++ Operator Overloading.ppt08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt
Tareq Hasan16.7K views
Avoiding to Reinvent the flat tire by Hernan Wilkinson
Avoiding to Reinvent the flat tireAvoiding to Reinvent the flat tire
Avoiding to Reinvent the flat tire
Hernan Wilkinson1.7K views
Maglev-A different way to develop with Ruby by Hernan Wilkinson
Maglev-A different way to develop with RubyMaglev-A different way to develop with Ruby
Maglev-A different way to develop with Ruby
Hernan Wilkinson816 views
Data Mining: Concepts and techniques classification _chapter 9 :advanced methods by Salah Amean
Data Mining: Concepts and techniques classification _chapter 9 :advanced methodsData Mining: Concepts and techniques classification _chapter 9 :advanced methods
Data Mining: Concepts and techniques classification _chapter 9 :advanced methods
Salah Amean11.6K views
Design Pattern From Java To Ruby by Robbin Fan
Design Pattern    From Java To RubyDesign Pattern    From Java To Ruby
Design Pattern From Java To Ruby
Robbin Fan1.7K views
History of computer language by Claire Punkcor
History of computer languageHistory of computer language
History of computer language
Claire Punkcor4.7K views

Similar to Functional Leap of Faith (Keynote at JDay Lviv 2014)

A leap around AI by
A leap around AIA leap around AI
A leap around AIDennis Vroegop
36 views68 slides
ClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev by
ClickHouse Analytical DBMS. Introduction and usage, by Alexander ZaitsevClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev
ClickHouse Analytical DBMS. Introduction and usage, by Alexander ZaitsevAltinity Ltd
1.5K views25 slides
Business Track: How Criteo Scaled and Supported Massive Growth with MongoDB by
Business Track: How Criteo Scaled and Supported Massive Growth with MongoDBBusiness Track: How Criteo Scaled and Supported Massive Growth with MongoDB
Business Track: How Criteo Scaled and Supported Massive Growth with MongoDBMongoDB
4.2K views15 slides
Agile Digital and the new management paradigms by
Agile Digital and the new management paradigmsAgile Digital and the new management paradigms
Agile Digital and the new management paradigmsallan kelly
698 views51 slides
Life after microservices by
Life after microservicesLife after microservices
Life after microservicesUwe Friedrichsen
20.9K views97 slides
14 turing wics by
14 turing wics14 turing wics
14 turing wicsashish61_scs
493 views41 slides

Similar to Functional Leap of Faith (Keynote at JDay Lviv 2014)(20)

ClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev by Altinity Ltd
ClickHouse Analytical DBMS. Introduction and usage, by Alexander ZaitsevClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev
ClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev
Altinity Ltd1.5K views
Business Track: How Criteo Scaled and Supported Massive Growth with MongoDB by MongoDB
Business Track: How Criteo Scaled and Supported Massive Growth with MongoDBBusiness Track: How Criteo Scaled and Supported Massive Growth with MongoDB
Business Track: How Criteo Scaled and Supported Massive Growth with MongoDB
MongoDB4.2K views
Agile Digital and the new management paradigms by allan kelly
Agile Digital and the new management paradigmsAgile Digital and the new management paradigms
Agile Digital and the new management paradigms
allan kelly698 views
OSS Presentation Keynote by Jason Hoffman by OpenStorageSummit
OSS Presentation Keynote by Jason HoffmanOSS Presentation Keynote by Jason Hoffman
OSS Presentation Keynote by Jason Hoffman
OpenStorageSummit368 views
Big Data Analytics Strategy and Roadmap by Srinath Perera
Big Data Analytics Strategy and RoadmapBig Data Analytics Strategy and Roadmap
Big Data Analytics Strategy and Roadmap
Srinath Perera19.2K views
Elasticsearch : petit déjeuner du 13 mars 2014 by ALTER WAY
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014
ALTER WAY3K views
How Criteo Scaled and Supported Massive Growth with MongoDB (2013) by Julien SIMON
How Criteo Scaled and Supported  Massive Growth with MongoDB (2013)How Criteo Scaled and Supported  Massive Growth with MongoDB (2013)
How Criteo Scaled and Supported Massive Growth with MongoDB (2013)
Julien SIMON723 views
Introduction to Cloud Storage by Dell EMC
Introduction to Cloud StorageIntroduction to Cloud Storage
Introduction to Cloud Storage
Dell EMC660 views
Luka Postružin (Superbet) – ‘From zero to hero’ in early life customer segmen... by Codiax
Luka Postružin (Superbet) – ‘From zero to hero’ in early life customer segmen...Luka Postružin (Superbet) – ‘From zero to hero’ in early life customer segmen...
Luka Postružin (Superbet) – ‘From zero to hero’ in early life customer segmen...
Codiax71 views
The Land Sharks are on the Squawk Box (Where Did Postgres Come From?) by EDB
The Land Sharks are on the Squawk Box (Where Did Postgres Come From?)The Land Sharks are on the Squawk Box (Where Did Postgres Come From?)
The Land Sharks are on the Squawk Box (Where Did Postgres Come From?)
EDB195 views
ClickHouse Paris Meetup. ClickHouse Analytical DBMS, Introduction. By Alexand... by Altinity Ltd
ClickHouse Paris Meetup. ClickHouse Analytical DBMS, Introduction. By Alexand...ClickHouse Paris Meetup. ClickHouse Analytical DBMS, Introduction. By Alexand...
ClickHouse Paris Meetup. ClickHouse Analytical DBMS, Introduction. By Alexand...
Altinity Ltd403 views
The Machine - a vision for the future of computing by James Salter
The Machine - a vision for the future of computingThe Machine - a vision for the future of computing
The Machine - a vision for the future of computing
James Salter212 views
Machine learning & Time Series Analysis , Finlab CTO 韓承佑 by TaiLiLuo
Machine learning & Time Series Analysis ,  Finlab CTO 韓承佑Machine learning & Time Series Analysis ,  Finlab CTO 韓承佑
Machine learning & Time Series Analysis , Finlab CTO 韓承佑
TaiLiLuo1.6K views
VLSI and ES Design -An Overview.pptx by NukalaMurthy1
VLSI and ES Design -An Overview.pptxVLSI and ES Design -An Overview.pptx
VLSI and ES Design -An Overview.pptx
NukalaMurthy110 views
The challenges of live events scalability by Guy Tomer
The challenges of live events scalabilityThe challenges of live events scalability
The challenges of live events scalability
Guy Tomer599 views

More from Tomer Gabel

How shit works: Time by
How shit works: TimeHow shit works: Time
How shit works: TimeTomer Gabel
342 views53 slides
Nondeterministic Software for the Rest of Us by
Nondeterministic Software for the Rest of UsNondeterministic Software for the Rest of Us
Nondeterministic Software for the Rest of UsTomer Gabel
329 views39 slides
Slaying Sacred Cows: Deconstructing Dependency Injection by
Slaying Sacred Cows: Deconstructing Dependency InjectionSlaying Sacred Cows: Deconstructing Dependency Injection
Slaying Sacred Cows: Deconstructing Dependency InjectionTomer Gabel
1.3K views34 slides
An Abridged Guide to Event Sourcing by
An Abridged Guide to Event SourcingAn Abridged Guide to Event Sourcing
An Abridged Guide to Event SourcingTomer Gabel
1K views32 slides
How shit works: the CPU by
How shit works: the CPUHow shit works: the CPU
How shit works: the CPUTomer Gabel
1.8K views38 slides
How Shit Works: Storage by
How Shit Works: StorageHow Shit Works: Storage
How Shit Works: StorageTomer Gabel
914 views44 slides

More from Tomer Gabel(20)

How shit works: Time by Tomer Gabel
How shit works: TimeHow shit works: Time
How shit works: Time
Tomer Gabel342 views
Nondeterministic Software for the Rest of Us by Tomer Gabel
Nondeterministic Software for the Rest of UsNondeterministic Software for the Rest of Us
Nondeterministic Software for the Rest of Us
Tomer Gabel329 views
Slaying Sacred Cows: Deconstructing Dependency Injection by Tomer Gabel
Slaying Sacred Cows: Deconstructing Dependency InjectionSlaying Sacred Cows: Deconstructing Dependency Injection
Slaying Sacred Cows: Deconstructing Dependency Injection
Tomer Gabel1.3K views
An Abridged Guide to Event Sourcing by Tomer Gabel
An Abridged Guide to Event SourcingAn Abridged Guide to Event Sourcing
An Abridged Guide to Event Sourcing
Tomer Gabel1K views
How shit works: the CPU by Tomer Gabel
How shit works: the CPUHow shit works: the CPU
How shit works: the CPU
Tomer Gabel1.8K views
How Shit Works: Storage by Tomer Gabel
How Shit Works: StorageHow Shit Works: Storage
How Shit Works: Storage
Tomer Gabel914 views
Java 8 and Beyond, a Scala Story by Tomer Gabel
Java 8 and Beyond, a Scala StoryJava 8 and Beyond, a Scala Story
Java 8 and Beyond, a Scala Story
Tomer Gabel747 views
The Wix Microservice Stack by Tomer Gabel
The Wix Microservice StackThe Wix Microservice Stack
The Wix Microservice Stack
Tomer Gabel1.7K views
Scala Refactoring for Fun and Profit (Japanese subtitles) by Tomer Gabel
Scala Refactoring for Fun and Profit (Japanese subtitles)Scala Refactoring for Fun and Profit (Japanese subtitles)
Scala Refactoring for Fun and Profit (Japanese subtitles)
Tomer Gabel6.6K views
Scala Refactoring for Fun and Profit by Tomer Gabel
Scala Refactoring for Fun and ProfitScala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
Tomer Gabel985 views
Onboarding at Scale by Tomer Gabel
Onboarding at ScaleOnboarding at Scale
Onboarding at Scale
Tomer Gabel1.5K views
Scala in the Wild by Tomer Gabel
Scala in the WildScala in the Wild
Scala in the Wild
Tomer Gabel2.8K views
Speaking Scala: Refactoring for Fun and Profit (Workshop) by Tomer Gabel
Speaking Scala: Refactoring for Fun and Profit (Workshop)Speaking Scala: Refactoring for Fun and Profit (Workshop)
Speaking Scala: Refactoring for Fun and Profit (Workshop)
Tomer Gabel765 views
Put Your Thinking CAP On by Tomer Gabel
Put Your Thinking CAP OnPut Your Thinking CAP On
Put Your Thinking CAP On
Tomer Gabel3.5K views
Leveraging Scala Macros for Better Validation by Tomer Gabel
Leveraging Scala Macros for Better ValidationLeveraging Scala Macros for Better Validation
Leveraging Scala Macros for Better Validation
Tomer Gabel1.4K views
A Field Guide to DSL Design in Scala by Tomer Gabel
A Field Guide to DSL Design in ScalaA Field Guide to DSL Design in Scala
A Field Guide to DSL Design in Scala
Tomer Gabel6.5K views
Scala Back to Basics: Type Classes by Tomer Gabel
Scala Back to Basics: Type ClassesScala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
Tomer Gabel3.7K views
5 Bullets to Scala Adoption by Tomer Gabel
5 Bullets to Scala Adoption5 Bullets to Scala Adoption
5 Bullets to Scala Adoption
Tomer Gabel2.7K views
Nashorn: JavaScript that doesn’t suck (ILJUG) by Tomer Gabel
Nashorn: JavaScript that doesn’t suck (ILJUG)Nashorn: JavaScript that doesn’t suck (ILJUG)
Nashorn: JavaScript that doesn’t suck (ILJUG)
Tomer Gabel5.9K views
Ponies and Unicorns With Scala by Tomer Gabel
Ponies and Unicorns With ScalaPonies and Unicorns With Scala
Ponies and Unicorns With Scala
Tomer Gabel961 views

Recently uploaded

SUGCON ANZ Presentation V2.1 Final.pptx by
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptxJack Spektor
22 views34 slides
Dapr Unleashed: Accelerating Microservice Development by
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice DevelopmentMiroslav Janeski
10 views29 slides
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionMárton Kodok
5 views55 slides
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols by
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDeltares
7 views23 slides
EV Charging App Case by
EV Charging App Case EV Charging App Case
EV Charging App Case iCoderz Solutions
5 views1 slide
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI... by
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Marc Müller
37 views83 slides

Recently uploaded(20)

SUGCON ANZ Presentation V2.1 Final.pptx by Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor22 views
Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski10 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok5 views
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols by Deltares
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - DolsDSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
DSD-INT 2023 European Digital Twin Ocean and Delft3D FM - Dols
Deltares7 views
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI... by Marc Müller
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Marc Müller37 views
Airline Booking Software by SharmiMehta
Airline Booking SoftwareAirline Booking Software
Airline Booking Software
SharmiMehta6 views
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares9 views
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs by Deltares
DSD-INT 2023 The Danube Hazardous Substances Model - KovacsDSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
Deltares8 views
Generic or specific? Making sensible software design decisions by Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme... by Deltares
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
DSD-INT 2023 Salt intrusion Modelling of the Lauwersmeer, towards a measureme...
Deltares5 views
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino6 views
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -... by Deltares
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...
DSD-INT 2023 Simulating a falling apron in Delft3D 4 - Engineering Practice -...
Deltares6 views
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the... by Deltares
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...
DSD-INT 2023 Leveraging the results of a 3D hydrodynamic model to improve the...
Deltares6 views
360 graden fabriek by info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info3349238 views
Advanced API Mocking Techniques by Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary19 views

Functional Leap of Faith (Keynote at JDay Lviv 2014)

  • 1. Functional Leap of Faith Tomer Gabel, Wix JDay Lviv 2014
  • 2. Through the Looking Glass 20 years ago… • C/C++ rule the market [1] • First release of Java [1] TIOBE Index (historical data)
  • 3. … since then?* • C and Java are neck-and-neck • Virtual machines are everywhere • Garbage collection is everywhere • OOP is everywhere * Not exhaustive
  • 4. Virtual Machines 1967 BCPL 1978 UCSD p-System 1994 JVM 2014 Everywhere!
  • 5. Garbage Collection 1960 Formalized[1] 1970s Research 1994 JVM 2014 Everywhere! [1] Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I
  • 6. Object-Oriented Programming 1967 Simula 67 1980 Smalltalk 80 1983 C++ 2014 Everywhere!
  • 7. Advances take decades to become mainstream
  • 8. Market Growth[1] 3000 2500 2000 1500 1000 500 0 1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* Units (Millions) [1] eTForecasts Worldwide PC Market Research Report
  • 9. 3000 2500 2000 1500 1000 500 0 1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* Units (Millions) Market Growth • Structured Programming • Module Systems • Dynamic Memory Allocation
  • 10. 3000 2500 2000 1500 1000 500 0 1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* Units (Millions) Market Growth • Garbage Collection • OOP • VMs and JIT
  • 11. 3000 2500 2000 1500 1000 500 0 1975 1980 1985 1990 1995 2000 2005 2010 2015* 2020* Units (Millions) Market Growth You are here!
  • 13. The Market has Shifted • SaaS is the norm • Shorter time to market • Latency requirements are stricter • Availability is business-critical
  • 14. The Free Lunch is Over[1] [1] The Free Lunch is Over, Herb Stutter (Dr. Dobb's Journal, 2005) • CPUs aren’t getting (much) faster • Rather, they’re getting parallel • Concurrency is the new kid on the block
  • 15. Datasets are Getting Bigger • Terabyte-scale data is common • Computation demand – NoSQL – Big Data • Specialized hardware (SAN) is a hindrance
  • 16. We need new abstractions.
  • 18. Today’s systems are highly available & reliable. Tomorrow’s abstraction must… encourage correct code.
  • 19. Complexity is the Mind Killer • Complex system  bigger codebase • More code  more bugs • We want less code • We want correct code
  • 20. Control flow  Data flow We need to invert our thinking.
  • 21. How  What We need to invert our thinking.
  • 22. Control flow describes the how List<Person> adults(List<Person> in) { ArrayList<Person> out = new ArrayList<>(); for (Person p : in) if (p.getAge() >= 18) out.add(p); return out; }
  • 23. Data flow describes the what List<Person> adults(List<Person> in) { return in.stream() .filter(p -> p.age >= 18) .collect(Collectors.toList()); }
  • 24. “What” is Better • Focuses on the problem • Reduces accidental complexity • Decouples intent from execution
  • 25. Today’s systems are highly concurrent. Tomorrow’s abstraction must… encourage immutability.
  • 26. The Case for Immutability • Inherently thread-safe • Referentially transparent • Easier to reason about!
  • 27. Today’s systems are horizontally scalable. Tomorrow’s abstraction must… simplify workload distribution.
  • 28. Distribution 101 1. Take a core computation 2. Split it out 3. Run on many nodes 4. Profit
  • 29. Why is this hard? • Behavior-as-data • Side effects • High-performance frameworks  Lambdas  Immutability  Akka, Hadoop, Storm…
  • 30. The future is functional. 1. Data flow-oriented 2. Immutable 3. Easy to distribute

Editor's Notes

  1. [1] http://www.cl.cam.ac.uk/~mr10/bcplman.pdf [2] http://en.wikipedia.org/wiki/UCSD_Pascal
  2. Research includes: * Copy collector (a.k.a Cheney’s Algorithm http://en.wikipedia.org/wiki/Cheney%27s_algorithm) * Mark-sweep (table or LISP2 http://en.wikipedia.org/wiki/Mark-compact_algorithm)
  3. [1] http://www.cl.cam.ac.uk/~mr10/bcplman.pdf [2] http://en.wikipedia.org/wiki/UCSD_Pascal
  4. http://www.etforecasts.com/products/ES_pcww1203.htm
  5. Image source: https://www.flickr.com/photos/luisangel/171934213
  6. Image source: https://www.flickr.com/photos/iwb/5418874340 [1] http://www.gotw.ca/publications/concurrency-ddj.htm
  7. Image source: https://www.flickr.com/photos/zagrobot/2731084578
  8. As complexity increases… … so does your code base Less code => less bugs We need a way to write less code We need a way to write correct code
  9. Image source: http://commons.wikimedia.org/wiki/File:Uncle_Sam_(pointing_finger).jpg
  10. As complexity increases… … so does your code base Less code => less bugs We need a way to write less code We need a way to write correct code
  11. Image source: https://www.flickr.com/photos/60848944@N00/3537064556
  12. As complexity increases… … so does your code base Less code => less bugs We need a way to write less code We need a way to write correct code
  13. Image source: http://en.wikipedia.org/wiki/Supercomputer#mediaviewer/File:Wide-angle_view_of_the_ALMA_correlator.jpg