Câu hỏi khó hiểu, vì C và C ++ là ngôn ngữ , trong khi JVM là máy ảo và .Net là một nền tảng . Scala có thể được triển khai trong C hoặc C ++ và nó có thể tạo mã máy thay vì mã byte cho máy ảo.
Trả lời câu hỏi đã được hỏi:
Scala không được triển khai trong C hoặc C ++ vì Scala, ngôn ngữ mà nó được thực hiện, là ngôn ngữ tốt hơn nhiều.
Tại sao nó tốt hơn? Chà, hãy đọc về các mục tiêu của Oderky cho ngôn ngữ Scala .
Trả lời câu hỏi có thể đã được dự định:
Scala tạo ra mã byte JVM chủ yếu vì nó cung cấp tính di động cao cũng như các tính năng như trình thu gom rác đáng tin cậy và hiệu quả, tối ưu hóa thời gian chạy và biên dịch đúng lúc bởi JVM .
Hãy để tôi nhắc lại điều cuối cùng: JVM sẽ biên dịch thành các điểm nóng mã máy trong mã mà nó đang chạy. Đó là trình biên dịch giống như trình biên dịch C và C ++.
Có sẵn các máy ảo khác, nhưng Oderky, người tạo ra Scala, đã rất quen thuộc với JVM. Ông dự định có CLR như một giải pháp thay thế, nhưng nỗ lực để đạt được điều đó vẫn chưa đạt được thành công.
Trả lời câu hỏi có thể / nên được hỏi:
Biên dịch mã máy không cung cấp đủ lợi ích so với biên dịch sang mã byte JVM.
Chắc chắn có thể tạo ra các dấu hiệu vi mô trong C hoặc C ++ để đánh bại các tương đương JVM. Cũng đúng là mã cực kỳ tối ưu hóa trong C hoặc C ++ sẽ đánh bại mã cực kỳ tối ưu hóa trong Java hoặc Scala. Sự khác biệt không phải là tất cả, tuy nhiên, đối với chương trình dài hạn.
Lưu ý rằng Scala không phải là một ngôn ngữ kịch bản đặc biệt chính xác vì chi phí cho các chương trình chạy ngắn quá lớn.
Tuy nhiên, trong hầu hết các trường hợp, tốc độ phát triển và dễ bảo trì quan trọng hơn tốc độ thực hiện . Trong những trường hợp đó, khi mọi người quan tâm nhiều hơn đến việc viết mã mức rất cao dễ hiểu và thay đổi, các tối ưu hóa thời gian chạy do JVM cung cấp có thể dễ dàng đánh bại các tối ưu hóa thời gian biên dịch được tạo bởi các trình biên dịch C hoặc C ++, tạo ra JVM (và CLR ) mục tiêu sẽ thực sự thực hiện nhanh hơn.
Vì vậy, cho dù câu hỏi là về trình biên dịch Scala là mã thực thi hay chương trình Scala là mã máy, thì tốc độ tăng tiềm năng không nhất thiết phải chuyển thành tăng tốc độ thực .
Và, nhân tiện,
Tôi sẽ cho bạn một ví dụ ngược lại: Haskell. Haskell tạo mã máy, và, tuy nhiên, các chương trình của Haskell tệ hơn trong vụ xả súng của Debian so với Scala. Cho rằng, bất cứ ai cũng có thể chắc chắn các chương trình Scala sẽ nhanh hơn nếu được biên dịch trực tiếp thành mã máy?