SlideShare a Scribd company logo
Speedy, Stable, and Secure:

Better Web Applications
through
Functional Languages

                            Alex Payne, Twitter
                 Future of Web Apps, Miami , 2010
Speedy, Stable, and Secure: Better Web Apps Through Functional Languages
It’s 2010.
It’s time to learn
something new.
It’s the year for
functional programming.
OOP
FP
Functional programming is:

Writing what should be done
instead of how.
Functional programming is:

Finding and using
mathematical abstractions
to represent programs.
Functional programming is:

Value-oriented programming.
State is transformed,
not mutated.
That’s nice.
What’s in it for me?
Speed.
Stability.
Security.
Who’s doing it?
Speedy, Stable, and Secure: Better Web Apps Through Functional Languages
How do I get started?
1a. Pick a language.




        ell




                                     l
        re




                                   am
        g

     ala

     sk
    oju

    lan




                                 OC
  Ha
  Sc



  F#
  Cl

  Er



dynamic                             static


          by typing discipline
1b. Pick a language.

  JVM             custom           .NET CLR

Clojure          Haskell           F#
Scala            Erlang
                 OCaml



             by runtime platform
19
                86
                   Er
              19     lan
                90       g
                   Ha
              19      sk
                96       ell
                   OC
              20       am
                02         l
                   F#


by maturity
              20
                03
                   Sc
                      ala
              20
                               1c. Pick a language.




                07
                   Cl
                     oju
                         re
2a. Pick a framework.

Scala         →         Lift
Clojure       → Compojure
Haskell       →     HAppS
F#            → WebSharper
OCaml         →    Ocsigen
Erlang        →    Erlyweb
2b. Introduce gradually.




old stack   integration point   new FP thing
Okay, I think I get it.
But why the sales pitch?
I’m your user.
I want you to succeed.
Functional programming
 is a tool for success.
Thanks!

More Related Content

Similar to Speedy, Stable, and Secure: Better Web Apps Through Functional Languages (20)

PDF
Get Programming with Scala MEAP V05 Daniela Sfregola
biruktresehb
 
PDF
Functional Thinking Paradigm Over Syntax.pdf
Douglas Fernandes
 
PDF
Functional programming is not about complicated things
Michael Langford
 
PDF
Functional programming in Python 1st Edition David Mertz
nkossivilana87
 
PDF
Functional programming in Python 1st Edition David Mertz
kimmidalboc0
 
PDF
Learning to code in 2020
Nicholas Sterling
 
PPTX
Scala - The Simple Parts, SFScala presentation
Martin Odersky
 
PDF
Functional programming in scala coursera
Ketan Raval
 
PPTX
2 Years of Real World FP at REA
kenbot
 
PPTX
ScalaDays 2013 Keynote Speech by Martin Odersky
Typesafe
 
PPT
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Manish Pandit
 
PDF
Functional programming in Scala
datamantra
 
PDF
Teaching Functional Programming @ TCD - 11/2012
Roland Tritsch
 
KEY
Polyglot and Functional Programming (OSCON 2012)
Martijn Verburg
 
PDF
Programming in Scala - Lecture One
Angelo Corsaro
 
PPTX
Functional programming and ruby in functional style
Niranjan Sarade
 
PPTX
Scala-Ls1
Aniket Joshi
 
PDF
190030341 fcp lab 1
madhukalyanchodisett
 
PDF
DEF CON 27 - workshop - EIGENTOURIST - hacking with monads
Felipe Prado
 
PPTX
XML Amsterdam 2012 Keynote
jimfuller2009
 
Get Programming with Scala MEAP V05 Daniela Sfregola
biruktresehb
 
Functional Thinking Paradigm Over Syntax.pdf
Douglas Fernandes
 
Functional programming is not about complicated things
Michael Langford
 
Functional programming in Python 1st Edition David Mertz
nkossivilana87
 
Functional programming in Python 1st Edition David Mertz
kimmidalboc0
 
Learning to code in 2020
Nicholas Sterling
 
Scala - The Simple Parts, SFScala presentation
Martin Odersky
 
Functional programming in scala coursera
Ketan Raval
 
2 Years of Real World FP at REA
kenbot
 
ScalaDays 2013 Keynote Speech by Martin Odersky
Typesafe
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Manish Pandit
 
Functional programming in Scala
datamantra
 
Teaching Functional Programming @ TCD - 11/2012
Roland Tritsch
 
Polyglot and Functional Programming (OSCON 2012)
Martijn Verburg
 
Programming in Scala - Lecture One
Angelo Corsaro
 
Functional programming and ruby in functional style
Niranjan Sarade
 
Scala-Ls1
Aniket Joshi
 
190030341 fcp lab 1
madhukalyanchodisett
 
DEF CON 27 - workshop - EIGENTOURIST - hacking with monads
Felipe Prado
 
XML Amsterdam 2012 Keynote
jimfuller2009
 

More from Alex Payne (17)

PDF
The perils and rewards of working on stuff that matters
Alex Payne
 
PDF
Emerging Languages: A Tour of the Horizon
Alex Payne
 
KEY
The Why and How of Scala at Twitter
Alex Payne
 
KEY
Building Distributed Systems in Scala
Alex Payne
 
PDF
Mind The Tools
Alex Payne
 
ZIP
Strange Loop 2009 Keynote: Minimalism in Computing
Alex Payne
 
ZIP
The Business Value of Twitter
Alex Payne
 
KEY
Twitter API 2.0
Alex Payne
 
ZIP
The Interaction Design Of APIs
Alex Payne
 
ZIP
Why Scala for Web 2.0?
Alex Payne
 
ZIP
The Twitter API: A Presentation to Adobe
Alex Payne
 
ZIP
Protecting Public Hotspots
Alex Payne
 
ZIP
Twitter at BarCamp 2008
Alex Payne
 
PDF
Securing Rails
Alex Payne
 
PDF
Why Scala?
Alex Payne
 
PDF
Designing Your API
Alex Payne
 
PDF
Scaling Twitter - Railsconf 2007
Alex Payne
 
The perils and rewards of working on stuff that matters
Alex Payne
 
Emerging Languages: A Tour of the Horizon
Alex Payne
 
The Why and How of Scala at Twitter
Alex Payne
 
Building Distributed Systems in Scala
Alex Payne
 
Mind The Tools
Alex Payne
 
Strange Loop 2009 Keynote: Minimalism in Computing
Alex Payne
 
The Business Value of Twitter
Alex Payne
 
Twitter API 2.0
Alex Payne
 
The Interaction Design Of APIs
Alex Payne
 
Why Scala for Web 2.0?
Alex Payne
 
The Twitter API: A Presentation to Adobe
Alex Payne
 
Protecting Public Hotspots
Alex Payne
 
Twitter at BarCamp 2008
Alex Payne
 
Securing Rails
Alex Payne
 
Why Scala?
Alex Payne
 
Designing Your API
Alex Payne
 
Scaling Twitter - Railsconf 2007
Alex Payne
 
Ad

Recently uploaded (20)

PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
July Patch Tuesday
Ivanti
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
July Patch Tuesday
Ivanti
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Ad

Speedy, Stable, and Secure: Better Web Apps Through Functional Languages

Editor's Notes

  • #3: Introducing myself.
  • #4: We’ve been building the Web for almost twenty years. In that time, we’ve seen tools come and go: Perl and CGI scripts, Cold Fusion, the popularity of building websites in Java, PHP, the rise of Ruby on Rails and dynamic languages.
  • #5: We go from job to job and site to site, from language to language and framework to framework. But these tools are mostly incremental improvements on the tools that came before them. Take the best practices of the last generation, roll them up, call it a new tool. But what if there was a new tool, something strange but valuable, something that would transform the way you work, the way you solve problems?
  • #6: I have a challenge for you. It’s early in 2010. It’s only February. By the end of the year, incorporate a functional programming language somewhere in your stack. If you do, I will guarantee that it benefits what you do. Today, we’re going to talk about why I’m so sure that functional programming is going to be beneficial to you.
  • #7: Object-oriented programming is a bit like making a film. You have your classes, they’re archetypes. Your actors are instances of those classes. You give them a script and you set your actors in motion. Once you know how to do it, it’s easy to make more films. But there’s always a lot that can go wrong when making one.
  • #8: Lots of ways to describe FP. A couple favorites: I think of FP as a bit like sitting down to do an equation at a chalkboard. Your program is an equation, and it all has to balance out. But once it does, you can be pretty sure that it’s correct.
  • #9: A general definition.
  • #10: Getting more specific.
  • #11: Getting at the heart of the matter.
  • #12: I want to talk about where functional languages fit best. There’s certain places where we have good tools. For example, JavaScript is a great tool for making things happen on a web page that’s been delivered to a browser. C is a great tool when you need direct access to hardware and explicit control of memory management. But there are plenty of places where you might need a new tool in your toolbox.
  • #13: There are lots of numbers out there, but the fact is that every app has its own performance characteristics and concerns. The generalization I can make is that all the languages I’m going to talk about today have reasonable performance, often competitive with or better than the dynamic languages you’re probably working in. Some are even competitive with Java, C++, and pure C in some scenarios. I can tell you from personal experience that it’s nice to be working in a language where speed isn’t a concern 90% of the time.
  • #14: We’ve found that functional languages are great for building core infrastructure. We happen to use Scala, which has a robust type system, and the compiler helps us catch a lot of problems before we ever go into production. But type system aside, a functional approach also means we have more confidence that even highly concurrent systems are doing what they should be. We can reuse high-level functional components and know that they’re going to be reliable in other systems, too.
  • #15: There’s a reason why the NSA goes to Galois, a Haskell and OCaml shop, to build provably correct implementations of cryptosystems. The combination of robust type systems and FP techniques make it possible to model complex interactions within a system, but guarantee that they all work together correctly. The emphasis in functional programming on limiting mutation of state makes it harder to put the wrong data in the wrong place. FP can give you tools to model capabilities easily and explicitly. It’s not a magic security silver bullet – nothing is – but FP is a nice thing to have in your security toolbox.
  • #17: This is the big slide of company logos that tells you you’re not crazy and alone. These are just some well-known web companies working with functional languages. If you get into financial services, defense, and other mission-critical fields, you find an even higher penetration of FP.
  • #19: When it comes to typing disciplines, there’s a nice variety of functional languages to choose from. And, of course, I’m leaving some perfectly lovely functional languages out and focusing on languages that have a fair bit of momentum in the web app world right now.
  • #20: Another way to pick a language is based on its runtime. Personally, my money is on languages like Scala, Clojure, and F# that build on and interface with mature, widely deployed platforms like the JVM and the .NET CLR. I think they have the best blend of practicality and FP goodness.
  • #21: Still a third way to pick your functional language of choice is by age. Some of these languages are quite new, like Clojure. Some of them go back decades. There are advantages and disadvantages on both counts.
  • #22: There are plenty of great web frameworks out there for functional languages. If you like frameworks, you’re starting from the ground up, and you want to dive into FP, this path is for you.
  • #23: Another way to introduce FP at your organization is to build new pieces of core infrastructure. This is nice because it isolates the problem and largely frees you up from worrying how to get this newfangled thing to talk to the rest of your system. You just pick an integration point – a database, a message queue, an RPC layer like Thrift – and go from there.
  • #25: So why am I up here telling you to learn a functional language? Because I’m probably a user of your products, or I’m going to be. I want your application to be faster. I want your site to be up. I want your site to be resilient to attacks.
  • #26: That’s the point of all this. Anyone who’s done it will tell you that functional programming makes you a better programmer, that it helps you see problems differently. But I’m interested in a new narrative, one in which functional languages are synonymous with successful companies. So learn a functional language in 2010. Be successful. And spread the word.