Pertanyaannya membingungkan, karena C dan C ++ adalah bahasa , sedangkan JVM adalah mesin virtual dan .Net adalah platform . Scala dapat diimplementasikan dalam C atau C ++, dan itu bisa menghasilkan kode mesin, bukan bytecode untuk mesin virtual.
Menjawab pertanyaan yang diajukan:
Scala tidak diimplementasikan dalam C atau C ++ karena Scala, bahasa di mana ia benar-benar diterapkan, adalah bahasa yang jauh lebih baik.
Kenapa lebih baik? Nah, bacalah tentang tujuan Odersky untuk bahasa Scala .
Menjawab pertanyaan yang mungkin dimaksudkan:
Scala menghasilkan bytecode JVM terutama karena itu memberikan portabilitas yang hebat serta fitur-fitur seperti pengumpul sampah yang andal dan efisien, optimalisasi run-time dan kompilasi just-in-time oleh JVM .
Biarkan saya ulangi hal terakhir: JVM akan mengkompilasi ke hot spot kode mesin dalam kode yang sedang berjalan. Itu kompilasi seperti halnya kompiler C dan C ++.
Ada mesin virtual lain yang tersedia, tetapi Odersky, pencipta Scala, sudah sangat akrab dengan JVM. Dia berniat menjadikan CLR sebagai alternatif, tetapi upaya untuk mewujudkannya belum mencapai kesuksesan.
Menjawab pertanyaan yang seharusnya / seharusnya ditanyakan:
Mengkompilasi ke kode mesin tidak memberikan manfaat yang cukup dibandingkan mengkompilasi ke bytecode JVM.
Tentu saja dimungkinkan untuk menghasilkan microbenchmark di C atau C ++ yang mengalahkan JVM-equivalents. Juga benar bahwa kode yang sangat optimal dalam C atau C ++ akan mengalahkan kode yang sangat optimal di Jawa atau Scala. Namun, perbedaannya tidak terlalu bagus untuk program jangka panjang.
Perhatikan bahwa Scala bukan bahasa scripting yang sangat baik justru karena overhead untuk program jangka pendek terlalu besar.
Namun, dalam kebanyakan kasus kecepatan pengembangan dan kemudahan pemeliharaan lebih penting daripada kecepatan eksekusi . Dalam kasus tersebut, di mana orang lebih peduli dalam menulis kode tingkat sangat tinggi yang mudah dipahami dan diubah, optimisasi run-time yang disediakan oleh JVM dapat dengan mudah mengalahkan optimisasi waktu kompilasi yang dibuat oleh kompiler C atau C ++, membuat JVM (dan CLR ) target yang benar-benar akan mengeksekusi lebih cepat.
Jadi, tidak peduli apakah pertanyaannya tentang kompiler Scala menjadi kode mesin yang dapat dieksekusi, atau program Scala menjadi kode mesin, potensi peningkatan kecepatan tidak, tentu saja, diterjemahkan menjadi peningkatan kecepatan nyata .
Dan ngomong-ngomong,
Saya akan memberi Anda contoh tandingan: Haskell. Haskell menghasilkan kode mesin, dan, namun, program Haskell berjalan lebih buruk pada baku tembak Debian daripada Scala. Karena itu, adakah yang bisa memastikan program Scala akan lebih cepat jika dikompilasi langsung ke kode mesin?