Menelusuri perjalanan Scala dari riset Martin Odersky di EPFL (rilis pertama 2004) hingga Scala 3 yang dirancang ulang pada 2021, serta memahami filosofi "scalable" di balik namanya, alasan OOP dan FP bisa hidup dalam satu bahasa, dan mengapa ekosistem big data seperti Apache Spark dan Kafka bergantung padanya.

Setelah di episode 0 kita menyiapkan environment — memastikan JDK 17+, Scala 3.8.4, dan Metals berjalan — pada episode ini kita menarik napas sejenak dari hands-on dan memahami mengapa Scala ada. Sejarah sebuah bahasa mungkin terasa tidak penting, padahal justru di sanalah letak alasan mengapa desainnya seperti sekarang.
Mengapa harus memahami sejarah Scala? Karena Scala tidak lahir dari ruang rapat pemasaran, melainkan dari riset akademis selama lebih dari satu dekade. Memahami asal-usulnya akan menjelaskan keputusan-keputusan desainnya — mengapa Scala menggabungkan dua paradigma yang biasanya terpisah, mengapa type system-nya begitu ekspresif, dan mengapa bahasa ini menjadi fondasi infrastruktur big data modern.
Scala dikembangkan oleh Martin Odersky — pencipta javac generasi pertama dan arsitek generics di Java 5 — bersama tim riset di EPFL (École Polytechnique Fédérale de Lausanne) di Swiss. Rilis pertama terjadi pada tahun 2004, dan nama Scala berasal dari kata "scalable" — bahasa yang dirancang untuk tumbuh dari skrip kecil hingga sistem enterprise berskala besar.
| Fakta | Detail |
|---|---|
| Pencipta | Martin Odersky & EPFL (Swiss) |
| Rilis pertama | 2004 |
| Asal nama | "scalable" |
| Platform | JVM (plus JS & Native) |
| Keluarga sintaks | Mirip Java/C, tanpa semicolon wajib |
Odersky membawa dua warisan sekaligus: pemahaman mendalam tentang compiler (ia menulis generics Java) dan kecintaan pada programming language research. Hasilnya adalah bahasa yang memadukan kepraktisan industri dengan kedalaman teori functional programming.
Nama "Scala" bukan sekadar brand — ia menggambarkan janji intinya. Dalam satu bahasa, kalian bisa menulis skrip satu file untuk otomasi kecil dan sistem besar dengan arsitektur ketat:
@main def pipeline(): Unit =
val data = List(1, 2, 3, 4, 5)
println(data.filter(_ % 2 == 0).sum)Skrip ini kecil, tetapi pola yang sama — List, filter, sum — tetap dipakai di codebase production dengan jutaan baris. Bahasa imperative biasa memaksa kalian berganti alat saat proyek membesar (skrip Python menjadi framework, misalnya); Scala mencoba menjembatani keduanya dengan satu bahasa yang konsisten.
Note
Perbandingan yang sering dipakai: Java mengajarkan OOP, Haskell mengajarkan FP murni, dan Scala memaksa kalian memilih pendekatan yang tepat untuk setiap lapisan — lalu mengkompilasi semuanya ke bytecode JVM yang sama.
Kekhasan Scala yang paling menonjol adalah ia tidak memaksa satu paradigma. Kalian bisa menulis class dan inheritance ala Java, sekaligus memakai immutable data, higher-order function, dan pattern matching ala Haskell — dalam file yang sama:
class Counter(val count: Int)
def increment(c: Counter): Counter = Counter(c.count + 1)Counter adalah class biasa (OOP), tetapi increment adalah fungsi pure yang mengembalikan instance baru alih-alih memutasi (FP). Kemampuan bergeser mulus antar paradigma inilah yang membuat Scala "scalable": kalian memakai gaya yang paling cocok untuk masalah yang sedang dihadapi.
Pada Mei 2021, Scala 3 (nama kode "Dotty") dirilis — bukan versi 2.x yang di-polish, melainkan redesign dari inti bahasa. Salah satu misi utamanya adalah menyederhanakan sintaks dan membuat type system lebih ekspresif lewat fitur baru seperti enum, given/using, dan opaque type:
enum Color:
case Red, Green, Blue
def describe(c: Color): String = c match
case Color.Red => "merah"
case _ => "lainnya"Perhatikan: keyword enum, indent-based syntax tanpa kurung kurawal, dan match expression — semua itu adalah hasil redesign Scala 3. Sejak 3.3 (2023), rilis Scala dipecah menjadi dua jalur: LTS (stabil untuk library dan perusahaan) dan Next (fitur cepat untuk komunitas).
Alasan paling praktis mempelajari Scala di 2026: ia adalah bahasa utama Apache Spark — kerangka kerja pemrosesan data berskala besar — dan salah satu bahasa pilihan untuk aplikasi Apache Kafka dan streaming. Ketika kalian menulis DataFrame pipeline di Spark, kalian menulis kode Scala:
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder.appName("demo").master("local[*]").getOrCreate()
import spark.implicits._
val df = spark.read.option("header", true).csv("data.csv")
df.filter($"age" > 18).groupBy("city").count().show()Karena Spark ditulis di Scala, kalian mendapat akses penuh ke API-nya tanpa lapisan tambahan. Di episode 14 kita akan membedah ini lebih dalam.
| Tahun | Tonggak |
|---|---|
| 2004 | Rilis pertama Scala oleh Martin Odersky & EPFL |
| 2014 | Apache Spark lahir sebagai proyek Scala |
| 2018 | Scala 2.13 — puncak era Scala 2, dipakai luas di produksi |
| 2021-05 | Scala 3 ("Dotty") dirilis — redesign dari inti bahasa |
| 2023 | Jalur rilis dipecah: LTS 3.3 dan Next |
| 2026-01 | Scala 3.8 rilis — baseline JDK 17 |
| 2026-06 | Scala 3.8.4 (Next) dan 3.3.8 (LTS) — versi series ini |
Pada episode 1 ini, kalian telah menelusuri perjalanan Scala dari riset Martin Odersky di EPFL hingga menjadi bahasa yang mendukung salah satu ekosistem data paling penting di dunia.
Inti yang harus dibawa pulang:
enum, given/using, dan opaque type.Di episode 2 selanjutnya, kita akan membedah konsep dasar dan arsitektur utama Scala — bagaimana scalac mengkompilasi ke bytecode JVM, peran scala runner dan REPL, format TASTy untuk interoperabilitas, serta dukungan Scala.js dan Scala Native. Sampai jumpa di episode 2!