Introduction to Scala

Scala (Scalable Language) is a statically typed, multi-paradigm language that fuses object-oriented and functional programming.

1.1 What is Scala?

Scala (Scalable Language) is a statically typed, multi-paradigm language that fuses object-oriented and functional programming. It runs primarily on the JVM, and also compiles to JavaScript (Scala.js) and native code (Scala Native).

Everything is an object; every operation is a method call.

Functions are first-class values.

Immutable data and expressions-over-statements by default.

Powerful type inference and one of the most expressive type systems in industry.

Pattern matching, algebraic data types, type classes.

Seamless Java interop — use any Java library.

Concise syntax; Scala 3 offers optional brace-less (indentation-based) syntax.

1.2 History

Martin Odersky starts Scala at EPFL (Switzerland) First public release

Typesafe (later Lightbend) founded; Akka grows Scala 2.10/2.11: macros, implicit classes, string interpolation

Apache Spark (written in Scala) explodes in popularity Scala 2.13: redesigned collections

Scala 3.0 ("Dotty"): new type system foundations (DOT calculus), givens, enums, new macros Akka relicensed → Apache Pekko fork

Scala 3.3 LTS, 3.4–3.7: new features, scala-cli becomes the scala command, named tuples (3.7), capture checking research

1.3 Who uses Scala?

Twitter/X (historically), LinkedIn, Netflix, Airbnb, Spotify, Databricks (Spark), Disney+, The Guardian, Zalando, Morgan Stanley, Goldman Sachs, Coursera, Lichess, Kafka (originally written in Scala), Apache Flink APIs.

1.4 Why learn Scala?

Write concise, type-safe code that scales from scripts to distributed systems.

Industry-standard for big data (Spark, Kafka ecosystem).

Learn advanced FP (type classes, effects) on a mainstream platform.

Leverage the entire JVM ecosystem.