Diğerlerinin de söylediği gibi, derlenmiş ve yorumlanmış bir programlama dilinin uygulanmasına özgüdür ; bunlar değil dille doğasında. Örneğin, C tercümanları var.
Bununla birlikte, programlama dillerini en yaygın (bazen kanonik) uygulamasına göre sınıflandırabiliriz (ve pratikte yaparız). Örneğin, C derlendi diyoruz.
İlk olarak, yorumlayıcıları ve derleyicileri belirsizlik olmadan tanımlamalıyız:
Bir yorumlayıcı dil için X herhangi bir program yürüten bir program (veya bir makine ya da genel olarak mekanizmanın sadece bir tür) bir p dili ile yazılmış X bu etkiler yapar ve tarifname tarafından öngörülen sonuçları değerlendirir bu şekilde X .
Bir derleyici gelen X ile Y herhangi bir program çeviren bir program (veya bir makine ya da genel olarak mekanizmanın sadece bir tür) bir p bir dil gelen X bir anlama sahip programı içine p' bir dil içinde Y yorumlamak bu şekilde p ' için tercüman Y aynı sonucu ve yorumlama ile aynı etkilere sahip olacaktır p için tercüman X .
Bir programcı bakış açısından, CPU'ların kendi ana makine dilleri için makine tercümanları olduğuna dikkat edin.
Şimdi, en yaygın uygulamasına bağlı olarak programlama dillerini 3 kategoride geçici olarak sınıflandırabiliriz:
- Zor Derlenmiş diller: Programlar tamamen makine diline göre derlendiğinde. Kullanılan tek yorumlayıcı bir CPU'dur. Örnek: Genellikle, bir programı C'de çalıştırmak için, kaynak kodu daha sonra bir CPU tarafından çalıştırılan makine diline derlenir.
- Yorumlanan diller: Orijinal programın herhangi bir kısmının makine diline derlenmesi olmadığında. Başka bir deyişle, yeni makine kodu üretilmez; sadece mevcut makine kodu yürütülür. CPU dışında bir yorumlayıcı da kullanılmalıdır (genellikle bir program). Örnek: Python'un kanonik uygulamasında, kaynak kodu önce Python bayt koduna derlenir ve sonra bu bayt kodu, Python bayt kodu için bir yorumlayıcı program olan CPython tarafından yürütülür .
- Yumuşak Derlenmiş diller: CPU dışında bir yorumlayıcı kullanıldığında, ancak orijinal programın bazı kısımları da makine diline göre derlenebilir. Bu, kaynak kodunun önce bayt koduna derlendiği ve ardından bayt kodunun Java Yorumlayıcısı tarafından yorumlanabileceği ve / veya JIT derleyicisi tarafından daha fazla derlendiği Java örneğidir.
Bazen, yumuşak ve zor derlenmiş dillere basitçe derlenmiş olarak atıfta bulunulur, bu nedenle C #, Java, C, C ++ 'nın derlendiği söylenir.
Bu kategorizasyon içinde, JavaScript yorumlanmış bir dildi, ancak bu yıllar önceydi. Günümüzde, çoğu büyük JavaScript uygulamasında yerel makine diline JIT tarafından derlenmiştir, bu yüzden yumuşak derlenmiş dillere düştüğünü söyleyebilirim.