Tolong jelaskan mengenai Scala (bahasa pemrograman)

Scala merupakan bahasa pemrograman umum (general purpose) yang mendukung pemrograman berorientasi objek dan pemrograman fungsional. Secara umum, tujuan dibuatnya Scala adalah untuk mengkritisi bahasa pemrograman Java.

Kode sumber Scala dibuat agar dapat dikompilasi dengan Bytecode Java, sehingga mengakibatkan eksekusi kode berjalan pada mesin virtual Java. Scala menyediakan interoperabilitas bahasa dengan Java, sehingga perpustakaan yang ditulis dalam dua bahasa ini dapat dirujuk langsung di Scala atau kode Java. Seperti Java, Scala adalah merupakan bahasa yang berorientasi objek, dan menggunakan sintaks-kriting mengingatkan pada bahasa pemrograman C. Tidak seperti Java, Scala memiliki banyak fitur dari pemrograman fungsional bahasa seperti Scheme, Standard ML dan Haskell, termasuk currying, type inference, ketetapan, evaluasi malas, dan pencocokan pola. Ini juga memiliki lanjutan jenis sistem pendukung jenis data aljabar, kovarian dan kontravarian, jenis perintah tinggi (tapi tidak jenis lebih tinggi-peringkat), dan jenis anonim. Fitur lain dari Scala tidak hadir di Java termasuk operator overloading, optional parameter, parameter bernama, string baku, dan tidak ada pengecualian terperiksa.