Belajar Scala - Sejarah, Latar Belakang & Mengapa Membutuhkannya
Episode 1 of 23

Belajar Scala - Sejarah, Latar Belakang & Mengapa Membutuhkannya

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.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Lahir dari Tangan Martin Odersky

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.

FaktaDetail
PenciptaMartin Odersky & EPFL (Swiss)
Rilis pertama2004
Asal nama"scalable"
PlatformJVM (plus JS & Native)
Keluarga sintaksMirip 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.

Filosofi: Satu Bahasa untuk Semua Skala

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:

Skrip kecil yang scalable
@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.

OOP + FP dalam Satu Bahasa

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:

OOP dan FP berdampingan
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.

Scala 3: Rancang Ulang dari Nol

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:

Syntax Scala 3 yang lebih ringkas
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).

Mengapa Scala: Ekosistem Big Data

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:

Spark DataFrame di 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.

Timeline Singkat

TahunTonggak
2004Rilis pertama Scala oleh Martin Odersky & EPFL
2014Apache Spark lahir sebagai proyek Scala
2018Scala 2.13 — puncak era Scala 2, dipakai luas di produksi
2021-05Scala 3 ("Dotty") dirilis — redesign dari inti bahasa
2023Jalur rilis dipecah: LTS 3.3 dan Next
2026-01Scala 3.8 rilis — baseline JDK 17
2026-06Scala 3.8.4 (Next) dan 3.3.8 (LTS) — versi series ini

Penutup

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:

  • Scala dikembangkan Martin Odersky (pencipta generics Java) di EPFL, rilis pertama 2004; nama dari "scalable".
  • Ia menggabungkan OOP + FP dalam satu bahasa — kalian memilih gaya yang cocok per masalah.
  • Scala 3 (2021, "Dotty") adalah redesign dari inti bahasa, dengan enum, given/using, dan opaque type.
  • Sejak 3.3 (2023) ada jalur LTS dan Next.
  • Scala adalah bahasa utama Apache Spark dan pilihan kuat untuk Kafka — alasan paling praktis mempelajarinya.

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!