SlideShare ist ein Scribd-Unternehmen logo
1 von 31
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!

Weitere ähnliche Inhalte

Andere mochten auch

Covering (Rules-based) Algorithm
Covering (Rules-based) AlgorithmCovering (Rules-based) Algorithm
Covering (Rules-based) AlgorithmZHAO Sam
 
2.4 rule based classification
2.4 rule based classification2.4 rule based classification
2.4 rule based classificationKrish_ver2
 
C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)Olve Maudal
 
08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.pptTareq Hasan
 
Avoiding to Reinvent the flat tire
Avoiding to Reinvent the flat tireAvoiding to Reinvent the flat tire
Avoiding to Reinvent the flat tireHernan Wilkinson
 
Maglev-A different way to develop with Ruby
Maglev-A different way to develop with RubyMaglev-A different way to develop with Ruby
Maglev-A different way to develop with RubyHernan Wilkinson
 
Data Mining: Concepts and techniques classification _chapter 9 :advanced methods
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 methodsSalah Amean
 
Chapter 4 Classification
Chapter 4 ClassificationChapter 4 Classification
Chapter 4 ClassificationKhalid Elshafie
 
Design Pattern From Java To Ruby
Design Pattern    From Java To RubyDesign Pattern    From Java To Ruby
Design Pattern From Java To RubyRobbin Fan
 
History of computer language
History of computer languageHistory of computer language
History of computer languageClaire Punkcor
 

Andere mochten auch (13)

Covering (Rules-based) Algorithm
Covering (Rules-based) AlgorithmCovering (Rules-based) Algorithm
Covering (Rules-based) Algorithm
 
Data mining notes
Data mining notesData mining notes
Data mining notes
 
2.4 rule based classification
2.4 rule based classification2.4 rule based classification
2.4 rule based classification
 
05 classification 1 decision tree and rule based classification
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
 
C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)C++ idioms by example (Nov 2008)
C++ idioms by example (Nov 2008)
 
08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt
 
Avoiding to Reinvent the flat tire
Avoiding to Reinvent the flat tireAvoiding to Reinvent the flat tire
Avoiding to Reinvent the flat tire
 
Maglev-A different way to develop with Ruby
Maglev-A different way to develop with RubyMaglev-A different way to develop with Ruby
Maglev-A different way to develop with Ruby
 
Data Mining: Concepts and techniques classification _chapter 9 :advanced methods
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
 
Chapter 4 Classification
Chapter 4 ClassificationChapter 4 Classification
Chapter 4 Classification
 
Design Pattern From Java To Ruby
Design Pattern    From Java To RubyDesign Pattern    From Java To Ruby
Design Pattern From Java To Ruby
 
Naive bayes
Naive bayesNaive bayes
Naive bayes
 
History of computer language
History of computer languageHistory of computer language
History of computer language
 

Ähnlich wie Functional Leap of Faith (Keynote at JDay Lviv 2014)

ClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev
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
 
Business Track: How Criteo Scaled and Supported Massive Growth with 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 MongoDBMongoDB
 
Agile Digital and the new management paradigms
Agile Digital and the new management paradigmsAgile Digital and the new management paradigms
Agile Digital and the new management paradigmsallan kelly
 
OSS Presentation Keynote by Jason Hoffman
OSS Presentation Keynote by Jason HoffmanOSS Presentation Keynote by Jason Hoffman
OSS Presentation Keynote by Jason HoffmanOpenStorageSummit
 
Big Data Analytics Strategy and Roadmap
Big Data Analytics Strategy and RoadmapBig Data Analytics Strategy and Roadmap
Big Data Analytics Strategy and RoadmapSrinath Perera
 
Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014ALTER WAY
 
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)
How Criteo Scaled and Supported Massive Growth with MongoDB (2013)Julien SIMON
 
Introduction to Cloud Storage
Introduction to Cloud StorageIntroduction to Cloud Storage
Introduction to Cloud StorageDell EMC
 
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...
Luka Postružin (Superbet) – ‘From zero to hero’ in early life customer segmen...Codiax
 
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?)
The Land Sharks are on the Squawk Box (Where Did Postgres Come From?)EDB
 
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...
ClickHouse Paris Meetup. ClickHouse Analytical DBMS, Introduction. By Alexand...Altinity Ltd
 
The Machine - a vision for the future of computing
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 computingJames Salter
 
Machine learning & Time Series Analysis , Finlab CTO 韓承佑
Machine learning & Time Series Analysis ,  Finlab CTO 韓承佑Machine learning & Time Series Analysis ,  Finlab CTO 韓承佑
Machine learning & Time Series Analysis , Finlab CTO 韓承佑TaiLiLuo
 
VLSI and ES Design -An Overview.pptx
VLSI and ES Design -An Overview.pptxVLSI and ES Design -An Overview.pptx
VLSI and ES Design -An Overview.pptxNukalaMurthy1
 
The challenges of live events scalability
The challenges of live events scalabilityThe challenges of live events scalability
The challenges of live events scalabilityGuy Tomer
 

Ähnlich wie Functional Leap of Faith (Keynote at JDay Lviv 2014) (20)

A leap around AI
A leap around AIA leap around AI
A leap around AI
 
ClickHouse Analytical DBMS. Introduction and usage, by Alexander Zaitsev
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
 
Business Track: How Criteo Scaled and Supported Massive Growth with 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
 
Agile Digital and the new management paradigms
Agile Digital and the new management paradigmsAgile Digital and the new management paradigms
Agile Digital and the new management paradigms
 
Life after microservices
Life after microservicesLife after microservices
Life after microservices
 
14 turing wics
14 turing wics14 turing wics
14 turing wics
 
OSS Presentation Keynote by Jason Hoffman
OSS Presentation Keynote by Jason HoffmanOSS Presentation Keynote by Jason Hoffman
OSS Presentation Keynote by Jason Hoffman
 
Big Data Analytics Strategy and Roadmap
Big Data Analytics Strategy and RoadmapBig Data Analytics Strategy and Roadmap
Big Data Analytics Strategy and Roadmap
 
Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014
 
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)
How Criteo Scaled and Supported Massive Growth with MongoDB (2013)
 
IoT and DataStream
IoT and DataStreamIoT and DataStream
IoT and DataStream
 
Introduction to Cloud Storage
Introduction to Cloud StorageIntroduction to Cloud Storage
Introduction to Cloud Storage
 
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...
Luka Postružin (Superbet) – ‘From zero to hero’ in early life customer segmen...
 
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?)
The Land Sharks are on the Squawk Box (Where Did Postgres Come From?)
 
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...
ClickHouse Paris Meetup. ClickHouse Analytical DBMS, Introduction. By Alexand...
 
The Machine - a vision for the future of computing
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
 
Machine learning & Time Series Analysis , Finlab CTO 韓承佑
Machine learning & Time Series Analysis ,  Finlab CTO 韓承佑Machine learning & Time Series Analysis ,  Finlab CTO 韓承佑
Machine learning & Time Series Analysis , Finlab CTO 韓承佑
 
Machine learning & Time Series Analysis
Machine learning & Time Series AnalysisMachine learning & Time Series Analysis
Machine learning & Time Series Analysis
 
VLSI and ES Design -An Overview.pptx
VLSI and ES Design -An Overview.pptxVLSI and ES Design -An Overview.pptx
VLSI and ES Design -An Overview.pptx
 
The challenges of live events scalability
The challenges of live events scalabilityThe challenges of live events scalability
The challenges of live events scalability
 

Mehr von Tomer Gabel

How shit works: Time
How shit works: TimeHow shit works: Time
How shit works: TimeTomer Gabel
 
Nondeterministic Software for the Rest of Us
Nondeterministic Software for the Rest of UsNondeterministic Software for the Rest of Us
Nondeterministic Software for the Rest of UsTomer Gabel
 
Slaying Sacred Cows: Deconstructing Dependency Injection
Slaying Sacred Cows: Deconstructing Dependency InjectionSlaying Sacred Cows: Deconstructing Dependency Injection
Slaying Sacred Cows: Deconstructing Dependency InjectionTomer Gabel
 
An Abridged Guide to Event Sourcing
An Abridged Guide to Event SourcingAn Abridged Guide to Event Sourcing
An Abridged Guide to Event SourcingTomer Gabel
 
How shit works: the CPU
How shit works: the CPUHow shit works: the CPU
How shit works: the CPUTomer Gabel
 
How Shit Works: Storage
How Shit Works: StorageHow Shit Works: Storage
How Shit Works: StorageTomer Gabel
 
Java 8 and Beyond, a Scala Story
Java 8 and Beyond, a Scala StoryJava 8 and Beyond, a Scala Story
Java 8 and Beyond, a Scala StoryTomer Gabel
 
The Wix Microservice Stack
The Wix Microservice StackThe Wix Microservice Stack
The Wix Microservice StackTomer 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)
Scala Refactoring for Fun and Profit (Japanese subtitles)Tomer Gabel
 
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and ProfitScala Refactoring for Fun and Profit
Scala Refactoring for Fun and ProfitTomer Gabel
 
Onboarding at Scale
Onboarding at ScaleOnboarding at Scale
Onboarding at ScaleTomer Gabel
 
Scala in the Wild
Scala in the WildScala in the Wild
Scala in the WildTomer 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)
Speaking Scala: Refactoring for Fun and Profit (Workshop)Tomer Gabel
 
Put Your Thinking CAP On
Put Your Thinking CAP OnPut Your Thinking CAP On
Put Your Thinking CAP OnTomer Gabel
 
Leveraging Scala Macros for Better Validation
Leveraging Scala Macros for Better ValidationLeveraging Scala Macros for Better Validation
Leveraging Scala Macros for Better ValidationTomer Gabel
 
A Field Guide to DSL Design in Scala
A Field Guide to DSL Design in ScalaA Field Guide to DSL Design in Scala
A Field Guide to DSL Design in ScalaTomer Gabel
 
Scala Back to Basics: Type Classes
Scala Back to Basics: Type ClassesScala Back to Basics: Type Classes
Scala Back to Basics: Type ClassesTomer Gabel
 
5 Bullets to Scala Adoption
5 Bullets to Scala Adoption5 Bullets to Scala Adoption
5 Bullets to Scala AdoptionTomer Gabel
 
Nashorn: JavaScript that doesn’t suck (ILJUG)
Nashorn: JavaScript that doesn’t suck (ILJUG)Nashorn: JavaScript that doesn’t suck (ILJUG)
Nashorn: JavaScript that doesn’t suck (ILJUG)Tomer Gabel
 
Ponies and Unicorns With Scala
Ponies and Unicorns With ScalaPonies and Unicorns With Scala
Ponies and Unicorns With ScalaTomer Gabel
 

Mehr von Tomer Gabel (20)

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

Kürzlich hochgeladen

why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 

Kürzlich hochgeladen (20)

why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 

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

Hinweis der Redaktion

  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