SlideShare a Scribd company logo
Scala for C# Developers
Omer van Kloeten
Hi!
 CTO at
 Eight years working in C#
 Two years suffering Java
 Two years enjoying Scala
 newBrandAnalytics
 AppMyDay
What is Scala?
 JVM Language
 Academic roots
 Released 2003
 Maintained by TypeSafe
 Continuously updated
Why should I care?
 CLR vs. JVM
 The Hummus Manifesto
 Java is old, Scala is the new hotness
 Learn, learn, learn
Who uses Scala?
Similar Backgrounds
 Trying to replace Java
 Benevolent Dictators
 Design-by-committee sucks!
 Strongly and statically typed
 Object-functional
Imperative vs. Functional
Imperative C# Functional LINQ…
…But In Reality
Functional First
Functional C# Functional Scala
 Slight differences
 Underscores… underscores everywhere!
 Strict (immediate) vs. Non-Strict (lazy)
 people.view().filter…
 Lots more than we can cover here…
Syntax Doesn’t Matter, Right?
C#
 class Foo: Bar, IBaz
 class Foo<TBar>
 interface IFoo
 int foo(string s) { return 42;
}
 ...
Scala
 class Foo extends Bar with Baz
 class Foo[TBar]
 trait Foo
 def foo(s: String) = 42
 ...
Syntax Doesn’t Matter,
Defaults Do
C#
 Private by default
 Non-virtual by default
Scala
 Public by default
 Virtual by default
 Java mentality
Immutable By Default
 val and var
 C#’s readonly
 lazy val
 .NET’s Lazy[T]
 Collections
Tuples and Case Classes
 Tuples
 First-class citizen
 Completely typed
Tuples and Case Classes
 Tuples
 First-class citizen
 Completely typed
 Case classes
 Easy, immutable types
Everything Is An Expression
Pattern Matching: Basics
Pattern Matching: Unapply
Pattern Matching: Collections
Pattern Matching: Summary
 switch/case on steroids
 First-class language construct
 Statically checked for comprehensiveness
What Scala Doesn’t Have
 A fast compiler
 C#’s value types
 Built-ins
 Structs
 Enums
 Partial types and methods
 Getters and Setters
 Well, no, but…
 Native for or foreach support
Wait, what?!
Well, kinda… ...is translated to:
Language Topics Not Covered :(
 Streams
 Type inference
 Tail recursion
 Multiple inheritance
 Operators
 Implicits
 Structural Type Definitions
 Companion objects
 Parallelization and
concurrency
 Monads
 Macros
 Reflection
 More underscores!
Tooling and Libraries
 Almost twenty years of Java
 Scala wrappers
 Great community
 Engineers
 Scientists
Tooling: IDEs
 Scala plugin
 JetBrains
 of ReSharper fame
 Scala over Eclipse
 TypeSafe
 Maintainers of Scala
NetBeans, Sublime, etc.
Tooling: REPL
Tooling: Build System
Maven
 Better than Ant
 Bloated
 Written in Java for Java
SBT
 Simple Build Tool
 Irony
 Written in Scala for Scala
Frameworks
 Web Frameworks
 Play! Framework
 Lift
 Scalatra
 Object-Relational Mappers
 Slick
 Squeryl
 Unit Testing
 Specs2
 ScalaTest
Where Do I Start?
 Base stuff:
 Download and install latest JDK (from oracle.com)
 Go to http://scala-lang.org/downloads, download
and install the MSI
 IntelliJ IDEA:
 Go to http://jetbrains.com/idea/download,
download and install the Community Edition
 Demo
Where Do I Start?
 Twitter’s Scala School
 A Tour of Scala
 Another Tour of Scala
 Functional Programming Principles in Scala
 Scala By Example (PDF)
 Programming in Scala (Book)
Thank you
Questions?
@omervk

More Related Content

What's hot (20)

PDF
Introduction To Jira
Hua Soon Sim
 
PDF
Crystal Methodologies
urumisama
 
PPTX
Scrum Framework
Upekha Vandebona
 
PPTX
Lean Software Development
Cristian Andreica
 
PDF
The Large Scale Scrum Framework (LeSS) in a glance
Kendis.io
 
ODP
Introduction To Agile
Knoldus Inc.
 
PPTX
Agile Software Development
Sachith Perera
 
PPTX
Kanban
Stefan Csosz
 
PPTX
Software development methodologies
Ankita Lachhwani
 
PDF
Leveraging P6 and Unifier combined strengths - Oracle Primavera P6 Collaborat...
p6academy
 
PPTX
Understanding Unit Testing
ikhwanhayat
 
PPTX
Basic Software Effort Estimation
umair khan
 
DOCX
Scrum master competencies master
Helen Meek
 
PPTX
Introduction of sdlc
Abdullah Al Rumy
 
PDF
Crystal Clear
Paco Garat
 
PPT
Gray box testing
Dasun Eranthika
 
PPTX
Agile Methodology and Tools
Naresh Gajuveni
 
Introduction To Jira
Hua Soon Sim
 
Crystal Methodologies
urumisama
 
Scrum Framework
Upekha Vandebona
 
Lean Software Development
Cristian Andreica
 
The Large Scale Scrum Framework (LeSS) in a glance
Kendis.io
 
Introduction To Agile
Knoldus Inc.
 
Agile Software Development
Sachith Perera
 
Kanban
Stefan Csosz
 
Software development methodologies
Ankita Lachhwani
 
Leveraging P6 and Unifier combined strengths - Oracle Primavera P6 Collaborat...
p6academy
 
Understanding Unit Testing
ikhwanhayat
 
Basic Software Effort Estimation
umair khan
 
Scrum master competencies master
Helen Meek
 
Introduction of sdlc
Abdullah Al Rumy
 
Crystal Clear
Paco Garat
 
Gray box testing
Dasun Eranthika
 
Agile Methodology and Tools
Naresh Gajuveni
 

Viewers also liked (11)

PDF
Scala Jump Start
Haim Michael
 
PDF
Open Stack vs .NET Stack - For Startups
Bryan Starbuck
 
PPTX
Beginning Java for .NET developers
Andrei Rinea
 
PPT
Microsoft Lending Reference Architecture
Mike Walker
 
PDF
Scala : language of the future
AnsviaLab
 
PPT
Loan Origination Reference Architecture Deep Dive
Mike Walker
 
PPTX
A Brief Intro to Scala
Tim Underwood
 
PDF
Scala Days NYC 2016
Martin Odersky
 
PDF
Streaming Big Data with Spark, Kafka, Cassandra, Akka & Scala (from webinar)
Helena Edelson
 
PDF
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Helena Edelson
 
PDF
Functional Database Strategies at Scala Bay
Jason Swartz
 
Scala Jump Start
Haim Michael
 
Open Stack vs .NET Stack - For Startups
Bryan Starbuck
 
Beginning Java for .NET developers
Andrei Rinea
 
Microsoft Lending Reference Architecture
Mike Walker
 
Scala : language of the future
AnsviaLab
 
Loan Origination Reference Architecture Deep Dive
Mike Walker
 
A Brief Intro to Scala
Tim Underwood
 
Scala Days NYC 2016
Martin Odersky
 
Streaming Big Data with Spark, Kafka, Cassandra, Akka & Scala (from webinar)
Helena Edelson
 
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Helena Edelson
 
Functional Database Strategies at Scala Bay
Jason Swartz
 
Ad

Similar to Scala for C# Developers (20)

PDF
Yes scala can!
amirmoulavi
 
ODP
A Tour Of Scala
fanf42
 
PPTX
Scala-Ls1
Aniket Joshi
 
PPTX
An Introduction to Scala
Brent Lemons
 
PDF
Stepping Up : A Brief Intro to Scala
Derek Chen-Becker
 
PPTX
Scala final ppt vinay
Viplav Jain
 
PPT
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Manish Pandit
 
PDF
Introduction to Scala : Clueda
Andreas Neumann
 
PDF
Scala - from "Hello, World" to "Heroku Scale"
Salesforce Developers
 
ODP
Introduction to Scala
Synesso
 
PPTX
Scala in the Wild
Tomer Gabel
 
PPTX
Scala - The Simple Parts, SFScala presentation
Martin Odersky
 
PPTX
Introduction to Scala
Mohammad Hossein Rimaz
 
PPTX
Scala adoption by enterprises
Mike Slinn
 
PPTX
Scala intro for Java devs 20150324
Erik Schmiegelow
 
ODP
Introduction To Scala
Basuk
 
PDF
Scala Sjug 09
Michael Neale
 
PDF
F# for Scala developers
Alfonso Garcia-Caro
 
PPTX
Introduction to Scala language
Aaqib Pervaiz
 
PPTX
flatMap Oslo presentation slides
Martin Odersky
 
Yes scala can!
amirmoulavi
 
A Tour Of Scala
fanf42
 
Scala-Ls1
Aniket Joshi
 
An Introduction to Scala
Brent Lemons
 
Stepping Up : A Brief Intro to Scala
Derek Chen-Becker
 
Scala final ppt vinay
Viplav Jain
 
Introducing Scala to your Ruby/Java Shop : My experiences at IGN
Manish Pandit
 
Introduction to Scala : Clueda
Andreas Neumann
 
Scala - from "Hello, World" to "Heroku Scale"
Salesforce Developers
 
Introduction to Scala
Synesso
 
Scala in the Wild
Tomer Gabel
 
Scala - The Simple Parts, SFScala presentation
Martin Odersky
 
Introduction to Scala
Mohammad Hossein Rimaz
 
Scala adoption by enterprises
Mike Slinn
 
Scala intro for Java devs 20150324
Erik Schmiegelow
 
Introduction To Scala
Basuk
 
Scala Sjug 09
Michael Neale
 
F# for Scala developers
Alfonso Garcia-Caro
 
Introduction to Scala language
Aaqib Pervaiz
 
flatMap Oslo presentation slides
Martin Odersky
 
Ad

Recently uploaded (20)

PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 

Scala for C# Developers

  • 1. Scala for C# Developers Omer van Kloeten
  • 2. Hi!  CTO at  Eight years working in C#  Two years suffering Java  Two years enjoying Scala  newBrandAnalytics  AppMyDay
  • 3. What is Scala?  JVM Language  Academic roots  Released 2003  Maintained by TypeSafe  Continuously updated
  • 4. Why should I care?  CLR vs. JVM  The Hummus Manifesto  Java is old, Scala is the new hotness  Learn, learn, learn
  • 6. Similar Backgrounds  Trying to replace Java  Benevolent Dictators  Design-by-committee sucks!  Strongly and statically typed  Object-functional
  • 7. Imperative vs. Functional Imperative C# Functional LINQ… …But In Reality
  • 8. Functional First Functional C# Functional Scala  Slight differences  Underscores… underscores everywhere!  Strict (immediate) vs. Non-Strict (lazy)  people.view().filter…  Lots more than we can cover here…
  • 9. Syntax Doesn’t Matter, Right? C#  class Foo: Bar, IBaz  class Foo<TBar>  interface IFoo  int foo(string s) { return 42; }  ... Scala  class Foo extends Bar with Baz  class Foo[TBar]  trait Foo  def foo(s: String) = 42  ...
  • 10. Syntax Doesn’t Matter, Defaults Do C#  Private by default  Non-virtual by default Scala  Public by default  Virtual by default  Java mentality
  • 11. Immutable By Default  val and var  C#’s readonly  lazy val  .NET’s Lazy[T]  Collections
  • 12. Tuples and Case Classes  Tuples  First-class citizen  Completely typed
  • 13. Tuples and Case Classes  Tuples  First-class citizen  Completely typed  Case classes  Easy, immutable types
  • 14. Everything Is An Expression
  • 18. Pattern Matching: Summary  switch/case on steroids  First-class language construct  Statically checked for comprehensiveness
  • 19. What Scala Doesn’t Have  A fast compiler  C#’s value types  Built-ins  Structs  Enums  Partial types and methods  Getters and Setters  Well, no, but…  Native for or foreach support
  • 20. Wait, what?! Well, kinda… ...is translated to:
  • 21. Language Topics Not Covered :(  Streams  Type inference  Tail recursion  Multiple inheritance  Operators  Implicits  Structural Type Definitions  Companion objects  Parallelization and concurrency  Monads  Macros  Reflection  More underscores!
  • 22. Tooling and Libraries  Almost twenty years of Java  Scala wrappers  Great community  Engineers  Scientists
  • 23. Tooling: IDEs  Scala plugin  JetBrains  of ReSharper fame  Scala over Eclipse  TypeSafe  Maintainers of Scala NetBeans, Sublime, etc.
  • 25. Tooling: Build System Maven  Better than Ant  Bloated  Written in Java for Java SBT  Simple Build Tool  Irony  Written in Scala for Scala
  • 26. Frameworks  Web Frameworks  Play! Framework  Lift  Scalatra  Object-Relational Mappers  Slick  Squeryl  Unit Testing  Specs2  ScalaTest
  • 27. Where Do I Start?  Base stuff:  Download and install latest JDK (from oracle.com)  Go to http://scala-lang.org/downloads, download and install the MSI  IntelliJ IDEA:  Go to http://jetbrains.com/idea/download, download and install the Community Edition  Demo
  • 28. Where Do I Start?  Twitter’s Scala School  A Tour of Scala  Another Tour of Scala  Functional Programming Principles in Scala  Scala By Example (PDF)  Programming in Scala (Book)

Editor's Notes

  • #4: Image CC-BY-NC-SA, Alejandro Crosa http://www.flickr.com/photos/alejandrocrosa/5247567841/New version every yearBugfixes every few months
  • #6: Logos are copyright their respective owners
  • #7: Anders HejlsbergMartinOdersky
  • #12: String is immutable in C#
  • #16: Match values, typesUnderscore syntax
  • #17: Underscore syntax
  • #21: While is still while
  • #26: In .NET: MSBuild,NAnt, Cruise Control.NET
  • #27: Play, like ASP.NET MVC – LinkedIn, KloutLift, like ASP.NET – FoursquareScalatra, like NancyFX – LinkedIn, The Guardian
  • #30: Photo CC-BY, Ian Muttoo http://www.flickr.com/photos/imuttoo/2123301945/