"Barang-barang yang salah" di sini berarti overhead yang diperlukan oleh juru bahasa untuk mengurai dan memproses kode. Ini terhubung dengan gagasan bahasa yang ditafsirkan vs dikompilasi. Ada beberapa model terjemahan kode yang digunakan, yang secara kasar masuk dalam salah satu kategori berikut:
- Kompilasi asli - kode sumber langsung dikompilasi ke dalam kode mesin. Performa terbaik dengan mengorbankan portabilitas. Umumnya dikaitkan dengan C dan C ++,
- Kompilasi menengah - kode sumber dikompilasi ke dalam bahasa perantara yang disederhanakan (bytecode), yang kemudian ditafsirkan atau dikompilasi (kompilasi just-in-time) ke dalam kode mesin selama eksekusi. Portabilitas yang lebih baik daripada kode asli, kinerja yang lebih baik daripada interpretasi murni sambil mempertahankan beberapa sisi buruk interpretasi (seperti keterlambatan mengikat). Contohnya termasuk C #, Java dan bahasa lain yang menargetkan JVM dan .NET CLR,
- Interpretasi - kode sumber tidak langsung diterjemahkan ke dalam kode mesin, melainkan ditafsirkan dan dieksekusi oleh program juru bahasa khusus. Penerjemah bervariasi dalam kecanggihannya, dalam implementasi yang naif namun itu bermuara pada penguraian, menganalisis dan mengeksekusi kode sumber baris demi baris. Interpretasi memungkinkan fleksibilitas yang lebih besar daripada kompilasi, karenanya bahasa yang ditafsirkan membuat penggunaan yang lebih luas dari pengetikan dinamis atau refleksi, misalnya. Bahasa yang ditafsirkan sering dilihat sebagai menawarkan peningkatan produktivitas pengembang, karena mereka membutuhkan lebih sedikit kode boilerplate dan meminjamkan diri mereka dengan baik untuk pembuatan prototipe cepat. Kekurangannya adalah berkurangnya kinerja. Umumnya dikaitkan dengan JavaScript, Ruby, atau Python.
Oleh karena itu pilihan antara bahasa yang ditafsirkan dan dikompilasi bermuara pada pertanyaan, apa yang kita nilai lebih, produktivitas atau kinerja pengembang? Migrasi yang dijelaskan dalam artikel ini tampaknya mengikuti garis pemikiran yang sama, dengan bahasa prototip yang kuat Ruby digantikan oleh Scala berbasis JVM karena pertimbangan kinerja.