SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Speedy, Stable, and Secure:

Better Web Applications
through
Functional Languages

                            Alex Payne, Twitter
                 Future of Web Apps, Miami , 2010
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?
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!

Weitere ähnliche Inhalte

Mehr von Alex Payne

Mind The Tools
Mind The ToolsMind The Tools
Mind The ToolsAlex Payne
 
Strange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingStrange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingAlex Payne
 
The Business Value of Twitter
The Business Value of TwitterThe Business Value of Twitter
The Business Value of TwitterAlex Payne
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0Alex Payne
 
The Interaction Design Of APIs
The Interaction Design Of APIsThe Interaction Design Of APIs
The Interaction Design Of APIsAlex Payne
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?Alex Payne
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeAlex Payne
 
Protecting Public Hotspots
Protecting Public HotspotsProtecting Public Hotspots
Protecting Public HotspotsAlex Payne
 
Twitter at BarCamp 2008
Twitter at BarCamp 2008Twitter at BarCamp 2008
Twitter at BarCamp 2008Alex Payne
 
Securing Rails
Securing RailsSecuring Rails
Securing RailsAlex Payne
 
Designing Your API
Designing Your APIDesigning Your API
Designing Your APIAlex Payne
 
Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Alex Payne
 

Mehr von Alex Payne (13)

Mind The Tools
Mind The ToolsMind The Tools
Mind The Tools
 
Strange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingStrange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in Computing
 
The Business Value of Twitter
The Business Value of TwitterThe Business Value of Twitter
The Business Value of Twitter
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0
 
The Interaction Design Of APIs
The Interaction Design Of APIsThe Interaction Design Of APIs
The Interaction Design Of APIs
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to Adobe
 
Protecting Public Hotspots
Protecting Public HotspotsProtecting Public Hotspots
Protecting Public Hotspots
 
Twitter at BarCamp 2008
Twitter at BarCamp 2008Twitter at BarCamp 2008
Twitter at BarCamp 2008
 
Securing Rails
Securing RailsSecuring Rails
Securing Rails
 
Why Scala?
Why Scala?Why Scala?
Why Scala?
 
Designing Your API
Designing Your APIDesigning Your API
Designing Your API
 
Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007
 

Kürzlich hochgeladen

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

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

Hinweis der Redaktion

  1. Introducing myself.
  2. 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.
  3. 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?
  4. 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.
  5. 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.
  6. 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.
  7. A general definition.
  8. Getting more specific.
  9. Getting at the heart of the matter.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.