คำถามคือทำให้เกิดความสับสนเช่น C และ C ++ เป็นภาษาขณะ JVM เป็นเครื่องเสมือนและสุทธิเป็นแพลตฟอร์ม Scala สามารถนำมาใช้ใน C หรือ C ++ และมันสามารถสร้างรหัสเครื่องแทน bytecode สำหรับเครื่องเสมือน
ตอบคำถามที่ถูกถาม:
Scala ไม่ได้ถูกนำมาใช้ใน C หรือ C ++ เพราะ Scala ภาษาที่ใช้จริงเป็นภาษาที่ดีกว่ามาก
ทำไมจะดีกว่า ดีไปอ่านเกี่ยวกับเป้าหมาย Odersky สำหรับภาษา
ตอบคำถามที่อาจมีเจตนา:
Scala สร้างหลัก JVM bytecode เนื่องจากว่าให้พกพาที่ดีเช่นเดียวกับการให้บริการดังกล่าวเป็นของสะสมที่เชื่อถือได้และมีประสิทธิภาพขยะเพิ่มประสิทธิภาพเวลาทำงานและการรวบรวมเพียงในเวลาโดย JVM
ขอย้ำอีกครั้งว่าสิ่งสุดท้าย: JVM จะคอมไพล์ไปยังฮอตสปอตของรหัสเครื่องในรหัสที่กำลังทำงานอยู่ นั่นคือการคอมไพล์เช่นเดียวกับคอมไพเลอร์ C และ C ++
มีเครื่องเสมือนอื่นที่มีอยู่ แต่ Odersky ผู้สร้างของ Scala คุ้นเคยกับ JVM แล้ว เขาตั้งใจที่จะให้ CLR เป็นทางเลือก แต่ความพยายามที่จะทำให้สิ่งนั้นยังไม่ประสบความสำเร็จ
ตอบคำถามที่อาจ / ควรได้รับการถาม:
การคอมไพล์ไปยังโค้ดเครื่องไม่ได้ให้ประโยชน์เพียงพอกว่าการคอมไพล์ใน JVM bytecode
แน่นอนว่ามันเป็นไปได้ที่จะสร้าง microbenchmarks ใน C หรือ C ++ ที่เอาชนะ JVM ได้เทียบเท่า มันเป็นความจริงเช่นกันว่าโค้ดที่ได้รับการปรับให้เหมาะสมที่สุดใน C หรือ C ++ จะเอาชนะโค้ดที่ได้รับการปรับให้เหมาะสมที่สุดใน Java หรือ Scala สิ่งที่แตกต่างนั้นยอดเยี่ยมมากสำหรับโปรแกรมระยะยาว
โปรดทราบว่า Scala ไม่ใช่ภาษาสคริปต์ที่ดีโดยเฉพาะอย่างยิ่งเนื่องจากโอเวอร์เฮดสำหรับโปรแกรมระยะสั้นนั้นใหญ่เกินไป
อย่างไรก็ตามในกรณีส่วนใหญ่ความเร็วของการพัฒนาง่ายและการบำรุงรักษามีความสำคัญมากกว่าความเร็วของการดำเนินการ ในกรณีเหล่านี้ที่ผู้คนมีความกังวลในการเขียนโค้ดระดับสูงมากที่เข้าใจและเปลี่ยนแปลงได้ง่ายการปรับให้เหมาะสมแบบรันไทม์ที่จัดทำโดย JVM อาจเอาชนะการปรับให้เหมาะสมแบบคอมไพล์ในเวลาที่สร้างโดยคอมไพเลอร์ C หรือ C ++ ทำให้ JVM (และ CLR ) เป้าหมายที่จะดำเนินการได้เร็วขึ้นจริง
ดังนั้นไม่ว่าคำถามเกี่ยวกับคอมไพเลอร์ Scala จะเป็นรหัสเครื่องหรือโปรแกรมของ Scala เป็นรหัสเครื่องการเพิ่มความเร็วที่อาจเกิดขึ้นไม่จำเป็นต้องแปลเป็นการเพิ่มความเร็วจริง
และโดยวิธีการ
ฉันจะให้ตัวอย่างเคาน์เตอร์: Haskell Haskell สร้างรหัสเครื่องและถึงกระนั้นโปรแกรม Haskell ก็ยิ่งแย่ไปกว่าการยิงของ Debian มากกว่า Scala ระบุว่าทุกคนสามารถมั่นใจได้ว่าโปรแกรมสกาล่าจะเร็วขึ้นหากรวบรวมโดยตรงกับรหัสเครื่อง?