Scala ditagih sebagai bahasa yang dapat diskalakan, fitur yang bahkan termasuk dalam namanya :
Nama Scala adalah portmanteau "scalable" dan "bahasa", menandakan bahwa ia dirancang untuk tumbuh dengan tuntutan penggunanya.
Apa arti "scalable" dalam konteks Scala? Apa yang membuat Scala lebih scalable daripada, katakanlah, Java?
scala
scalability
prasoncala
sumber
sumber
Jawaban:
Ketika Martin Odersky berbicara tentang scala sebagai pilihan bahasa yang dapat diskalakan, maksudnya adalah bahwa bahasa itu sendiri sesuai untuk:
Dia tentu saja tidak mengacu pada skalabilitas dari perspektif kinerja!
Fakta bahwa ia dapat mengklaim bahwa scala sesuai untuk skrip quick'n'dirty sebagaimana untuk penyebaran perusahaan skala besar kira-kira sebagai berikut:
Scripting
Scala sangat bagus untuk skrip karena jenis inferensi dan gaya fungsionalnya membuatnya ringkas dan bagus untuk mengiris dan mencelupkan koleksi dll.
Aplikasi
Scala sangat bagus untuk menulis aplikasi karena merupakan jenis bahasa yang diperiksa secara statis dengan beberapa fitur hebat untuk bekerja dalam gaya fungsional dan imperatif. Scala kompatibel dengan Java dan karenanya Anda dapat memanfaatkan ekosistem perpustakaan yang sangat besar.
Penerapan Perusahaan
Scala mengkompilasi untuk bytecode dan berjalan di Java Virtual Machine, sistem stabil dengan kinerja yang hebat, bila dibandingkan dengan (disebut) bahasa yang diketik secara dinamis (yaitu tidak diketik). Sekali lagi, fakta bahwa itu diketik secara statis berarti bahwa refactoring menjadi lebih mudah pada basis kode besar.
sumber
Apa yang dikatakan Odersky adalah (Slide 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):
Ini berarti, scalable dimaksudkan dalam hal fleksibilitas dan ekspresif. Anda dapat membuat struktur kontrol Anda sendiri. Misalnya kerangka aktor adalah perpustakaan, tetapi sepertinya menggunakan fitur bahasa.
Ini berarti bahwa Scala akan berkembang sesuai dengan abstraksi yang dibutuhkan, tidak harus dalam hal "menjawab 1.000.000 permintaan dalam satu detik" (tetapi Scala juga kuat di sini).
sumber
Apa yang membatasi skalabilitas Java dalam praktiknya bukanlah JVM, melainkan kesulitan menulis kode konkuren yang benar. Scala membuat ini lebih mudah melalui dukungannya untuk pemrograman fungsional, dan model aktor.
Java bisa sangat scalable ketika konkurensi mudah, seperti di server web (setiap permintaan hampir sepenuhnya independen). Tetapi ketika datang untuk memparalelkan satu tugas yang sudah berjalan lama, itu bisa menjadi perjuangan nyata untuk mendapatkan yang benar.
sumber
Scala adalah singkatan dari bahasa yang dapat diukur , tidak ada hubungannya dengan karakteristik kinerja. Anda dapat menemukan penjelasan yang lebih baik di sini: http://www.artima.com/scalazine/articles/scalable-language.html
sumber
Itu tidak perlu bahasa itu sendiri yang lebih scalable daripada Java, seperti yang Anda katakan kedua bahasa dapat menghasilkan bytecode yang sama.
Tetapi model Aktor dan gaya pemrograman fungsional dapat meningkatkan skalabilitas (dengan cara singkat - menyederhanakan pemrograman konkurensi yang benar dan mengurangi kebutuhan sinkronisasi).
Untuk mendapatkan wawasan yang lebih baik, lihat model aktor dan bandingkan dengan aplikasi java multi-threaded tradisional:
Anda bahkan dapat menggunakan kerangka kerja Akka untuk membuat aplikasi Java yang sangat skalabel tanpa coding di Scala:
sumber