"Неправильний матеріал" тут означає накладні витрати, потрібні перекладачеві для розбору та обробки коду. Це пов'язано з поняттям інтерпретованих проти компільованих мов. У використанні є кілька моделей перекладу коду, які приблизно належать до однієї з наступних категорій:
- Рідна компіляція - вихідний код безпосередньо компілюється в машинний код. Найкращі показники за рахунок портативності. Зазвичай пов'язаний з C і C ++,
- Проміжна компіляція - вихідний код складається на спрощену мову посередника (байт-код), яка пізніше інтерпретується або компілюється (щойно вчасно компіляція) в машинний код під час виконання. Краща портативність, ніж нативний код, краща продуктивність, ніж чиста інтерпретація, зберігаючи деякі переваги інтерпретації (як, наприклад, пізнє прив’язка). Приклади включають C #, Java та інші мови, націлені на JVM та .NET CLR,
- Інтерпретація - вихідний код не переводиться безпосередньо в машинний код, а він інтерпретується та виконується спеціальною програмою перекладача. Інтерпретатори відрізняються складністю, в наївній реалізації, однак вона зводиться до розбору, аналізу та виконання вихідного коду рядок за рядком. Інтерпретація забезпечує більшу гнучкість, ніж компіляція, отже, інтерпретовані мови ширше використовують, наприклад, динамічне введення тексту або відображення. Інтерпретовані мови часто розглядаються як такі, що пропонують підвищити продуктивність для розробників, оскільки вони вимагають менше кодового коду і добре піддаються швидкому прототипуванню. Далі знижена продуктивність. Зазвичай асоціюється з JavaScript, Ruby або Python.
Отже, вибір між інтерпретованою та компільованою мовою зводиться до питання, що ми більше цінуємо, продуктивність або ефективність розробника? Міграція, описана в статті, схоже, відповідає тій самій думці, причому сильна мова прототипування Ruby замінюється Scala на основі JVM на основі міркувань щодо ефективності.