Teknologi Big Data sedang hangat dibicarakan akhir-akhir ini. Penggunaan data yang kian diminati dalam berbagai bidang menjadi salah satu alasan mengapa Big Data menjadi penting di era ini. Teknologi Big Data memungkinkan kita untuk menghimpun informasi dari data yang massive. Sehingga nantinya dapat menghasilkan wawasan baru dalam pengambilan keputusan dan pengembangan produk atau jasa di dalam bisnis.

Nah, untuk kali ini kita akan bahas salah satu teknologi yang digunakan di Big Data NoLimit, yaitu Scala.

Scala adalah bahasa pemrograman yang menggabungkan paradigma pemograman yang berorientasi pada objek dengan fungsional. Scala memiliki type system yang kuat dan statis (strong, static type-system). Scala berjalan di atas JVM, dan memiliki interoperability yang kuat dengan Java. Developer bisa dengan mudah meng-import library Java di program berbasis Scala. Scala dirancang sebagai bahasa yang memungkinkan developer membuat kode yang ringkas, fleksibel, namun tetap aman.

Scala, pertama kali diciptakan oleh Martin Odersky, seorang profesor di Ecole Polytechnique Federal De Lausane (EPFL), Swiss, dimana termasuk menjadi salah satu perguruan tinggi bergengsi dunia. Martin Odersky meraih gelar Ph.D pada tahun 1989 dari ETH Zurich dibawah bimbingan Niklaus Wirth yang merupakan pencipta bahasa pemrograman Pascal. Semasa studi doktoral, Martin Odersky menekuni structured and object oriented programming. Kemudian ia semakin tertarik functional programming ketika bekerja di IBM dan Yale.

Pada saat Java dirilis, ia mulai mencoba menambahkan fitur functional programming pada Java dan mengembangkan javac, compiler Java yang digunakan saat ini. Selepas itu, Martin Odersky mendirikan perusahaan yang bernama Typesafe Inc. yang menjadi cikal bakal Scala menjadi bahasa pemrograman yang tidak digunakan untuk laboratorium saja. Kini Scala sudah menjadi bahasa pemrograman yang digunakan di Industri apapun termasuk Pendidikan. Martin Odersky pun aktif membagi ilmunya di Coursera dengan materi yang berjudul Functional Programming Principles in Scala dan Principles of Reactive Programming.

Scala sudah banyak digunakan untuk membangun aplikasi yang erat dengan data engineering. Beberapa di antaranya adalah Apache Spark, Apache Kafka, Apache Flink, dan Apache Samza, dan lain-lain Akka.io. Selain itu, Scala juga digunakan di beberapa institusi komersial terkenal yaitu Twitter, Verizon, LinkedIn, dan Wix.

Jadi, apa saja fitur dari Scala?

Berikut adalah sekilas pembahasan fitur-fitur dasar yang ada:

  • Scala menerapkan immutability

Salah satu fitur dasar di Scala adalah pilihan untuk membuat sebuah variabel immutable atau mutable. Berikut adalah contohnya:

val x = 1 //val is used for immutable identifier
var y = 2 //var is used for mutable identifier
x = 2 //compile error
y = 3 //compile success

Scala selalu menggunakan variabel immutable dibanding mutable. Pada akhirnya developer akan lebih mudah menalar bagaimana aliran data dari satu tempat ke tempat lain. Scala juga menyediakan struktur data immutable dan mutable. Ini tersedia di package scala.collection.immutable dan scala.collection.mutable . Panduan dasar di Scala adalah selalu gunakan struktur data List , Map , atau Set dari immutable kecuali ada kebutuhan untuk optimasi kinerja kode.

  • Scala memungkinkan type inference.

Sebenarnya, compiler akan otomatis menganotasi dengan benar tipe dari variabel yang dideklarasi. Ini memberikan keunggulan ergonomis untuk developer karena developer tidak harus selalu mengetikkan anotasi tipe yang diinginkan. Namun ada kalanya compiler tidak cukup pintar untuk memberikan anotasi yang benar. Ini cukup sering terjadi ketika developer sudah menggunakan fitur lebih canggih di Scala seperti implicits atau higher-kind type. Contohnya adalah sebagai berikut:

val x = 1 // x is Int
val y = “1” // y is Stringval z: Boolean = true // z is Boolean ////of course
val a: String = 1 // compile errorval listOfInt = List(1) // listOfInt is List[Int]
val listOfString = List(“a”,”b”) // listOfString is List[String]

Namun, contoh seperti ini perlu jadi perhatian:

val listOfWhat = List(1, true, “Boolean”) // listOfWhat is List[Any]

Ini karena Scala akan otomatis mencari tipe super dari Int, String, serta Boolean, dan berakhir di tipe Any , tipe paling super di hierarki tipe Scala. Jika menginginkan konstruksi List atau jenis koleksi yang lain yang menunjang tipe yang heterogen atau generic programming secara umum, developer bisa menggunakan library shapeless.

Referensi: