Why

      Scala
        for Web 2.0?
Hi.

I’m Alex Payne,
API Lead at Twitter, Inc.

Also, co-author of
Programming Scala,
out later this year from O’Reilly.
A brief history of the
languages behind Web 2.0.
Let’s talk about
recession engineering.
Can we still afford
to build
things we love
with tools we love?
fast
functional
expressive
statically typed
object-oriented
concurrent
beautiful
C
                   C++
                   Ruby
                    PHP
                 Python
                 Erlang
                   Java
[JVM dynamic languages]
And then, there’s Scala.
Features.
Java compatibility
keeps your ROI returning.
Actors
keep concurrency simple.
Immutability
keeps concurrency predictable.
Type inference
keeps code clean.
First-class functions
keep things exible.
Traits
keep behavior reusable.
Pattern matching
keeps your needles out of haystacks.
XML literals and query methods
keep XML tolerable.
More:
case classes
properties
existential types
implicit conversions
lazy evaluation
parser combinators
monads
annotations
... !
The price: complexity.
But it’s worth it.
Wins.
A queuing system that
takes the hits.
An API test suite that
helps us sleep.
People search that
returns in milliseconds.
Community.
Groups:
Bay Area Scala Enthusiasts (BASE)
Chicago Area Scala Enthusiasts (CASE)
New York Scala Enthusiasts (NYSE)
etc. etc.
Education:
Programming Scala
Programming in Scala
The Busy Java Developer’s Guide...
Why Scala?
Introduction to High-Level Prog’ing...
Scala Language Speci cation
Blogs &c.:
Code Commit
Coderspiel
Scala-Blogs
Graceless Failures
Delicious
Reddit
FriendFeed
Twitter Search
Tools:
IDEs: Eclipse, NetBeans, IDEA
Editors: Emacs, VIM, TextMate
JavaRebel
Whatever JVM tools you like!
Libraries and frameworks
Lift
Specs
ScalaCheck
Con ggy
Scalax, Scalaz
every Java library ever
even libraries in other JVM languages!
So, why Scala for Web 2.0?
Thank you. Questions?

          scala-lang.org
         bit.ly/progscala
        twitter.com/al3x
              al3x.net

More Related Content

PDF
Why Scala?
PDF
Short and fast introduction to Scala
PDF
Introduction to Scala
PPTX
Scala Introduction - Meetup Scaladores RJ
PDF
Scala Programming Introduction
PDF
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
PDF
Tech Talk - Things I Learned at Scala Days 2013
PPTX
Voice Interfaces Usergroup Berlin - 05-10-2016 : Kay Lerch on Morse-Coder skill
Why Scala?
Short and fast introduction to Scala
Introduction to Scala
Scala Introduction - Meetup Scaladores RJ
Scala Programming Introduction
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Tech Talk - Things I Learned at Scala Days 2013
Voice Interfaces Usergroup Berlin - 05-10-2016 : Kay Lerch on Morse-Coder skill

What's hot (20)

PPTX
Lambda Behave - Java 8's Testing Framework
PDF
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
PPT
Dmitry Lebedev: Agile Testing Using Agile Tools
PPTX
Concurrent Applications with F# Agents
PDF
Software Engineering Thailand: Programming with Scala
PPTX
Tech breakfast 18
PDF
Akka introtalk HyScala DEC 2016
PDF
Functions, anonymous functions and the function type
PPTX
Hey alexa, let's build an alexa skill using nodejs
KEY
MVC Gems
PPTX
OOPs fundamentals session for freshers in my office (Aug 5, 13)
PDF
API Documentation Meetup 2016, London
PDF
Make it clean - scala clean code
PDF
Beam me up, scotty (PUG Roma)
PPTX
Intelligent System Scripting Language - Conceptual Presentation
PPTX
Scala & Swagger at Wordnik
PPTX
Building Apis in Scala with Playframework2
PPTX
Building Amazon Alexa custom Skill step by step
PPTX
Introduction to Core Java Programming
PDF
ApiAddicts Meetup Sept 2016, Madrid
Lambda Behave - Java 8's Testing Framework
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
Dmitry Lebedev: Agile Testing Using Agile Tools
Concurrent Applications with F# Agents
Software Engineering Thailand: Programming with Scala
Tech breakfast 18
Akka introtalk HyScala DEC 2016
Functions, anonymous functions and the function type
Hey alexa, let's build an alexa skill using nodejs
MVC Gems
OOPs fundamentals session for freshers in my office (Aug 5, 13)
API Documentation Meetup 2016, London
Make it clean - scala clean code
Beam me up, scotty (PUG Roma)
Intelligent System Scripting Language - Conceptual Presentation
Scala & Swagger at Wordnik
Building Apis in Scala with Playframework2
Building Amazon Alexa custom Skill step by step
Introduction to Core Java Programming
ApiAddicts Meetup Sept 2016, Madrid
Ad

Viewers also liked (7)

PDF
رحلة بورسعيد
PPTX
كنز من كنوز الجنة
DOC
تعريف الأدارة
DOC
تعريف الأدارة
PDF
رحلة بورسعيد
PPT
دليل علاج الآسر
PDF
Aujas incident management webinar deck 08162016
رحلة بورسعيد
كنز من كنوز الجنة
تعريف الأدارة
تعريف الأدارة
رحلة بورسعيد
دليل علاج الآسر
Aujas incident management webinar deck 08162016
Ad

Similar to Scala (20)

ZIP
Why Scala for Web 2.0?
KEY
PPTX
Introduction to Scala
PPTX
Scala for C# Developers
PDF
Scala Programming A comprehensive beginner s guide to Scala 2nd Edition Claud...
PPT
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
PPTX
Scala for n00bs by a n00b.
PPT
Evolving IGN’s New APIs with Scala
PDF
Infographic on Scala Programming Language
PPT
The State of Scala
PPTX
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
ODP
Introduction to Scala JS
PDF
Ruby and Rails short motivation
ODP
A Tour Of Scala
PPT
Viridians on Rails
PDF
Building Applications with Scala 1st Edition Pacheco
PPT
Ruby on rails
PDF
PJ_M01_C01_PPT_Introduction to Object Oriented Programming Using Java.pdf
PPTX
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
PPTX
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions
Why Scala for Web 2.0?
Introduction to Scala
Scala for C# Developers
Scala Programming A comprehensive beginner s guide to Scala 2nd Edition Claud...
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Scala for n00bs by a n00b.
Evolving IGN’s New APIs with Scala
Infographic on Scala Programming Language
The State of Scala
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Introduction to Scala JS
Ruby and Rails short motivation
A Tour Of Scala
Viridians on Rails
Building Applications with Scala 1st Edition Pacheco
Ruby on rails
PJ_M01_C01_PPT_Introduction to Object Oriented Programming Using Java.pdf
Sviluppare applicazioni nell'era dei "Big Data" con Scala e Spark - Mario Car...
Ten Compelling Reasons to Go the Scala Development Way - Metadesign Solutions

Recently uploaded (20)

PDF
A review of recent deep learning applications in wood surface defect identifi...
PPTX
Tartificialntelligence_presentation.pptx
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Five Habits of High-Impact Board Members
PDF
A comparative study of natural language inference in Swahili using monolingua...
DOCX
search engine optimization ppt fir known well about this
PDF
Hindi spoken digit analysis for native and non-native speakers
PPT
Module 1.ppt Iot fundamentals and Architecture
PPT
What is a Computer? Input Devices /output devices
PDF
STKI Israel Market Study 2025 version august
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
Modernising the Digital Integration Hub
PDF
Hybrid model detection and classification of lung cancer
PPTX
Chapter 5: Probability Theory and Statistics
A review of recent deep learning applications in wood surface defect identifi...
Tartificialntelligence_presentation.pptx
Zenith AI: Advanced Artificial Intelligence
A contest of sentiment analysis: k-nearest neighbor versus neural network
WOOl fibre morphology and structure.pdf for textiles
1 - Historical Antecedents, Social Consideration.pdf
Taming the Chaos: How to Turn Unstructured Data into Decisions
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Five Habits of High-Impact Board Members
A comparative study of natural language inference in Swahili using monolingua...
search engine optimization ppt fir known well about this
Hindi spoken digit analysis for native and non-native speakers
Module 1.ppt Iot fundamentals and Architecture
What is a Computer? Input Devices /output devices
STKI Israel Market Study 2025 version august
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
observCloud-Native Containerability and monitoring.pptx
Modernising the Digital Integration Hub
Hybrid model detection and classification of lung cancer
Chapter 5: Probability Theory and Statistics

Scala

Editor's Notes

  • #2: \n
  • #3: Came to previous C4s for Io, Erlang. Have programmed for money in Java, JavaScript, C, PHP, Perl, Ruby, and Python. Have programmed for fun, love, or spite in x86 Assembly, Erlang, Lua, Objective-C, various Lisps, Haskell, O-Caml, C++, Io, Erlang.\n
  • #4: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #5: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #6: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #7: My personal criteria for a good systems language.\n
  • #8: Why not these languages? Talk about their issues. We ultimately knew we wanted a JVM language, just not Java.\n
  • #9: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #10: \n
  • #11: The JVM has chops. Address Java interoperability, Martin Odersky’s credentials, etc. Worse comes to worse, just fall back to Java. Most other JVM-hosted languages can’t claim the same speed as Scala.\n
  • #12: The “concurrency crisis” has been underway since the early 1990s. Ref: HOPL2 intro speech.\nScala handles actors as nicely as Erlang and Io. Actors are neat, but we haven’t made extensive use of them at Twitter just yet. Also Pi and Join Calculi.\n
  • #13: A pragmatic approach to data structure mutability. Most data structures available in mutable and immutable flavors. Requires thoughtful decision-making, but that pays off.\n
  • #14: Static typing is a blessing and a curse. Scala lets you ignore typing until you can put it to work for you.\n
  • #15: Once you have this feature in a language, you simply can’t do without it. Passing functions around is awesome - a bit like function pointers. Also: “higher-order” methods (methods that take other methods, like ‘map’), anonymous methods. Everything is an expression, everything has a value. \n
  • #16: Once you’ve gotten used to Ruby’s modules, it’s another difficult language feature to give up. Subclassing can be a nightmare, and isn’t always the correct design solution. Traits enable powerful abstraction of cross-cutting concerns.\n
  • #17: Every programmer matches patterns all day, every day. It’s just that most languages don’t have a lexical facility for making that task easier. \n
  • #18: XML ain’t going away any time soon. If you have to interact with XML a lot, Scala is an awesome choice. It’s got that JavaScript+JSON peanut butter n’ jelly quality.\n
  • #19: Address those features particular to Scala: case classes, properties, existential types, implicits.\n
  • #20: The bad, the ugly.\n
  • #21: \n
  • #22: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #23: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #24: Ruby’s poor VM performance, monkeypatching and cultural issues, questionable for large systems. We had new services to build, didn’t want to continue with Ruby.\n
  • #25: \n
  • #26: \n
  • #27: \n
  • #28: \n
  • #29: \n
  • #30: \n
  • #31: \n
  • #32: \n